Плохо ли иметь много настроек в тестах и хранить их в конфигурационных файлах?

design-patterns
architecture
Теги: #<Tag:0x00007fedc7478620> #<Tag:0x00007fedc74784e0>

(Михаил Братухин) #1

Доброго всем, дня!
Сам я еще очень "зеленый" в мире автоматизированного тестирования и недавно прочел вот такую статью с советами от другого более опытного разработчика (ну, я надеюсь, что он более опытный, хотя с ним и не знаком):


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

Статья интересная, хоть и не без воды. Но вот какой момент меня тут заинтересовал:

Ошибка N4: много настроек.

    Еще одна очень распространенная ошибка - очень много настроек в тестах. На одном из прошлых проектов мне встретились тесты, у которых было порядка 20 возможных и при этом обязательных параметров, прописываемых в конфигурационном файле. При этом для сборки тестов было необходимо проставить у себя в системе одну переменную окружения! В итоге это приводило к путаницам с тем, что не всегда было понятно, а в каких условиях сейчас работают автотесты?

Заинтересовал он меня тем, что как раз сейчас делаю тесты и там как раз специально добавляю конфигурирование для различных окружений и параметризирование через файлики настроек. И не очень понятно, действительно, ли это какой-то антипаттерн и так лучше не делать или это просто у нас различные точки зрения? По-моему, если непонятно где и в каком окружении выполнялись тесты, то это проблема в первую очередь самих тестов и их логирования, а не того каким образом хранятся и передаются значения переменных окружения.

Какие у кого мнения на данный счет?


Роль архитектуры в автоматизации тестирования
(Mykhailo Poliarush) #2

@sidelnikovmike что скажешь? :slight_smile:


(Alexander Zvonov) #3

C моей точки зрения, иметь проперти файл с настройками и/или передавать часть настроек из CI - это нормально.
Главное иметь прозрачный репортинг.


(sidelnikovmike) #4

Да да, я тут :slight_smile:

Перечитал свои же слова - да, что-то в них есть может быть даже "не то".

Сейчас мне кажется , что нужно было сказать "настроек должно быть достаточно". Я упомянул в статье про ситуацию, в которой для настройки тестов нужно было проставить переменные окружения - это уже совсем плохо.

Далее - что понимать под настройками? Одна ситуация - у вас есть конфиг файлы , скажем, с текстами. При старте тестов вы указываете номер, на основании которого берется определенный конфиг. Это одно.

Другая ситуация - для старта тестов вам нужно указать 20-30 параметров, без которых тесты просто не будут работать. Вот это уже, кажется, избыточно.
Всегда нужно знать меру :slight_smile:


(Михаил Братухин) #5

Благодарю, за ответ!
Спрашивал не с целью критики статьи, а для того чтобы разобраться как лучше делать автоматизацию. Все-таки сам я еще очень мало повидал проектов и многого не знаю. А сейчас как раз делаю проект, где прикручиваю разные настройки через properties-файлы. И мне этот подход в рамках именно нашей задачи показался наиболее удачным в текущий момент. И после прочтения статьи затаились сомнения, которые мне захотел развеять или посмотреть под новым углом на текущую реализацию, чтобы избежать проблем в будущем.

А так всё верно: во всем нужна мера! Золотые слова, но, к сожалению, часто про это забывают. :slight_smile:

Еще я заметил, что довольно часто даже очень толковые разработчики забывают для чего и для кого делают автоматизацию. Они делают одновременно и очень крутые штуки и много непонятных свистоперделок, в которых никто кроме них разобраться не может, при этом забывая о многих других удобных и нужных мелочах и полезностях. Например, тот же лог и отчет. Иногда накрутят Allure-монструозных вещей, а капнешь внутрь и непонятно, что же в реальности происходило во время теста, на каком окружении и с какими параметрами и что собственно тестируем, зачем и почему. Не в обиду Allure. Это просто как пример привел. :grinning:

И потом такие "легаси" наработки достающиеся в наследство начинают создавать неконтролируемое желание биться головой об стол или монитор :sweat_smile: