はじめに
QAエンジニアの@yamahiro2022です。ナーシングネットプラスワン(介護請求ソフト)の品質保証を担当しています。本記事はLITALICO Advent Calendar 2024の24日目の記事となります。
テスト設計を行っていく中で、どこまでテストを行うのがいいのか?と迷うことがあるかと思います。
この記事では組合せにフォーカスを当てて考えてみたいと思います。
テストの目的はなんだ?
立場や状況によってテストの目的は若干変化しますが、共通で言えることは品質の見える化だと思ってQA活動を行っています。
たまにテストを行うことによって品質向上ができますと言われる方がいますが、あくまで品質向上を行う中での品質の見える化という手順の中の一つと認識しています。
テスト設計のポイント
ここでは、機能テスト設計時を意識して考えたいと思います。
テスト設計時の重要なポイントは下記3つと考えています。
- 目的が具体的かつ明確になっていること
- 観点が目的に合っていること
- テスト範囲(機能の組合せ)が適切に設定されていること
目的や観点については、比較的全員が意識しやすく、認識をそろえたうえでレビューが行われることが多いと考えています。
一方で、テスト範囲(機能の組み合わせ)については、どの範囲まで組み合わせを網羅するべきかがテスト設計者によってばらつきが生じやすい印象があります。
範囲が狭すぎると品質への不安が残り、広すぎると工数不足が懸念されるなど、適切な範囲を自信をもって設計するのは簡単ではありません。
そのため、本記事ではテスト範囲の決定に焦点を当て、適切な組み合わせの考え方や手法について掘り下げていきたいと思います。
登録機能で考えてみる
例として下記内容のテスト観点、因子、水準でのテスト設計を考えてみます。
観点:とあるサイトの会員登録が正常に行えること
因子:氏名、性別、生年月日、会員種別
無邪気に因子×水準で組合せ作成を行うと
3×3×4×3= 108 パターン
となります。
このまま行ってしまうと、例題のように単純に100項目程度だけの因子水準であれば
テスト実施の現実的な数値に見えてくるかもしれないですが、実際の現場ではもっと膨大になることは度々あるかと思います。
ここでお勧めするのが、2因子間網羅で実施することです。
次に2因子間網羅とは何かを簡単に説明させていただきます。
2因子間網羅を使用してみる
欠陥は、1~2因子間の組合わせによって発生することが大半であり、2つの因子を使用しての組合せでテストすることで、全網羅テストをすることよりも効率高く欠陥を検出することが可能である。
- 1因子で見つかる欠陥:29%〜68%
- 2因子で見つかる欠陥:70%〜97%
- 3因子で見つかる欠陥:89%〜99%
参照:Software Fault Interactions and Implications for Software Testing
2因子間網羅を使ってテストパターンを考えてみたいと思います。
※2因子間網羅をもう少しだけ深堀りした内容はこちらで記載していますので気になる方は読んでいただけたら幸いです。
下記のように、15パターンにすることが可能です
最後に
今回の記事では、登録画面を例に、2因子間網羅を使用したテスト設計の基礎を紹介しました。この手法は、効率的に組み合わせを網羅し、因子間の関係性による不具合を検出する際に有効です。しかし、すべての場合において適用可能なわけではありません。
因子間の独立性
2因子間網羅は、因子間が独立していることを前提としています。しかし、実際のシステムでは因子間に制約が存在する場合があります。その場合、制約を考慮して組み合わせを調整する工夫が必要です。
機能の複雑度
機能が複雑で因子や水準が多岐にわたる場合、2因子間網羅では十分に網羅できないリスクがあります。その際は、リスクベースでテスト範囲を見直したり、他の網羅手法(例:直行表や全組み合わせ法)を併用したりすることが必要です。
ポイントは状況に応じて最適なアプローチを選択することです。
テスト対象の特性やリスクを理解し、必要に応じて手法を柔軟に組み合わせて活用することで、効率的かつ効果的なテスト設計が行えると考えています。
2因子間網羅は万能ではない
テスト設計時は柔軟な考えで2因子間網羅を活用していこう