#概要
「この1冊でよくわかるソフトウェアテストの教科書」という本を読んで、知ったいろんなテスト技法について、まとめてみる。
#ホワイトボックステスト
ホワイトボックステストは、ソフトウェアの中身を理解したうえでそれを意識しながら行うテストです。
ホワイトボックステストに含まれるテストは
「制御フローテスト」
「データフローテスト」
##ホワイトボックスを行うメリット
1.モジュールの命令文単位で動作確認を行える
2.ホワイトボックステストによって検出された欠陥は、そのモジュールを調査・変更を行うことで修正を完了できます。
##制御フローテスト
制御フローテストは、モジュールを構成する要素、「命令文」「分岐した経緯」「条件」に着目し、これらがすべて実行されるかを確認します。
また、「命令文」「分岐した経路」「条件」、この3つの要素を、どれだけ網羅しているかの割合をカバレッジといいます。
基本的に制御フローテストでは、カバレッジ100%を目指してテストを行います。
##データフローテスト
データフローテストは、ソフトウェアの中で使われているデータや変数が「定義」→「使用」→「消滅」の順に正しく処理されているかを確認するテストです。
このテストは、プログラムの処理内で、未定義のまま使用されているデータや、未使用なデータを見つけて欠陥を無くしていくのが目的のテストです。
#ブラックボックステスト
ソフトウェアの入力データと出力データの結果だけに注視して、それが仕様通りに正しく処理されているかを確認するテストです。
##ブラックボックステストのメリット
ブラックボックステストでは、仕様通りに動作するかの確認を行うテストなので、利便性や操作性、セキュリティなどの確認も行うことが出きるため、より良いものに出来ないかの見直しも行うことが出来ます。
#テスト技法
##同値テスト
同値テストは、同じ動作をする条件の集まりごとにテストを行う技法です。
例えばパスワードの入力文字数が4文字以上、15文字以下に設定されていて、この範囲の文字数が入力された場合は「設定完了メッセージ」が表示されるという仕様の場合、入力された文字数が4文字であっても、15文字であっても結果は「設定完了メッセージ」が表示がされるため、代表値を設けてその値でテストを行う技法です。
考え方としては、「代表値でテストをした結果、欠陥が見つかれば、他の値でも同じ欠陥が見つかるだろう。欠陥が見つかれば、他の値でも同じ血管は見つかるだろう。」という考えです。
##境界値テスト
境界値テストは、使用条件の境界となる値とその隣の値に対してテストを行うテスト技法です。
先程のパスワードの文字数を例にした場合、
境界値テストは入力文字数が、3文字と4文字、15文字と16文字が境界値となります。
境界値に着目してテストを行うのは、欠陥は境界に潜んでいる可能性が高いためです。
主に「境界を表す条件の誤解」「コーディング時の条件の記述誤り」と理由で欠陥が潜みやすいです。
##デシジョンテーブルテスト
デシジョンテーブルテストとは、複数条件によって決定されるソフトウェアの動作を一覧するための表を用いて行うテストのことです。
デシジョンテーブルとは、ソフトウェアの「ルール」「条件」「アクション」を一覧表に記載して、結果のパターンを洗い出した表です。
##デシジョンテーブルの作り方
以下の画像がデシジョンテーブルのフォーマットになります。
この表に
例としてジエットコースターの乗車制限を当てはめてみます。
条件
・身長130cm以上
・年齢8歳以上
・持病に心臓疾患がない
上記の条件を当てはめると以下の様になります。
条件を記載して、ルールに条件の状態のパターンを記載します。最後にルールに対して、アクションの結果を記載していきます。
##表の簡略化
先程のデシジョンテーブルを簡略化します。
各条件は、どれか1つでもNになった時点で、
アクションに対する結果はNになるので以下のように簡略化することが出来ます。
##状態遷移テスト
状態遷移テストとは、ソフトウェアの動作中にいろいろなイベントで変化する「状態」に着目し行うテストのことです。
ストップウォッチを例にしてみます。
時間表示部が「00:00:00」でカウントが上がっていないときは停止状態、その状態がSTARTボタンを押すことで、カウントアップがはじまり計測状態に変化します。
さらにSTOPボタンを押すことで、カウントアップアップが止まり、結果表示状態へと変化します。
このように、STARTボタンを、押すことでストップウォッチの状態が、計測状態へ変化して、カウントアップアップが始まるなどの、状態に対して正しい挙動がされているかを確かめるためのテスト技法です。
##組み合わせテスト
組み合わせテストは、複数の条件を組み合わせてソフトウェアの動作を確認するテストです。
単一の条件だけでは発生しないが、複数の条件が組み合わさった際に発生する欠陥を見つけるためのテスト技法です。
例えばコピー機を、例にした場合、
コピー機は「用紙のサイズ」「コピー面」「カラーモード」「コピー倍率」などさまざまな設定を行える、これらのコピー機の設定のさまざまな組み合わせで洗い出し、テストを行うことです。