Как решать задачу генерации тестовых данных для тесткейсов
Что проверяют
Есть ли у вас система: откуда берутся данные, как они привязаны к технике тест-дизайна и как не превратить их в источник нестабильных тестов. Следом часто спрашивают, что делать с персональными данными и копиями прода.
Как отвечать
Начните с того, что данные выводятся из тест-дизайна, а не из генератора:
- классы эквивалентности и граничные значения: для поля «возраст от 18 до 65» это 17, 18, 65, 66 и одно значение внутри диапазона;
- попарное тестирование: когда параметров много, комбинации сокращают инструментами вроде PICT, покрывая все пары значений вместо полного перебора;
- генераторы: Faker для Python,
@faker-js/fakerдля JavaScript, Datafaker для Java. Для табличных наборов с правилами подходит Mockaroo. Генератор запускают с фиксированным сидом, иначе упавший тест не воспроизвести; - фабрики и билдеры:
factory_boyили свой билдер в автотестах. Тест задаёт только важные для него поля, остальное заполняется значениями по умолчанию; - подготовка через API или базу: пользователь, заказ, баланс создаются запросом в предусловии, а не прохождением UI. Это быстрее и не ломается из-за чужого бага в форме.
Изоляция: у каждого теста свои данные с уникальным суффиксом, и тест убирает за собой или работает в отдельной схеме. Копии прода допустимы только обезличенными: имена, телефоны и документы маскируются до попадания на тестовый стенд, это требование закона о персональных данных, а не вежливость.
Подкрепите ответ своим примером: какие данные готовили, чем, сколько времени это экономило. Если автоматизации не было, честно опишите ручной процесс и то, как бы вы его улучшили.
Где спотыкаются
Отвечают «беру Faker» и на этом заканчивают. Случайное имя не проверит предельную длину поля, пустую строку и эмодзи, для этого нужны целенаправленные граничные значения.
Используют общие данные на весь набор. Один тест меняет статус заказа, другой на этот статус рассчитывал, и прогоны падают через раз.
Тащат на стенд выгрузку прода как есть. Кроме утечки реальных персональных данных, такие наборы непредсказуемы: сегодня нужный пользователь есть, завтра его нет.