Для обеспечения полного покрытия по данному методу каждая точка входа и выхода в программе и во всех ее функциях должна быть выполнена по крайней мере один раз и все логические выражения в программе должны принять каждое из возможных значений хотя бы один раз, таким образом для покрытия по веткам требуется как минимум два тестовых примера.
Также данный метод называют: branch coverage, all-edges coverage, basis path coverage, DC, C2, decision-decision-path.
В отличие от предыдущего уровня покрытия данный метод учитывает покрытие условных операторов с пустыми ветками. Так, для покрытия по веткам участка программного кода
a = 0;
if (condition) {
a = 1;
}
необходимы два тестовых примера:
1. Вход: condition = true; Ожидаемый выход: a = 1;
2. Вход: condition = false; Ожидаемый выход: a = 0;
Особенность данного уровня покрытия заключается в том, что на нем не учитываются логические выражения, значения компонент которых получаются вызовом функций. Например, на следующем фрагменте программного кода
if (condition1 && (condition2 || function1()))
statement1;
else
|
|
statement2;
полное покрытие по веткам может быть достигнуто при помощи двух тестовых примеров:
1. Вход: condition1 = true, condition2 = true
2. Вход: condition1 = false, condition2 = true/false (любое значение)
В обоих случаях не происходит вызова функции function1(), хотя покрытие данного участка кода будет полным. Для проверки вызова функции function1() необходимо добавить еще один тестовы й пример (который, однако, не улучшает степени покрытия по веткам):
3. Вход: condition1 = true, condition2 = false.
По компонентам логических условий
Для более полного анализа компонент условий в логических операторах существует несколько методов, учитывающих структуру компонент условий и значения, которые они принимают при выполнении тестовых примеров.