E2E
E2E, “End to End” тестирование, это когда мы “снаружи” проверяем работоспособность всей системы в целом.
Представим, что нам дали 5 минут и сказали вручную проверить, работает ли приложение. Те действия, которые мы выполним, и будут составлять сценарий теста.
Например, для приложения YouTube это может быть “ввести в поиске смешные котята, перейти на ролик, включить видео”.
Автоматизировав эти действия, получим E2E тест.
Как очищать БД?
Тестовая БД в принципе не годится для E2E теста, это уже не настоящее окружение.
Поэтому нет смысла ломать голову как упихнуть очистку БД в PhpUnit или Codeception.
Вместо этого должен быть скрипт, который с нуля устанавливает приложение, настраивает настоящие зависимости, накатывает дамп и прогоняет запросы по стенду на живое приложение и базу в продакшен режиме.
Вот тогда это честный E2E тест а не имитация.
Поэтому вопрос очистки базы отпадает. Очистка нужна там где мы сотни классических тестов гоняем по функциональностям приложения, а не проверяем работоспособность приложения целиком.
Тестируем в продакшене?
Для E2E мы используем не продакшен окружение а специальное окружение идентичное продакшену.
Грубо говоря это стейджинг, стенд с реальными данными и реальными сервисами но в отдельном от продакшена контуре.
На нëм проверяем все системы в реальном, а не тестовом режиме.
Это сильно отличается от тестовой базы и тестовых окружений, в которых многие части упрощаются для удобства тестирования.
Если очень очень упростить то E2E это тест “снаружи” на копии прода. Не на проде а на его копии, настолько идентичной насколько возможно.
Сколько нужно E2E тестов?
E2E тестов не должно быть много, если их много значит делаем что-то не то.
Во многих случаях достаточно даже одного теста на всю систему.
Что проверяем?
E2E не проверяет косяки в логике а проверяет что приложение в целом работает.
Обычные юнит тесты, напротив, проверяют ошибки в логике отдельных компонентов системы.
Пример завода автомобилей
Представим завод автомобилей.
Юнит тест это проверка отдельно двигателя, отдельно подвески, отдельно электрики.
Смоук тест будет завести мотор, если машина завелась то тест пройден.
E2E будет сесть в машину, завести, проехать вокруг квартала, припарковать и выйти из машины.
Если на каком-то этапе действие стало невозможно или что-то пошло явно не так, значит E2E тест провален. Например у тебя отвалилась дверь или оказалось что не работает ручник. Или что сиденье забыли установить или установили задом наперëд.