2009-12-25 3 views
1

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

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

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

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

ответ

0

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

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