как часто должен весь комплект модульных тестов системы быть выполненным?

Обычно я - все еще в значительной степени новичок поблочного тестирования.

BTW, можно также видеть этот вопрос на других форумах как xUnit.net, и так далее,
потому что это - важный вопрос мне. Я apoligize заранее для моего
перекрестная рассылка; Ваши мнения очень важны для меня и не всех
на этом форуме принадлежит другим форумам также.

Я смотрел на большое десятилетие старая унаследованная система, которая имела более чем 700 модульных тестов
записанный недавно (700 только маленькое начало). Тесты, оказывается, записаны
в MSTest, но этом вопросе относится ко всем средам тестирования AFAIK.

Когда я работал через vs2008 "ВСЕ ТЕСТЫ", заключительное количество было только семью тестами.
Это составляет приблизительно 1% общих тестов, которые были записаны до настоящего времени.

БОЛЬШЕ ИНФОРМАЦИИ: исходный код ASP.NET MVC 2 RTM, включая его модульные тесты,
доступно на CodePlex; те модульные тесты также записаны в MSTest
даже при том, что (несоответствующий факт) Brad Wilson позже присоединился к команде MVC ASP.NET
как его Главный Программист. Весь 2000 плюс тесты выполняются, не только некоторые.

ВОПРОС: учитывая, что AFAIK цель модульных тестов должен определить поломки
в SUT, я исправляю в размышлении, что "лучшая практика" к всегда,
или по крайней мере очень часто, запускает все тесты?

обновленный 22.05.2010

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

по моему скромному мнению, существует больше чем один лучший ответ на этот вопрос, но AFAIK ТАК позволяет мне выбрать всего один, поэтому чтобы быть справедливым, я дал галочку Pete Johns для того, чтобы быть первым и для приобретения больше всего голоса от ТАКИМ ОБРАЗОМ сообщество. Esko Luontola Финляндии также дал большой ответ (я надеюсь, что он не становится проложенным под землей в вулканическом пепле), и две очень хороших ссылки, которые стоят Вашего времени, по моему скромному мнению; определенно ссылка на F.I.R.S.T. мне вдохновляющая; AFAIK, только xUnit.net в мире.NET предлагает "любой порядок, любое время". Вторая ссылка Esko является к действительно превосходному 92-минутному видео "Интеграционными тестами, Жульничество", представленное J. B. (Joe) Rainsberger (http://jbrains.ca, где существует больше содержания, стоящего моего времени). BTW, блог Esko также стоит посещения http://orfjackal.net.

9
задан meagar 31 March 2015 в 19:55
поделиться

5 ответов

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

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

По крайней мере, ночная сборка должна запускаться при каждом тестировании, а любые поломки должны быть исправлены в первую очередь с утра. Не терпите отказов модульного теста!

14
ответ дан 4 December 2019 в 08:00
поделиться

Лучше всего запускать модульные тесты при регистрации или до нее. Конечно, возможно, что модульные тесты прошли на машине до регистрации, но затем, когда часть фактического кода другие обновления основаны на сговоре, чтобы сломать модульный тест, поэтому они действительно должны запускаться и на полном коде.

Есть инструменты, которые помогут вам в этом, например TeamCity, которые позволят вам условно отметиться, где он запускает тесты для вас перед регистрацией и запускает сборку, включая тесты, если так настроены, после каждой проверки. дюймов (такая практика называется непрерывной интеграцией).

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

3
ответ дан 4 December 2019 в 08:00
поделиться

Должна быть возможность быстрого запуска юнит-тестов, чтобы вы могли запускать их после каждого простого изменения. Как сказано в http://agileinaflash.blogspot.com/2009/02/first.html

Тесты должны быть быстрыми. Если вы не решаетесь запустить тесты после простого изменения, состоящего из одной строки, значит, ваши тесты слишком медленные. Сделайте тесты настолько быстрыми, что вам не придется их рассматривать. [...] В программном проекте со временем появятся десятки тысяч модульных тестов, и члены команды должны будут запускать их все каждую минуту или около того без чувства вины. Сами посчитайте.

Лично мой болевой порог составляет около 5-10 секунд; если компиляция и запуск всех модульных тестов занимает больше времени, это будет серьезно раздражать и замедлять меня.

Если есть медленные интеграционные тесты (которых следует избегать), их можно запускать при каждой проверке. Предпочтительно разработчиком до регистрации, а затем еще раз на сервере непрерывной интеграции.

7
ответ дан 4 December 2019 в 08:00
поделиться

Поскольку модульные тесты можно автоматизировать, я бы посоветовал запускать их как можно чаще, особенно когда у вас их много.

Лучше всего запускать модульные тесты как часть ночного процесса сборки.

2
ответ дан 4 December 2019 в 08:00
поделиться

В идеале модульные тесты следует запускать как часть каждой сборки и перед каждой проверкой измененного кода.

Однако при большом количестве тестов это может занять значительное время, поэтому вам нужно уметь управлять этим.

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

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

1
ответ дан 4 December 2019 в 08:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: