Skip to content

Latest commit

 

History

History
292 lines (240 loc) · 37 KB

testirovanie-veb-saita-ili-veb-prilozheniya-web-application.md

File metadata and controls

292 lines (240 loc) · 37 KB

Тестирование веб-сайта или веб-приложения (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/большое количество людей) для выполнения тестов, которые в противном случае были бы выполнены выбранной группой людей в компании. Краудсорсинговое тестирование представляет собой интересную и перспективную концепцию и помогает выявить многие незамеченные дефекты. Оно включает в себя практически все типы тестирования, применимые к вашему веб-приложению.

Источники:

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