Тестирование играет жизненно важную роль в процессе разработки и создания качественного программного обеспечения. Необходимо серьезно относиться к анализу и проектированию структурированного процесса, который обеспечит своевременный и успешный выпуск проекта.
Важно помнить, что доверие пользователей очень просто потерять, и исправить совершенные ошибки может стоить дороже, чем изначально произвести полную подготовку и тестирование.

Этапы тестирования веб-проектов:
Подготовительный этап и изучение документации.
В данный этап входит анализ технического задания; изучение конечных макетов;тест кейсов;матрицы соответствия (для валидации покрытия требований по продукту тестами) и составление плана тестирования.

Тестирование верстки.

Визуальная часть:

  • неверное отображение блоков, составляющих интерфейса, не состыковки цветовой гаммы;
  • тестирование локализованных версий (перевод сайта);
  • соответствие макету (слои в 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 тестирование — импровизационное тестирование без подготовки.
Помогает понять: понятно ли назначение форм;

  1. отмечены ли обязательные поля и все ли обязательные поля отмечены;
  2. встроена ли обязательная проверка заполненных форм;
  3. происходит ли проверка правильности ввода контактных данных.

Из достоинств данного тестирования можно выделить:

  1. достаточно быстрое знакомство с системой;
  2. специфические неисправности;
  3. массу вопросов и предложений;
  4. экономию времени.

Негативное тестирование, обычно называемое тестированием пути ошибок или тестированием на сбой, это процесс применения как можно большего количества креативных подходов и проверки приложения на предмет неверных данных. Его предназначение состоит в том, чтобы проверить, показываются ли ошибки пользователю, где они могут быть, или обрабатывать неправильные значения более изящно. Проводится для обеспечения стабильности приложения.

Эквивалентные тесты – это тесты, которые приводят к одному и тому же результату. Группа тестов представляет собой класс эквивалентности, при выполнении следующих условий:

  • все тесты написаны для выявления одной ошибки;
  • если один из тестов выявит ошибку, то остальные тоже ее выявят;
  • обратное тоже верно.

Эквивалентная область – часть области входных или выходных данных, для которых поведение компонентов или систем, основываясь на спецификации, считаются одинаковыми.

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.

Принципы безопасности:

  1. Конфиденциальность (ограничение или предоставление доступа к информации).
  2. Целостность (возможность восстановить данные в полном объеме при их повреждении; доступ на изменение информации только определенной категории пользователей).
  3. Доступность (иерархия уровней доступа и четкое их соблюдение).

Обработка ошибок и регрессионное тестирование.
После завершения разработки веб-приложения следует провести оценку и анализ выявленных ошибок для дальнейшего предотвращение их повтора. А также выполнить регрессионное тестирование.

Регрессионное тестирование

Использует технику тестирования черного ящика (повторное выполнение тестов), на которые влияют изменения кода. Эти тесты должны выполняться как можно чаще в течение всего ЖЦПО при изменениях кода для исправления дефектов или для улучшения работы веб-приложения.

 

Практические советы вам:

  • Перед тем, как приступить к тестированию необходимо обсудить все важные детали с командой (BA, PM, разработчики).
  • Использовать обширный подход с применением техник тест-анализа и набора методик тест-дизайна.
  • Определить виды тестирования, которые необходимо провести.
  • Определить цели и ключевых пользователей веб-приложения.
  • Списки устройств, ОС и браузеров, на которых необходимо провести тестирование.
  • Доступ для разных ролей посетителей.
  • Необходимость составления и передачи документации.

Хотим вам напомнить, что рабочий процесс – это не рутина, а творческий процесс, определяющий широту полета вашей мысли. Относитесь к вашей работе как к новому челленджу, и вы определенно начнете получать не только удовольствие, но и вдохновение и желание развиваться. Задачи тестировщика очень многогранны: им необходимо понять задачу веб-приложения, понять как оно должно работать, какие задачи решать, какую пользу приносить пользователям и затем перепроверить все по несколько раз, чтобы выпустить проект в мир. Им нужно быть собранными и дерзать, чтобы выпускать проекты за которые вся команда сможет гордиться 

Табы