組み合わせテストを開発現場で使いこなすには?――考え方のヒントと5つのコツ:現場で使うためのオールペア法、直交表の基本(3)(2/3 ページ)
オールペア法や直交表は組み合わせテストの品質を一定に保ち、テストケースを合理的に削減できる利点を持ちます。しかし、ツールでやみくもにテストケースを削減してはいけません。そこには勘も経験則もコツも必要です。筆者がコツを伝授します。
コツその2:禁則組み合わせのヌケモレ、重なりを分かりやすくするコツ
第二回でも言及したように「禁則組み合わせ」が多いと、禁則のヌケモレや重なりが生じやすくなり、その結果としてテスト不足または過多になってしまいます。もし、組み合わせテストが禁則だらけになった場合は、テスト対象に対する因子や水準の発見方法がおかしかったか、そもそも対象が組み合わせテストに不向きだったことを疑うべきでしょう。
禁則組み合わせを切り分けてチェックしやすくする
禁則組み合わせ自体は、本稿冒頭で紹介した「因子と水準の調整」で減らすことができます。ここでは別の考え方として、「禁則そのものを切り分けてヌケモレや重なりが発生しにくくする方法」を見ていきましょう。
第二回で例に使ったプリンターを例に考えてみます。
このプリンターでは、「A4」「A5」「A6」「A7」サイズの用紙のみに印刷できますが、「両面印刷」は「A4」と「A5」のみが可能で、「四辺フチなし印刷」は「A4」と「A7」にのみ可能です。また、「両面印刷」と「四辺フチなし印刷」は同時に実行できます。
このとき、禁則となる組み合わせは表5のように、「A5-片面-フチなし」から「A5-両面-フチなし」「A6-片面-フチなし」「A6-両面-フチあり」「A6-両面-フチなし」「A7-両面-フチあり」「A7-両面-フチなし」の7個です。
この禁則組み合わせを、因子と水準による調整ではなく、以下のように水準で調整する方法があります。
例えば、禁則が多いA6を別にテストすることで、それを除いた禁則組み合わせは表6のように、禁則は「A5-片面-フチなし」「A5-両面-フチなし」「A7-両面-フチあり」「A7-両面-フチなし」の4個の組み合わせにでき、7個からは減少します。
一度に扱う数が減少することで、禁則の確認がしやすくなります。もちろん、これは禁則を分割しただけで、禁則組み合わせの数そのものを減らすわけではありません。
最初に紹介した「因子と水準の調整」で注意した通り、禁則を「減少させる」のは、テストそのものに悪影響を与える場合もありますから、注意してください。
このコツは、禁則を見やすくする目的のものであって、不自然なテストケースを生成するためのものではありません。
コツその3:因子や水準の優先度を調整するときのコツ
重要な因子または水準に対するテストを重点的に実施するために、それに対応するテストケースの数を多く生成したいことがあります。オールペア法のツールでは、こうした目的のために、因子や水準に優先度を付けられるものもあります。第二回で紹介したテストケース生成ツール「PICT」も優先度が付けられます。
ただし、優先度は水準の選択に幅があるときに調整するものなので、優先度が高い水準を使ったテストケースが劇的に増えるわけではありません。
重要な因子・水準を分割して数を増やすテクニック
そこで、因子や水準を劇的に多くテストする方法として、多くテストをしたい因子や水準を分割して、個数を増やすというコツがあります。例えば、表7のように機能要求からすれば年齢因子は「一般」の水準でよいところを、表8のように「一般(20歳代)」と「一般(30歳代以上)」のように水準を分割すると、テストケースは少なくとも1個は増えます。
この方法は、テストケースを増やすことができますが、やり方によっては水準が実装と無関係になってしまう危険性があります。また、テストケースは増加しますので、使い過ぎには注意してください。また重点的にテストをしたいものを、別のデシジョンテーブルを作成してテストをするという方法もよく行われています。
逆に「優先度を落とすために、因子や水準を合体させる」というコツもあるのですが、これには問題があります。この方法を採用する場合、「テストに対して同値類になっているか」を慎重に判断し、適用を判断する必要があるからです。原則としては、優先度を落とすための合体はしない方がいいでしょう。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- いまさら聞けないTDD/BDD超入門(4):開発現場で保守性の高いTDD/BDDを実現するための3つのポイント――テストレベル/網羅性とは
開発現場でTDD/BDDを導入するためのポイントを大きく三つに分けて解説。テストレベルや網羅性、サイクルタイムについても紹介します。 - テストエビデンス取得自動化の秘技(前編):Selenium VBAを使って自動でブラウザーを操作してスクショをExcelに張り付けてみた
システム開発におけるソフトウェアテスト(結合テスト〜システムテスト)において重要視されるエビデンス(作業記録)。前後編の2回にわたって、エビデンスとしてスクリーンショットをキャプチャし、テスト仕様書や納品書に張り付けていく作業を自動化するためのVBA/マクロのテクニックを紹介する。前編はSelenium VBAのインストール方法と使い方、スクリーンショットを自動でExcelに張り付ける方法について。 - テスト自動化のROIを計算してみよう(1):テスト自動化の3つの目的とROIの必要性、定義
テスト自動化の導入理由や効果測定をROIという観点で説明できるように、テスト自動化のROIの概念から実際の計算式までを解説する連載です。