2009-06-18 3 views
0
if(condition1) 
    dosomething1(); 
if(condition2) 
    dosomething2(); 
if(condition3) 
    dosomething3(); 

ли полное тестирование ветви, если у меня есть два случая испытания в этом примереОтделение тестирования

  1. condition1 = condition2 = condition3 = истина;
  2. condition1 = condition2 = condition3 = false;

Или я его неправильно понял? Попытка выяснить разницу между веткой и тестированием пути. Я получаю тестирование пути, поэтому надеюсь, что это правильно.

+0

, как показано ниже, есть несколько разных мнений по охвату филиалов и связанным с ними измерениям измерений - вот что-то по этому вопросу – Zane

ответ

3

Отрасль Тестирование:

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

Да; вы выполняете правильное тестирование филиала, так как все ваши ветви ударяются. Фактически вы можете удалить свой второй тестовый пример, так как case 1 выполняет все ветви.

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

+0

Хм это меня смущает? Я получаю ваше определение, но если я удалю тестовый файл secound, это не закончится тем, что это покрытие оператора? –

+0

Второй тестовый случай является избыточным с учетом строгого определения тестирования ветвей ... то есть код до и после того, как ваши операторы if будут проверены в случае 1 и случае 2. Поэтому случай 2 не делает ничего нового. –

+0

Спасибо! Этот сайт использует два тестовых файла: http://www.onjava.com/pub/a/onjava/2007/03/02/statement-branch-and-path-coverage-testing-in-java.html?page=1 –

0

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

+0

Даже так, 6? Как вы получили 8? –

+0

@Greg - это тестирование пути –

+0

@Stefan: 2^3 = 8, которое представляет собой количество комбинаций из трех двоичных бит: 000, 001, 010, 011, 100, 101, 110, 111. –

0

Да, вы понимаете правильно. Тестирование филиала - это всего лишь «все ветви выполнены».

+0

Так что мне не нужен секретный тест? –

1

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

Путь 1: Любой путь будет использоваться для вашей базовой линии, поэтому выберите истину для результатов решений (представленных как TTT). Это первый путь в вашем базовом наборе.

Путь 2: Чтобы найти следующий базовый путь, переверните первое решение (только) в вашей базовой линии, предоставив вам FTT для получения желаемых результатов решения.

Путь 3: Вы переворачиваете второе решение в своем базовом пути, предоставляя вам TFT для вашего третьего базового пути. В этом случае первое базовое решение остается фиксированным с истинным результатом.

Путь 4: Наконец, вы переворачиваете третье решение в своем базовом пути, предоставляя вам TTF для вашего четвертого базового пути. В этом случае первое базовое решение остается фиксированным с истинным результатом.

Итак, ваши четыре основных пути: TTT, FTT, TFT и TTF. Теперь сделайте свои тесты и посмотрите, что произойдет.

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

(Выписка из http://www.codign.com/pathbranchcode.html)

1

Согласно моему пониманию, охват Branch также известен как охват принятия решений и этим охватывает как истинные, так и ложные условия

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

.

Возьмем один пример, чтобы объяснить покрытие Отрасль:

IF "A> B"

PRINT А больше, чем В

ENDIF

Так Тест набор для 100% филиал будет:

Контрольный пример 1: A = 5, B = 2, который вернет true.

Испытательный пример 2: A = 2, B = 5, который вернет false.

В вашем случае для покрытия филиала требуются как тестовые примеры 1, так и 2.

Имея только тестовые примеры1, это будет покрытие оператора.

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