memclutter
@memclutter
I am developer

Что такое end-to-end тестирование?

Извиняюсь за глупый вопрос, но я не очень хорошо понимаю что значит end-to-end тестирование.

  • Это просто тест который проверяет что вся система работает в целом?
  • Или проверяет работу какого-то сценария работы пользователя (например для блога, вход в аккаунт -> добавление статьи в блоге -> предпросмотр -> публикация -> выход)?


Если кого не затруднит помогите разобраться. Заранее спасибо.
  • Вопрос задан
  • 133242 просмотра
Решения вопроса 1
pi314
@pi314
Президент Солнечной системы и окрестностей
Понятие еnd-to-end обозначает всего-навсего классификацию тестов по уровню, на котором тестируется система, и, само по себе, ничего не говорит ни о том, какие конкретно должны быть эти тесты, ни о том, какую роль они играют в общей стратегии обеспечения/проверки качества и, также, не является методикой тестирования. (Методика - это совсем другое понятие.)

Для понимания сути этого понятия хорошо сравнить его с модульным ("нижний" уровень) и интеграционным ("средний") тестированием на каком-нибудь конкретном примере. Давайте рассмотрим некий сферический webshop в вакууме. Предположим, в нем есть 50 классов и для большинства из них написаны модульные тесты. Они проверяют исключительно функционал конкретного модуля (чаще всего, класса), т.е. тот, что зависит только от самого модуля и ни от чего чего более. Потом есть интеграционные тесты. Они проверяют корректность работы отдельных "модулей", если их собрать вместе согласно архитектурe. Например, работает ли правильно "Корзина", состоящая, в свою очередь, из 10 классов (предварительно проверенных модульными тестами), или "Корзина", подключенная к "Вебморде" и т.д. Где-то повыше в этой иерархии есть такие интеграционные тесты, которые проверяют конкретный функционал всей системы. Например, отправляется ли юзеру мейлом копия оплаченного заказа...

И вот тут начинается самое интересное для понимания того, что такое end-to-end тестирование! Можно представить себе тест, проверяющий, что соответствующий мейл генерируется и сбрасывается SMTP серверу. Если SMTP сервер не рассматривать, как часть разрабатываемой системы, то этот тест вполне можно назвать end-to-end тестом (послали кучку HTTP запросов через "Вебморду" и проверили сброс мыла на SMTP - все зашибись!). Однако, если настройки и эксплуатация SMTP сервера - часть проекта (например, заказана разработка webshop "под ключ"), может оказаться, что это мыло будет отфильтровано каким-нибудь спам-фильтром, превысит лимит почтового ящика пользователя... короче, не дойдет до него. Тогда этот же самый тест уже нельзя считать end-to-end, а нужно бы было написать тест, проверяющий приход мыла в POP3/IMAP ящик. (Опять же, если это действительно нужно! Ибо, в зависимости от конкретных функциональных и нефункциональных требований, архитектор и QA инженер вполне могут найти возможность обеспечить адекватный контроль качества и без такого теста.)

Таким образом, end-to-end тесты, это такие интеграционные тесты, которые воздействуют на систему через ее самые внешние интерфейсы и проверяют ожидаемую реакцию системы через эти же интерфейсы. Почему именно интеграционные? Потому, что это единственное, что можно о них сказать наверняка: они по определению не могут быть модульными тестами. А все остальное: являются ли они одновременно приемочными, нагрузочными или еще какими - зависит только от общих плана/стратегии тестирования и той роли, которые эти тесты в них играют.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Za_Dolber
@Za_Dolber
Middle QA
У вас, если вы про профессиональные тесты, имеется тест - набор действий. В данном случае end-to-end будет означать, что тест начался у конечного пользователя, который инициировал сценарий и закончился у него же, либо, начался у одного пользователя, и закончился у другого (например, в начале - пользователь-абонент ( первый end), сценарий "пополнение счета", в конце - система биллинга, которая засчитывает все изменения на счету (второй end)).

Это просто тест который проверяет что вся система работает в целом?

Необязательно - такой тест называется sanity-тест, или дымовой тест, и для такого теста условие end-to-end необязательно.

Или проверяет работу какого-то сценария работы пользователя (например для блога, вход в аккаунт -> добавление статьи в блоге -> предпросмотр -> публикация -> выход)?

Больше похоже, но, строго говоря, в начале такого теста должна быть проверка, что, например, пользователь запросил страницу авторизации, и например, в конце, сервер посчитал сессию законченной, и в этом случае сервер - второй "end", а первый - пользователь.
Ответ написан
@MoonMaster
Программист и этим все сказано
Я бы сказал, что это больше чем тестирование - это методология. Обычно данную методологию применяют для того, чтобы удостоверится, что программа отвечает тз от начала до конца. Оснавная цель данный методологии, убедиться что программа работает корректно и если у нее есть зависимые системы, то данные передаются корректно.

Обычно для такого вида тестирования разрабатывают сценарий, который максимально приближен к реальной эксплуатации программы. Например в сценарий закладываются, подключения к базе данных, получение данных из БД, отправка данных в БД, взаимодействие с сетью и многое другое.
Ответ написан
Комментировать
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы