Тестирование играет жизненно важную роль в процессе разработки и создания качественного программного обеспечения. Необходимо серьезно относиться к анализу и проектированию структурированного процесса, который обеспечит своевременный и успешный выпуск проекта.
Важно помнить, что доверие пользователей очень просто потерять, и исправить совершенные ошибки может стоить дороже, чем изначально произвести полную подготовку и тестирование.
Этапы тестирования веб-проектов:
Подготовительный этап и изучение документации.
В данный этап входит анализ технического задания; изучение конечных макетов;тест кейсов;матрицы соответствия (для валидации покрытия требований по продукту тестами) и составление плана тестирования.
Тестирование верстки.
Визуальная часть:
- неверное отображение блоков, составляющих интерфейса, не состыковки цветовой гаммы;
- тестирование локализованных версий (перевод сайта);
- соответствие макету (слои в PhotoShop);
- при уменьшении/увеличении масштабов (75–150%) без визуальных недочетов;
- подсвечивание полей с ошибками;
- проверка в разрешениях (+прокрутка);
Проверить можно так: FirefoxMenu –> Инструменты –> Веб-разработчик –> Адаптивный дизайн или Resolution Test Plugin в Chrome.
Доступность и отсутствие JS ошибок:
- нажимаются ли кликабельные элементы (внутренние/внешние ссылки, ссылки на электронную почту, кнопки, иконки);
- при наведении на кликабельные изменяется курсор, иначе – нет;
- подсказки на непонятных кликабельных элементах;
- при отключении изображений должны быть подписи небольшим серым цветом (в Web Developer –> Images –> Replace Image With Alt Attributes);
- работоспособность при выключенном JS. Критические функции должны быть доступны без JS (в Web Developer –> Disable –> Disable JS –> All JS)
Корректная работа, надежная верстка:
- проверка работы с данными (введение большого и малого количества текста в форму; блоки с контентом меняются местами (Firebug (HTML –> Edit)));
- проверка работы стилей (введение текста с заголовками, с абзацем и без, с картинками).
404-е запросы:
- нет ли 404-х ошибок (Firefox –> Tools –> Validate links)
Функциональное тестирование.
Вид тестирования, при котором выявляется некорректная/неправильная работа функционала программы.
Необходимыми проверками являются:
- корректность работы главных функций сайта;
- переход по ссылкам;
- проверка пользовательских форм (валидация полей, обязательные/необязательные поля, уведомления об ошибках при неверном вводе, добавление комментариев в блог, обратная связь);
- поиск и покупка товара, оформление заказа;
- сверка переданного заказчиком контента с имеющимся на сайте;
- проверка возможной авторизации/регистрации;
- добавление, удаление и редактирование данных пользователей, товаров и заказов.
Ad-hock тестирование — импровизационное тестирование без подготовки.
Помогает понять: понятно ли назначение форм;
- отмечены ли обязательные поля и все ли обязательные поля отмечены;
- встроена ли обязательная проверка заполненных форм;
- происходит ли проверка правильности ввода контактных данных.
Из достоинств данного тестирования можно выделить:
- достаточно быстрое знакомство с системой;
- специфические неисправности;
- массу вопросов и предложений;
- экономию времени.
Негативное тестирование, обычно называемое тестированием пути ошибок или тестированием на сбой, это процесс применения как можно большего количества креативных подходов и проверки приложения на предмет неверных данных. Его предназначение состоит в том, чтобы проверить, показываются ли ошибки пользователю, где они могут быть, или обрабатывать неправильные значения более изящно. Проводится для обеспечения стабильности приложения.
Эквивалентные тесты – это тесты, которые приводят к одному и тому же результату. Группа тестов представляет собой класс эквивалентности, при выполнении следующих условий:
- все тесты написаны для выявления одной ошибки;
- если один из тестов выявит ошибку, то остальные тоже ее выявят;
- обратное тоже верно.
Эквивалентная область – часть области входных или выходных данных, для которых поведение компонентов или систем, основываясь на спецификации, считаются одинаковыми.
Exploratory testing, также называется интуитивным тестированием, подразумевает под собой одновременно проектирование, выполнение тестов и обучение продукту.
Usability тестирование (User Experience).
Позволяет проверить комфортное использование сайта для пользователя, насколько легко найти необходимую информацию или выполнить желаемые действия.
- Навигационное тестирование сайта. Все ли страницы, кнопки и поля на них, понятны в использовании, доступ к главной странице и меню со всех остальных страниц возможен, навигация проста и интуитивно понятна.
- Тестирование контента. Отсутствие грамматических/орфографических ошибок, контент информативен и структурированный, изображения и заголовки имеют подходящие размеры и размещены правильно.
- Удобство использования. Понятна ли структура веб-приложения, какое впечатление производит и есть ли лишние компоненты на страницах.
- Тестирование UI (User Interface). Соответствие стандартам графических интерфейсов и элементов дизайна, правильность локализованных версий, тестирования с различными разрешениями, на смартфонах и планшетах.
Тестирование совместимости (конфигурационное тестирование).
Тип нефункционального тестирования программного обеспечения, позволяющий проверить, может ли ПО работать на другом оборудовании, операционных системах, приложениях, сетевых средах или мобильных устройствах.
- Кросс-платформенное тестирование сайта. Некоторые функции могут иметь проблемы с определенными операционными системами, поэтому необходимо проверять работу приложения в различных версиях Windows, Unix, Mac, Linux, Solaris и др.
- Кросс-браузерное тестирование сайта. Также корректная работа зависит от типа браузера. Верстка должна быть кроссбраузерной, чтобы обеспечить одинаковую визуальную часть, доступность, функциональность и дизайн во всех браузерах. Необходимо проверять масштабируемость, расширяемость, рамки для элементов в фокусе, отсутствие JS ошибок (левый нижний угол страницы). Проверять работу необходимо в таких браузерах, как: Internet Explorer, Firefox, Chrome, Safari, Opera, Edge разных версий.
- Просмотр на мобильных устройствах. Несмотря на проверку работы веб-приложений в различных разрешениях на компьютере, зачастую ошибки на мобильных устройствах остаются не замечены. Следовательно, настоятельно рекомендуется проверять корректное отображение и работу вашего веб-приложения на мобильных устройствах разных операционных устройств, а также на планшетах.
- Тестирование БД. Необходимо проверить правильность осуществления связи с сервером, проверить совместимость сервера с ПО, аппаратными средствами, базой данных и сетью. Также нужно проверить что происходит при прерывании какого-либо действия, при повторном подключении к серверу во время выполнения операций.
Тестирование производительности.
Методика нефункционального тестирования, для измерения таких параметров системы как отзывчивость и стабильность, при различных нагрузках. Позволяет исследовать скорость быстродействия сайта и возможности масштабируемости приложения, например, при добавлении новых пользователей. Проводится с целью выяснить какую нагрузку сайт способен выдержать. Тестирование производительности измеряет атрибуты качества системы, такие как масштабируемость, надежность и использование ресурсов.
Нагрузочное тестирование – это метод тестирования производительности, при котором реакция системы измеряется в различных условиях нагрузки. Отвечает за реакцию веб-приложения при увеличении рабочей нагрузки. Нагрузочные испытания проводятся для нормальных и пиковых нагрузок (одновременная покупка товара или авторизация на сайте большого количества пользователей).
- Подход нагрузочного тестирования:
- Оценить критерии приемлемости производительности
- Определить критические сценарии
- Модель рабочей нагрузки
- Определите целевые уровни нагрузки
- Дизайн тестов
- Выполнить тесты
- Проанализируйте результаты
Задачи нагрузочного тестирования: время отклика, пропускная способность, утилизация ресурсов, максимальная пользовательская нагрузка, бизнес-метрики.
Стресс-тестирование (Stress Testing) проверяет систему на ее устойчивость и обработку ошибок в условиях чрезвычайно высокой нагрузки (оценивает как система работает в экстремальных условиях, за пределами ограничений и лимитов). Стресс-тестирование проводится, чтобы убедиться, что система не будет аварийно завершать работу в критических ситуациях.
Тестирование стабильности/надежности (Stability/Reliability Testing) – тип тестирования программного обеспечения, который проверяет, может ли программное обеспечение выполнять безотказную работу в течение определенного периода времени в указанной среде.
Объемное тестирование (Volume Testing) – тип тестирования программного обеспечения, проводится для анализа производительности системы за счет увеличения объема данных в базе данных.
Тестирование параллелизма (Parallel Testing) – тип тестирования программного обеспечения, который проверяет несколько приложений или подкомпонентов одного приложения одновременно, чтобы сократить время тестирования. При параллельном тестировании тестировщик запускает две разные версии программного обеспечения одновременно с одним и тем же вводом. Цель состоит в том, чтобы выяснить, ведут ли себя прежняя система и новая система одинаково или по-разному.
Тестирование безопасности.
Направлено на оптимизацию безопасности системы при проектировании, разработке, использовании и обслуживании программных систем и их интеграции с критически важными для безопасности аппаратными системами в производственной среде.
Аспекты безопасности программного обеспечения:
- Функциональное программное обеспечение не должно создавать опасностей (например: управление современным самолетом НЕ должно направляться в океан).
- Системы мониторинга должны работать без сбоев (например: резервный компьютер должен запускаться автоматически при сбое основного).
Цели в тестировании безопасности:
- в сложных системах, где задействовано много взаимодействий, критически важные для безопасности функции должны быть идентифицированы и тщательно проанализированы;
- ошибки определены и устранены;
- количество критических ошибок поддерживается на низком уровне, чтобы избежать неработоспособности системы;
- атрибуты безопасности должны рассматриваться как часть всех уровней тестирования ПО.
Дополнительную информацию по безопасности приложений можно посмотреть тут: CHECK, ISACA, NIST Guideline, OSSTMM, OWASP Guide.
Принципы безопасности:
- Конфиденциальность (ограничение или предоставление доступа к информации).
- Целостность (возможность восстановить данные в полном объеме при их повреждении; доступ на изменение информации только определенной категории пользователей).
- Доступность (иерархия уровней доступа и четкое их соблюдение).
Обработка ошибок и регрессионное тестирование.
После завершения разработки веб-приложения следует провести оценку и анализ выявленных ошибок для дальнейшего предотвращение их повтора. А также выполнить регрессионное тестирование.
Регрессионное тестирование
Использует технику тестирования черного ящика (повторное выполнение тестов), на которые влияют изменения кода. Эти тесты должны выполняться как можно чаще в течение всего ЖЦПО при изменениях кода для исправления дефектов или для улучшения работы веб-приложения.
Практические советы вам:
- Перед тем, как приступить к тестированию необходимо обсудить все важные детали с командой (BA, PM, разработчики).
- Использовать обширный подход с применением техник тест-анализа и набора методик тест-дизайна.
- Определить виды тестирования, которые необходимо провести.
- Определить цели и ключевых пользователей веб-приложения.
- Списки устройств, ОС и браузеров, на которых необходимо провести тестирование.
- Доступ для разных ролей посетителей.
- Необходимость составления и передачи документации.
Хотим вам напомнить, что рабочий процесс – это не рутина, а творческий процесс, определяющий широту полета вашей мысли. Относитесь к вашей работе как к новому челленджу, и вы определенно начнете получать не только удовольствие, но и вдохновение и желание развиваться. Задачи тестировщика очень многогранны: им необходимо понять задачу веб-приложения, понять как оно должно работать, какие задачи решать, какую пользу приносить пользователям и затем перепроверить все по несколько раз, чтобы выпустить проект в мир. Им нужно быть собранными и дерзать, чтобы выпускать проекты за которые вся команда сможет гордиться