Веб-приложение: приемочное тестирование: начальное состояние для теста и изоляция теста? - PullRequest
1 голос
/ 25 декабря 2009

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

Я не совсем уверен относительно языка реализации, который собираюсь использовать, однако я уверен, что это будет динамическое веб-приложение с базой данных базы данных, обслуживаемое веб-сервером. Прямо сейчас я планирую разработать первый выпуск на локальной машине с локальной средой тестирования, поэтому можно предположить, что безопасность не имеет значения для приемочных тестов (поэтому я могу предоставить приемным тестам корневой доступ к базе данных тестирования). участие, например). Я все еще немного не уверен насчет использования приемочного тестирования среды, однако, поскольку это будет веб-приложение, я думаю, что я буду использовать Selenium RC для написания тестов и их запуска (я упомяну это, если кто-то в состоянии указать мне на что-то лучшее :)).

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

Итак, как мне решить эту проблему? Создаю ли я базы данных искусственного тестирования (и поддерживаю их при каждом изменении схемы базы данных) и пишу приемочные тесты таким образом, чтобы каждый приемочный тест загружал подходящее состояние базы данных в базу данных тестирования перед запуском теста? (Как быстро или медленно это будет стоить загружать дюжину записей, когда выполняется много тестов на акцент?) Должен ли я создать базу данных с одним примером, загрузить ее для всех тестов и надеяться на лучшее? Должен ли я заново создавать данные испытаний, которые мне все время нужны в приемочных испытаниях? Или как люди это делают?

1 Ответ

0 голосов
/ 26 декабря 2009

Согласно дальнейшим исследованиям, правильный способ сделать это - привести базу данных в определенное состояние, используя соответствующие методы setUp. Это в основном включает в себя удаление всех существующих данных в таблицах, добавление в таблицу определенного набора тестов, а затем запуск теста на точность этих данных. После этого метод teardown очищает все, что было сделано с таблицами (либо setUp удаляет все, либо teardown снова все). Есть инструменты, такие как dbUnit, чтобы упростить этот процесс. Это приводит к некоторому снижению скорости тестирования, однако устанавливает полную изоляцию тестов, и это хорошо, потому что зеленый означает зеленый, а красный означает красный, а не «Учитывая текущий порядок выполнения тестов, это работает ».

Кроме того, проблема скорости, вероятно, будет для меня менее значимой, так как я могу сосредоточиться на небольшом количестве тестов во время разработки кода для отдельного пользовательского рассказа, и мой CI-сервер должен выполнять все тесты (что затем занимает больше времени). время) на заднем плане, когда я думаю, что я сделал.

...