ATS|テスト自動化

2023.10.26

【第3回】:異常系テストにおける課題解決のポイント

異常系テストへのEggplantの適用

異常系テストへのEggplantの適用【第3回】:異常系テストにおける課題解決のポイント

ソフトウェアが広く普及するにしたがって、市場における品質問題の発生事例も増えてきました。ソフトウェアの品質問題の多くは、予期せぬ状況において発生しています。市場への不具合流出を防ぐうえでは、このような異常ケースに焦点を当てた検証を行う「異常系テスト」が不可欠です。

高品質な異常系テストは、ソフトウェア開発における様々なリスクを回避・低減することに寄与します。その一方で、異常系テストの実施には課題も多く、品質問題を確実に検出できるほどのテスト成果を得ることは容易ではありません。異常系テストの実施方法や課題について詳しくは、第2回の記事をご一読ください。

【第2回】:異常系テストの実施方法と課題

異常系テストの課題を解決し、そのテスト成果を高めるにあたって、課題解決のポイントを把握することが欠かせません。第3回となる本記事では、異常系テストの課題解決に向けた3つのポイントについてお伝えします。

異常系テストの課題解決に向けたポイント

前回は、異常系テストを実施するうえでの課題として、次の3点を挙げました。

  • 課題1:漏れのない異常ケースの洗い出しが困難
  • 課題2:合否基準が曖昧になりやすい
  • 課題3:異常ケースの実行ハードルが高い

異常系テストでは、仕様に明記されることの少ない異常ケースを漏れなく想定したうえで、明確な合否基準を定めなければなりません。また、手動テストでは再現が難しいテストケースも多く、実行のハードルは高いといえます。本項では、これら課題の解決に向けた3つのポイントについて解説します。

ポイント1:ナレッジの蓄積・活用

課題1で挙げた異常ケースの漏れが生じる場合、ナレッジを十分に活用できていないケースが少なくありません。ここで言うナレッジとは、過去のテスト結果や不具合報告などから得た、異常ケースに関する知見のことです。ナレッジを蓄積・活用できる体制を構築することで、テスト担当者の経験やスキルによらず、網羅性の高い異常ケース洗い出しが可能となります。

異常ケースは単なる入力ミスだけでなく、誤操作によるログアウト、通信障害、画面の回転、電源断など多岐にわたります。また、テスト対象システム(SUT)によって異常ケースの発生確率や、発生時の影響度は変わります。テストの熟練者であっても、こうしたナレッジを完全に知り尽くしているケースは稀です。確実に「想定外を想定」するためには、人力に依存しないナレッジ活用が求められます。

また、過去の不具合報告から得たナレッジの活用は、課題2で挙げた曖昧になりやすい合否基準の決定時にも役立ちます。どのような挙動が不具合と判断されたのか、というベンチマークを与えてくれるためです。異常ケースのカバレッジ(網羅性)や正確性を高めるうえで、ナレッジの利用価値は非常に高いといえます。

ポイント2:手動テストでは困難な異常ケースへの対応

課題3で挙げたように、異常ケースの実行ハードルは高く、手動テストでは困難な場合も少なくありません。たとえば、数フレーム単位のわずかなタイミングで異常を発生させなければならないケースも考えられます。また、あらゆるタイミングで発生しうる電源断のような異常の場合、手動テストで全パターンを網羅するためには膨大な工数が必要です。

こうした異常ケースを手動操作だけでカバーすることは難しく、費用対効果を考えても現実的ではありません。手動テストでは困難な異常ケースを実施するためには、自動化の検討が不可欠です。異常系テストの自動化に求められる主な要件としては、主に次の2つが挙げられます。

  • 任意のタイミング・回数において手動操作を代替できる
  • 任意のタイミングで環境上の異常を発生させることができる

入力ミスや誤操作によるログアウトなどの異常ケースをカバーするためには、手動操作を柔軟に代替できることが求められます。その一方で、通信切断や画面の回転といった異常ケースは手動操作では実現できず、環境上の異常を発生させる必要があります。

ポイント3:テスト成果を最大化するテストケースの選定

漏れなく異常ケースを網羅しようとすれば、テストケース数は膨大なものとなります。現実的に全てを実施することは難しいため、優先度に沿ったテストケースの選定が必要です。異常ケースの発生確率や発生時の影響度によって、テストケースに優先度を付けることになります。

ただし、テストケースの優先度付けや選定を誤れば、重要な異常ケースの実施漏れにつながりかねません。よって、テスト成果を最大化するうえでは、どのようにテストケースを選定するかも肝要です。たとえば、テスト担当者の先入観で「発生は考えにくいため不要」などと安易に判断することは避けなければなりません。

テストケースの優先度付けにおいては、前述したナレッジの活用が重要となります。しかし、膨大なテストケースに1つひとつ優先度を付けたり、実施のたびにテストケースを選定したりする作業はミスの温床です。人的ミスを防ぐためには、やはり自動化を軸にした施策を検討することが求められます。

異常系テストの課題解決に向けた施策とは?

今回は異常系テストの課題解決に向けたポイントについてお伝えしました。

異常系テストの課題を解決するためには、ナレッジの有効活用や手動テストでは困難な異常ケースへの対応、テストケースの選定がポイントとなります。ただし、これら全てを手動のプロセスで正確にカバーすることは、熟練者のスキルをもってしても困難です。現実的には、異常な操作や環境上の問題発生をテストスクリプトによって自動化することが求められます。

テストエンジニアがOSSのテストフレームワークなどを用いて、テストスクリプトを実装する選択肢もあります。しかし、大量のソースコードを記述する作業は負担が大きいばかりか、環境系の異常ケースにおいては手動テストと同様の理由で実現が困難となるケースも少なくありません。異常系テストの課題解決にあたっては、テスト自動化に適したソリューションを適用することが賢明といえます。

なかでも有力なソリューションは、国内外のIT企業やIT調査機関から高い評価を受けている「Eggplant」です。Eggplantは、世界で初めて「AI(人工知能)による探索的テストの自動化」を実現したテスト自動化プラットフォームであり、異常系テストにおいても高い費用対効果が期待されます。

次回は、異常系テストへの有力な施策となるEggplantの有用性や、適用におけるポイントについて解説します。

異常系テストへのEggplantの適用 の記事一覧

異常系テストへのEggplantの適用

  • 2023.11.16
  • 【第4回】:異常系テストのベストプラクティスとは

BLOG シリーズ 一覧