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