2023.11.16
【第4回】:異常系テストのベストプラクティスとは
ソフトウェアの品質問題を防ぐためには、本来の仕様から外れた異常ケースに焦点を当てる「異常系テスト」が不可欠です。しかし、洗い出し作業から合否基準の決定、テスト実行にいたるまでハードルが非常に高く、異常系テストの品質向上にあたってクリアすべき課題は多く存在します。
高品質な異常系テストを実現するうえで、課題解決のポイントを押さえた施策の適用が求められます。異常系テストにおける課題解決のポイントについて詳しくは、第3回の記事をご一読ください。
これら全ての課題を解決するためには、異常系テストに対応したテスト自動化ソリューションの適用が欠かせません。なかでも、海外のIT調査会社などから高評価を受けている「Eggplant」は、特に有力な選択肢です。連載最終回となる本記事では、異常系テストへの有力な施策となるEggplantの有用性や適用例について解説します。
異常系テストにおけるEggplantの有用性
前回は、異常系テストの課題解決に向けたポイントとして、次の3点を挙げました。
- ポイント1:ナレッジの蓄積・活用
- ポイント2:手動テストでは困難な異常ケースへの対応
- ポイント3:テスト成果を最大化するテストケースの選定
Eggplantは、上記いずれのポイントにも合致したソリューションです。ここでは、異常系テストの課題解決に寄与するEggplantの有用性について解説します。
1.AIによるナレッジの活用
Eggplantの大きな特長は、AIの「機械学習」を採用している点です。機械学習では、AIが過去の膨大なデータからの学習を通じて知見を獲得し、判断の精度を自ら向上させます。異常系テストにおいて価値の高いナレッジを有効活用できるため、異常ケースの洗い出し精度も向上するのです。
ローカルに蓄積された膨大なユーザー体験から学習を重ねたEggplantのAIは、多岐にわたる異常ケースの知見を蓄積しています。これにより、ユーザーがUI操作において直面し得る、さまざまな異常ケースを漏れなくスクリプトに落とし込むことが可能です。
2.イベント駆動型の状態遷移制御
イベント駆動(イベントドリブン)型の状態遷移制御を採用していることもEggplantの特長です。このアプローチでは、SUT(テスト対象システム)を状態遷移モデルに落とし込み、各状態におけるイベントの発生をトリガーとした状態遷移を行います。
Eggplantでは、異常ケースの発生をイベントとして定義することが可能です。これにより、あらゆる状態において発生し得る異常ケースを、状態遷移モデル内で網羅できます。イベントにともなう状態遷移として機械的にスクリプトに落とし込むことで、手動テストでは難しい異常ケースへの対応を可能にします。
3.探索的テストによる高精度なテストケース選定
Eggplantは「探索的テスト」を採用することで、高精度なテストケース選定を自動化します。探索的テストとは、テスト実行の過程で「次に実行すべきテストケース」を探索していくテスト手法です。それまでのテスト結果に加えてシステム特性なども加味する必要があり、手動だと高度なスキルが要求されます。
Eggplantの探索的テストを可能にするのは、過去のテスト結果やシステム特性などから不具合の発生傾向を分析し、多くの知見を蓄積したAIです。不具合発生の懸念が大きいテストケースをAIが自ら探索することで、テストケース選定の正確性を高めます。これにより、テスト成果の最大化につながるだけでなく、機械化による人的ミスの抑制が可能です。
Eggplantによるテスト自動化の適用例
Eggplantであれば、異常系/正常系/準正常系を問わず、高品質なテスト自動化の実装が可能です。ここでは、Eggplantによるテスト自動化の適用例を簡単にご紹介します。
グローバルアクションを活用した異常系テスト
Eggplantでは「グローバルアクション」を定義することで、異常系テストの実施が容易となります。グローバルアクションとは、SUTの状態遷移モデルにおいてあらゆるタイミングで実行可能なアクションです。通信障害や画面回転といった環境系の異常ケースを指定することもできます。
たとえば、電源断の異常系テストを実施したい場合、グローバルアクションに電源断を定義。そうすることで、Eggplantがスクリプトを自動生成する際に、電源断のイベントを必要に応じて反映します。電源の発生タイミングはEggplantが判断するため、テスト担当者が指定する必要はありません。
このようにEggplantでは、手動テストでは実施が難しい異常ケースを幅広いタイミングにおいて検証でき、網羅性の向上につながるとともに、異常発生時におけるソフトウェアのFail Safeの挙動を確実に確認することができます。
通常のアクションによる正常系/準正常系テスト
環境系の異常ケースを含まない正常系/準正常系テストであれば、通常のアクションだけで自動化が可能です。通常のアクションとは、画面上の各オブジェクトに対して定義できる、クリックやデータ入力などの操作を指します。入力値や外部ファイルなど、さまざまな指定が可能です。
たとえば検索機能をテストする場合、検索欄のアクションとして正常値や異常値の入力、それらに応じた期待値などを定義します。「アクション変数」と呼ばれる機能を用いることで、入力値の範囲指定やリスト指定なども可能です。Eggplantは、定義されたアクションの中からテストすべき入力パターンを選定し、スクリプトの自動生成時に反映します。
Eggplantが自動テストを実行する際には、不具合の発生リスクやテストケースの消化状況などに応じて優先度を付けます。優先的に実施すべきテストケースを適切に選定・実行することで、手動テスト実施時に生じる判断ミスを防ぎ、効率的に正常系/準正常系テストの実施が可能です。
Eggplantの適用におけるポイント
Eggplantに限らずテスト自動化ソリューションの適切な実装には、有識者の存在が欠かせません。テスト自動化の実装経験がない場合、開発・QA現場の負荷が高まり、通常業務に支障が生じる恐れもあります。Eggplantの適用を成功させるうえでは、信頼のおける支援サービスの活用が望ましいといえます。
なかでも、アドックインターナショナルが提供する「ADOC Testing Service (ATS) for Eggplant」は有力な選択肢です。国内最多のEggplant認定資格技術者を有する専門チームが、コンサルティングからPoCの支援、設計、実装、運用、教育までトータルサポートします。
異常系テストの自動化により品質問題との決別を
本連載では、異常系テストの基礎知識や課題、解決のための施策をお伝えしました。
異常系テストの自動化においては、AIにより探索的テストを自動化できるEggplantの適用が有力な選択肢です。異常ケースに関するナレッジを活用し網羅性を高められるだけでなく、イベント駆動型の状態遷移制御によって手動テストでは難しい環境系の異常ケースもカバーできます。
昨今のIT市場においてソフトウェアの品質問題が後を絶たないことは、多くの開発・QA現場で異常系テストへの施策の適用が進んでいないことの証左ともいえます。高品質な異常系テストを人力で実現することは現実的に難しく、自動化によるテストプロセスの抜本的な変革が求められています。
- 2023.11.16
- 【第4回】:異常系テストのベストプラクティスとは