MC/DC に関する次の論文を読んでいます: http://shemesh.larc.nasa.gov/fm/papers/Hayhurst-2001-tm210876-MCDC.pdf。
私はソースコードを持っています:Z := (A or B) and (C or D)
と次のテストケース:
-----------------
| A | F F T F T |
| B | F T F T F |
| C | T F F T T |
| D | F T F F F |
| Z | F T F T T |
-----------------
上記のテスト ケースが一意の原因定義に準拠していることを証明したいと思います。
マスクされたテストを排除することから始めました。
A or B = F T T T T
C or D
つまり、最初のテスト ケースをとしてマスクしF and (C or D) = F
ます。C or D = T T F T T
つまり、3 番目のテスト ケースをA or B
asからマスクし(A or B) and F = F
ます。
次に、次のことを決定しましたMC/DC
。
に必要なテスト ケースA or B
:
F F
(最初のケース)T F
(5件目)F T
(2 番目または 4 番目のケース)
に必要なテスト ケースC or D
:
F F
(3番目のケース)T F
(4番目または5番目のケース)F T
(2番目のケース)
に必要なテスト ケース(A or B) and (C or D)
:
T T
(2 番目、4 番目、または 5 番目のケース)F T
(最初のケース)T F
(3番目のケース)
論文によると、この例は独自の原因定義に準拠していません。F T F T
代わりに、2 番目のテスト ケースを からに変更することを提案していT F F T
ます。
-----------------
| A | F T T F T |
| B | F F F T F |
| C | T F F T T |
| D | F T F F F |
| Z | F T F T T |
-----------------
私は再び決定MC/DC
しましA or B
た:
F F
(最初のケース)T F
(5件目)F T
(4番目のケース)
次に、両方の例の違いを示す次の独立ペアの表を紹介します (38 ページ)。
最初の例では、表示される独立ペアが 1 つではなく 2 つの変数を変更することは理解していますが、独立ペアをどのように計算しているかはわかりません。
列では、テスト ケース テーブルの行から取得したA
と推測できます。独立ペアは、変更された同じテスト ケースとして計算されます( )。F F T F
A
A
T F T F
ただしB
、 の列では、F F T F
もう一度選択します。B
私の考えでは、これは's column:に等しいはずF T F T
です。代わりに。
残りの手紙は同じジレンマを示しています。
また、D
の最初の例の列では、 の独立ペアが であることを示していF T F T
ますT F F F
。これは、最初の値から独立ペアを計算し、別の場所から選択していることを証明しているという私の理論を台無しにします。
誰かがそのような独立ペアテーブルをどのように (そしてどこから) 構築するかをよりよく説明できますか?