Eggplant DAIでのアクション
Eggplant DAIを使用すると、システムがテスト対象(SUT)のモデルを作成し、Eggplant DAIがあなたのシステムでテストを生成するためにそのアルゴリズムを使用することができます。モデルは_状態_と_アクション_で構成されています。状態とは、インターフェイスの個々の画面などのことを指します。アクションとは、特定の画面でユーザーが行ったり、ユーザーを画面間で移動させたりすることを指します。
モデルを実行すると、Eggplant DAIエンジンがフォローするパスを選択し、そのアルゴリズムと可能なステップに基づいて各アクションを決定します。SUTに対してテストを実行するには、FusionエンジンからSenseTalkスニペットをアクションにリンクします。
状態に関する詳細情報は、Eggplant DAIでの状態の定義を参照してください。
アクションの種類
Eggplant DAIには3つのアクションがあります:
- 通常: これらのアクションは他のアクションに対して特定の順序で実行する必要はありません。これが最も一般的なアクションのタイプです。
- 順序: これらのアクションは特定の他のアクションに対して特定の順序で実行する必要があります。
- 前: これらのアクションはモデルを前の状態に戻します。つまり、現在の状態に移行する原因となった状態に戻します。
アクションの種類を変更するには、アクションを選択し、アクションプロパティタブのタイプリストメニューを使用して、希望のアクションタイプを選択します。アクションプロパティの詳細については、アクションプロパティの設定を参照してください。
アクションを同じ状態にリンクする
前のアクションタイプは、状態変更を引き起こすために特別に事前に定義されたアクションがある唯一のタイプです。他のアクションタイプは、添付されたSenseTalkスニペットで定義されたアクションを実行します。したがって、新しい状態を呼び出すようにアクションをしたい場合、スニペットコードはそれを明示的に行う必要があります。
モデルのデフォルトの動作は、同じ状態にとどまることです。状態変更は、アクションによって状態変更が呼び出されたときにのみ発生します。たとえば、呼び出されたアクションがUIのボタンをクリックするか、フィールドにテキストを入力する場合、アクションは実行され、次にEggplant DAIアルゴリズムが同じ状態から次のアクションを選択します。アクション自体が状態変更を引き起こさないと仮定します。
言い換えれば、アクションを親の状態にリンクするためのアクションは必要ありません(または利用可能ではありません)。新しい状態が明示的に要求されるまで、すべてのアクションはその状態にとどまります。
アクションの作成
モデルの状態にアクションを追加するには、以下の手順を実行します:
- モデルワークスペースで、興味のある状態を選択します。
- アクションを作成します。以下のどちらかの方法を使用します:
- ツールバーで新しいアクションをクリックします。
- 選択した状態で右クリックします。アクションリストから新しいアクションを選択します。
- Use
Ctrl+Shift+A
.\ 新しいアクションが表示され、Action Propertiesタブが選択され、入力の準備ができています。
- アクションプロパティの設定のガイドラインに従ってアクションを設定します。
アクションは、左ペインのモデルツリータブに表示されます。状態内のアクションはその状態の下の階層に、グローバルアクション(以下で説明)は状態と同じレベルのツリーに表示されます。ツリービューでドラッグアンドドロップすることで、親状態間でアクションを移動することができます。
グローバルアクション
グローバルアクションは、任意の状態で実行できるアクションです。グローバルアクションの良い例は画面の回転です:ユーザーはあなたのアプリケーションを使用中にいつでもモバイルデバイスを回転させることができるので、その実行を一つの状態に限定することはありません。
モデルにグローバルアクショ ンを追加するには、アクションの作成で示されている手順に従います。ただし、状態を選択する(ステップ1)代わりに、状態やアクションが選択されていないことを確認します。何も選択せずにアクションを作成すると、そのアクションはグローバルアクションになります。
アクションプロパティの設定
新しいアクションを作成した後、アクションプロパティを設定してその動作をカスタマイズすることができます。これらのプロパティはモデルワークスペースの右ペインにあるアクションプロパティタブで編集します。
一般プロパティセクション
アクションプロパティタブの上部セクションでは、アクションの一般的なプロパティを調整できます:
- 名前: 新しいアクションはデフォルトの名前で作成されます。ここで名前をモデルにもっと説明的なものに変更します。このフィールドでは、ダブルクォーテーションを除くすべてのUnicode(UTF-8)文字を使用できます。
- 説明: このフィールドはオプションですが、このアクションについての有用な情報を記録するために使用できます。
- タイプ: このリストを使用してアクションタイプを設定します。新しいアクションは通常のタイプで作成され、これ が最も一般的なアクションタイプです。ただし、必要に応じてここでSequentまたはPreviousに切り替えることができます。各アクションタイプの説明については、上のアクションの種類セクションを参照してください。
- SUT最終更新日: このリストを使用してSUTの最終更新日を設定します。Eggplant DAIが次に実行するアクションを計算するとき、SUTの最終更新日以降に取得されたカバレッジのみを考慮します。
- 重み: この設定を使用すると、モデルが実行されるときにアクションが実行される確率を変更できます。アクションのデフォルトの重みは100です。その値を50に変更すると、アクションは重みの値が100のアクションと比べて実行される確率が半分になります。
- アクション制限: この値は、テスト実行中にアクションが実行される回数の上限を設定します。この設定をアクション制限のリセットチェックボックスと一緒に使用して、状態の訪問中または全体のテスト実行中にアクションが実行できる回数を管理します。
新しいアクションはデフォルトのアクション制限値0(ゼロ)を持っています。この値はアクションが訪問できる回数に制限がないことを意味します。
- アクション時間制限: この値は、アクションが実行するのにかかる時間(秒単位)の上限を設定します。この設定は性能テストに役立ちます。デフォルト値は0です。
- アクション制限のリセット: このチェックボックスは、アクション制限の設定が状態内の単一訪問に適用されるのか、全体のテスト実行に適用されるのかを決定します:
- 選択されている場合、Eggplant DAIは状態を終了するたびにアクションのテストカウントをリセットするため、制限はこのアクションが状態を訪問するたびに実行できる回数に適用されます。
- チェックを外すと、Eggplant DAIはテスト実行全体でのアクションの発生を数えます。この場合、アクションの制限は、このアクションがテスト全体で実行できる回数を決定します。
アクションからの接続セクション
このセクションを使用して、アクションが状態に接続するように設定します。このテーブルの左側は接続選択で、3つの列が含まれています:
-
状態: この列はモデル内のすべての状態をリスト化します。
-
接続 : このチェックボックスを使用して、モデルで選択したアクションと状態との間に接続を作成します。
-
可視性 : モデルに矢印が表示されないようにしたい接続に対してこのチェックボックスを選択します。モデルが複雑で、多くのアクションと状態が接続されている場合、このオプションを使用するとビューを簡素化できます。この選択を行うと、接続された状態は元のアクションの下に影のボックスとして表示されます:
上記の例では、SelectTaskアクションはTaskDetail状態に接続しています。
テーブルの右側の接続の条件セクションは、アクションが状態に接続する前に満たす必要がある条件を設定できる場所です。このセクションには3つの列が含まれています:
- パラメータ: リストからパラメータを選択して条件を設定します。
- 条件: アクションが状態に接続する前にパラメータが満たす必要がある比較方法(つまり
<
、>
、==
)をリストメニューから選択します。 - 値: パラメータに対して評価する値を設定します。
アクションセクションによって呼び出されるスニペット
このセクションには、選択したアクションにリンクした任意のスニペットがリスト表示されます。スニペットは、テスト実行中にこのアクションに遭遇したときに実行されるSenseTalkコードの特定の部分です。
アクションプロパティタブのアクションセクションによって呼び出されるスニペット
Ctrl+Shift+A
を使用します。 新しいアクションが表示され、アクションプロパティタブが選択されて入力を待っています。
モデルワークスペースとスニペットタブを使用して、状態またはアクションにスニペットを追加できます。この方法でスニペットをリンクする方法については、モデルをスニペットにリンクするを参照してください。
アクションにアタッチしたいスニペットのパスを知っている場合は、ここに追加できます。名前フィールドをクリックし、スニペット名を入力します。
Eggplant スニペットから DAI へのデータの受け渡し
モデル内でスニペットを実行した結果得られるデータを使用する場合は、スニペットの横にある [出力] フィールドでデータを処理するためのパラメーターを指定します。戻り値ごとに 1 つのパラメータを指定します。スニペットが複数の値を返す場合は、すべての戻り値を処理するパラメータのカンマ区切りリストを指定します。
たとえば、注文書を生成し、新しく生成された注文の番号、状態、アクティブ ステータスを返す次のハンドラー コードを含むスニペットを考えてみましょう。
to generate_po
return [600,"New","true"]
end generate_po
出力 フィールドに param0
、param1
、param2
を指定して戻り値に割り当て、そのデータをモデルで使用できます。
返される値の数と [出力] フィールドで指定されたパラメーターの数が異なる場合、DAI はモデルの実行時にエラーを報告します。
アクションパラメータセクション
アクションパラメータは、状態とアクションの値をキャプチャし、提供します。アクションにパラメータを追加するには、アクションを右クリックし、リストメニューで新しいパラメータを選択します。また、アクションを選択し、右ペインのアクションパラメータで新規をクリックすることもできます。
アクションプロパティタブのアクションパラメータセクション
パラメータを生成するためのプロパティを設定するには、パラメータを右クリックし、コンテキストメニューでパラメータ詳細の編集を選択し、パラメータプロパティダイアログボックスを使用して基準を設定します。
-
パラメータに名前を付けます。このフィールドでは、ダブルクォートを除くすべてのUnicode文字を使用できます。
-
パラメータタイプを選択します:
-
整数: この選択肢では、パラメータを正の整数、負の整数、またはゼロとして定義します。例えば、ユーザー数やテストケース数など、何かの数を重要視するモデルで整数パラメータタイプを使用します。
-
真または偽: あなたのモデルがオンやオフ、真または偽などのブール値を必要とする場合、このタイプを使用します。
-
実数: 実数データ型は、正と負の整数と小数を受け入れます。例えば、度、ラジアン、その他の類似情報の値に対して実数データ型を使用します。
-
テキスト: このデータ型を使用して文字列を保存します。また、文字列として許容される文字のリストを定義するためにテキストデータ型を使用することもできます。このフィールドでは、ダブルクォートを除くすべてのUnicode文字を使用できます。
-
セット: この選択肢を使用すると、このパラメータの許容値のセットを定義できます。Eggplant DAIにランタイムで特定の値リストから値を選択させたい場合、この選択肢を使用します。例えば:'春'、'夏'、'秋'、'冬'。値のリストを入力するには、パラメータを右クリックし、コンテキストメニューからパラメータ詳細の編集を選択し、パラメータプロパティダイアログボックスの値セクションを使用して値を設定します。このフィールドでは、ダブルクォートを除くすべてのUnicode文字を使用できます。
-
レコード: この選択肢を使用すると、Eggplant DAIはCSVファイルに含まれるレコードからパラメータ値を読み取ることができます。ファイル > 実行環境の管理に移動して、CSVファイルが含まれるディレクトリを特定します。Eggplant DAIがこのパラメータにアクセスすると、CSVファイルから1つのレコードを選択し、パラメータに保存します。
:::注意点
CSVファイルからのデータをパラメータに渡す値として使用する場合、CSVファイルの行が4つのカンマで区切られた値(例:"春、夏、秋、冬")を含んでいる場合、その行全体がパラメータに渡されます。もしリストから特定の値、例えば"秋"だけが必要な場合は、それをパースするためにEggplant Functionalのスニペットを使用する必要があります。
:::
-
-
パラメー タの初期値を設定します。レコードタイプのパラメータを使用する場合、初期値で選択したオプションがレコードを読み取るべき.csvファイルを決定します。
-
Eggplant DAIが使用する生成方法を設定します:
- 生成: パラメータタイプに基づいてパラメータの新しい値を生成します。
- 一意生成: 値を生成しますが、以前に使用された値は再利用できません。
- 一度だけ生成: 生成された値は一度選択され、それ以降は選択されません。値は実行中に静的に保持されます。
- 非生成: 値は生成されず、値を含むように設定される必要があります。
-
Eggplant DAIが生成するパラメータをさらに定義するために値グループを追加できます。値グループを値の定義として入力し、定義ごとに1行を使用します。
-
値: このグループエントリの許容値を入力します。パラメータ値を以下のように定義することができます:
- 静的な値、例えば100を入力します。
- 範囲を入力します。例えば0:100。
- リストを入力します。例えば、0, 2, 4, 6, 8。
-
重み: このパラメータを生成する際にEggplant DAIがこの値グループをどの程度の頻度で使用するか(他の値グループと比較して)を指定します。例えば、このパラメータを生成する際にEggplant DAIがこの値グループを50%の頻度で使用するようにしたい場合、このフィールドに50を入力します。
-
分布: Eggplant DAIがこのパラメータを生成するときに使用する統計分布方法を選択します:
- フラット: フラットな統計分布モデルを使用します。
- ノーマル: 正規の統計分布モデルを使用します。
- エッジ: 統計的な外れ値を使用します。
-
カバレッジグループ: Eggplant DAIが値のエントリを分割するために使用するセグメントの数を決定します。Eggplant DAIはデフォルトで10等分の値から始まり、値グループの値を処理し、カバレッジグループを提案します。たとえば、値として_0:360_を入力すると、Eggplant DAIは0から360までの値範囲をカバーするために、各カバレッジグループが可能な36の値を含む10のカバレッジグループを提案するかもしれません。モデルのニーズに合ったカバレッジグループ値を手動で入力できます。
-
関連タグセクション
タグはモデルについての特定のプロパティを識別します。これらのタグをアクションに適用して、そのモデル内のプロパティを追跡できます。
アクションプロパティタブの関連タグセクション
このセクションの設定を使用して、モデル内のアクションにタグを関連付けます。タグの作成と、モデル内のアクションに作成したタグを適用する方法については、Eggplant DAIでのタグの使用を参照してください。
このアクションを実行するための事前条件セクション
特定の条件が満たされた後にのみモデル実行がアクションを呼び出すようにしたい場合があります。たとえば、ボタンはフィールドにデータが入力されるまで無効になる可能性があります。このケースをモデル化するためには、パラメータ値に基づいて有効になるアクションを作成します。
アクションプロパティタブのこのアクシティを実行するための事前条件セクション
このセクションを使用して、事前条件の評価基準を設定します。事前条件セクションには、選択したアクションの親状態の各定義済み状態パラメータと、任意のグローバルパラメータが一覧表示されます。
currentStateパラメータは、現在の状態の名前が含まれる特別な事前定義されたグローバルパラメータです。このパラメータを使用して、特定の状態からグローバルアクションが呼び出されるのを防ぐことができます。例えば、Quitのためのグローバルアクションがある場合、そのアクションがInitial状態から呼び出されるのを防ぎたいかもしれません。
このセクションの表には、以下の情報が表示されます:
- スコープ: パラメータが設定される状態またはモデル。
- パラメータ: パラメータ名。
- タイプ: パラメータタイプ(例:TrueまたはFalse、Integer、Text)。
- 条件: パラメータ値に適用したい評価方法 (例:
==
,>
,<
). リストから適切なメソッドを選択し、前提条件を設定する。 - 値: パラメータに対して評価する値。事前条件を設定するためにこのフィールドに値を入力します。
事前条件についての詳細情報は、アクションの事前条件の設定を参照してください。
パラメータ値の設定および生成セクション
このセクションを使用して、特定のアクションが実行されたときにパラメータ値を設定または生成します。Eggplant DAIのモデル実行が選択したアクションを実行するとき、このセクションにリストされているパラメータの値を変更できます。この表には、選択したアクションの親状態のすべての状態パラメータとすべてのグローバルパラメータが表示されます。
アクションプロパティタブのパラメータ値の設定および生成セクション
このセクションの表には、以下の情報が表示されます:
- スコープ: パラメータが設定される状態またはモデル。
- パラメータ: パラメータ名。
- タイプ: パラメータタイプ(例:TrueまたはFalse、Integer、Text)。
- 操作: このリストを使用して、アクションがモデルに遭遇したときにパラメータ値が変更されるかどうかを決定します。選択肢は次のとおりです:
- none: (デフォルト) パラメータ値は変更されません。
- set: 特定の値を設定したい場合はこのオプションを選択します。
- generate: パラメータの新しい値を生成したい場合はこの値を選択します。
- 値: 操作フィールドで新しい値を設定することを選択した場合、このリストメニューを使用して値を選択します。選択肢はパラメータのタイプによって決まります。
アクションで実行するチェックセクション
このセクションを使用してパラメータの値をテストし、そのテストの結果に基づいてメッセージを表示します。
アクションプロパティタブのアクションで実行するチェックセクション
まず、アクションを選択します。その後、チェックを設定できます:
- 条件をテストしたいパラメータを選択します。
- 条件カラムで、Eggplant DAIにパラメータの値をテストするために使用してほしい評価条件(例
<
,>
)を選択します。 - パラメータ値を評価したい値を設定します。
- 条件が満たされた場合にEggplant DAIに表示してほしいメッセージを入力します。
パラメータを使用してより複雑なテストを作成することが可能です。例えば、SenseTalkスニペットからのレスポンスをキャプチャするパラメータをアクションに追加し、それらのレスポンスを使用して追加のパラメータを作成し、それらを他のスニペットやアクションに渡すことができます。
アクションとパフォーマンステスト
アクションプロパティタブでアクション時間制限を設定すると、SUTのパフォーマンスを追跡することが可能になります。テストを実行すると、これらのアクションの実行時間がログに記録されます。
実行時間メッセージの例 Example of an Execution Time Message
アクションの実行時間が設定した時間制限を超えると、エラーが表示されます。
次の場合にログメッセージがログタブに表示されます:
- コントローラ > テスト結果でテスト結果の詳細を表示する。
- デザイナー > ライブランからテストを実行する。