Как лучше организовать архитектуру тестов

Всем привет! У нас сейчас занимаются написанием автотестов два человека, один из которых я.

Я выношу всю реализацию в раздел main, а сами тесты выношу в раздел test
my_project

Коллега все делает в разделе test
other_project

Интересно ваше мнение по поводу того, как лучше реализовывать проект. Всё делать в разделе test или всё же всю обработку выносить в раздел main. Спасибо

1 лайк

ИМХО, никакой разницы нет.
Главное чтобы все делали одинаково :slight_smile:

1 лайк

А вам какая больше нравится/удобнее?

1 лайк

Мне больше ваш вариант импонирует.

1 лайк

`Спасибо)

Я за то чтобы в test были только тесты да степы, а всё остальное выносить в мэйн (пэйджы, хелперы, утилиты).

2 лайка

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

1 лайк

Если репа с селениум тестами будет единственной - тогда всё равно.
Если будет необходимость объединить несколько тестовых реп как зависимости - то методы одной репы будут видны в другой только если будут находиться не в test. Так что Ваш подход более универсален.

1 лайк

Все компоненты, которые могут быть использованы вне ваших тестов и НЕ содержат бизнес-логику тестируемого приложения нужно переместить в main. В идеале можно написать на них unit тесты, особенно, если этими компонентами пользуется еще, кто-то.

Следующий уровень: мульти-модульный проект. В модуль ‘core’ выносят все такие компоненты, делаю их слабосвязными и пишу для них юнит-тесты. Потом ‘core’ проект добавляется в зависимости тестового проекта. Также можно сделать publishing в nexus и версионирование, чтобы core проектом могли пользоваться другие команды.

Следующий уровень - это вынести шаги (тоже без бизнес логики) в модуль ‘[your-system]-steps’ и сделать тоже самое как и для ‘core’, только скорее всего тут понадобятся уже интеграционные тесты для шагов. Для таких тестов удобно использовать TestContainers, например, для поддержания качества шагов по работы с БД - SqlTestContainer (PgTestContainer).

И вот только проверяемую бизнес-логику и специфичные для тестов шаги или комплексные нужно поместить в вашу папку ‘test’

Но все актуально для большого проекта и команды QA. Если проект не большой, то как у вас сделано - ОК :grinning:

2 лайка