Понимание мер покрытия блочного тестирования - PullRequest
2 голосов
/ 05 марта 2011

Я пытаюсь понять блочное тестирование, используя книгу «Как мы тестируем программное обеспечение в Microsoft» Алена Пейджа, Кена Джонстона, БиДжей Роллисона.На страницах 118 и 119 книги мне приведены два примера функциональных блоков.

Я предоставил изображения этих функций:

Пример блока 1

Пример блока 2

В книге говорится, что покрытие блоков измеряет количество смежных групп операторов, не связанных ветвями.Мне кажется, я не понимаю этого.

Может кто-нибудь объяснить, почему

int x = 0, y = 0, z = 0;
if (condition)

считается 1 блоком в BlockExample1, а

int x = 0, y = 0, z = 0;
if (condition 1 && condition2)

считается 4 блокамиBlockExample2

1 Ответ

3 голосов
/ 05 марта 2011

Вот упрощение рассматриваемого кода:

int x = 0;
if (c1 && c2)
{
    x = 1;
}

Из-за вероятности короткого замыкания (когда c1 если false), этот код эквивалентен следующему:

int x = 0;        > #1                       > #5
if (c1)           |                          |
{                                  > #4      |
    if (c2)       > #2             |         |
    {                     > #3     |         |
        x = 1             |        |         |
    }                     |        |         |
}                                  |         |

В отличие от этого, этот код имеет меньше блоков:

int x = 0;        > #1        > #3
if (c1)           |           |
{                     > #2    |
    x = 1             |       |
}                     |       |
...