7

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 TC or Dつまり、最初のテスト ケースをとしてマスクしF and (C or D) = Fます。
  • C or D = T T F T Tつまり、3 番目のテスト ケースをA or Basからマスクし(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 FAAT F T F

ただしB、 の列では、F F T Fもう一度選択します。B私の考えでは、これは's column:に等しいはずF T F Tです。代わりに。

残りの手紙は同じジレンマを示しています。

また、Dの最初の例の列では、 の独立ペアが であることを示していF T F TますT F F F。これは、最初の値から独立ペアを計算し、別の場所から選択していることを証明しているという私の理論を台無しにします。

誰かがそのような独立ペアテーブルをどのように (そしてどこから) 構築するかをよりよく説明できますか?

4

1 に答える 1

8

まず、定義を読み直しましょう。

(www.faa.gov/aircraft/air_cert/design_approvals/air_software/cast/cast_papers/media/cast-10.pdfより)

DO-178B/ED-12B には、次の定義が含まれています。

調子

ブール演算子を含まないブール式。

決断

条件と 0 個以上のブール演算子で構成されるブール式。ブール演算子のない決定は条件です。条件が決定で複数回出現する場合、各出現は別個の条件です。

判定カバレッジ

プログラムの入口と出口のすべてのポイントが少なくとも 1 回呼び出され、プログラムのすべての決定が少なくとも 1 回、すべての可能な結果に基づいています。

変更された条件/判定カバレッジ

プログラムの入口と出口のすべてのポイントが少なくとも 1 回呼び出され、プログラムの決定のすべての条件が少なくとも 1 回、すべての可能な結果を​​取り、プログラムのすべての決定が少なくとも 1 回、すべての可能な結果を​​取りました。決定において、その決定の結果に独立して影響を与えることが示されています。条件は、他のすべての可能な条件を固定したままにして、その条件だけを変更することにより、決定の結果に独立して影響を与えることが示されています。


したがって、「(A または B) および (C または D)」という決定には、A、B、C、および D の 4 つの条件があります。

条件ごとに、その条件が「その決定の結果に独立して影響を与える」ことを示すテスト ベクトルのペアを見つける必要があります。

固有原因 MC/DC の場合、考慮される条件の値のみがテスト ベクトルのペアで変化する可能性があります。

たとえば、条件 A を考えてみましょう。次のテスト ベクトルのペアは、条件 A をカバーしています。

(A or B) and (C or D) = Z
 T    F       T    F    T   
 F    F       T    F    F   

このテスト ベクトルのペア (TFTF、FFTF) では、A と Z の値 (決定) のみが変化します。

次に、条件 B、C、D のペアを検索します。

RapiCover GUI (Rapita Systems の認定コード カバレッジ ツール - www.rapitasystems.com/products/rapicover) を使用すると、決定のすべての条件を完全にカバーするために、テスト ベクトルの完全なセット (観測または欠落) を確認できます。

RapiCover スクリーンショット

ベクトル V3 (上のスクリーンショットの黄色) は、どの独立ペアでも使用されていません。ベクトル V6 (スクリーンショットの赤) は、条件 D の MC/DC カバレッジに欠落しています。

これは、「固有の原因」MC/DC の定義のためのものです。


「MC/DC のマスキング」については、次のとおりです。

「MC/DC のマスキング」の場合、1 つの条件の値がテスト ベクトルのペアで変化する可能性があるという要件は、式のブール演算子によって他の変更がマスクされている場合に緩和されます。

たとえば、条件 D のベクトルのペアを考えてみましょう。

  (A or B) and (C or D) = Z
   T    F       F    T    T   
   T    F       F    F    F 

これら 2 つのテスト ベクトルを式ツリーで表すことができます。

        and
      /     \
    or1     or2
   /  \    /  \
  A    B  C    D


        and                          and
        [T]                          [F]
      /     \                      /     \
    or1     or2                  or1      or2
    [T]     [T]                  [T]      [F]
   /  \    /  \                 /   \    /   \
  A    B  C    D               A     B  C     D
 [T]  [F][F]  [T]             [T]   [F][F]   [F]

ユニークコーズMC/DC用ペアです。

条件 D の新しいテスト ベクトルのペアを考えてみましょう。

  (A or B) and (C or D) = Z
   F    T       F    T    T   
   T    F       F    F    F   

ここでも、式ツリーでこれら 2 つのテスト ベクトルを表すことができます。

        and                          and
        [T]                          [F]
      /     \                      /     \
    or1     or2                  or1      or2
    [T]     [T]                  [T]      [F]
   /  \    /  \                 /   \    /   \
  A    B  C    D               A     B  C     D
 [F]  [T][F]  [T]             [T]   [F][F]   [F]

これは、MC/DC をマスクするためのペアです。これは、3 つの条件 (A、B、D) の値が変更されていますが、条件 A と B の変更がブール演算子「or1」によってマスクされているためです (つまり、「A または B の値」)。 ' は変更されません)。

したがって、MCDC をマスキングする場合、すべての条件 D の独立ペアは次のようになります。

RapiCover スクリーンショット

于 2015-01-07T10:16:32.437 に答える