Использовались ли утилиты для генерации тестовых данных
Что проверяют
Как вы готовите данные для тестов: руками в базе, копией прода или воспроизводимо и автоматически. За вопросом про утилиты стоит вопрос о подходе. Следом обычно спрашивают, как вы делаете данные повторяемыми и что делаете с персональными данными.
Как отвечать
Расскажите о своём проекте: какие данные были нужны, чем генерировали, как встроили в тесты. Называйте те инструменты, с которыми работали сами:
- фейковые данные: Faker и Mimesis в Python, Datafaker в Java (форк заброшенного java-faker),
@faker-js/fakerв JavaScript, Bogus в .NET, сервис Mockaroo для разовых наборов в CSV и SQL; - объекты для автотестов:
factory_boy, Instancio в Java, паттерны Test Data Builder и Object Mother, чтобы тест задавал только важные для него поля; - объём для нагрузки:
generate_seriesв PostgreSQL выдаёт миллионы строк одним запросом, в JMeter данные подают через CSV Data Set Config; - комбинации: PICT от Microsoft строит попарные наборы параметров, когда полный перебор невозможен;
- поиск поломок: property-based тесты на Hypothesis сами подбирают входы, на которых падает код.
Отдельно скажите о подходе: данные создают через API или фабрику перед тестом и убирают после, у генератора фиксируют seed (Faker.seed(42) в Python), чтобы упавший тест можно было воспроизвести. Продовые данные берут только после маскирования, иначе это нарушение 152-ФЗ.
Цифры эффекта называйте свои: сколько времени уходило на подготовку данных до и после, сколько сценариев удалось покрыть. Если с генераторами не работали, так и скажите, опишите, как готовили данные (SQL-скрипты, фикстуры), и какой инструмент взяли бы сейчас.
Где спотыкаются
Генерируют случайные данные без seed. Тест падает раз в неделю, и повторить падение невозможно.
Считают, что Faker заменяет тест-дизайн. Случайное имя не проверяет пустую строку, 255 символов или эмодзи, такие значения задают явно по классам эквивалентности и границам.
Делят одни данные между всеми тестами. Один тест меняет запись, другой из-за этого падает, и результат прогона зависит от порядка.