テストケースをまんべんなく作ることというのは、難しくはないが面倒な作業です。
テスト方法はかなりありますので、ざっくり纏めました。
・ペアワイズ法(オールペア法)
・同値分割法
・境界値分析
・デシジョンテーブルテスト
・原因結果グラフ法
・状態遷移テスト
・直交表
・nワイズテスト
・ドメイン分析
・クラシフィケーションツリー法
・ユースケーステスト
・制御フローテスト
・データフローテスト
・エラー推測
・チェックリストベースドテスト
・探索的テスト
◆ペアワイズ法(オールペア法)
2つのパラメータ間の組み合わせを
総当たりのパターンを出す方法「ペアワイズ法(オールペア法)」
例えば1つの条件に 真(true)と偽(false)の条件があり、
これが何パターンかある状態というのがプログラム中の条件となります。
そのパターンは真(true)と偽(false)のパターンの場合
発生するパターンは2となります。
これが2つの条件が重なると、
2×2の4パターンになります。
以下のパターンが出来上がります
a:true b:true
a:true b:false
a:false b:true
a:false b:false
これらをパターン化し、テストケースとして作成していきます。
すべてデータ化し、単体テストを自動化している場合もありますよね。
プログラム中の判断としては単体テストで実施することが多く
この中である程度のパターンによる障害を削除しておくことが必要になります。
よくある手戻りで機能要件として一部変更となると、
このケースのテストケースを作成しなおす状態になります。
そりゃぁ…プログラム上は数文字変更するだけだけど…と愚痴がでるのはこれです。
◆同値分割法
同値分割では、入力条件を類似と見なすことができるグループまたはセットに分割します。
システム上は同等に処理されると想定したデータを「同値パーティション」または「同値クラス」と
呼ばれるグループに振り分け、テストを実行します。
メリット:最小限のテストにてテストが実施可能。
デメリット:すべて適用できるわけではなく、例外値、境界値などが存在する場合は
別途実施しないとテスト抜けが発生しやすい
例:1~10が正常の場合
ー5 、 5 、 11 AA 等の代表的な値をチェックする
◆境界値分析
有効になる範囲がある場合、境界値についてテストを行い、特に境界値を重点的にチェックする方法です。
例:1~10が正常の場合
0、1、10、11 等の値の切り替わりをチェックします。
同値分割法と合わせて実施する場合があります。
メリット 境界値にて判断が及ぶテストが可能
注意点 通常の値にて見逃すことがある。
正常値の範囲がIF文に記載されていることだけではないことを気を付けてほしい。
◆デシジョンテーブルテスト
条件と結果を設定し、設定の条件に合った結果が出ているかを
ブラックボックス化し、Aの場合はBになるといったものをチェックを
すべてのパターンについて行っていくテストになります。
https://www.itmedia.co.jp/im/articles/1111/07/news138.html
◆原因結果グラフ法
原因と結果のフロー図を作り、そこから結果表を作っていく方法です。
イメージを作ってから行いますので、何をやりたいかというのが判明していく方法となります。
デバッグにて実施すると原因が判明する場合がございます。
◆状態遷移テスト
Aが終わったらBになるという状態を順に状態を追うことを想定するテストとなります。
運用テストやシステムテスト等の値の状態をチェックする際に使用されます
◆直交表
2つの入力に対して、すべての値が同一の数だけ
当てはまることをチェックする方法。
これを行うパターンは、
すべてのパターンを実施しましたが、全く発生しませんでしたのように証明する際に必要になるかもしれません。
◆nワイズテスト
任意のN個のパラメータのパターンをすべて網羅するテストを作成することです。
オールペア法とほぼ同じですね。N個のパターンとなります。
◆ドメイン分析
関係性のある複数の変数を使うときこの分析方法をつかうようです。
境界値と関連性のある別のデータをひとつの結果として取り扱うときなどです。
共通関数などでの塊での判定などを取り扱うときなどに見るといいかもしれません。
http://www.jasst.jp/archives/jasst11t/pdf/s2-1.pdf
◆クラシフィケーションツリー法
テスト対象が持つ要素を木構造でモデリングするテスト設計技法です
◆ユースケーステスト
代表的なステークスホルダーが行う標準の要求動作のテストを行っていくテストです。
システムテストやユーザーテスト等にて行う技法となります。
◆制御フローテスト
ホワイトボックステストと呼ばれるテストです。
システムの内部構造を元にテストを行っていきます。
https://note.com/akiyama924/n/n57a4b4caa188
◆データフローテスト
ソースコードのデータ(変数、データオブジェクト)に対して
の状態変化に対して問題が無いかをチェックします。
宣言、消滅などの無駄な状態が無いかなどのチェックを行います。
◆エラー推測
ソフトウェアの処理について、エラーが発生することを想定してテストする技法
これは経験則が元となるチェックとなります
◆チェックリストベースドテスト
有識者がいることが前提のテストとなります。
有識者が経験したチェック内容を元に該当するかをチェックする技法となります。
◆探索的テスト
ソフトウェアのふるまいを見ながらチェックリストを作る技法です。
これも経験則的なテスト方法です