2023.5.18
【第3回】:自動化手法①テストモデルの作成
自動テストの実装に向けて取り組むソフトウェア開発・QA現場は多いものの、現実にはQCDの向上につながらないケースが少なくありません。こうした中で、先端技術を活用したテスト自動化ソリューションに解決策を見出す開発現場が増えています。
その中でも、大手IT調査会社などによる高い評価を受けているのが、高度なAI(人工知能)を搭載した世界初の探索的テスト自動化ツール「Eggplant」です。Eggplantは、探索的テストにモデルベーステストの手法を組み合わせた「探索型×モデル」という独自のコンセプトを採用しています。
このコンセプトは、探索的テスト・モデルベーステストのメリットをAIにより最大化し、両者が抱える課題を解決するものです。これら2つのテスト手法の課題と、Eggplantの「探索型×モデル」による解決方法については連載第2回で解説しました。詳細は、次の記事をご一読ください。
「探索型×モデル」による自動テスト技法をひも解く【第2回】:スピードと低コスト、高い網羅性の実現
自動テストにおける探索型×モデルの価値を享受するためには、Eggplantの具体的なテスト自動化手法を掘り下げて理解することが肝要です。Eggplantの自動化にあたっては「テストモデルの作成」「テストケース選択の最適化」がポイントとなりますが、第3回となる本記事では前者について説明します。
Eggplantによる自動テストの手順
Eggplantによる自動テストの手順は、一般的なテスト自動化ツールと大きく異なります。Eggplant・一般的なテスト自動化ツールにおける、準備段階からテスト実行にいたるまでの自動化手順は、大まかに下図の通りです。第3回では、黄色で示した準備段階のプロセスに関して解説します。
ポピュラーな自動化手法は、テストケースに沿ってユーザーのUI操作を実施・記録し、それをもとにスクリプトを作成するものです。この場合、どのようなUI操作を行うかはテストエンジニアに委ねられます。したがって、テストケースの作成・洗い出しは手動で行わなければなりません。
一方、Eggplantで自動テストを実装する場合、必要となる準備作業はテストモデルの作成となります。テストモデルをもとにEggplantがテストケースを探索し、自動生成するため、手動によるテストケースの作成や洗い出しは必要ありません。
なお、テスト実行のプロセスについては第4回で論じます。
Eggplantによるテストモデルの作成
本節では、Eggplantによる自動テストの準備段階プロセスにあたる「テストモデルの作成」について掘り下げます。
テストモデルとは
Eggplantにおけるテストモデルとは、テスト対象システム(SUT)の画面遷移や状態遷移などを模式的に表現したものです。例として、旅行ガイドアプリの画面遷移からテストモデルを導出する場合、下図のようになります。
たとえば、「ホームページ」から「ホテル」ボタンを押下した場合、ホテル画面に遷移することが表現されています。テストモデルに必要となるのは、主に下表の3要素(アクション、ステート、状態遷移)です。これら要素をEggplantのUIにより構築していくのが基本的な流れとなります。
要素 |
概要 |
---|---|
ステート | テスト対象システムが取りうる状態を定義する。 画面遷移であれば画面名となる。 |
アクション | テスト対象システムの各ステートにおいて、発生しうるイベントを定義する。 ボタンなどの機能を網羅し、それらの入力データを定義する。 |
状態遷移 | アクションにともない発生するステート間の移行を矢印で表現する。 |
アクションには、具体的な入力データや条件を定義することが可能です。たとえば、「検索する」ボタンを押下するアクションの場合、実際に検索する内容を指定することもできます。また、「外部ツールからの入力」といった条件を与える場合も、アクションで定義します。
つまり、SUTにおける「状態」「状態に対するイベント・条件」「イベントにともなう遷移」の3要素を定義するのがテストモデルです。これらは、一般的な状態遷移図や状態遷移表における状態・イベントに相当するものであり、Eggplantでは状態=ステート、イベント=アクションと表現されます。
テストモデルの作成方法
テストモデルの作成は、Eggplantの専用UIを用いてグラフィカルに行うことができます。大まかな作成手順は次の通りです。
- 各ステートを配置する
- 各ステート内にアクションを配置する
- 各アクションにともなう状態遷移を矢印で表現する
EggplantのUIにおいて、ステートは大きな紫色のブロック、アクションは小さな灰色のブロックとして表現されます。ステートやアクションを配置し、アクションにともなう状態遷移を表現するのが大まかな流れとなります。
なお、Eggplantでは画面を持たないメッセージベースのAPIテストなどのテストモデル作成も可能です。例として、クライアントシステムからの要求を受けてログインやセッション確立などを行うSUTを考えます。
画面を持たない上記のようなSUTであっても、状態遷移図として次のように表現することが可能です。
この状態遷移図をEggplantのUIによりテストモデル化すると、下図のようになります。初期状態からログアウトにいたるまでの一連のプロセスが、テストモデルに落とし込まれていることが分かります。
このようなテストモデルを作成すれば、以降のプロセスの大部分はEggplantが行います。Eggplantがテストモデルからテストケースを自動生成・実行するため、テストエンジニアの負担を飛躍的に軽減することが可能です。
Eggplantのもう1つの自動化手法とは?
今回は、Eggplantの自動化手法の1つである「テストモデルの作成」に焦点をあててお伝えしました。
Eggplantの自動テストにおいて、テスト準備作業はテストモデルの作成に集約されます。EggplantのテストモデルにはSUTのあらゆる状態・操作が網羅されるため、テストケース作成の負荷を低減するのみならず、手動では想定が漏れてしまうようなテストケース生成が可能となり、テストの網羅率を飛躍的に向上させることができます。
第3回ではテスト準備プロセスについて論じましたが、「探索型×モデル」においてはテスト実行の自動化手法も重要となります。Eggplantは、探索的テストやAIによりテストケースの選択を最適化しますが、こうした自動化手法についても理解を深めることが求められます。
次回は、Eggplantにおけるもう1つの自動化手法である、テストケース選択の最適化に焦点をあてて解説します。
- 2023.7.20
- 【第5回】:Eggplantの適用ケース