Тестирование веб-сайта или веб-приложения (Web application)

Включает в себя:

  • Documentation Testing;

  • Functionality Testing;

  • GUI Testing;

  • Usability Testing;

  • Interface Testing;

  • Database Testing;

  • Compatibility Testing;

  • Performance Testing;

  • Security Testing;

  • Crowd Testing.

1. Documentation Testing

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

Ниже приведены некоторые часто используемые артефакты:

  • Requirement documents;

  • Test Plan;

  • Test Cases;

  • Traceability Matrix (RTM).

Подробно о тестировании документации написано в видах тестирования.

2. Functionality Testing

Функциональное тестирование - тестирование того, что делает система. Проверить, что каждая функция программного приложения ведет себя так, как указано в документе с требованиями. Тестирование всех функций путем предоставления соответствующих входных данных, чтобы проверить, соответствует ли фактический результат ожидаемому результату. Оно используется для проверки рабочих процессов, всех ссылок веб-страниц, тестирования форм, тестирования файлов cookie и подключения к базе данных. Обычно функциональное тестирование включает в себя следующие задачи:

  • Testing UI Workflows: тестируются end to end workflow или бизнес-сценарии. Рекомендуется написание тестовых сценариев или тестовых случаев, чтобы охватить различные сценарии и установить критерии прохождения;

  • Тестирование гиперссылок: все ссылки на веб-сайте работают правильно, и нет неработающих ссылок. Типы ссылок включают внутренние ссылки, исходящие ссылки, якорные ссылки, схемы mailto и т. д.;

  • Тестирование форм (проверка полей ввода): формы используются для интерактивного общения с конечными пользователями. Тестировщик должен убедиться, что все формы работают должным образом. Тестирование форм включает в себя:

    • заполняются ли значения по умолчанию;

    • отображается ли сообщение об ошибке, когда пользователь не заполняет обязательное поле;

    • принимает ли форма недопустимые значения;

    • формы оптимально отформатированы для лучшей читабельности;

    • поля AJAX правильно заполняют значения во время выполнения;

    • загружаются ли раскрывающиеся списки с параметрами.

  • Проверка файлов cookie: подробно о тестировании кук написано в теме про cookie в сетях;

  • Проверка HTML и CSS: Тестировщик должен проверить, имеет ли сайт чистую структуру HTML и оптимизированный CSS в соответствии со стандартами W3C. Также нужно убедиться, что поисковые системы могут легко сканировать сайт.

    • нет синтаксических ошибок HTML;

    • цветовые схемы читаемы;

    • карта сайта точна.

Примеры функциональных тест-кейсов:

  • Кнопки:

    • Enter должна срабатывать как submit;

    • Tab должен переводить курсор на следующий элемент.

  • Поля ввода:

    • trimming («убирание») пробелов в полях ввода;

    • пустота/пробелы в поле ввода;

    • все способы редактирования (Insert, Delete, Backspace, Ctrl+C/V/X/Z и т. д.);

    • дроби ( 1.5/ 1,5/ ⅕).

  • Поиск:

    • wildcard symbols (*, вертикальный слеш, ?);

    • написание поискового запроса слитно/раздельно/через дефис должно вести к одному результату;

    • ввод текста в другой раскладке.

  • Сообщения об ошибках:

    • пробуем отключить в настройках браузера.

  • Календарь:

    • 31 июня;

    • 29 февраля + не високосный год;

    • прошлое/будущее (например, купить билет на уже прошедшее число).

  • Время:

    • синхронизация с сервером (на сервере приложения может быть выставлено другое время, отличающееся от таймзоны пользователя);

    • временные зоны.

  • E-mail:

    • логин (63 символа) @ домен (253 символа (может быть ip)).

  • Всплывающие окна / подсказки:

    • пробуем закрыть разными способами (нажатие на кнопку (если есть), на «крестик», клавишей ESC, просто нажатием в другую область экрана);

    • рефреш страницы особенно в момент запроса на сервер (например, совершение транзакции по покупке) иногда может приводить к появлению ошибок.

  • Все обязательные поля должны быть валидированы.

  • Звездочка должна отображаться для всех обязательных полей.

  • Не должно отображаться сообщение об ошибке для дополнительных полей.

  • Числовые поля не должны принимать буквы и должно отображаться соответствующее сообщение об ошибке.

  • Проверьте наличие отрицательных чисел, если это разрешено для числовых полей.

  • Тестовое деление на ноль должно быть правильно обработано.

  • Проверьте максимальную длину каждого поля, чтобы убедиться, что данные не усекаются.

  • Текст всплывающего сообщения («Это поле ограничено 500 символами») должен отображаться, если данные достигают максимального размера поля.

  • Проверьте, должно ли отображаться подтверждающее сообщение для операций обновления и удаления.

  • Величины должны быть в подходящем формате.

  • Проверьте все поля ввода на ввод специальных символов.

  • Проверьте функциональность тайм-аута.

  • Проверьте функциональность сортировок.

  • Проверьте, что FAQ и Политика конфиденциальности четко определены и доступны для пользователей.

  • Проверьте, все ли работает и не перенаправляется ли пользователь на страницу ошибки.

  • Все загруженные документы открываются правильно.

  • Пользователь должен иметь возможность скачать загруженные файлы.

  • Проверьте функциональность электронной почты системы. Тестируемый скрипт корректно работает в разных браузерах (IE, Firefox, Chrome, Safari и Opera).

  • Проверьте, что произойдет, если пользователь удалит файлы cookie, находясь на сайте.

  • Проверьте, что произойдет, если пользователь удалит файлы cookie после посещения сайта.

  • Проверка работоспособности при наличии расширений браузера, например, блокировщиков рекламы.

3. GUI

Верстка - размещение элементов веб-приложения (изображения, текст, кнопки, видео...) в соответствии с макетом или требованиями.

Проверяем:

  • наличие всех элементов;

  • их размер и цвет;

  • расположение относительно друг-друга.

  • Сравнение с макетом - метод наложения готового эталонного макета (обычно psd-файл) на приложение в экране браузера, все несовпадения можно рассматривать как ошибки (для этого есть хороший инструмент Pixel Perfect).

  • Измерение размеров элемента - если это имеет значение, то померять размеры элемента и сравнить их со спецификацией можно с помощью, например Page Ruler.

  • Правильность шрифтов (название, размер, цвет) - WhatFont.

  • Цвета интерфейса - ColorZilla.

  • Контент - проверить на наличие орфографических и грамматических ошибок (SpellChecker).

  • Появление курсора - довольно часто мы забываем проверить, появляется ли вообще и как выглядит курсор в полях ввода, на кликабельных элементах.

  • Фавикон - такая маленькая незначительная вещица, но может изрядно подпортить впечатление пользователя (в моей практике были случаи, когда разработчики или дизайнеры шаблона оставляли фавикон с логотипом своей компании на сайте у заказчика).

  • Обозначение возможности переноса элементов.

  • Кодировка (UTF8...).

  • Стандарты HTML/CSS - достаточно неплохие решения для быстрой проверки предлагает W3C.

  • Заголовки по всему приложению должны быть приведены к одному стандарту.

  • Title страницы - о нем мы тоже часто забываем, также как и разработчики :)

  • Back button - достаточно часто встречается ошибка при переходе на какую-то страницу и нажатии на браузерную кнопку Back, предыдущая страница крашится или возврат на нее вовсе не осуществляется.

  • Масштабируемость - особенно это важно при тестировании на смартфонах и планшетах. Где пользователь часто меняет масштаб экрана (Window Resizer), а также режим адаптивного дизайна (например в FireFox Developer Edition).

  • Кроссбраузерность - одна и та же страница может выглядеть по-разному в разных браузерах.

  • Проверяем Scroll.

  • Браузерные расширения, которые могут влиять на внешний вид приложения (например, AdBlock) - пробуем включить и отключить.

  • Проверить контент при отключенных (режим WebDeveloper) изображениях, flash, JavaScript.

Локализация - что мы знаем об этом? Обычно наши знания сводятся к невнятным «ну, это язык», «кодировка», «раскладка», еще реже «геолокация». Что еще мы так часто забываем проверять в рамках тестирования локализации?

  • Проверяем тестовый образец на правильность перевода - тут, конечно, хорошо бы подключить переводчика или носителя языка, но за неимением таких, берем тестовый образец и переводим через любой онлайн-переводчик (ну и все мы помним, как прекрасно и весело читать описание товаров на русском языке на AliExpress).

  • Длина переведенных слов - количество символов в переведенном слове может быть гораздо больше, что может привести к «расползанию» интерфейса при переводе.

  • Сокращения/аббревиатуры - существуют правила, по которым их либо переводят, либо транслитерируют, либо оставляют как есть.

  • Валюта.

  • Параметры шрифта могут также значительно отличаться в зависимости от языка ввода.

  • Проверить работу поиска во всех локализациях - например, на AliExpress результаты поиска одного и того же слова «смартфон» дают разный результат по количеству найденных товаров, причем разница исчисляется десятками тысяч.

  • Мета-информация (keywords/title/description) - столь незначительное для пользователя, невидимое, но такое важное для поисковых машин и продвижения сайта в гугле и других поисковиках.

  • RTL (right to left languages) - языки c обратным написанием (арабский, иврит) имеют свои особенности: числа пишутся слева направо, значки и иконки отзеркаливаются, названия программ не переводятся, нет переносов, кнопки редактирования Backspace и Delete работают наоборот.

4. Usability Testing

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

  • Соответствует ли приложение ожиданиям конечного пользователя;

  • Логичность интерфейса;

  • Самое нужное «сверху»;

  • Продуманная навигация;

  • Локализация (да, да, она относится и сюда тоже);

  • Совместимость с другим софтом (соцсети) и железом;

  • Скорость работы приложения;

  • Информативность (сообщения / обязательные поля);

  • Возможность отмены действий пользователя;

  • Help - должна быть инструкция, как работать с приложением;

  • Возможность печати (если нужно).

Примеры юзабилити тест-кейсов:

  • Текст подсказки должен быть там для каждого поля.

  • Домашняя ссылка должна быть на каждой странице.

  • Сообщение о подтверждении должно отображаться для любого вида операции обновления и удаления.

  • Полоса прокрутки должна появляться только при необходимости.

  • Если при отправке появляется сообщение об ошибке, информация, заполненная пользователем, должна быть там.

  • Название должно отображаться на каждой веб-странице.

  • Все поля (текстовое поле, раскрывающийся список, переключатель и т. д. ) и кнопки должны быть доступны с помощью сочетаний клавиш, и пользователь должен иметь возможность выполнять все операции с помощью клавиатуры.

5. Interface Testing

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

  • Приложение: тестовые запросы правильно отправляются в базу данных и вывод на стороне клиента отображается правильно. Ошибки, если таковые имеются, должны быть обнаружены приложением и должны отображаться только администратору, а не конечному пользователю;

  • Веб-сервер: тестовый веб-сервер обрабатывает все запросы приложений без какого-либо отказа в обслуживании;

  • Сервер базы данных: запросы, отправленные в базу данных, дают ожидаемые результаты. Проверьте реакцию системы, когда невозможно установить соединение между тремя уровнями (Приложение, Интернет и База данных) и соответствующее сообщение отображается конечному пользователю.

6. Database Testing

Тестирование баз данных (back-end тестирование, тестирование данных) включает проверку целостности данных на front end с данными на back end. Оно проверяет схему, таблицы базы данных, столбцы, индексы, хранимые процедуры, триггеры, дублирование данных, потерянные записи, ненужные записи. Оно включает в себя обновление записей в базе данных и их проверку на внешнем интерфейсе.

Тестирование будет включать в себя:

  • Отображение ошибок при выполнении запросов;

  • Целостность данных поддерживается при создании, обновлении или удалении данных в базе данных;

  • Тестирование производительности базы данных;

  • Тестирование процедур, триггеров и функций.

Примеры тест-кейсов для тестирования базы данных:

  • Проверьте имя базы данных: имя базы данных должно соответствовать спецификациям.

  • Проверьте таблицы, столбцы, типы столбцов и значения по умолчанию: все должно соответствовать спецификациям.

  • Проверьте, допускает ли столбец null значение.

  • Проверьте первичный и внешний ключ каждой таблицы.

  • Проверьте, установлена ​​ли сохраненная процедура или нет.

  • Проверьте имя хранимой процедуры

  • Проверьте имена параметров, типы и количество параметров.

  • Проверьте требуемые параметры.

  • Проверьте хранимую процедуру, удалив некоторые параметры

  • Проверьте, когда выход равен нулю, это должно повлиять на нулевые записи.

  • Проверьте хранимую процедуру, написав простые запросы SQL.

  • Проверьте, возвращает ли хранимая процедура значения

  • Проверьте хранимую процедуру с образцами входных данных.

  • Проверьте поведение каждого флага в таблице.

  • Убедитесь, что данные правильно сохраняются в базе данных после каждой отправки страницы.

  • Проверьте данные, если выполняются операции DML (Обновить, удалить и вставить).

  • Проверьте длину каждого поля: длина поля на Frontend и backend должна быть одинаковой.

  • Проверьте имена баз данных QA, UAT и production. Имена должны быть уникальными.

  • Проверьте зашифрованные данные в базе данных.

  • Проверьте размер базы данных.

  • Также проверьте время ответа каждого выполненного запроса.

  • Проверьте данные, отображаемые на Frontend, и убедитесь, что они совпадают с backend.

  • Проверьте достоверность данных, вставив неверные данные в базу данных.

  • Проверьте триггеры.

7. Compatibility Testing

Тестирование совместимости предназначено для проверки совместимости приложения в разных браузерах и на различных устройствах.

  • Тестирование совместимости браузера: кросс-браузерное тестирование - это тип нефункционального теста, который помогает нам убедиться, что наш веб-сайт или веб-приложение работают должным образом в различных веб-браузерах. При тестировании веб-сайта нам необходимо убедиться, что он отображается одинаково во всех браузерах. Нам нужно предоставить одинаковый опыт для пользователей, независимо от того, какой тип ОС и какой браузер они используют. Не все используют одну и ту же среду. Несмотря на то, что Google Chrome является самым популярным на текущем рынке, все же множество пользователей используют Mozilla Firefox, Safari и другие. Если веб-сайт не работает должным образом в конкретном браузере, это ухудшает взаимодействие с пользователем. Нужно проверить, правильно ли отображается ваше веб-приложение в браузерах, работает ли JavaScript, AJAX и аутентификация. Вы также можете проверить рендеринг веб-элементов, таких как кнопки, текстовые поля и т. д.

  • Тестирование совместимости устройств: этот тест подтверждает, что веб-приложение responsive и работает на устройствах разного размера и с разными операционными системами.

Примеры тестов на совместимость:

  • Протестируйте сайт в разных браузерах (IE, Firefox, Chrome, Safari и Opera) и убедитесь, что сайт отображается правильно.

  • Используемая версия HTML совместима с соответствующими версиями браузера.

  • Проверьте правильность отображения изображений в разных браузерах.

  • Протестируйте шрифты, которые можно использовать в разных браузерах.

  • Протестируйте код Javascript в разных браузерах.

  • Проверьте анимированные GIF-файлы в разных браузерах.

8. Performance Testing

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

Примеры тестов:

  • Имитируем нагрузку пользователями (JMeter);

  • Пробуем загрузить большие объемы данных, файлы, медиа;

  • Нагружаем БД;

  • Понижаем скорость инета (NetLimiter);

  • Понижаем скорость передачи данных (Throttling);

  • Тестируем восстановление системы после падений.

9. Security Testing

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

  • SQL-инъекция (SQL Injection);

  • Межсайтовый скриптинг (XSS);

  • Управление сеансом (Session Management);

  • Сломанная аутентификация;

  • Подделка межсайтовых запросов (CSRF);

  • Неправильная конфигурация безопасности;

  • Невозможность ограничить доступ к URL-адресу;

  • Раскрытие секретных данных;

  • Небезопасная прямая ссылка на объект;

  • Отсутствует контроль доступа на функциональном уровне;

  • Использование компонентов с известными уязвимостями;

  • Непроверенные перенаправления и возвраты.

Примеры тестовых сценариев для тестирования безопасности:

  • веб-страница, содержащая важные данные, такие как пароль, номера кредитных карт, секретные ответы на секретный вопрос и т. д. , Должна быть отправлена ​​через HTTPS (SSL).

  • важная информация, такая как пароль, номера кредитных карт и т. д. , должна отображаться в зашифрованном виде.

  • правила проверки пароля применяются на всех страницах аутентификации, таких как Регистрация, забытый пароль, смена пароля.

  • если пароль изменен, пользователь не должен иметь возможность войти со старым паролем.

  • сообщения об ошибках не должны отображать важную информацию.

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

  • проверьте доступ к защищенным и незащищенным веб-страницам напрямую без входа в систему.

  • опция «Просмотр исходного кода» отключена и не должна быть видна пользователю.

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

  • куки не должны хранить пароли.

  • если какая-либо функция не работает, система не должна отображать информацию о приложении, сервере или базе данных. Вместо этого она должна отображать пользовательскую страницу ошибки.

  • проверьте атаки SQL-инъекций.

  • проверьте роли пользователей и их права. Например, запрашивающая сторона не должна иметь доступа к странице администратора.

  • важные операции записаны в файлы журналов, и эта информация должна быть отслеживаемой.

  • значения сеанса находятся в зашифрованном формате в адресной строке.

  • информация о файлах cookie хранится в зашифрованном формате.

  • проверьте приложение на брутфорс-атаки

10. Crowd Testing or Crowdsourced testing

Краутестинг или краудсорсинговое тестирование - это новая тенденция в тестировании программного обеспечения, которая использует толпу (crowd/большое количество людей) для выполнения тестов, которые в противном случае были бы выполнены выбранной группой людей в компании. Краудсорсинговое тестирование представляет собой интересную и перспективную концепцию и помогает выявить многие незамеченные дефекты. Оно включает в себя практически все типы тестирования, применимые к вашему веб-приложению.

Источники:

Доп. материалы:

Last updated