Что такое тестирование E2E?
E2E - это когда вы тестируете всю свою систему от начала до конца. Это включает в себя обеспечение того, чтобы все интегрированные части приложения функционировали и работали вместе, как ожидалось.
E2E тесты моделируют реальные сценарии пользователя, в основном проверяя, как реальный пользователь будет использовать приложение.
Примером для E2E для регистрации пользователя.
Тест включал бы:
Открытие сайта в браузере и поиск определенных элементов.
Затем заполнить несколько форм регистрации.
Затем убедитесь, что пользователь успешно создан.
Зачем это все?
- Для регрессии
- Для описания системы
- CI/CD
Кроме того, эти тесты запускаются как можно чаще, чтобы обеспечить обратную связь и добавить понимания что наша система осталась рабочей. Мотивация для дополнительного уровня тестов E2E заключается в преимуществах полностью автоматизированного набора тестов. Эти преимущества включают увеличение скорости нахождения ошибок.
Тесты E2E позволяют нам охватывать разделы приложения, которые не проверяются unit тестами и интеграционными тестами. Это связано с тем, что unit тесты и интеграционные тесты покрывают отдельные части приложения и тестируют изолированную часть функционала.
Даже если эти части работают хорошо сами по себе, вы не уверены, будут ли они работать вместе. Таким образом, наличие набора E2E тестов поверх unit и интеграции позволяет нам тестировать все наше приложение.
Эта пирамида из блога Мартина Фаулера и Google Testing Blog .
Большинство ваших тестов (надеюсь )находятся в нижней части пирамиды. Когда вы двигаетесь вверх по пирамиде, количество тестов становится меньше. Поднимаясь вверх по пирамиде, тесты становятся медленнее и дороже в написании, запуске и поддержке тестов.
Нужно стремиться минимизировать количество 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 очень дороги для поддержания, но они очень ценны, поскольку они являются отличным аналогом поведения пользователей, что помогает нам тестировать базовые пользовательские функции.