Разработчики тестируют свой код по частям, по мере его написания. Мониторинг ошибок во время цикла разработки предупреждает инженеров о возникновении конфликтов и помогает им выявить их первопричину. Вы можете задаться вопросом: когда есть DevOps и непрерывное развертывание ПО, действительно ли сквозное (end-to-end) тестирование все еще необходимо? Оно не только целесообразно, но и весьма важно для проверки требований, конфигураций и функциональности.
Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.
Содержание
- Что такое сквозное тестирование?
- Этапы сквозного тестирования
- Как оценивать результаты сквозного тестирования?
- Лучшие практики сквозного тестирования
- Трудности в сквозном тестировании
- Улучшение приложений и повышение удовлетворенности пользователей с помощью сквозного тестирования
Что такое сквозное тестирование?
Сквозное тестирование – это процесс тестирования программного обеспечения в том виде, в котором оно будет использоваться конечными пользователями, от начала и до конца. При этом приложение или сайт тестируется уже не в окружении разработчиков и используется так, как это делали бы пользователи.
Например, сквозное тестирование приложения началось бы с проверки того, что вы не используете ресурсы компании на продакшене. Затем вы бы проверили все зависимости, такие как доступ к базам данных, запросы API, интеграции с внешними интерфейсами и т. д.
Действительно, обеспечение качественного пользовательского опыта может потребовать значительных усилий и ресурсов. К счастью, большую часть этого процесса сейчас можно автоматизировать.
Этапы сквозного тестирования
Первый этап в сквозном тестировании – определение сценариев использования для тест-кейсов. Подробно опишите каждый шаг и ожидаемые результаты. Это будет служить основой для сравнения фактических результатов с ожидаемыми.
Эффективное сквозное тестирование проходит в соответствии со следующим процессом в несколько этапов:
- Определите сценарии тестирования.
- Подготовьте тестовое окружение, необходимое для выполнения тестовых сценариев.
- Проанализируйте требования к программному и аппаратному обеспечению.
- Определите, какие ответы должны приходить от систем.
- Определите методы тестирования.
- Подготовьте тест-кейсы.
- Пройдите тесты и проанализируйте результаты.
Сквозное тестирование включает в себя несколько уровней:
- Функциональное тестирование: Работает ли приложение так, как ожидается?
- Интеграционное тестирование: Поддерживает ли приложение интеграцию с платежными системами?
- Тестирование производительности: Соответствует ли приложение стандартам производительности?
- Тестирование безопасности: Безопасны ли шифрование, передача данных и хранение платежной информации?
В каждом из них вы должны проверить приложение в различных сценариях, с которыми могут столкнуться пользователи. Например, на этапе функционального тестирования вы можете проверить, что произойдет, если пользователь обновит данные платежной карты на этапе оформления заказа или добавит больше товаров в корзину.
Как оценивать результаты сквозного тестирования?
В сквозном тестировании вы ищите некорректную работу приложения или несоответствие ожидаемым результатам при различных сценариях.
Давайте рассмотрим пример интернет-магазина. Пользователи просматривают товары и добавляют их в корзину. Они могут это делать многократно, прежде чем перейти к оформлению заказа. Затем им нужно войти в учетную запись, выбрать способ оплаты, подтвердить информацию о доставке и завершить покупку.
В этом процессе многое может пойти не так. Каждый шаг должен быть протестирован, чтобы убедиться, что интернет-магазин работает согласно требованиям, включая интеграцию с внешней платежной системой, промо-коды купонов или подарочные карты.
Сквозные тесты должны быть разработаны для каждого этапа пути клиента, от первого входа до покупки. Анализ должен проводиться на каждом шаге, чтобы гарантировать корректные результаты и выявлять все критичные проблемы, требующие доработки.
Если оценивать результаты на каждом шаге сквозного тестирования, то становится гораздо проще обнаружить ошибку и оперативно ее устранить. Затем можно составить модульные тесты, чтобы перепроверить, что ошибка исправлена, прежде чем снова отправлять весь код на end-to-end тестирование.
Лучшие практики сквозного тестирования
Лучшие практики сквозного тестирования обеспечат бесперебойную и эффективную работу системы.
- Приоритеты: В то время как вы желаете протестировать все аспекты приложения, лучше начните с тех функций, отказ которых вызывает максимальные проблемы, например работа с клиентами или гарантия того, что отказ не повлияет на доходы. Разумнее сначала заняться теми вещами, которые могут существенно повлиять на ваш бизнес.
- Тестируйте распространенные пользовательские сценарии: Иногда невозможно продумать все сценарии и тест-кейсы. Избегайте тестирования редко встречающихся кейсов и тестируйте наиболее распространенные сценарии. Интеграционное или низкоуровневое модульное тестирование может быть более подходящим вариантом для наименее вероятных пользовательских сценариев.
- Сделайте тесты реалистичными: Большинство людей не просто кликают по сайтам или приложениям. Они останавливаются, читают, рассматривают картинки или делают паузы между действиями. Сквозное тестирование должно быть максимально реалистичным.
- Мониторинг ошибок, модульные тесты и интеграционные тесты на первом месте: Сквозное тестирование охватывает все приложение целиком, что может привести к некоторым сложностям. При наличии множества ошибок необходимо исследовать и устранить каждую. Постарайтесь устранить как можно больше ошибок, прежде чем проводить сквозное тестирование.
- API-тестирование: Сквозные тесты могут фиксировать функциональные сбои внешнего интерфейса, но в паре с API-тестами разработчики могут определить, является ли сбой функциональным или ошибкой запроса API.
- Оптимизируйте тестовое окружение: Поддерживая тестовую среду в оптимальном состоянии, вы сможете быстрее приступить к тестированию. Это позволяет свести к минимуму время настройки тестирования, и быстро очистить данные, чтобы тестовая среда была готова к следующему тесту.
Трудности в сквозном тестировании
При сквозном тестировании могут возникнуть затруднения, поэтому разработка плана и реализаций сквозных тестов имеет решающее значение. Если вы пропустите какой-то шаг или не определите ожидаемый результат, автоматизация может не найти ошибку.
К примеру, тестирование сценариев работы должно проводиться в определенном порядке, чтобы отразить взаимодействие пользователя с приложением. Если не документировать каждый шаг пользователя, то это может привести к получению неправильных данных. Создание тест-сьютов со сценариями работы может быть утомительным и требовательным, особенно для сложных приложений. Эти тест-сьюты могут включать в себя выполнение сотен или даже тысяч тестов.
Тестировать гораздо проще в окружении разработчиков. Однако необходимо также проводить тестирование и на продакшене. Во многих случаях тестирование в продакшн-окружении может быть недоступно. В таких ситуациях может потребоваться установка продакшн-окружения локально и доступ к виртуальным машинам. Кроме того, если в процессе тестирования произойдёт обновление системы, это может повлиять на результаты.
Для тестирования можно использовать собственное аппаратное обеспечение или облачные сервисы, имитирующие реальные устройства и браузеры.
Улучшение приложений и повышение удовлетворенности пользователей с помощью сквозного тестирования
Команды разработчиков прилагают огромные усилия, чтобы объединить различные компоненты программного кода в единую систему для создания потрясающих приложений. Это требует громадной работы, которая может быть утомительной. Однако в результате на рынок выходит приложение, которое прекрасно функционирует.
Используя сквозное тестирование, вы сможете обеспечить лучший пользовательский опыт, который оправдает все приложенные усилия.
Перевод статьи «Best Practices for End-to-End Testing for Better User Experience».
Пингбэк: Скрипты для тестирования API в Postman