2023.6.22
「探索型×モデル」による自動テスト技法をひも解く【第4回】:自動化手法②テストケース選択の最適化
ソフトウェア開発・QA現場では自動テスト適用に向けた様々な取り組みが行われてきましたが、依然として多くの現場が膨大なテスト工数に頭を抱える現実があります。こうした中で、高度なテスト自動化を実現する革新的なソリューションへの期待が高まっています。なかでも大手IT調査会社などからの評価が高く、現場の有力な選択肢といえるのが、AI(人工知能)による高度な探索的テストを実現する「Eggplant」です。
Eggplantは、探索的テスト・モデルベーステストの手法を組み合わせ、双方の利点をAIにより最大化する「探索型×モデル」という独自のコンセプトを採用しています。具体的なテスト自動化手法としては「テストモデルの作成」「テストケース選択の最適化」がポイントとなりますが、第3回では前者について説明しました。詳細は、次の記事をご一読ください。
「探索型×モデル」による自動テスト技法をひも解く【第3回】:自動化手法①テストモデルの作成
第4回となる本記事では、後者の「テストケース選択の最適化」について詳しく解説します。
Eggplantによる自動テストの手順(テスト実行段階)
Eggplant・一般的なテスト自動化ツールにおける、準備段階からテスト実行にいたるまでの自動化手順は、大まかに下図の通りです。第3回では準備段階のプロセスについて論じましたが、第4回では黄色で示したテスト実行段階のプロセスに関して解説します。
ポピュラーな自動化手法は、テストケースに沿ってユーザーのUI操作を実施・記録し、それをもとにスクリプトを作成するものです。この場合、準備段階でテストエンジニアが作成したスクリプトを、ツールが実行することによりテストを自動化します。ツールが自己選択のもとスクリプトを生成するわけではなく、追加テストケースの発生時には手動でスクリプトの再作成が必要です。
一方Eggplantの自動テストでは、準備段階で作成したテストモデルをもとにAIが探索的テストを実施します。テスト実行の都度、手動でスクリプトを追加・調整する必要はありません。具体的には、次に示す3つのプロセスに沿って自動テストを行います。
1.テストケースの自動生成
テストモデルをもとに、考えうるテストケースを網羅的に自動生成します。テスト実行の候補となるテストケースを最初に生成することで全体把握が容易となり、カバレッジ(網羅率)を自動で可視化することが可能です。Eggplantにおいてテストケースは、大まかに下記2点のパターンの組み合わせとして表現されます。
要素 |
例 |
---|---|
状態遷移のバリエーション | 「ホームページ→ホテル検索画面」といった画面遷移など |
各アクションの入力データパターン | 検索欄への入力内容、リストボックスの選択内容など |
こうした要素を掛け算式に組み合わせると、一般的にテストケースは膨大なものとなります。しかしEggplantは、テスト結果分析による最適なテストケースの選択によって、データの組み合わせ・状態遷移のバリエーションを絞り込むことが可能です。また、手動によるテスト設計では見落としやすいテストパターンも探索範囲とできるため、工数の削減だけでなくテスト漏れの防止にもつながります。
なお1つひとつのテストケースは、「スニペット」と呼ばれる再利用可能なコードの組み合わせによりスクリプトとしての役割を提供します。これらのコードは直感的に理解しやすい「SenseTalk」というスクリプト言語で記述されるため、プログラミングの専門知識を持たないテスト担当者でも容易にスクリプトの調整が可能です。
2.テストケースの自動実行
Eggplantは後述する最適化された方法により、膨大なテストケースから実行すべきものをAIが選択し、スクリプトを自動実行します。最初に実行するテストケースをテストエンジニアが選択することも可能です。実行したテストケースの結果は自動で記録され、それにともないカバレッジの更新も自動で行われます。
3.次に行うべきテストケースの選択
実行したテスト結果を踏まえて、次に実行すべきテストケースを探索します。Eggplantにおいてテストケースの探索を行うのは、システム特性やテスト結果に関するデータを蓄積・学習したAIです。AIは膨大なテストケースに優先順位を付け、優先してテストすべきものを選択・実行します。
通常の探索的テストでは、一定の経験を持つテスター自身が次に実行するテストケースを選択します。それまでのテスト結果はもちろん、システム特性を加味して不具合が発生しやすいポイントに当たりを付けるなど、担当者の経験・知見を探索に活かせるかどうかでテスト成果は大きく変わります。
一方、EggplantではAIとモデルベーステストの手法によりテストケース選択が最適化されるため、テスターに依存することなくテスト成果を高めることが可能です。
Eggplantによるテストケース選択の最適化
本節では、Eggplantによる自動テストの実行段階プロセスにおける「テストケース選択の最適化」について掘り下げます。
テストケースの優先順位付け
Eggplantの探索的テストにおいては、事前に付けた優先順位が高いテストケースから選択・実行します。テストケースの優先順位を決める際の判断基準は主に次の3つです。これら要素を総合的に判断したうえで、AIが優先順位を付けます。
判断基準 |
概要 |
---|---|
バグハンティング | テスト結果やシステム特性などから不具合の発生傾向を分析する。 バグの混入がより疑われるテストケースを優先する。 |
カバレッジアナリシス | テストケースの実行状況からカバレッジを分析する。 カバレッジの均等化・最大化につながるテストケースを優先する。 |
ユーザーによる制御 | アクションごとに重み付けを行うことで、優先順位付けに反映される。 特定のテストケース・テストシナリオだけを指定することも可能。 |
バグハンティングは、テスト結果からAIが不具合の発生傾向を分析するものです。具体的には、実行済みテストケースの合否判定(成功・失敗)をもとに、不具合発生との因果関係を下記のような要素ごとに評価します。
- ステートとアクションを含むテストフロー(遷移のパターン)
- スクリプトに使用された変数と値のセット
たとえば変数Aを用いたテストケースで不具合が発生している場合、変数Aをともなう他のテストケースが次の実行対象として選ばれる可能性が高くなります。
またカバレッジアナリシスは、実行状況にもとづくカバレッジを優先順位に加味するものです。具体的には、テストケース数に対して実行数が少ないテストシナリオが基本的には優先されやすくなります。
加えて、Eggplantのユーザーがアクションごとに重みを付けることにより、テストケースの選択順序を調整することも可能です。たとえば、検索ボタンの重みを増やした場合、検索ボタンの操作をともなうテストケースが次の実行対象として選ばれやすくなります。
タグの設定
Eggplantのテストモデルにおいて、各アクションに「タグ」を設定することでもテストケースの選択順序を調整できます。タグは「日付型」「文字列型」といったデータの性質や、製造者や開発拠点といった開発条件のように、共通する属性を持つアクションをグループ化して扱える機能です。
AIは各タグに対してテスト結果にもとづく重み付けを行い、優先順位に反映します。たとえば各アクションに製造者A~Cのタグを付けた場合、製造者Aのアクションで不具合が発生すると、製造者Aタグの設定された全テストケースの優先順位が上がります。
このように、製造者といったアナログな情報であっても、タグ機能によってテストケース選択に反映することが可能です。アクションの属性ごとに適切なタグを設定することで、より繊細なテストケース選択が可能となります。
「探索型×モデル」の価値を高める適用ケースとは?
今回は、Eggplantにおけるもう1つの自動化手法である「テストケース選択の最適化」に焦点をあててお伝えしました。
Eggplantの自動テストにおいては、テストモデルをベースに膨大なテストケースを生成し、AIを活用した探索的テストによって最適なテストケースを選択・実行します。これにより、熟練したテスターを凌駕するほどの探索精度を実現するだけでなく、カバレッジの飛躍的な向上が可能となります。
これまで、「探索型×モデル」をコンセプトとしたEggplantの自動化手法について解説してきました。Eggplantの適用による高品質な自動テストを適用するうえでは、ケーススタディを通してベストプラクティスを把握することも肝要です。
最終回となる次回は、「探索型×モデル」の価値を高めるEggplantの適用ケースや、適用にあたっての具体的な手段をご紹介します。
- 2023.7.20
- 【第5回】:Eggplantの適用ケース