ответ от @OldFox правильно, только некоторые дополнения:
Где моя ошибка?
CC является верхней границей для покрытия ветви, но нижняя граница для покрытия путей (не то же самое, как и охват линия/заявление, см. Ниже) Поэтому вам нужно до 3 тестов для покрытия всех ветвей/условий и не менее 3 тестов для покрытия всех дорожек.
Вот график вашей функции:
CC = 6 - 5 + 1 * 2 = согласно definition
Чтобы охватить все отрасли, нужно до 3 (true, true), (false, *)
Чтобы охватить все пути, вам нужно как минимум 3 теста, есть 3 возможных значения ependent paths in graph, поэтому вам нужно всего 3 теста, чтобы охватить все пути.
Возможно, возникла некоторая путаница в отношении количества различных входов, которое равно 4, но не все пути, образованные этими входами, независимы, два из них (когда a ложно) на самом деле одинаковы, поэтому есть только 3 независимые пути
заключение, 3 тестовых примера необходимы и достаточны для обеспечения как ветви, так и путей для вашей функции.
Теперь о покрытии строки/оператора: вам нужно выполнить каждую строку, по крайней мере, одну, для этого вам потребуется только один тест (true, true), но явно этого недостаточно для других типов покрытия.
Фактически, если первое условие не содержит оператор возврата, Cyclomatic complex равен 1; (правда правда). Второе условие «If-Else»? Если это так, Cyclomatic сложность 2; (true, true), (true, false) ... –
@Old Fox Второе условие - нет, если другое. В коде нет, если еще. –
Моя ошибка ... Я снова прочитал ваш вопрос и поставил ответ ... Вы задали хороший вопрос ... –