Для себя я пытаюсь понять баланс между поиском высокого уровня покрытия кода при тестировании и долгосрочными затратами на поддержку набора тестов, которые могут быть довольно хрупкими.
Предположим, у нас есть контроллер, который идет
try {
result = mode.doSomething();
if (result.count == 0 )
message = "none found"
redisplay criterion page
else if (result.count == 1 )
display detail page
else
display list page
} catch exception {
message = "bad things happened, please try again"
redisplay criterion page
}
Предварительная мысль состоит в том, что тесты трех случаев подсчета (0, 1, многие) могут быть менее ценными и более подверженными изменениям, чем тесты случая исключения. Менее ценный, потому что а). другое тестирование выявит проблемы при отображении страницы б). тест очень близок к простому воспроизведению кода.
code: go to page X
test: did you go to page X?
Если разработчик делает неправильный выбор X, он тоже ошибается! Если юзабилити-тестирование пользовательского интерфейса показывает, что Y - лучшая страница для отображения, мы обновляем код и тест в тандеме. Тест действительно чего-нибудь достиг?
Принимая во внимание, что исключительный случай может быть очень сложным при обычном тестировании пользовательского интерфейса, и его действительно легко протестировать с помощью имитаций. И поведение, следующее за исключениями, - это то, что нам действительно нужно, чтобы понять.