Предыдущая статья:Основы встраиваемых систем — тестирование основных концепций,Знакомит с основными понятиями, связанными с тестированием программного обеспечения.,Среди них точки знаний логического покрытия в тесте белого ящика относительно сложны.,В этой статье на примерах объясняется, как использовать сценарии использования тестов с различными уровнями покрытия.
Есть следующая программа,дизайн Удовлетворить соответственнопокрытие заявленийипокрытие филиаловсамый эффективныйтествариант использования。
int x = 0;
int y = 0;
if (x > 0 && y > 0)
{
y = y/x;
}
if (x > 1 || y > 1)
{
y = y + 1;
}
x = x + y;
анализировать:
Для покрытия операторов требуется, чтобы все операторы были выполнены. Для этой программы только два оператора if должны быть истинными, например x=2, y=0.
Покрытие ветвей, также называемое покрытием решений, требует только того, чтобы все суждения могли получить все возможные значения. Для этой программы только два утверждения должны быть истинными и ложными, например, x = 2, y = 0 (оба if истинны). ; x=0,y=0 (оба if ложны) требуют двух вариантов использования.
Учитывая следующую программу, какое значение переменной i может наиболее эффективно обеспечить покрытие оценкой?
void main()
{
int i = 0;
int sum = 0;
scanf("%d", &i);
while(i <= 10)
{
sum += i;
i++;
}
printf("%d\n", sum);
}
анализировать:
В этой программе оператор while является ветвью пути. Наиболее эффективный из них удовлетворяет покрытию суждений, то есть при минимальном количестве выполнений цикла суждение может быть истинным и ложным. Следовательно, если i=10, оно соответствует true, а в следующем цикле i становится равным 11, что соответствует false.
Учитывая следующую программу, сколько тестовых случаев требуется для обеспечения покрытия суждений?
int func(int n)
{
if (n == 0)
{
return 33;
}
if (n == 1)
{
return 66;
}
if (n > 1)
{
return func(n - 1) + func(n - 2) + func(n - 3) ;
}
else
{
return 99;
}
}
анализировать:
В этой программе 2 if и 1 if-else составляют все суждения, которые удовлетворяют покрытию суждений, то есть все суждения должны быть истинными и ложными. Самый простой и интуитивно понятный вариант — использовать 4 варианта использования: n=0; n=2; n=-1. Обратите внимание, что в программе есть рекурсивные вызовы. 1 ) + func(0) + func(-1) выполнено;
Существует следующая программа для разработки тестовых примеров с различным логическим покрытием:
int test (int x, int y)
{
int ret = 0;
if (x > 0 && y > 0)
{
ret = x + y + 10; //Блок операторов 1
}
else
{
ret = x + y - 10; //Блок операторов 2
}
if (ret < 0)
{
ret = 0; //Блок операторов 3
}
return ret; //Блок операторов 4
}
анализировать: Согласно программе, сначала нарисуйте блок-схему:
дизайнудовлетворитьпокрытие заявлений(SC)изтествариант использования,То есть после запуска тестового варианта использования,Может конвертировать каждый исполняемый оператор в программувыполнен хотя бы один раз。
В этом примере все блоки операторов с 1 по 4 выполняются один раз.
данные вариантов использования | Блок операторов 1 | Блок операторов 2 | Блок операторов 3 | Блок операторов 4 |
---|---|---|---|---|
{x=3, y=3} | √ | - | abef | √ |
{x=-3, y=0} | False | √ | √ | √ |
дизайнудовлетворитьТестовые случаи покрытия решений (DC), то есть после запуска тестовых примеров создайте ветви True и False для каждого суждения в программе.выполнен хотя бы один раз。
Покрытие решений, также называемое покрытием филиалов
данные вариантов использования | P1(x>0&&y>0) | P2(ret<0) |
---|---|---|
{x=3, y=3} | True | False |
{x=-3, y=0} | False | True |
дизайнудовлетворитьТестовые случаи условного покрытия (CC), то есть после выполнения тестовых случаев возможные значения каждого логического условия в программе.по меньшей мереудовлетворитьодин раз。
данные вариантов использования | C1(x>0) | C2(y>0) | C3(ret<0) | P1(x>0&&y>0) | P2(ret<0) |
---|---|---|---|---|---|
{x=3, y=0} | True | False | True | False | True |
{x=-3, y=15} | False | True | False | False | False |
дизайнудовлетворитьТестовые сценарии условного покрытия решений (C/DC), то есть после запуска тестовых примеров создайте ветви True и False для каждого решения в программе.выполнен хотя бы один раз,в то же время,делатьпрограммасерединаВозможные значения для каждого логического условияпо меньшей мереудовлетворитьодин раз。
данные вариантов использования | C1(x>0) | C2(y>0) | C3(ret<0) | P1(x>0&&y>0) | P2(ret<0) |
---|---|---|---|---|---|
{x=3, y=3} | True | True | False | True | False |
{x=-3, y=0} | False | False | True | False | True |
дизайнудовлетворитьТестовые случаи комбинированного покрытия (MCC) — это комбинации всех возможных значений условий для каждого решения в программе после запуска тестовых случаев.по меньшей мереудовлетворитьодин раз。
Обратите внимание на несколько моментов:
данные вариантов использования | C1(x>0) | C2(y>0) | C3(ret<0) | P1(x>0&&y>0) | P2(ret<0) | путь |
---|---|---|---|---|---|---|
{x=-3, y=0} | False | False | True | False | True | acdf |
{x=-3, y=2} | False | True | True | False | True | acdf |
{x=3, y=0} | True | False | True | False | True | acdf |
{x=3, y=3} | True | True | False | True | False | abef |
дизайнудовлетворитьВариант использования для покрытия пути тестом (ПК),То есть после запуска тестового варианта использования,Сделайте каждый путь в программеперезаписано хотя бы один раз。
данные вариантов использования | C1(x>0) | C2(y>0) | C3(ret<0) | P1(x>0&&y>0) | P2(ret<0) | путь |
---|---|---|---|---|---|---|
Невозможный путь | - | - | - | - | - | abdf |
{x=0, y=2} | False | True | True | False | True | acdf |
{x=3, y=5} | True | True | True | True | True | abef |
{x=-10, y=30} | False | True | False | False | False | acef |
Модифицированное условное суждение охватывает MC/DC, его значение описано здесь:
MC/DC требует разработки соответствующего количества тестовых примеров для удовлетворения следующих условий:
Существует следующая программа. Для удовлетворения модифицированного условного суждения требуется минимальное количество тестовых примеров:
bool func(bool x, bool y, bool z)
{
if (x && (y || z))
{
return true;
}
return false;
}
Сначала нарисуйте блок-схему. Вот два способа ее нарисовать:
Для модифицированного покрытия условных решений:
По приведенным выше правилам можно получить следующую таблицу:
Форма наблюдения:
Чтобы достичь минимального количества вариантов использования, удовлетворяющих MC/DC, можно использовать следующие дополнительные комбинации вариантов использования:
То есть для удовлетворения требований MC/DC необходимо как минимум 4 варианта использования.
Например, выберите комбинацию 1 и удалите избыточные варианты использования, чтобы получить следующую таблицу:
Давайте еще раз проанализируем:
Наконец, давайте сравним и углубим наше понимание, отметив на блок-схеме:
В этой статье представлен тест программного обеспечения,Различные случаи покрытия логики в тесте белого ящика,включатьпокрытие выписок SC、Определить покрытие DC、Условное покрытие CC、Условное суждение распространяется на C/DC、Покрытие комбинации условий MCC、Покрытие пути ПК、Исправлено решение о состоянии, охватывающее Пример MC/DC.