2009-07-16 6 views
7

Я могу часто идентифицировать множество областей, которые хорошо инкапсулированы и легко тестируются на модулях, но я также обнаружил, что много кода, где модульное тестирование действительно не работает, - как правило, доступ к данным и пользовательский интерфейс. Независимо от того, что я тестирую «методы», я стараюсь найти, что в этих местах не просто много усилий для создания функциональных модульных тестов, но эти тесты, как правило, очень хрупкие и не очень сильно тестируются.Когда вы должны прекратить модульное тестирование

В какой момент вы останавливаетесь и решаете, что преимущества модульного тестирования не стоят затрат?

ответ

6

Если вы можете обеспечить лучшую ценность, сделав что-то еще.

+2

+1 - Приоритет по значению бизнеса – Gishu

+0

+1, нет лучшего определения, но очень сложно оценить .. –

-1

Когда в плане проекта нет времени, и время тратится на поиск способов тестирования, а не на достижение цели проекта.

+2

Это сделало бы большие задержки в ближайшем будущем. –

+1

Вот когда в игру вступают такие вещи, как крайние сроки и цели. Следовательно, «когда в плане проекта нет времени для него» – NikolaiDante

+2

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

0

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

3

Я склонен испытывать только модели настойчивость и данных. тестирование модели обязательно. Пользовательский интерфейс (настольное приложение, webapps, интерфейс командной строки и т. Д.) Трудно проверить, поэтому я пишу для него тест только в редких циркуляциях.

0

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

2

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

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

1

Если вам нужно вырезать тестирование, вырезать интеграцию или сквозное тестирование. Misko Hevery в Google объясняет это действительно хорошо here.

«Модульное тестирование дает вам больше челки для затраченных»

является лучшей цитатой, чтобы выйти из его статьи.

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

0

Что касается тестирования доступа к данным, вы пробовали макетировать тесты для имитации ответов.

0

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

Если вы посмотрите на тестовые проекты в редакции Visual Studio Team для тестировщиков, есть такой элемент, который называется «Manual Test», который по сути является документом инструкции, чтобы сообщить человеку, как выполнить тест и пройти вручную Это. Некоторые вещи, например, вы упоминаете тестирование пользовательского интерфейса или код для обхода неявно странного или ошибочного поведения оборудования в базовой структуре или операционной системе или драйвере, лучше проверяются человеческими глазами.

0

Если вы используете TDD, вы останавливаете модульное тестирование, когда все тесты в тестовом списке преуспели.

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

Смежные вопросы