bryutus blog

お前もか

「ソフトウェアテスト技法練習帳(Part 1・2)」の中で出てきたテスト手法を整理してみた

仕事でテスト漏れによるバグが発生したことでテストのやり方について思うことがあったので、「ソフトウェアテスト技法練習帳」を買って問題を解いています。

この書籍は問題集として特化しているため、その中で使っているテスト手法についての言及はあまりありません。
自分の理解のためにPart 1・2で出てきたテスト手法についてを整理してみます。

Part1 同値分割法と境界値分析

同値分割法

ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版 Version 2018V3.1.J03(以下、シラバス)には、このように記載されています。

同値分割法は、同等に処理されると想定したデータすべてを同じパーティション(これを同値クラスと も呼ぶ)に振り分ける技法である(『Kaner 2013』および『Jorgensen 2014』を参照)。有効な値と無効な値の両方に対して同値パーティションがある。

システムに入力が可能な値を、有効な値(システムに受け入れられる値)と無効な値(システムに拒否される値)とにパーティションを分けてグルーピングし、そのグループの中の代表的な値をテストする手法です。

同値クラスは「その範囲はどの値でも同等に処理されることが合理的に予想される」集まりです。
有効な値の同値クラスを「有効同値クラス(有効同値パーティション)」と呼び、無効な値の同値クラスを「無効同値クラス(無効同値パーティション)」と呼びます。

例えば、年月日のうちの「月」の値を入力する場合、月の入力値の同値クラスは以下の3つにグルーピングすることができます。

境界値分析

シラバスには、このように記載されています。

境界値分析(BVA)は同値分割法の拡張であるが、パーティションが数値または順序付け可能な値で構成される場合だけ使用できる。パーティションの最小値および最大値(または最初の値と最後の値) が、境界値である(『Beizer 1990』を参照)。

同値クラスの上限値、下限値とその前後の値(境界値)を入力としたテストを実施します。 境界付近では間違いが起こりやすいため、その付近を狙ってテストを行います。
同値分割法と組み合わせて実施することが多いです。この練習帳でも2つの手法を組み合わせた問題が出題されています。

例えば、年月日のうちの「月」の値を入力する場合、境界値は以下のようになります。

Part2 デシジョンテーブル

シラバスには、このように記載されています。

デシジョンテーブルは、システムが実装すべき複雑なビジネスの規則を表現するのに有効である。デシジョンテーブルを作成する際には、テスト担当者は条件(主に入力)と結果的に起きるシステムのアクション(主に出力)を識別する。条件とアクションは表の行となり、条件を上部、アクションを下部に記述する。

条件(入力)に対して、プログラムがどのように動作(出力)するかを表形式にまとめたものです。入力条件の組み合わせと対応する出力結果を整理することでテストケースを作成する技法です。

JIS X 0125では、Y/NやXで記述する方法を制限指定と呼び、数値や選択肢で記載する方法を拡張指定と呼んでいます。

1 2 3 4 5 6 7 8
クーポン持参 Y Y Y Y N N N N
平日/休日 平日 平日 休日 休日 平日 平日 休日 休日
65歳以上 Y N Y N Y N Y N
割引なし - - - - - - X X
10%OFF - - X X - - - -
30%OFF - X - - - X - -
50%OFF X - - - X - - -

結果が同じ動作がある場合、その組み合わせを省略して書くこともできます。しかし、ロジックが不明であり、処理順序が分からない場合に省略すると必要なテストケースが漏れてしまう可能性があるので注意が必要です。
条件が増えるとテストケースが増え、表が大きくなります。ほかの条件と比べて関連性の低い(独立性の高い)条件で分割することで、表を小さくすることができます。