Eggplant AIでのアクション作成
Eggplant AIでテスト対象システム(SUT)のモデルを作成すると、アルゴリズムによってEggplant AIにシステム上でテストを生成させることができます。モデルは、状態とアクションから構成されます。状態とは、インターフェース上の個々の画面のようなものです。アクションには、ある画面内でユーザーが行うものや、ユーザーを画面間で移動させるものがあります。
モデルを実行すると、Eggplant AIエンジンがアルゴリズムに基づいて各アクションを決定し、取り得る手順を判断しながら、進む経路を選択します。SUTに対してテストを実行するには、Eggplant FunctionalからSenseTalkスニペットをアクションにリンクさせます。
Eggplant AIモデルにおけるアクションの作成方法と使用方法について、以下に説明します。
状態についての詳細情報は、Eggplant AIでの状態定義を参照してください。
アクションのタイプ
Eggplant AIには、3つのアクションタイプが用意されています。
- Normal:他のアクションに対して特定の順番で実行する必要のないアクションです。最も一般的なアクションタイプです。
- Sequent:ある決まった他のアクションに対して特定の順番で実行しなければならないアクションです。
- Previous:モデルを1つ前の状態(現在の状態に遷移する原因となった状態)に戻すアクションです。
アクションのタイプを変更するには、アクションを選択してから、Action PropertiesタブにあるTypeドロップダウンメニューで目的のアクションタイプを選択します。アクションプロパティについての詳細は、アクションプロパティの設定を参照してください。
アクションを同じ状態に戻すリンク付け
Previousタイプのアクションは、状態変化を引き起こすよう特に指定して事前定義された唯一のアクションタイプです。他のアクションタイプで実行されるアクションは、どのようなものであれ、アタッチされたSenseTalkスニペットで定義されます。したがって、新しい状態を呼び出すアクションを作成したい場合、明確にその動作を引き起こすスニペットコードが必要になります。
モデルは、デフォルトでは同じ状態の中に留まる挙動をします。状態変化が起こるのは、アクションによって状態変化が呼び出されたときだけです。例えば、呼び出されたアクションがボタンのクリックやUI内のフィールドへのテキスト入力であった場合、そのアクションの実行後、Eggplant AIアルゴリズムは同じ状態の中から次のアクションを選択します(アクションそのものが状態変化を引き起こすものではなかったと仮定します)。
言い換えれば、アクションをその親状態に戻すようリンク付けするアクションは必要ない(利用できない)ということです。すべてのアクションは、アタッチされたスニペットによって新しい状態が特にリクエストされない限り、その状態内に留まります。
アクションの作成
モデル内で状態にアクションを追加するには、以下の手順を行います。
- 状態を選択します。状態の選択は、Modelタブで状態をクリックするか、Model treeタブでも行うことができます。
- アクションを作成します。アクションの作成方法には、次の複数のやり方があります。
- ツールバーの新規アクションボタンをクリック
- 選択した状態の上で右クリックをし、コンテキストメニューからNew Actionを選択
- Ctrl+Shift+Aを使用
- Edit Model > New Actionの順に選択
- モデルに新しいアクションが表示されたら、それを選択した上でAction Propertiesタブを選択します。
- アクションプロパティの設定ガイドラインに従ってアクションを設定します。
グローバルアクション
グローバルアクションは、どの状態においても実行可能なアクションです。グローバルアクションのわかりやすい例に、画面の回転があります。ユーザーは、アプリケーションの使用中、いつでもモバイルデバイスを回転させる可能性があるため、この動作の実行をどれか1つの状態に限定することは望まれません。
モデルにグローバルアクションを追加するときは、アクションの作成の説明に従います。ただし、状態の選択(手順1)は行わず、どの状態やアクションも選択しないままとしてください。何も選択しないでアクションを作成すると、そのアクションはグローバルアクションになります。
アクションプロパティの設定
新しいアクションを作成したら、アクションプロパティを設定して、その挙動をカスタマイズすることができます。こうしたプロパティの編集は、Eggplant AI UIの右側のペインにあるAction Propertiesタブで行います。
一般的なプロパティのセクション
Action Propertiesタブの一番上のセクションでは、次のようなアクションの一般的なプロパティが調整可能です。
- Name:新しいアクションには、作成時、デフォルト名が付けられています。ここで、モデルに合った、より的確な名前に変更します。
- Description:任意のフィールドですが、このアクションについての有用な情報を記録しておくために使えます。
-
Type:アクションタイプを設定する際にこのドロップダウンリストを使用します。新しいアクションには、作成時、大半のアクションに通常用いられるであろうNormalタイプが設定されています。必要であれば、ここで、このタイプをSequentまたはPreviousに切り替えることができます。それぞれのアクションタイプについての説明は、上記のアクションのタイプセクションを参照してください。
- Weight:この設定を使うと、モデルを実行したときのアクション実行確率を変更することができます。アクションの重み値は、デフォルトで100になっています。この値を50に変更した場合、そのアクションの実行確率は、100の重み値をもつアクションの実行確率の半分になります。
- Action limit:テスト実行中に行うことができるアクションの回数の上限値を設定します。合わせてReset action limitのチェックボックスの設定を行い、アクションの実行可能回数の管理期間を状態訪問の間とするか、テスト実行全体の間とするかを設定します。注:新しいアクションでは、アクション制限値がデフォルトで0(ゼロ)になっています。この値は、アクションへの訪問回数に制限がないことを意味します。
- Reset action limit:このチェックボックスによって、Action limit設定を1回の状態訪問に適用するか、テストの実行全体に適用するかを決定します。
- このチェックボックスを選択した場合、Eggplant AIは、このアクションを実行できる回数に対する制限が状態への訪問単位で適用されるよう、状態から出るたびにアクションのテストカウントをリセットします。
- このチェックボックスの選択を解除した場合、Eggplant AIは、テストの実行全体にわたって、アクションの実行回数をカウントします。この場合、Action limitで決定されるのは、テスト実行全体の間にこのアクションを実行できる回数となります。
アクションからの結び付けのセクション
このセクションは、アクションを状態に結び付ける設定を行うときに使用します。表の左側のConnection Selectionには、次の3つの列があります。
- State:この列には、モデル内のすべての状態が一覧表示されています。
- 接続:モデル内で選択したアクションと状態を結び付けるときは、このチェックボックスを使用します。
- 可視性:モデルに矢印を表示したくない接続には、このチェックボックスを使用します。多数のアクションと状態が結び付いた複雑なモデルでは、このオプションを使うことで見た目がシンプルになります。このチェックボックスを選択した場合、結び付けられた状態は呼び出し元のアクションの下にシャドウボックスの形で表示されます。
上の例では、SelectTaskアクションがTaskDetail状態に結び付いています。
表の右側のCondition for Connectionセクションでは、アクションを状態に結び付けるにあたって合致しなければならない条件を設定することができます。このセクションには、次の3つの列があります。
- Parameter:条件を設定するために使用する変数をドロップダウンリストから選択します。
- Condition:アクションを状態に結び付けるにあたって変数が合致しなければならない比較方法(<、>、==)をドロップダウンメニューから選択します。
- Value:変数に対する評価値を設定します。
アクションによって呼び出されるスニペットのセクション
このセクションには、選択したアクションにリンクされているスニペットが一覧表示されます。スニペットは、SenseTalkコードの特定の断片で、テストの実行中に当該アクションが発生すると実行されます。
Action PropertiesタブのSnippets called by actionセクション
状態やアクションへのスニペットの追加は、ModelタブとSnippetsタブを使って行うことができます。これらのタブを使ったスニペットのリンク方法については、Eggplant AIモデルとスニペットのリンク付けを参照してください。
一方、アクションにアタッチしたいスニペットの名前がわかっていれば、このセクションでスニペットを追加することが可能です。やり方は、Nameフィールドをクリックしてから、スニペット名を入力します。
アクション変数のセクション
アクション変数は、状態やアクション向けに値を取得して提供する役割を果たします。アクションに変数を追加するには、アクションを右クリックし、ドロップダウンメニューからNew Variableを選択します。変数の追加は、アクションを選択してから、右側のペインにあるAction variablesでNewをクリックすることでも行えます。
Action PropertiesタブのAction Variablesセクション
変数生成のプロパティを設定するときは、変数を右クリックして、コンテキストメニューからEdit variable detailsを選択し、Variable propertiesダイアログボックスを使って基準を設定します。
- Nameで、変数に名前を付けます。
-
Typeで、変数の型を次の中から選択します。
- Integer:正、負またはゼロの値をとれる整数(分数ではないもの)として変数を定義します。例えば、ユーザーやテストケースの数など、何らかのカウントが重要になってくるときは、この整数の変数型をモデルに使用します。
- True or False:オン/オフ、真/偽またはこれに類する値などのブーリアン値がモデルに必要なときは、この型を使用します。
- Real:5、-5、2/3などの有理数を含む実数データ型です。2の平方根などの無理数もここに含まれます。度、ラジアンまたはこれに類するその他の情報の値には、実数データ型を使用します。
- Text:文字列を格納する必要があるときは、このデータ型を使用します。
- Set:これを選択すると、この変数に入れることのできる値のセットが定義可能になります。ランタイム時に、Eggplant AIに、特定の値リストから値を選ばせたいときは、この型を使用します。(例:'spring'、'summer'、'autumn'、'winter’) 値のリストを入力するには、変数を右クリックしてコンテキストメニューからEdit Variable Detailsを選択し、Variable PropertiesダイアログボックスのValuesセクションで値を設定します。
- Record:これを選択すると、Eggplant AIは、CSVファイルに入ったレコードから変数値を読み出します。CSVファイルの入っているディレクトリを確認するには、File > Settingsの順に選択します。Eggplant AIがこの変数に行き当たった場合、CSVファイルからレコードを1つ選択し、変数に格納します。
- Initial valueで、変数の初期値を設定します。
-
Generationで、Eggplant AIが使用する生成方法を設定します。
- Generated:変数型に基づいて変数に新しい値が生成されます。
- Generated Unique:値が生成されますが、以前に使用された値は再使用できなくなります。
- Generated one-time:生成される値が選択され、一度選択されたら、選択し直されることはありません。値は、実行全体を通じて不変となります。
- Non-generated:値は生成されず、値を格納するよう設定が必要です。
-
Value groupsで値のグループを追加すると、Eggplant AIが生成する変数をさらに細かく定義することができます。1行につき1つの定義を用いて、値のグループを入力し、値を定義します。
-
Values:このグループエントリに入る値を入力します。変数値は、次のように定義することが可能です。
- 100のように、固定値を入力
- 0:100のように、範囲を入力
- 0, 2, 4, 6, 8のように、リストを入力
- Weight:この変数の生成時にEggplant AIが用いる相対的な重みを入力します。例えば、この変数の生成時、Eggplant AIに、この値グループを(他の値グループに比べて)50パーセントの割合で使わせたい場合、このフィールドに50と入力します。
-
Distribution:この変数の生成時にEggplant AIが用いる統計分布法を次から選択します。
- Flat:平坦な統計分布モデルを使用します。
- Normal:正規統計分布モデルを使用します。
- Edge:統計的外れ値を使用します。
- Cov grps:値のエントリを分割する際にEggplant AIが用いるセグメントの数を決定します。Eggplant AIは、最初、セグメント数に相当する値をデフォルトで10としています。値のグループに値が入力されると、その値を処理し、カバレッジグループの候補を表示します。例えば、値に0:360と入力した場合、Eggplant AIは10個のカバレッジグループを候補として表示することが考えられます。この場合、それぞれのカバレッジグループには、取り得る36個の値が含まれ、0~360の値の範囲をカバーします。カバレッジグループの値は、モデルのニーズに合わせて手動で入力することができます。
-
関連タグのセクション
タグは、モデルに関する特定のプロパティを明らかにするものです。こうしたタグを作成してアクションに適用することで、モデル内でそのプロパティを追跡することができます。
Action PropertiesタブのAssociated Tagsセクション
モデル内でアクションにタグを関連付けるときは、このセクションの設定を使用します。タグを作成し、作成したそのタグをモデル内のアクションに適用する方法については、Eggplant AIでのタグの使用を参照してください。
アクション実行の前提条件のセクション
モデルの実行では、ある特定の条件に合致したときだけ、アクションを呼び出したいという場合も考えられます。フィールドにデータが入力されるまでボタンを無効にしておく、などがその例です。こうしたケースをモデリングする場合、変数値に基づいて有効化されるアクションを作成することになります。
Action PropertiesタブのPreconditions for This Action to Executeセクション
前提条件の評価基準を設定するときは、このセクションを使用します。この前提条件セクションには、選択したアクションの親状態に定義してある各状態変数と、グローバル変数が一覧表示されています。
Tip: The currentState variable is a special predefined global variable that contains the name of the current state. You can use this variable to prevent a global action from being called from a specific state. For instance, if you have a global action for Quit, you might want to block that action from being called from your Initial state.
このセクションの表には、次の情報が示されます。
- Scope:変数の設定先となっている状態またはモデルです。
- Variable:変数名です。
- Type:変数型(例、True or False、Integer、Text)です。
- Condition:変数値に対して適用したい評価方法(例、==、>、<)です。前提条件を設定するときは、ドロップダウンリストから適当なものを選択します。
- Value:変数の評価に用いる値です。前提条件を設定するときは、このフィールドに値を入力します。
前提条件についての詳細は、アクションの前提条件の設定を参照してください。
変数値の設定および生成のセクション
あるアクションが実行された場合に、変数値を設定/生成するときは、このセクションを使用します。選択したアクションがEggplant AIモデルの実行において行われたとき、このセクションに一覧表示されている変数の値を変更することができます。表には、選択したアクションの親状態に設定されているすべての状態変数と、すべてのグローバル変数が表示されています。
Action PropertiesタブのSet and Generate Variable Valuesセクション
このセクションの表には、次の情報が示されます。
- Scope:変数の設定先となっている状態またはモデルです。
- Variable:変数名です。
- Type:変数型(例、True or False、Integer、Text)です。
- Operation:モデルがこのアクションに遭遇したときに、変数値を変更するかどうかを決定するドロップダウンリストです。次の中から選択可能です。
- none: (デフォルト)変数値は変更されません。
- set:特定の値を設定したい場合はこれを選択します。
- generate:変数に新しい値を生成したい場合はこれを選択します。
- Value:Operationフィールドで新しい値の設定を選択した場合は、このドロップダウンメニューを使って値を選択します。選択肢は、変数型に応じて決定されます。
アクションで実行するチェックのセクション
変数の値をテストし、そのテスト結果に基づいたメッセージをアクション実行時に表示するときは、このセクションを使用します。
Action PropertiesタブのChecks to Perform in Actionセクション
まず、アクションを選択します。次に、チェック項目を設定します。
- Variableで、条件のテストを行いたい変数を選択します。
- Condition列で、変数値のテストの際にEggplant AIが用いる評価条件(例、<、>)を選択します。
- Valueで、変数値の評価に用いる値を設定します。
- Messageで、条件合致時にEggplant AIが表示するメッセージを入力します。
変数を使用すると、より複雑なテストを構築することが可能です。例えば、SenseTalkスニペットからの応答を取得する変数をアクションに追加し、その応答を用いてさらなる変数を作成して他のスニペットやアクションに渡すこともできます。
Actions and Performance Testing
Setting an Action time limit in the Action Properties tab makes it possible to track performance using Eggplant AI.
To see action time results in reports, enable that capability in the Settings tab.
- Go to File > Settings.
- Select the Report action performance timings checkbox.
- Click OK.
Action timing results then display in the Console as the test runs:
The log shown above displays an error because an action took more time to execute than the set action time limit.