Словарь модульного тестирования: покрытие

Я готовлю некоторые образовательные/учебные материалы по модульному тестированию и хочу перепроверить некоторые словарные запасы.

В моем примере разработчик протестировал Facade для всех возможные входные данные, но не проверял более детализированные единицы «за» этим.

Можно ли по-прежнему говорить, что тесты имеют «полный охват» — учитывая, что они охватывают весь диапазон входных данных? Я чувствую, что «полное покрытие» обычно используется для обозначения покрытия кода/модулей... но при тестировании всех возможных входных данных обязательно будет полное что-то.

Какое еще слово я ищу?


person Richard JP Le Guen    schedule 09.09.2010    source источник


Ответы (3)


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

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

person Adam Norberg    schedule 09.09.2010
comment
Спасибо! Мне нравится этот ответ - использование сценария и кода кажется наиболее доступным вариантом для среды типа модульного тестирования 101. Этот ответ также заставил меня задуматься о моем определении покрытия кода и понять, что я немного путаю его с независимостью! Спасибо - person Richard JP Le Guen; 09.09.2010

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

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

person Steven Evers    schedule 09.09.2010
comment
+1 Спасибо! Я собираюсь перейти к описанию сценариев, так как я нашел больше информации с помощью быстрого поиска в Google, и чувствую, что это будет более доступно для людей, выполняющих модульное тестирование 101. - person Richard JP Le Guen; 09.09.2010

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

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

person eglasius    schedule 09.09.2010
comment
Я забыл упомянуть, что у Фасада также есть некоторые вспомогательные методы, которые не тестируются, т.е. это преднамеренно не полное покрытие кода. Ваше второе замечание очень верно, и в этом цель упражнения; покажите им что-то, что они захотят считать полным охватом, а затем объясните, почему это не так :) - person Richard JP Le Guen; 09.09.2010