Какая разница в структуре для вложенных и составных условных операторов? - PullRequest
0 голосов
/ 18 января 2019

Не совсем помню, как условия вложения влияют на сложность тестирования покрытия кода.

В моем коде есть условие, которое можно записать одним из двух способов. Первый будет:

if A && B && C && D:
    // condition satisfied

Второй способ будет:

if A:
    if B:
        if C:
            if D:
                // condition satisfied

Есть ли здесь заметная разница в тестировании покрытия кода?

Я собираюсь написать вспомогательную функцию, чтобы мой фактический код выглядел следующим образом:

if condition_met():
    // condition satisfied, do stuff

Но мне все равно придется провести модульное тестирование функции conditions_met().

1 Ответ

0 голосов
/ 29 января 2019

Для некоторых людей покрытие - это просто «то, что инструмент, который мы используем, сообщает как покрытие», но если это то, что вы ищете, вам сначала нужно будет объяснить, какой вид покрытия использует инструмент, который вы используете.

Предполагая, что используемый вами язык имеет краткую оценку условных выражений, два разных способа написания имеют одинаковое значение. Следовательно, для одного и того же набора тестов покрытие операторов, покрытие филиалов, покрытие условий и т. Д. Будут одинаковыми. Если вы посмотрите на некоторые нетипичные виды покрытия (например, покрытие линий), могут быть различия.

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

...