Подтвердить что ты не робот

Как запустить старый и новый код для тестирования модулей?

Я признаю, что у меня почти нет опыта унитаза. Я попытался с DUnit некоторое время назад, но отказался, потому что в моем приложении было так много зависимостей между классами. Это довольно большое (около 1,5 миллиона исходных строк) приложение Delphi, и мы - команда, которая его поддерживает.

Тестирование на данный момент выполняется одним человеком, который использует его до выпуска и сообщает об ошибках. Я также установил некоторые GUI-тесты в TestComplete 6, но он часто терпит неудачу из-за изменений в приложении.

Полужирный для Delphi используется в качестве основы устойчивости к базе данных. Мы все согласны с тем, что unittesting - это путь, и мы планируем написать новое приложение в DotNet с ECO в качестве платформы для обеспечения устойчивости.

Я просто не знаю, с чего начать с unittesting... Любые хорошие книги, URL, передовая практика и т.д.

4b9b3361

Ответ 1

Ну, задача модульного тестирования - это не само тестирование, а запись тестового кода. Если бы код был написан not, думая о тестировании, то, вероятно, вам будет очень тяжело.

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

В этом блоге есть много хорошего понимания о тестировании. Например, эта статья (мое первое предложение было основано на нем).

Что касается предложения, попробуйте сначала проверить листовые узлы вашего кода, те классы, которые не зависят от других. Они должны быть легче протестировать, так как они не требуют издевательств.

Ответ 2

Написание единиц тестирования для устаревшего кода обычно требует много рефакторинга. Отличная книга, которая охватывает это Майкл Перо " Эффективная работа с устаревшим кодом"

Одно дополнительное предложение: используйте инструмент покрытия unit test, чтобы указать ваш прогресс в этой работе. Я не уверен, что хорошие инструменты для покрытия кода Delphi. Думаю, это будет другой вопрос/тема.

Эффективно работает с устаревшим кодом

Ответ 3

Одним из наиболее популярных подходов является запись модульных тестов при изменении кода. Все новые коды получают модульные тесты, а для любого измененного кода вы сначала пишете его тест, проверяете его, изменяете, проверяете, а затем пишете/исправьте любые тесты, которые вам нужны из-за ваших изменений.

Одним из больших преимуществ наличия хорошего покрытия unit test является возможность проверить, что сделанные вами изменения не могут непреднамеренно нарушить что-то еще. Этот подход позволяет сделать это, сосредоточив усилия на ваших непосредственных потребностях.

Альтернативный подход, который я использовал, - это разработать мои модульные тесты через Co-Ops:)

Ответ 5

Для .Net unittesting прочтите это: " Искусство тестирования устройств: с примерами в .NET"

О лучших оценках:
То, что вы сказали правильно: иногда бывает сложно писать модульные тесты из-за зависимости между классами... Поэтому пишите блок-тесты сразу после или непосредственно перед;-) реализацией классов. Например, если у вас есть трудности с написанием тестов, возможно, это означает, что у вас проблемы с дизайном!