Архитектура тестового кода E2E

Я пытаюсь провести несколько тестов e2e, используя CucumberJS и ProtractorJS для веб-сайта. Однако мой код становится беспорядком. Один и тот же код находится в разных местах: в объекте World, в файле ловушек Before и After и в файле определений шагов. Различные файлы, похоже, не имеют четко определенного использования: я просто расширяю их, добавляя некоторые повторно используемые части в объект World. (Например, я поместил объект Login in the World, однако у меня также есть хук перед входом в систему). Файлы World и step также становятся довольно большими. Еще одна трудность, с которой я сталкиваюсь, заключается в том, что некоторые обновления на сайте происходят асинхронно. Все это затрудняет анализ общего хода теста и отладку. Мой вопрос: каковы возможные архитектуры кода тестов e2e с использованием Cucumber.

Обновление:

Проект был увеличен. Мне нужно протестировать потоки через несколько сайтов. Два передних и один задний сайт. Пользователи могут размещать на одном из обоих интерфейсных сайтов различные типы информации. Это должно быть проверено администраторами сайта на бэкэнде, а затем оно должно появиться на одном из обоих фронтенд-сайтов. Я также должен проверять почту, отправляемую, когда пользователь отправляет информацию и когда администратор принимает/редактирует информацию. Мне кажется, что проще всего использовать учетную запись веб-почты и использовать ProtractorJS для проверки этого? Кроме того, у меня есть ограничение, что тесты должны быть в определенные сроки. Поэтому я не вхожу/выхожу из фоновых условий каждого теста (в зависимости от сценария) и больше не обновляю страницу для каждого сценария (дополнительная сложность, поскольку два интерфейса используют один и тот же логин).

Есть ли какие-нибудь примеры/шаблоны того, как я должен это сделать?

Как я это сделал, начал использовать шаблон Page Object. Но некоторая логика, например вход в систему, отличается для каждого сайта, поэтому я поместил их в отдельные объекты. Также у меня есть кэшированный объект страницы рядом с объектом страницы. Первый делегирует последнему, но только если URL-адрес или состояние входа изменились.


person raichu    schedule 08.12.2016    source источник


Ответы (1)


Я рекомендую вам прочитать шаблон Page Object, очень хорошо описанный Мартином Фаулером здесь http://martinfowler.com/bliki/PageObject.html Вы также можете найти много информации об этом шаблоне в Интернете.

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

Таким образом, вы сможете поддерживать согласованность своей архитектуры и правильно использовать SRP.

person Martin Blaustein    schedule 08.12.2016
comment
Как бы вы справились с расширением масштабов проекта? Спасибо. - person raichu; 19.12.2016
comment
Хорошо, я пытаюсь управлять им, как и любым другим проектом. Разделение интересов, избегайте повторений и направляйте все SRP. Я только что узнал о шаблоне Screenplay, который меняет способ написания тестов, он инкапсулирует их по-настоящему. Так что, может быть, вы могли бы проверить это .. посмотреть, если это что-то, что вы могли бы использовать. В конце концов, я не думаю, что есть один правильный подход, просто рекомендации, чтобы он не вышел из-под контроля. - person Martin Blaustein; 20.12.2016
comment
Спасибо. Я понимаю, что не существует единого подхода, но все же полезно некоторое руководство с помощью шаблонов, если вы новичок в чем-то. Я рассмотрю шаблон сценария. - person raichu; 20.12.2016