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

StackOverflow https://stackoverflow.com/questions/1137167

  •  16-09-2019
  •  | 
  •  

Вопрос

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

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

Жирный жирный для Delphi используется в качестве структуры стойки в отношении базы данных. Мы все согласны с тем, что Unittesting - это путь, и мы планируем написать новое приложение в Dotnet с Eco в качестве структуры стойкости.

Я просто не знаю, с чего начать с единомышленников ... какие -нибудь хорошие книги, URL, лучшая практика и т. Д.?

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

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

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

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

Когда вы работаете с устаревшим кодексом, издевательские objetcs действительно полезны для создания модульных тестов.

Взгляните на этот вопрос относительно Delphi и издеваться: Какая ваша любимая библиотека Delphi Mocking?

Для .NET UNITTESTING читайте это: "Искусство модульного тестирования: с примерами в .net"

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top