#はじめに
テストを行う上でその具体的な技法と大枠のカテゴリについて説明していきます。
#テスト技法とは
テスト技法の定義ですが、
「テストケースを作成したり選択するための技法」
とされています。
あるテスト対象に対して、テストケースを作っていくための方向性を具体的に定めたものになります。
テスト技法はJSTQBにおいて大きく下記の3つのカテゴリに分けられています。
・ホワイトボックステスト
・ブラックボックステスト
・経験ベーステスト
これらの技法は、それぞれを組み合わせて使うことでテストの目的を達成していくことが可能です。
本稿では、各テスト技法についての概要と具体的な手法について説明します。
#ブラックボックステスト技法
ブラックテスト技法とは、その名の通り、内部をブラックボックスとして行うテスト技法です。入力に対して出力が正しいかどうかを確かめます。
###同値分割法
同値分割法はブラックボックステストで最もわかりやすいテストです。
入力データを同じ処理が行われるパーティションに振り分け(同値パーティション)、
パーティション内の代表的なデータを1つ選び、テストを実施します。
例えば、「0以上100未満の整数で受け取り、その整数を出力する」という仕様のシステムがあった時、下記のような有効同値パーティション、無効同値パーティションに区切ることができそれぞれの値をテストを行います。
###境界値分析
境界値分析は同値パーティションにおいて、境界値をテストする技法です
不等号ミスなど、境界には多くの欠陥が潜んでおり、それらの発見を目的としています。
同値分割法を拡張した技法になります。
例えば、上記の仕様では、境界値は0と100です。
境界値の範囲に含まれる値と含まれない値の正しさをテストすることを2ポイント境界値分析法というのに対し、境界値と境界値の前後±1(-1,0,1と99,100,101)の正しさをテストすることを3ポイント境界値分析といいます。
###デシジョンテーブルテスト
デシジョンテーブルとは、入力と出力の組み合わせを表にまとめたものであり、システムの複雑なルールや条件の正しい動作をテストするための技法です。
下記のように、各規則を組み合わせたテストケースを作成します。
利点として、重要な条件の組み合わせを全て識別することができます。
###状態遷移テスト
現在の条件や前の条件、システムの状態によっては期待した動作とは全く異なる動作を行う場合があります。
状態を考慮したテストケースを設計する技法を、状態遷移テストといいます。
状態遷移図と状態遷移表を作成し、状態の網羅、遷移の網羅の観点からテストを行います。
###ユースケーステスト
ビジネスシナリオやシステムの使い方に基づいて、ユースケースを抽出し、ユースケースを網羅できるようなテストケースを設計する技法です。
ユースケースの種類
・ビジネスユースケース:
ビジネスレベル(抽象的なレベル)で顧客と企業との相互作用
(企業が営む事業を一種のシステムとみなす)
・システムユースケース:
ユーザーとテスト対象のシステムとの相互作用
ユースケースの記述内容
・アクター(ユーザー及システム)とサブジェクト(テスト対象のシステム)との間の相互作用
・相互作用に伴うサブジェクトの状態。
・システムやソフトウェアの振る舞いを識別できる。
・ユーザーや顧客にとって価値のある結果が得られるものに限り記述。
#ホワイトボックステスト技法
ブラックボックステストがテストの観点を外見(外から見える振る舞い)に設定するのに対して、内面に観点を設定したのがホワイトボックステストになります。
###ステートメントテスト
ステートメントテストはコード内の実行可能ステートメント(命令文)に着目してテストケースを設計する技法です。
例えば下記のメソッドにおいては、変数Xが0以外の値を通過した際、(条件分岐が真,①→③)のテストを行うことを指します。
このテストのカバレッジの算出方法は
テスト対象の実行可能ステートメントの合計数に対するテストにより実行したステートメント数で示されます。
###デシジョンテスト
デシジョンテストはコード内の判定と、その判定結果に着目してテストケースを設計する技法です。
###ステートメントテストとデシジョンテストの価値
デシジョンテストを100%網羅することはステートメントテストを100%網羅することと同義です。しかし逆は成立しません。
#まとめ
・テスト技法について説明した。
・ブラックテストとホワイトボックステストの具体的な技法について説明した。