График потока управления и цикломатическая сложность для следующей процедуры

insertion_procedure (int a[], int p [], int N)
{
    int i,j,k;
    for (i=0; i<=N; i++) p[i] = i;
    for (i=2; i<=N; i++)
    {
        k = p[i];
        j = 1;
        while (a[p[j-1]] > a[k]) {p[j] = p[j-1]; j--}
        p[j] = k;
    }
}

Я должен найти цикломатическую сложность для этого кода и затем предложить некоторые белые тестовые сценарии поля и случаи функционального тестирования. Но я испытываю затруднения при создании CFG для кода.

Ценил бы некоторую справку на тестовых сценариях также.

10
задан Cœur 14 August 2017 в 06:08
поделиться

2 ответа

Начните с нумерации операторов:

 insertion_procedure (int a[], int p [], int N)
 {
(1)    Int i,j,k;
(2)    for ((2a)i=0; (2b)i<=N; (2c)i++) 
(3)        p[i] = i;
(4)    for ((4a)i=2; (4b)i<=N; (4c)i++)
       {
(5)       k=p[i];j=1;
(6)       while (a[p[j-1]] > a[k]) {
(7)           p[j] = p[j-1]; 
(8)           j--
          }
(9)          p[j] = k;
       }

Теперь вы можете четко видеть, какой оператор выполняется первым, а какой последним и т. Д., Поэтому рисование cfg становится простым.

CFG

Теперь для вычисления цикломатической сложности вы используете один из трех методов:

  1. Подсчитайте количество областей на графе: 4
  2. Нет. предикатов (красный на графике) + 1: 3 + 1 = 4
  3. Кол-во рёбер - нет. узлов + 2: 14 - 12 + 2 = 4.
27
ответ дан 3 December 2019 в 14:43
поделиться

Цикломатическая сложность равна 4.

1 для процедуры +1 для цикла for +1 для цикла while +1 для условия if цикл while.

3
ответ дан 3 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: