見出し画像

"System Test" Devとしてこれくらいは知っておこう

これくらいのことはカバーしてればよいという項目

テスト

  • 境界値テスト、同値テスト

    • 境界値テスト:b >= 10とかの場合には、11, 10, 9という境界をテストする必要がある

    • 同値テスト:

  • デシジョンテーブル

    • すべてのテストケースの組み合わせ一覧

  • 直交表(ペア構成テスト)

    • 因子と水準の組み合わせでテストケースに抜け漏れが出ないようにテストケースの組み合わせをすべて表で網羅できる仕組み

  • 状態遷移図、状態遷移表

    • ある状態(State)から別の状態に遷移する順序を明らかにする

      • ex

        • エアコンの冷房、暖房、除湿、停止、作動などの状態遷移

  • Nスイッチカバレッジ

  • N回状態遷移を行った時にバグがないかを検出する手法

  • 状態遷移図の流れの組み合わせをどの流れで、N回行ったらこの状態になるというのを簡単に算出できる

カバレッジ

  • ブラックボックステスト、ホワイトボックステスト

    • ブラック:コードがわからない状態でやるテスト。ユースケーステストみたいな

    • ホワイト:コードの条件分岐などがわかる状態を考慮して行うテスト。

  • C0: 命令網羅テスト(Statement Coverage)

    • 書いてある全てのコードを通ったテストができているかどうか

  • C1: 判定網羅テスト(Decision Coverage)

    • if条件ごとにTrue, Falseの2パターンを通っているかどうか

    • if (x == 2 && y >= 9) のように2つの条件式が書いてあっても、詳細は気にせずにifの数だけTrue , Falseが通っているかの判定をできているかどうかを考える

    • 1つのifに2つ以上の条件式が書いている時に、それぞれのT, FがどうなっているかをカバーしているかはC2でやる

  • C2: 条件網羅テスト(Condition Coverage)

    • 1つのifに2つ以上の条件式が書いている時に、それぞれのT, Fがどうなっているかをカバーしているかを確認するテスト

    • なので (x = 2, y = 9), (x = 1, y = 8)の2パターンを通ればC1としてはカバレッジ100%になる(テストケースとしては不十分になることもある)

  • MCC: 複合条件網羅テスト(Multiple Condition Coverage)

    • if (x == 2 && y >= 9) のような場合に、x == 2の True, Falseと y >= 9 のTrue, Flaseの合計4パターンをカバーしているかどうかのカバレッジ

      • x = True, y = True

      • x = False, y = True

      • x = True, = False

      • x = False, y = False

    • パターンが条件分の数のN乗になるので、条件式の組み合わせが増えれば増えるほど大変になる

  • MC/DC(Modified Condition / Decision Coverage)

    • (MCCだとテストケースが膨大になりすぎるのでMCCの代わりに利用される)

  • 信頼度成長曲線

    • テストをすればするほど、1つのバグに対するテストの工数が増加していく

    • テストをすればするほど、バグが見つかりにくくなる

直交表の使い方

  • 水準 = 要素の数(利用中、停止中、保留中みたいな)

  • 因子 = 組み合わせの数(権限がAdminの時は、一般ユーザーの権限変更、管理者の追加機能が使える)の場合は以下の3つが因子となる

    • 権限(一般、Admin)

    • 一般ユーザーの権限変更機能

    • 管理者追加機能

  • 直交表のカタログというものがすでに用意されていて、この中から使えそうなものを選ぶ

  • 例えば、この例では以下のように 3^1 + 2^2(3水準が1因子、2水準が2因子)となる

    • 権限(一般、Admin、ゲスト) -> 3水準

    • 一般ユーザーの権限変更機能(利用可能、利用不可能) -> 2水準

    • 管理者追加機能(利用可能、利用不可能) -> 2水準

  • ⇧の 3^1 + 2^2というのは一覧には見つけられなかったので、L9(3^4)というやつを選ぶ

  • 選んできた表の列に因子を入れて、行には水準を入れます。

  • 列ごとに水準の値を埋めていきます

    • 例えば1列目に「権限」という因子を入れた場合は、1 = Admin, 2 = 一般, 3 = ゲストのようになります。

    • そして、全ての数値を論理名と入れ替えます。

  • 入れ替え作業が終わったら、直交表の行がテストケースになります。なので L9(3^4) の場合はL9 = 9行なので9ケース存在します。

  • 直交表を埋めた時に、水準の数が違って埋められないマスが出てくるのですが、そのマスには適当に論理値を入れておいて大丈夫なようです。(すでに他のテストケースでもうらできているため)

この記事が気に入ったらサポートをしてみませんか?