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