Управление тестовыми данными — одна из старейших проблем автоматизации. Ещё на старте автоматизации (тестовые скрипты в Excel, макросы, старые QTP) данные зачастую "хранились в голове" у автора тестов или прямо в коде. С развитием CI/CD и параллельных запусков потребовались новые стратегии: как избежать гонок, когда несколько тестов одновременно используют одни и те же данные, и обеспечить повторяемость результатов?
Проблема: общие (shared) тестовые данные быстро приводят к коллизиям и непредсказуемым результатам. Тесты становятся нестабильными, их сложно отлаживать, фрагменты данных "засоряют" базы, запуск в несколько потоков приводит к ошибкам (data race).
Решение — внедрение стратегий "данные на тест" (Test Data Per Test):
Ключевые особенности:
Нормально ли использовать production данные как тестовые?
Нет! Это рисковано для безопасности, конфиденциальности, и приводит к непредсказуемости тестов из-за изменчивости данных.
Достаточно ли использовать setUp и tearDown для очистки данных?
Не всегда. Они помогают минимизировать риски, но параллельные прогоны могут столкнуть тесты, если данные остаются глобальными или не уникализируются.
Можно ли использовать одни и те же тестовые данные в smoke- и regression-сценариях?
Лучше — нет. Smoke-тесты должны быть максимально независимы, а регрессионные требуют комплексной подготовки данных, иначе возможны ложные срабатывания.
В компании был один общий логин и несколько "shared" пользователей и заказов, использовавшихся во всех автотестах. Параллельный прогон приводил к тому, что тесты стирали заказы друг друга или меняли статус одного заказа в нескольких потоках.
Плюсы:
Минусы:
Были внедрены фабрики тестовых данных: перед запуском теста для каждого сценария создавался уникальный заказ и пользователь, который удалялся по завершении теста, а sandbox окружение реинициализировалось.
Плюсы:
Минусы: