テスト設計の基礎

テスト明細の作成

本記事では、テスト詳細設計の工程である、テスト明細の作成について解説します。

図1:テスト明細作成の工程

テスト明細作成の工程では、テストマップで組み合わせた機能と観点に対して、どのような構成とパターンでテストするかを具体的にまとめていきます。

テスト明細を作成する目的、役割、作成方法について、本記事にて詳しく解説していきます。

【目次】
1. テスト明細とは
2. テスト明細の必要性
3. テスト明細の書き方
4. テスト明細を書くときのコツ
5. おわりに

1.テスト明細とは

テスト明細とは、テストマップで組み合わせた機能と観点、機能動作確認一覧で抽出した機能動作の確認内容を集約し、テストする観点、テストする条件、入力する値を具体的にまとめたものです。

図2:テスト明細の構造
図2:テスト明細の構造

テストマップにて、機能と観点を組み合わせて、テストの重要度を設定しました。そして、機能動作確認一覧で、各機能はどうなっていればOKなのか、どうなっていればNGなのか、確認内容を抽出しました。では、各機能と観点の組み合わせは、重要度に沿ってテストする場合、どのような時に、どのような値を入力して、どうなっていることを確認すれば良いのか、ということをこのテスト明細作成の工程で決めていきます。

なぜテストケースの作成としてではなく、テスト明細作成という工程として行うのか、次の章で解説していきます。

2.テスト明細の必要性

作成したテストケースに沿ってテストを実施した時、「確認するポイントは違うけど、テストの手順が同じで、何回も同じ操作をしていて効率が悪い」というような不満や、「テストする条件や入力値は本当にこれで問題無いのだろうか」というような疑問を感じたことはないでしょうか。

テストケースの作成は、テストする内容を思いつくままにただひたすら並べていけば良いというものではありません。解説③でも触れたように、限られたリソース(納期、時間、予算)の中ですべてをテストすることはほぼ不可能です。そのため、テストは効率よく実施しなければなりません。テストの手順が重複している、テストする条件と入力値は全て組み合わせる、というような効率の悪いテストにならないようにテストケースを作成する必要があります。

QUINTEEでは、テスト明細作成という工程で、テスト実施の構成を考え、まとめることで、効率の良いテストが実施できるようにしています。

テスト明細では、同じ手順で同時に確認ができるテスト観点を「テストセット」という1つのテストのかたまりにまとめます。これにより同じ手順のテストケースを何回も実施するということを無くします。

そして、テストする条件と入力する値は、テストマップで定めたテストの重要度に沿って方針を決めて、選定します。これにより、「テストの条件と入力値は、なぜそのような組み合わせになったのか」、テストの意図が分かるようにします。

この「テストの意図が分かるようにする」は、非常に重要なポイントです。例えば、「テストの重要度が低いため、条件と入力値の組み合わせを必要最低限に絞った」としましょう。テストの重要度が高い箇所が他にたくさんあり、テストのリソースはそちらに割きたいという意向があるわけです。でも、そのテストの意図が読み取れないと、テストケースを見た関係者は「それしかテストしないなんて、テストは不十分ではないのか、テストが漏れているのではないのか」と誤解してしまう恐れがあります。

テストケースを見ただけで、テストの意図を読み取れる人は恐らくいないでしょう。なぜそのようなテストケースになったのか、テストケースの作成意図が分かるようにして、テストする内容が十分なのか、妥当なのか、読み手が判断できるよう、情報を記録しておく必要があるのです。

3.テスト明細の書き方

では、このような効果を持つテスト明細を実際に皆さんも作成してみましょう。

まずは、解説③で作成したテストマップと、解説④で作成した機能動作確認一覧を用意してください。テスト明細の作成には、この2つの資料を使います。

次にテスト明細の書式を準備しましょう。Qbook アカデミーでは、QUINTEEで使用している各種ドキュメントのテンプレートをダウンロードすることができます。下記リンクからテスト明細の書式をダウンロードしましょう。

※テストマップと機能動作確認一覧については、下記をご参照ください。

図3:テスト明細のフォーマット
図3:テスト明細のフォーマット

テスト明細の書式の準備ができましたら、さっそく作成してきましょう。
作成手順は長いので、以降は手順を箇条書きにして解説していきます。

手順①:ヘッダー部分の入力

最初はヘッダー部分の入力です。テスト設計仕様書で明確にしたテスト対象と、このシートで扱う機能大項目を記入します。(機能大項目1項目ごとに1シートでテスト明細を作成すると、まとめやすいです。)

図4:ヘッダー部分の入力

手順②:機能と観点の組み合わせの一覧化

次に、テストマップの記載を基に、機能と観点の組み合わせ一覧を作成します。

図5:機能と観点の組み合わせの一覧化

手順③:確認内容の具体化

続いて、各観点の確認内容を、機能動作確認一覧を基に具体化します。

図6:確認内容の具体化
図6:確認内容の具体化

手順④:確認内容のグループ化と分割

確認内容を1回の手順でまとめて確認できるものと別の手順で確認する必要があるものに分けます。

図7:確認内容のグループ化と分割
図7:確認内容のグループ化と分割

なお、1回の手順でまとめて確認できる内容は、代表的なものとして下記のようなものがあります。

◆代表例①:「有効値の入力確認」+「画面遷移」

図8:確認内容のグループ化例(1)
図8:確認内容のグループ化例(1)

◆代表例②:「無効値の入力確認」+「エラー表示」

図9:確認内容のグループ化例(2)
図9:確認内容のグループ化例(2)

手順⑤:テストする条件と入力値のパターンを決める

必要に応じて、各確認内容に「テストパラメータ」項目を挿入して、テストする条件や入力値を記入します。
条件や入力値を記入したら、それらの条件や入力値でテストするパターンの方針を記載して、その方針によって何件のテストを実施するのか「件数」を記入します。

図10:テストする条件と入力値のパターンを決める
図10:テストする条件と入力値のパターンを決める

これで1つのテストセットが完成しました。以降は、手順①~⑤の繰り返しです。1つのシートの各テストセットが完成したら、次は別の機能大項目のシートを用意して、そちらのテストセットも作成していきましょう。

図11:テスト明細の完成
図11:テスト明細の完成

4.テスト明細の書き方のコツ

こうして、効率良くテストするためのテスト明細が出来上がったわけですが、作成の際に注意しなければならないポイントが3つあります。このポイントは、押さえることができていないとテスト明細としての効果が十分に発揮されません。以降に解説していますので、皆さんが実際に作成したテスト明細はポイントを押さえられているかどうか、確認してみましょう。

ポイント①:テストセットの分割
1つのテストセットのテスト実施件数が膨大にならないよう調整しましょう。
テストセットのテスト実施件数が多くなってしまうと、いくらテストセットの中身を整理しても、テストケースの作成やテスト実施の効率が悪くなってしまいます。

ポイント②:テストセットの順番調整
効率良くテストが実施できるテストケースにするには、テストで行う操作が一連の流れでスムーズに行えるようになっていることが理想です。
スムーズにテストを進めることができるように、テストセットの順番を入れ替えましょう。

ポイント③:テストパラメータの決め方とテストパターンの方針
テストパラメータは、テストする件数が膨大にならないよう、テスト技法を使用して選定します。

◆テストパラメータ選定で使用する代表的なテスト技法
 ・同値クラス分割(有効同値、無効同値)
 ・境界値分析(有効境界値、無効境界値)
 ・組み合わせテスト(2因子間網羅など)

テストパターンの方針は、テストの重要度を考慮して決めましょう。また制約条件がある場合は、その内容も記入しておくと良いです。

※制約条件とは、特定の水準に対して、組み合わせられる他の水準が限定される条件のこと。

◆テストパターン方針の一例
 ・各水準を1回以上
 ・[水準名]の組み合わせは、[水準名]のみ(制約条件)
 ・重点テスト項目に関わるパラメータであるため、全網羅で実施
 ・重要度Bのため、○○は1パターン、△△は3パターンのみで実施

5.おわりに

テスト明細の工程では、テストを効率良く実施できるようにするために、テストする内容を「テストセット」として整理して、テストの重要度に沿ったテストとなるようにテストパターンを選定しました。そして、「なぜ、そのようなテスト内容になったのか」、テストの意図も示します。

作成したテストケースの内容に問題が無いかどうか、判断するためにはこの意図が重要です。テスト設計者として「このようにテストするべきだ」という考え、思いをテストの意図として目に見える形にする。それがテスト明細の工程なのです。