"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)
一般ユーザーの権限変更機能
管理者追加機能
直交表のカタログというものがすでに用意されていて、この中から使えそうなものを選ぶ
A library of Orthogonal arrays: http://neilsloane.com/oadir/index.html
例えば、この例では以下のように 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ケース存在します。
直交表を埋めた時に、水準の数が違って埋められないマスが出てくるのですが、そのマスには適当に論理値を入れておいて大丈夫なようです。(すでに他のテストケースでもうらできているため)