JSTQB2023最新版シラバス対応

1.ブラックボックステスト(仕様ベース技法)

ブラックボックステストとは、システムの内部構造を考慮せず、インプット・アウトプットのみに着目してテスト対象を確認する技法を指します。

1.1 同値分割法(EP)

ブラックボックステストで一般的に使用される技法のうちの1つ。
この手法では、入力データの範囲を同値のクラスに分割し、各クラスから代表的なテストケースを選択します。これにより、テストケースの数を最小限に抑えながら、十分なテストカバレッジを達成することができます。

具体的には、以下のようなテストケースを作成します。

例:0~100までの整数を入力でき、それ以外の数値はエラーとする

①無効な入力値のクラス
テストケース1: -1 (範囲外の最小値より小さい値)
テストケース2: 101 (範囲外の最大値より大きい値)

①無効な入力値のクラス

②有効な入力値のクラス
テストケース3: 0 (最小値)
テストケース4: 50 (範囲内の中間値)
テストケース5: 100 (最大値)

②有効な入力値のクラス

1.2境界値分析(BVA)

ブラックボックステストで一般的に使用される技法のうちの1つ。
この手法は、入力データの境界値周辺での動作をテストすることに焦点を当てます。
境界値にはバグが潜在していることが多いため、効率的にバグを検出することができます。
入力値の数が無限にある場合でもテストケースを効果的に作成できるため、テスト効率を向上させるのに役立ちます。

境界値分析には、2値 BVA(Craig 2002、Myers 2011)と3値 BVA(Koomen 2006、O’Regan 2019)があります。
ここでは、それぞれのメリットについてお話します。

✧2値 BVAのメリット

①簡潔さと効率性
比較的簡単に理解でき、実装できます。境界値周辺の動作をテストするため、テストケースの数が少なくて済むため、テストの効率が向上します。

②エラーの特定
ソフトウェアのバグや問題の大部分は、入力値の境界条件付近で発生することがよくあります。2値 BVA は、これらの境界値での動作を重点的にテストするため、エラーを特定しやすくします。

③リソースの節約
すべての入力値をテストするのではなく、境界値付近のテストに焦点を当てることで、テストにかかるリソースを節約できます。

✧3値 BVAのメリット

①境界値の中間値の検証
3値 BVA は、2値 BVA の拡張であり、境界値の中間にある値もテストするため、より広範囲でのテストを提供します。これにより、境界値の直前や直後の動作だけでなく、その間の動作も検証できます。

②より網羅的なテスト
境界値の中間にある値をテストすることで、プログラムの動作をより網羅的に検証できます。これにより、プログラムの様々な条件下での動作をテストし、潜在的な問題を発見しやすくなります。

③テストケースの数の削減
3値 BVA は、2値 BVA よりもさらに広範なテストを提供しながらも、テストケースの数を効率的に削減します。これにより、テストの実行にかかる時間とリソースを節約できます。

2値 BVAの具体的なテストケースを挙げてみましょう。

例:パスワード2文字以上8文字以内の場合は有効で、それ以外の値をエラーとする

①最小値と最大値
入力変数が最小値または最大値に等しいケース
たとえば、入力値の最小または最大の許容値に対する動作を確認します。
テスト対象の値:2、8

①最小値と最大値

②境界値の直前と直後
最小値と最大値の直前および直後の値のケース
これにより、境界値をまたぐ場合の動作を検証します。
テスト対象の値:1、3、7、9

②境界値の直前と直後

③有効な境界値と無効な境界値
境界値が有効な入力の一部である場合と、無効な入力の一部である場合の両方をテストします。これにより、システムが境界値を正しく処理できるかどうかを確認します。
テスト対象の値:1、2、8、9

③有効な境界値と無効な境界値

次に3値 BVAの具体的なテストケースを挙げてみましょう。
3値の境界値の取り方ですが、「境界上の値」と「その前後の2値」が境界値になります。

例:パスワード2文字以上8文字以内の場合は有効で、それ以外の値をエラーとする

テスト対象の値:1、2、3、7、8、9

テスト対象の値:1、2、3、7、8、9

2値 BVAと3値 BVAとの使い分けは、プロジェクトの要件や制約、リスクの評価などに基づいて行われます。どちらの手法を選択するかは、テストの目的と対象システムの特性を十分に理解し、適切な判断を行うことが重要です。

①システムの複雑さとリスクの評価
システムが比較的単純で、境界値の周りでのエラーがリスクの高い場合、2値 BVA を使用することが適切です。一方、システムが複雑である場合や、中間値も含めた網羅的なテストが必要な場合には、3値 BVA を使用します。

②テストケースの数と効率性
テストケースの数を削減し、テストの効率性を向上させる必要がある場合、2値 BVA を選択します。一方、システムの動作をより網羅的にテストする必要がある場合には、3値 BVA を使用しますが、その際には追加のテストケースが必要となります。

③バグの特定と修正の容易さ
特定のバグを見つけるためには、そのバグが発生しやすい境界値やその周辺を重点的にテストする必要があります。2値 BVA はこのような場合に有効です。しかし、複雑な問題を特定しやすくするためには、3値 BVA の使用が適しています。

④プロジェクトの制約と優先順位
プロジェクトの時間やリソースの制約がある場合、2値 BVA を使用して効率的なテストを実施することが優先される場合があります。一方、プロジェクトにおけるテストの優先順位が高い場合や、品質を重視する場合には、3値 BVA を選択します。

1.3 組合せテスト

ブラックボックステストで一般的に使用される技法のうちの1つ。
複数の条件を組み合わせてシステムの動作を確認するテスト技法です。「単一の条件では発生しないけれど、複数の条件が組み合わさった際に発生するバグ」を検出できます。

①直交表
組み合わせテスト技法の1つであり、多要因の実験を効率的に計画するための手法です。
要因とその水準を均等に組み合わせることで、少ないパターンで多くの情報を収集できます。(水準の出現回数が均等になること重視)

例として、ショッピングサイトのテストを想定します。このショッピングサイトでは会員種別、配送方法、決済方法、Webブラウザがそれぞれ3種類あるとします。

このような仕様の場合、項目を整理すると以下の表のようになります。

①直交表

上記のパターンの組み合わせを全網羅してテストしようとすると全部で81パターンあります。(34=81)

①直交表

・・・

①直交表

もし、ここにもう一つ「配送先」という項目3水準(首都圏内(離島含まず)、首都圏外(離島含まず)、沖縄を含む離島)を加えると35=243パターンとなり、テスト工数が膨大になってしまいます。

そこで、「直交表」を取り入れることで、テストは以下のように9パターン実施すればよくなります。

①直交表

直交表は「不具合が起こる要因のほとんどは2つまでの要因の組み合わせによるもの」という考えに基づいています。

上記の表ですが、「一般会員+通常」「一般会員+クレジットカード」「一般会員+Chrome」「一般会員+お急ぎ」「一般会員+コンビニ支払」「一般会員+Edge」「一般会員+コンビニ受取」「一般会員+銀行振込」「一般会員+Firefox」といったように、一般会員に対して2つの因子のすべてに組み合わせがあります。(シルバー会員とゴールド会員も同様)2つの因子の複合条件によって起こるテストをしておけば、ほとんどのバグを検出できます。

しかし、直交表は、実験計画法や品質管理などの分野で使用される便利なツールですが、注意点もあります。

①適切な選択が必要: 直交表を使う際には、適切な直交表を選択することが重要です。実験の目的や要因の数、水準の数などに応じて、適切な直交表を選択する必要があります。

②相互作用の考慮: 直交表は通常、主効果のみを扱いますが、相互作用の影響も重要な場合があります。相互作用を無視すると、実際のシステムやプロセスの振る舞いを正確にモデル化できない可能性があります。

③要因の重要性の考慮: 直交表を使用する際には、各要因の重要性を考慮することが重要です。全ての要因が同じ重要度を持つわけではないため、実験計画を立てる際には要因の重要性を考慮する必要があります。

これらの注意点を考慮しながら、直交表を使用して実験計画を行うことで、効率的に要因の影響を調査し、意思決定を支援することができます。

②ペアワイズ法(オールペア法)

組み合わせテスト技法の1つであり、どの2因子を選んだとしても、最低1回以上の組み合わせパターンが含まれる表のことです。(2因子間が重複しないことを重視)

例えば、Tシャツを販売しているECサイトがあり、以下のような仕様があったとします。

  • サイズは XS/S/M/L/XL 5つのタイプ
  • カラーは 黄/青/赤/緑/紫5つのタイプ
  • 価格帯は1000円~5000円

このような仕様の場合の「因子」と「水準」を表にして表すと、以下のような形になります。

②ペアワイズ法(オールペア法)

上記のパターンの組み合わせを全網羅してテストしようとすると全部で125パターンあります。(53=125)

②ペアワイズ法(オールペア法)

・・・

②ペアワイズ法(オールペア法)

そこで、「ペアワイズ法」を取り入れることで、テストは以下のように25パターン実施すればよくなります。

②ペアワイズ法(オールペア法)

ペアワイズ法は、ペア(2つの要因の組み合わせ)のみをテストします。このようにすることで、劇的にテストケースの数を減らすことができます。

しかし、ペアワイズ法は効率的なテスト手法ですが、いくつかの注意点もあります。

①全ての相互作用をカバーしない可能性: ペアワイズ法は、全ての要因の組み合わせではなく、ペアの組み合わせのみをテストします。そのため、3つ以上の要因が相互作用する場合、全ての組み合わせを網羅しない可能性があります。

②テストケースの選択の難しさ: ペアワイズ法を適用する際に、どのペアを選択するかについて判断することが難しい場合があります。適切なペアを選択するためには、ドメイン知識や経験が必要です。

③特定のケースへの適用制約: ペアワイズ法は、ある程度予測可能な結果を持つ場合に最も効果的です。特定の条件下でのテストにのみ適している場合があります。

これらの注意点を考慮しながら、ペアワイズ法を適切に使用することが重要です。

1.4 ブラックボックステストのメリットとデメリット

ここでは、ブラックボックステストのメリットとデメリットについてお話します。

メリットとしては、以下のようなことが挙げられます。

①ユーザー視点のテスト
ユーザーがソフトウェアを利用する際の視点に基づいてテストを実行します。これにより、実際の利用状況に近い状況でテストを行うことができます。

②外部要件の確認
ソフトウェアの外部仕様や要件に基づいてテストを実行します。これにより、要件の正確性や適切性を確認することができます。

③テスターのスキルに依存しない
テスターの経験やスキルに依存しません。したがって、比較的簡単に実行できます。

デメリットとしては、以下のようなことが挙げられます。

①テストケースの不足
アプリケーションの内部構造を知ることができないため、重要なテストケースを見落とす可能性があります。
そのため、テストカバレッジが低くなり、不具合を見逃す可能性が高くなることがあります。

②エラーの特定の困難さ
アプリケーションの内部構造を知ることができないため、不具合が発生した場合でも、原因を特定することが困難な場合があります。
そのため、不具合の修正に時間がかかることがあります。

③重複するテスト
ブラックボックステストでは、内部の状態や実装に関する情報がないため、同じテストケースが複数回実行される可能性があります。

2.経験ベースのテスト技法

2.1 探索的テスト

探索的テストとは、テスト担当者がテスト対象について学習しながら、テストケースを同時に設計、実行、評価するものです。テスト対象についてより深く知り、注力したテストでより深く探索し、まだテストしていない領域のテストを作成するために使います。
新たなテストケースや方針を見つけ出すことが重要視されます。

2.2 探索的テストのメリットとデメリット

ここでは、探索的テストのメリットとデメリットについてお話します。

メリットとしては、以下のようなことが挙げられます。

①柔軟性と即時性
事前に計画を立てる必要がなく、テスト設計やレビュー・修正といった工程が必要ありません。そのため、テストをすぐに開始し、自由にソフトウェアを探索しながらテストを実行できます。

②効率的なバグ発見
テスターが直感的にソフトウェアを操作し、テストケースとしては用意しにくいような部分のテストができるため、記述式テストでは検出困難なバグを見つけ出すことができます。

③工数・コストが抑えやすい
テスト仕様書を事前に作成する必要がないため、テストケースを作成ための仕様理解やテスト設計を行う工数が抑えられ、費用対効果の低い冗長なテスト項目も省略可能です。

④アジャイル開発への適合
迅速なテスト実行とフィードバックの提供が求められるアジャイル開発プロセスにおいて、探索的テストは素早い反応を可能にします。網羅性よりもスピードを重視する場合に特にメリットが大きくアジャイル開発と相性が良いと言われる1つの理由となっています。

デメリットとしては、以下のようなことが挙げられます。

①属人性が高い
探索的テストそのものがエンジニア自身の知識と経験に基づくものである以上、優れた知識と経験を持つエンジニアがテスターを務めなければ、探索的テストは有効に機能しません。
貴重なインプットとなる実行の結果における「気づき」には偶然性が高く、実行スピードもテストケースをベースとしたテストに比べると安定しにくいことから、アウトプットの品質にムラが生じやすいという傾向があります。

②網羅性を担保できない
探索的テストは網羅性を前提としたテスト手法ではなく、不具合が発生しやすいポイントを絞り込んでスピーディーにテストすることを目的としているため、網羅性は担保されません。

③再現性の低さ
テスト計画も明確に定義されないことが多く、テスターが独自のアプローチでテストを実行するため、環境や条件が異なる場合、同じ問題が再現されないことがあります。

3.まとめ

「テスト」と一言で言っても、プロジェクトの内容、コスト、工数によって用いる技法を使い分ける必要があります。最適なテスト技法を実施し、バグの早期発見をすることで、品質の良いシステムを提供することに繋がります。

 

お問い合わせ