Фон Я работаю в команде из 7 разработчиков и двух тестеров, которые работают в логистической системе. Мы используем Delphi 2007 и modeldriven разработки с Bold для Delphi в качестве рамки. Система работает около 7 лет и имеет около 1,7 млн. Строк кода. Мы выходим на производство через 4-5 недель, и после почти каждого выпуска мы должны сделать некоторые исправления для ошибок, которые мы не нашли. Это, конечно, раздражает как для нас, так и для клиентов.
Текущее тестирование Решение, конечно же, более автоматическое тестирование. В настоящее время мы проводим ручное тестирование. Testdbgenerator, который начинается с пустой базы данных и добавляет данные из смоделированных методов. У нас также есть Testcomplete, который запускает некоторые очень простые скрипты для тестирования GUI. Недостаток времени не позволяет нам добавлять больше тестов, но скрипты также чувствительны к изменениям в приложении. Несколько лет назад я действительно пробовал модульное тестирование с DUnit, но через несколько дней я сдался. У блоков слишком сильные соединения.
Предварительные условия тестирования модулей Я думаю, что знаю некоторые предпосылки для модульного тестирования:
- Напишите небольшие методы, которые делают что-то одно, но делайте это хорошо.
- Не повторяй себя.
- Сначала напишите тест, который терпит неудачу, затем напишите код, чтобы пройти тест.
- Связи между блоками должны быть свободными. Они не должны много знать друг о друге.
- Используйте инъекцию зависимостей.
Framework для использования Мы можем перейти на Delphi XE2, главным образом из-за 64-битного компилятора. Я немного посмотрел на Spring, но для этого требуется обновление с D2007, и это не произойдет сейчас. Возможно, в следующем году.
Вопрос Большинство программ по-прежнему не тестируются автоматически. Итак, каков наилучший путь для повышения вероятности проверки старого кода? Или, может быть, лучше начать писать тесты только для новых методов? Я не уверен, что лучший способ увеличить автоматическое тестирование и комментарии по этому поводу приветствуются. Можем ли мы использовать D2007 + DUnit сейчас, а затем легко перейти на Delphi XE2 + Spring позже?
РЕДАКТИРОВАТЬ: О текущей методологии тестирования для ручного тестирования просто "фунт на нее и попытайтесь ее разбить" в качестве Chris вызова он.