Как используя E2E упростить тестирование и улучшить качество

Что такое тестирование E2E?

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

Примером для E2E для регистрации пользователя.
Тест включал бы:

Открытие сайта в браузере и поиск определенных элементов.
Затем заполнить несколько форм регистрации.
Затем убедитесь, что пользователь успешно создан.

Зачем это все?

  1. Для регрессии
  2. Для описания системы
  3. CI/CD

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

Тесты E2E позволяют нам охватывать разделы приложения, которые не проверяются unit тестами и интеграционными тестами. Это связано с тем, что unit тесты и интеграционные тесты покрывают отдельные части приложения и тестируют изолированную часть функционала.

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

Эта пирамида из блога Мартина Фаулера и Google Testing Blog .

Большинство ваших тестов (надеюсь :slight_smile: )находятся в нижней части пирамиды. Когда вы двигаетесь вверх по пирамиде, количество тестов становится меньше. Поднимаясь вверх по пирамиде, тесты становятся медленнее и дороже в написании, запуске и поддержке тестов.

Нужно стремиться минимизировать количество E2E тестов из-за того, что они работают медленно и, как ожидается, будут меняться. Это особенно важно, если вы работаете в стартапе или в начале разработки проекта - ведь в этот момент нужно двигаться быстро.

Google часто предлагает разделение 70/20/10: 70% unit тестов, 20% интеграционных тестов и 10% E2E тестов. Точная комбинация будет отличаться для каждой команды, но в целом она должна сохранить форму пирамиды. - Блог Google

4 шага для E2E

1. Выберите фреймворк

Основными критериями будет выбор фреймворка которые простой для быстрого старта.
Мы рассмотрели: CasperJS , Protractor , Nightwatch и Testcafe, Webdriver. Webdriver - самый распространенный но есть интересные аналоги с которыми проще начать.

Например TestCafe из-за простой установки и запуска. Это довольно новый, но популярный. Самое интересное, он не требует WebDriver. Тесты можно запускать сразу после установки npm. Это позволит быстро написать первые тесты.

TestCafe использует async / await. Он также имеет неявный механизм автоматического ожидания, который означает, что TestCafe автоматически ожидает запросов XHR и загрузки страниц. Поэтому вам не нужно заботиться об этом в своем коде.

2. Выберите основные тесты.

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

Но вы можете включить в E2E некоторые приоритетные регрессионные сценарии.

3. Интеграция CI / CD

Очень важный шаг - интегрировать тесты в CI / CD. Цель сделать тесты E2E частью процесса деплоя.
Во-первых, эти тесты запускаются каждый раз, когда новый код попадает в проект. Второй, периодически выполняющий тесты.

4 . Заключение

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

10 лайков