Оптимальная модель передачи данных в автотесты

Добрый день.
Есть набор автотестов, пока еще не очень большой, используются #java , #testng , #maven . Запуск как из среды разработки, так и из командной строки Maven, оба с использованием testng.xml.

Есть желание делать запуск тестов с различными наборами и сочетаниями входных данных (например тип процедуры, код номенклатуры, стоимость и т.д.). При этом нет желания запускать все тесты сразу на всех наборах данных (их очень много). Хотелось бы в определенный момент передавать определенный набор.

На данный момент делаю это с помощью аннотации @Parameters, а сами параметры передаю в команде запуска через #maven . Также использую аннотацию @Optional, для возможности запуска с данными по умолчанию. В принципе работает. Но команда запуска получается довольно длинной, что не слишком удобно.

Возможно есть какие-то более оптимальные решения данной задачи?

Data Provider в помощь

1 лайк

Если тесту требуются входные данные из некоторого набора, этот набор должен состоять из одинаковых состояний данных. Это называется классами эквивалентности. Граничным значениям этих классов эквивалентности данных должны быть сопоставлены отдельные тесты. Если вы хотите запускать один и тот же тест на разных данных - что в таком случае тестирует этот тест? Что он проверяет в итоге? Мне не очень понятно.

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

То, что вы описываете называется smoke-тестами. Smoke-тесты - это наиболее приоритетное подмножество из всех тестов. Хоть smoke, хоть не smoke, тесты создаются по одним и тем же правилам. Иначе, когда вы начнете писать остальные тесты, вы просто попадаете на вероятность дублирования кода теста.

В-принципі, можливо багато варіантів. Деякі з них:

  1. TestNG Factory, де в самому факторі буде визиватись необхідний dataProvider в залежності від вхідного параметру
  2. Окремий testng.xml для кожного випадку або один файл з декількома тестами, в яких різні параметри. Тоді при запуску вказується або xml або конкретний тест.
  3. Файл з данними, як вхідний аргумент запуску. це може бути csv, json, або щось інше.
  4. База данних, данні з якої беруться по параметру із запуску

Я б радив виділити трошки часу і подумати, як далі буде розвиватись фреймворк і скільки у вас є на цю задачу часу. І вже в залежності від цього, обирати те, що саме вам підходить.

2 лайка