【JSTQB(FL)対策】第4章テスト技法

こちらの記事ではJSTQBのシラバスのうち、第4章テスト技法分野における以下の分野の学習内容及び学習してみて私が思ったことについて記載します。

1. テスト技法のカテゴリ


テスト技法の目的はテストの条件やテストデータ、テストケースを決定することであり、以下のような様々な要因を検討して選択する。


・コンポーネントまたはシステムの複雑さ

・規制や標準

・顧客、または契約上の要件

・リスクレベルとリスクタイプ

・入手可能なドキュメント

・テスト担当者の知識とスキル

・利用できるツール

・スケジュールと予算

・ソフトウェア開発ライフサイクルモデル

・コンポーネントまたはシステムで想定される欠陥の種類

1-1. テスト技法のカテゴリと特徴

テスト技法はブラックボックステスト技法、ホワイトボックステスト技法、経験ベースのテスト技法に分類される。

2. ブラックボックス技法


ブラックボックス技法はプログラムの内部構造を考慮せずにモジュール外部仕様を焦点に置き、入力に対して適切な振る舞いが行われるかを確認することにより、仕様を満たしているかをエンドユーザー視点で検証するテスト技法である。機能テストと非機能テストの両方に適用が可能である。

共通する特徴は以下のとおりである。


・テストの条件やテストデータ、テストケースはテストケースソフトウェア要件、仕様、ユースケースなどのテストベースから導出される。

・テストケースは要件と実装との間の相違及び要件からの逸脱を検出するために使用される。

・カバレッジはテストベース内のテスト済みアイテムと適用した技法について計測する。

2-1. 同値分割法

同値分割法は入力データを同じような出力結果が得られるグループ(有効値と無効値)に分け、それぞれのグループから代表的な値をテストケースとする技法である。


・有効値はコンポーネントまたはシステムから受け入れられる値を指し、その値の同値パーティションは「有効同値パーティション」と呼ばれる。

・無効値はコンポーネントまたはシステムから拒絶される値を指し、その値の同値パーティションは「無効同値パーティション」と呼ばれる。

・入力、出力、内部値、時間関連の値などのテスト対象に関連するあらゆるデータ要素およびインタフェースのパラメーターに対するパーティションが識別できる。

・各値は必ず1つの同値パーティションのみに所属する必要がある。

2-2. 境界値分析

境界値分析は入力値として同値パーティション同士の境界となる値をテストケースとする技法である。

有効同値クラスの最小値と最大値及びそれらを1つ超えた無効同値クラスの値といったぎりぎりの値をテストケースとする。

2-3. デシジョンテーブルテスト

デシジョンテーブルテストは複数の入力条件における様々な組み合わせに対して期待される出力を表形式で表した表に基づいてテストケースを作成する技法である。

見逃される可能性がある組み合わせを含めて重要な条件の組み合わせのすべてを識別できたり、要件の中にある複数の相違点も発見できたりする利点がある。

2-4. 状態遷移テスト

状態遷移テストは状態遷移図や状態遷移表を用いて、イベントに対する振る舞いなどが想定通りの動作をするか検証するテスト技法である。

状態遷移図はソフトウェアのなりえる状態、ソフトウェアの開始および終了する方法、ソフトウェアが状態間で遷移する方法を示す。

状態遷移表は状態間の有効な遷移と無効な遷移のすべてとイベント、有効な遷移の際のアクションを示す。

2-5. ユースケーステスト

ユースケーステストはユーザー視点からユースケース記述に基づいて想定通りの動作をするのかを検証する技法である。

3. ホワイトボックス技法


ホワイトボックス技法はモジュールの内部構造と処理に焦点を置き、プログラム等が想定通りの動作をするかを開発者視点で検証するテスト技法である。

共通する特徴は以下のとおりである。


・テストの条件やテストデータ、テストケースはコード。ソフトウェアアーキテクチャー、詳細設計、ソフトウェア構造に関する他の情報などのテストベースから導出される。

・カバレッジはコードやインタフェースなどといった選択した構造内のテスト済みアイテムとテストベースに適用した技法に基づいて計測する。

3-1. ステートメントテストとカバレッジ

ステートメントテストはコード内の実行可能ステートメントをテストする。

カバレッジはテストで実行したステートメント数をテスト対象の実行可能ステートメントの合計数で割り算し、パーセンテージで表わす形で計測し評価する。

とあるプログラムにおいて、複数の処理事項(命令文)が存在した場合、各処理が一回ずつ実行する形でテストを網羅していく。

3-2. デシジョンテストとカバレッジ

デシジョンテストはコード内を判定するテストをし、実行したコードの判定結果に基づいて評価する。

カバレッジはテストにより実行した判定結果の数をテスト対象の判定結果の合計数で割り算し、パーセンテージで表わす形で計測し評価する。

とあるプログラムにおいて、複数の判定分岐処理事項(yes/noまたは真/偽)が存在した場合、各分岐処理が一回ずつ実行する形でテストを網羅していく。

3-3. ステートメントテストとデシジョンテストの価値

100パーセントのステートメントカバレッジの達成に関してはコード内の実行可能ステートメントのテストを一回以上実施したことを保証するものの、判定ロジックをすべてテストしたことは保証しない。

ほかのテストでは遂行されないコードの中にある欠陥を発見するのに役に立つ。

100パーセントのデシジョンカバレッジの達成に関しては判定結果全てを実行したことを意味するが、これば審議それぞれの結果に加え、明示的な偽のステートメントが存在しない場合を含む。

100パーセントのデシジョンカバレッジの達成は100パーセントのステートメントカバレッジの達成を保証するが、逆は保証しない。

4. 経験ベースとテスト技法


テストケース設計、実装及び実行のためにテスト担当者の経験やスキル、直感等をベースにテストケースを導出するテスト技法であり、ブラックボックステスト技法とホワイトボックステスト技法と組み合わせて使用する。

共通する特徴は以下のとおりである。


・テストの条件やテストデータ、テストケースはテスト担当者、開発担当者、ユーザー、その他のステークホルダーの知識や経験などのテストベースから導出される。

4-1. エラー推測

エラー推測はテスト担当者の知識(アプリケーションの過去の動作環境、エラーの種類、他アプリで発生した故障)に基づいてエラー、欠陥、故障を予測する技法である。

テスト担当者が「この部分には過去の似たようなエラーが起こるかもなあ」と予測をしながらテストケースを作成していく。

4-2. 探索的テスト

探索的テストは事前定義されていないため、形式的でないのが特徴であり、テスト実行と並行しながら設計、ログ記録、及び評価を実施する。

仕様がほとんどなかったり、不十分であったり、テストスケジュールに余裕がなかった場合に最も大きな効果を発揮する。

ほかのブラックボックステスト、ホワイトボックステスト、経験ベースとテスト技法と併用が可能である。

4-3. チェックリストベースドテスト

チェックリストベースドテストはチェックリストにあるテストケースに基づいてテストケースを設計、実装、及び実行する技法である。

5. エピローグ

第4章テスト技法を学習してみて、経験のあるブラックボックステスト以外のテスト技法やブラックボックスで実施した技法を一通りおさらいができた気がしました。

私は今までの案件のテスト実行してきた技法の目的やどのように着目して実施しているのかを改めて深く知ることができました。