Привет,
В настоящее время я изучаю экстремальное программирование и стараюсь придерживаться его как можно больше. Это означает, что мне нужно будет превратить мои (на данный момент, неожиданно большой набор) пользовательских историй в приемочные тесты, как только я начну итерацию (конечно, после планирования выпуска).
Я не совсем уверен относительно языка реализации, который собираюсь использовать, однако я уверен, что это будет динамическое веб-приложение с базой данных базы данных, обслуживаемое веб-сервером. Прямо сейчас я планирую разработать первый выпуск на локальной машине с локальной средой тестирования, поэтому можно предположить, что безопасность не имеет значения для приемочных тестов (поэтому я могу предоставить приемным тестам корневой доступ к базе данных тестирования). участие, например). Я все еще немного не уверен насчет использования приемочного тестирования среды, однако, поскольку это будет веб-приложение, я думаю, что я буду использовать Selenium RC для написания тестов и их запуска (я упомяну это, если кто-то в состоянии указать мне на что-то лучшее :)).
Однако остается темная область: у меня пока нет данных для этого приложения, потому что я внедряю новое, свежее приложение. Таким образом, я не могу получить снимок текущей производственной базы данных, чтобы получить тестовую базу данных, и, кроме того, приложение находится в состоянии (как любое веб-приложение с базой данных), поэтому использование единой базы данных для всех приемочных тестов вызвать неприятные проблемы с тестовой изоляцией (и, по крайней мере, для модульных тестов, которые читаются как «Это может привести к большому веселью и большому количеству седых волос»).
Итак, как мне решить эту проблему? Создаю ли я базы данных искусственного тестирования (и поддерживаю их при каждом изменении схемы базы данных) и пишу приемочные тесты таким образом, чтобы каждый приемочный тест загружал подходящее состояние базы данных в базу данных тестирования перед запуском теста? (Как быстро или медленно это будет стоить загружать дюжину записей, когда выполняется много тестов на акцент?) Должен ли я создать базу данных с одним примером, загрузить ее для всех тестов и надеяться на лучшее? Должен ли я заново создавать данные испытаний, которые мне все время нужны в приемочных испытаниях? Или как люди это делают?