Отраслевое тестирование - PullRequest
1 голос
/ 19 июня 2009
if(condition1)
    dosomething1();
if(condition2)
    dosomething2();
if(condition3)
    dosomething3();

Полное ли это ветвление, если в этом примере у меня два теста

  1. условие1 = условие2 = условие3 = истина;
  2. условие1 = условие2 = условие3 = ложь;

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

Ответы [ 6 ]

3 голосов
/ 19 июня 2009

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

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

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

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

2 голосов
/ 29 марта 2018

Я не согласен с выбранным ответом, что вы можете удалить вторую тестовую строку!

Определение Википедии о ветвлении тестирования гласит: «Покрытие ветвления - выполнялась ли каждая ветвь (также называемая DD-путь) каждой управляющей структуры (например, в операторах if и case)? Например, если дан оператор if, выполнялись ли ветви true и false ? Еще один способ сказать, что каждое ребро в программе было выполнено? "
Ссылка здесь: https://en.wikipedia.org/wiki/Code_coverage

Также ознакомьтесь с этой видео-лекцией из программы Computer Science компании Georgia Tech, посвященной отраслевым испытаниям, где это требование демонстрируется в действии.
Ссылка здесь: https://www.youtube.com/watch?v=JkJFxPy08rk

2 голосов
/ 30 сентября 2015

Насколько я понимаю, покрытие Branch также известно как покрытие Decision и охватывает как истинные, так и ложные условия

в отличие от покрытия заявления. С оператором IF выход может быть ИСТИНА или ЛОЖЬ, в зависимости от значения

логического условия, которое следует после IF.

Давайте рассмотрим один пример, чтобы объяснить охват филиала:

ЕСЛИ «А> В»

PRINT A больше, чем B

ENDIF

Таким образом, тестовый набор для 100% покрытия филиала будет:

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

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

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

Только для контрольных примеров1 будет охватом выписки.

1 голос
/ 21 августа 2011

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

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

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

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

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

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

Помните, что цель базового тестирования - проверить все результаты решения независимо друг от друга

(выдержка из http://www.codign.com/pathbranchcode.html)

0 голосов
/ 19 июня 2009

Да, вы правильно поняли. Тестирование веток - это просто «все ветки выполнены».

0 голосов
/ 19 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...