Hi
Работаем над итеграционными и Е2Е TA в продуктовой компании.
Специфика тест кейсов такая, что часто их надо вызывать для разных наборов данных. Выбран TestNG, используем датапровайдеры. Пока покрытие небольшое, то все устраивает. Но вот какая мысль начала тревожить. - рост числа датапровайдеров. Например: 80% тестов нужны просто пуговицы (это ок), но одному тесткейсу нужны пуговицы синие, второму синие с белыми точками, третьему - красные с белыми точками.
Выбор пуговиц связан с построением селектов к базе. Есть врапперы на наиболее частые вызовы, но не на все.
Напрашивается решение о параметризации датапровайдеров, но тут возникают проблемы :
- решение с параметризацией через testng.xml - выглядит очень грубо и ограничено
- решение с параметризацией через кастомные аннотации выглядит тоже не особо, так как фильтрация может быть громоздкой (sql - выражения, сетевые параметры и т.п.
Да и вообще, выглядит такая конструкция не консистентно (вынос кондишинов тестов на уровеь аннотаций\внешних файлов).
В идеале хотелось бы видеть в коде как-то так организацию наполнения датапровайдеров изнутри теста (Или хотя бы частично). Пример датапровайдера:
filter = filerBuilder.
withColor(green).
withHols(4).
withDots(white).
build().
testDataSet = buttonsStorage.getByFilter(filter)
“популярные” датапровайдеры::
testDataSet = buttonsStorage.getRandomButtons(100)
testDataSet = buttonsStorage.getLastPublishedButtons(10)
Т.о. я вижу пока две альтернативы:
1.Оставить подготовку в датапровайдерах.
Когда это все находится в датапровайдере, то мы получаем корректные репорты и распаралеливание в гриде. но растет код и тестовая логика получается размазанной по нескольким уровням. Чтобы не повторяться, придется переиспользовать датапровайры(или их части) что приведет к появлению еще одной иерархии классов для датапровайдеров, которая в общем случае не будет повторять тестовую. и будет запутывать рядовых тестеров.
- Если полностью отказаться от датапровайдеров и делая все выборки в тесте (Setup), то придется делать итерации по тестовому набору самостоятельно, хендлить таймауты, также нужно репортить все по иному. Ведь с т.з. TestNG это один тест, Всех этих расходов хочется избежать.
Поделитесь опытом, стоят ли датапровайдеры “вычинки” в принципе на проекте в потенциле до 500-600 тест кейсов ?
Thanks