MC/DC - Как управлять решением не на 100% охват

учитывая решение "(A && B) || (!A && C)", это приводит к отсутствию охвата MC/DC, например невозможно протестировать F#F#< /сильный>.

  1. Что значит не достичь 100% MC/DC? Это просто вопрос качества?
  2. Допустимо ли не иметь 100% MC/DC?
  3. Как управлять решением достичь 100% MC/CD?

Большое спасибо.


person Enzo    schedule 24.07.2018    source источник
comment
У меня нет ответа на ваш вопрос, но можете ли вы объяснить нотацию F#F#?   -  person Ned Batchelder    schedule 27.07.2018
comment
обозначение F#F# представляет возможную комбинацию значений условия для проверки решения. В частности, F # F # говорит, что есть 4 условия, и тест оценивает значение False для первого и третьего условий и не заботится о втором и четвертом условиях (они могут быть True или False, это не имеет значения).   -  person Enzo    schedule 02.08.2018
comment
Спасибо, но здесь только три переменные. Какие четыре условия? Если это A, B, !A, C, то, конечно, вы не можете проверить F#F#, потому что вы не можете иметь A false и !A false.   -  person Ned Batchelder    schedule 02.08.2018


Ответы (1)


Чтобы ответить на ваши вопросы, давайте сначала рассмотрим некоторые компоненты критериев MC/DC:

Подробнее здесь https://en.wikipedia.org/wiki/Modified_condition/decision_coverage#Definitions

  • Условие — условие должно быть атомарным логическим выражением.
  • Решение - логическое выражение, состоящее из нуля или более логических операторов, а решение без логического оператора (И и ИЛИ) является только условием.

Учитывая ваше примерное выражение (A && B) || (!A && C), мы можем разбить его на три условия «A», «B» и «C». Обратите внимание, что A и !A являются логическими выражениями, но одно из них не является атомарным.

Затем мы можем создать таблицу истинности:

Таблица правды

Желтым цветом выделены «возможные» оценки MC/DC, которые мы можем предложить.

После идентификации мы затем выбираем, какие из идентифицированных элементов являются «настоящими» оценками MC/DC, которые дадут нам 100% охват. Как определить «настоящие» оценки?

Таблица истинности — идентифицировано

Мы определяем пары (ИСТИНА и ЛОЖЬ) каждого условия и решения с каждой возможной строкой. На изображении выше строки, выделенные оранжевым цветом, представляют собой «настоящую» оценку MC/DC, которая дает нам 100-процентное покрытие ветвей и 100-процентное покрытие условий.

Помните, что он должен выводить как минимум n+1 тестов.


  1. Если ваш охват MC/DC не 100%, это может означать, что что-то не так с тем, как создаются ваши условия. Почему? Возьмем этот простой пример (A && !A), когда условие "A" истинно, тогда решение ложно; когда условие «А» ложно, то решение по-прежнему ложно. Этот классический пример в программировании может привести к недостижимым кодам. Недостижимые коды бесполезны и никогда не будут выполнены.
  2. Цель MC/DC — выявить недостатки в выражениях вашего решения. Это будет зависеть от конкретного случая, поскольку существует критическое программное обеспечение, требующее определенного уровня совершенства, например, в авиации, где MC/DC чаще всего используется для предотвращения сбоев. В большинстве операций по разработке программного обеспечения, где условия являются общими, приемлемым диапазоном охвата является 80–90 %.
  3. Переоцените свои условия. Потратьте время, чтобы понять логику и поток приложения. Одним из действий, которые мы выполняли ранее, было создание графа потока управления (CFG) в сочетании с таблицами истинности для определения правильности логики. A (CFG) — это графическое представление определенного логического выражения. Это похоже на блок-схему, где узел условия может быть либо истинным, либо ложным, и прохождение всех узлов условия приведет к определенному решению.

Надеюсь это поможет!

person arjayosma    schedule 16.11.2018