[11月19日] Wagby Developer Day 2020 Online - Wagby R9/10発表!事前申し込みはこちらから。

テストシナリオマクロ最終更新日: 2020年10月1日

シナリオファイルの構造

シナリオファイル

ファイルの先頭は=で始めます。その次の行から、環境命令が続きます。

テスト命令の開始は==で始まる行で識別します。次の==が見つかるまでが、一つのシナリオです。

= シナリオ名
環境命令
...
== テスト命令のまとまり(一つの画面機能の操作)
テスト命令
...
== テスト命令のまとまり(一つの画面機能の操作)
テスト命令
...

一つの「テスト命令のまとまり」は、一つの画面の操作のみとします。ここに検索、一覧表示、詳細表示といった複数の画面をまたがるテスト命令を記述することはできません。

環境命令

書式は次の通りです。

:環境命令: "値"

環境命令はコロン (":") で囲みます。一つの空白で区切り、値部をダブルクォートで囲みます。

環境命令 必須 説明
:group: :group: "t001" このテストシナリオのグループIDです。一つのグループIDに複数のテストシナリオを用意することができます。
:id: :id: "CustomerTest" このテストシナリオのグループIDです。一つのグループIDに複数のテストシナリオを用意することができます。
:define: :define: 今日 TEXT(TODAY(),"yyyy-MM-dd") テスト命令で利用できる式を定義することができます。[後述]
:include: :include: "rule.def" 複数の環境命令をまとめた別ファイルを用意し、これをインクルードすることができます。[後述]

テスト命令部

書式は次の通りです。

テスト命令 "値","値",...
テスト命令 命令修飾
テスト命令 モデル名.項目名 "値","値",...

テスト命令と値は一つの空白で区切ります。値部はダブルクォートで囲みます。

詳細は後述します。

コメント

//ではじまる行はコメントとして扱われます。動作に影響はありません。

テスト命令の説明

日本語表記 説明
ログオン [ユーザ名] [パスワード] ログオンを行います。 ログオン "admin" "wagby"
ログオン! [ユーザ名] [パスワード] ログオン! "admin" "wagby"
ログオン [ユーザ名] [パスワード] [言語] ログオン "admin" "wagby" "日本語"
ログオン "admin" "wagby" "English"
ログオフ ログオフを行います。 ログオフ
ページタイトル? [ページタイトル] 画面に表示されるページタイトルを確認します。 ページタイトル? "メニュー"
ページタイトル?? [ページタイトル] ページタイトル?? "メニュー"
タイトル? [タイトル] ブラウザのタイトル部を確認します。 タイトル? "Wagby アプリケーション ログオン"
メニュー [メニュー] メニューを選択します。区切り文字 ">" で階層メニューを指定できます。 メニュー "サービス > 顧客検索"
サブメニュー [メニュー] サブメニュー "サービス > 顧客検索"
エラーメッセージ?? [文言] [文言] ... 画面に表示されるメッセージを確認します。 エラーメッセージ?? "ユーザ名またはパスワードが間違っています"
警告メッセージ? [文言] [文言] ... 警告メッセージ? "顧客名称 は必須項目となっています。"
情報メッセージ? [文言] [文言] ... 情報メッセージ? "1件の顧客データを新規登録しました。"
エラーメッセージ数 [整数]
警告メッセージ数 [整数]
情報メッセージ数 [整数]
画面に表示されるメッセージの数を確認します。 情報メッセージ数 "1"
画面 登録 [モデル名(省略可)] 画面遷移を行います。 画面 登録
画面 登録 "顧客"
画面 更新 [モデル名(省略可)] 画面 更新
画面 更新 "顧客"
画面 コピー 画面 コピー
画面 親モデル詳細 画面 親モデル詳細
画面 検索 画面 検索
画面 一覧 画面 一覧
画面 一覧更新 画面 一覧更新
ボタン 保存 画面に用意されているアクションボタンを押します。 ボタン 保存
ボタン キャンセル ボタン キャンセル
ボタン 削除 ボタン 削除
ボタン ウィザード次 ボタン ウィザード次
ボタン ウィザード前 ボタン ウィザード前
ボタン 検索 ボタン 検索
ボタン リセット ボタン リセット
ボタン [オリジナルボタン名] ボタン "オリジナルボタン1"
?ボタン [画面に用意されているボタン] 画面に用意されているアクションボタンが存在することを確認します。 ?ボタン "登録画面へ"
?ボタン "一覧表示へ"
準備 モデル名 この命令以降に利用する WTF モデルクラスを指定します。(*1) 準備 顧客
検索準備 モデル名 この命令以降に利用する検索用の WTF モデルクラスを指定します。(*1) 検索準備 顧客
入力 モデル名.項目名 [値] 値を入力します。 入力 顧客.顧客名称 "山田"
入力 モデル名.コンテナ名[INDEX].項目名 [値] 入力 顧客.問い合わせ[1].内容 "電話ありました。"
入力 モデル名.郵便番号項目名 [郵便番号] 入力 顧客.郵便番号 "901-2227"
選択肢確認? モデル名.項目名 [値] [値]... 選択肢の内容を確認します。リストボックス、ラジオボタン、チェックボックスで利用できます。 選択肢確認? 顧客.業種リストボックス "流通" "製造" "販売"
ボタン クリア モデル名.項目名 入力画面に用意される、ラジオボタン項目のクリアボタンを押下します。 ボタン クリア 顧客.業種ラジオボタン
?ボタン クリア モデル名.項目名 入力画面に用意される、ラジオボタン項目のクリアボタンの存在を確認します。 ?ボタン クリア 顧客.業種ラジオボタン
ボタン トグル モデル名.項目名 入力画面に用意される、チェックボックス項目の全選択/クリアボタンを押下します。 ボタン トグル 顧客.業種チェックボックス
?ボタン トグル モデル名.項目名 入力画面に用意される、チェックボックス項目の全選択/クリアボタンの存在を確認します。 ?ボタン トグル 顧客.業種チェックボタン
ボタン 開く モデル名.項目名 入力画面に用意される、モデル参照検索画面項目のサブウィンドウを開くボタンを押下します。 ボタン 開く 顧客.業種サブウィンドウ
ボタン 閉じる モデル名.項目名 上の命令で開いたサブウィンドウを閉じます。 ボタン 閉じる 顧客.業種サブウィンドウ
ボタン #OK ダイアログに用意された OK ボタンを押下します。 ボタン #OK
サブウィンドウ一覧選択 モデル名[行] サブウィンドウ一覧表示の指定行を選択します。 サブウィンドウ一覧選択 アカウント[3]
アップロード モデル名.項目名 [ファイル] ファイル型項目にファイルをアップロードします。ファイルのパスの起点はWagbyインストールフォルダです。 アップロード 顧客.写真 "myphoto.png"
ダウンロード モデル名.項目名 [ファイル] ファイル型項目に登録済みのファイルをダウンロードします。ファイルのパスの起点はWagbyインストールフォルダです。 ダウンロード 顧客.写真 "myphoto.png"
入力可 モデル名.項目名 入力画面に用意された項目が、入力可能となっているかどうかを確認します。 入力可 顧客.顧客名称
入力不可 モデル名.項目名 入力画面に用意された項目が、入力不可能となっているかどうかを確認します。 入力不可 顧客.顧客名称
入力 モデル名.追記型リストボックス項目名 [値] 入力画面に用意された追記型リストボックス項目に値を入力します。 入力 顧客.趣味 "読書"
入力 モデル名.追記型リストボックス項目名 [値]
#SELECT
入力画面に用意された追記型リストボックス項目の選択肢から値を選択します。 入力 顧客.趣味 "読書" #SELECT
入力 モデル名.繰り返し項目名 [値] [値]... 入力画面に用意された繰り返し項目に値を入力します。複数の値を指定することができます。 入力 顧客.メールアドレス "yamada" "y@mada"
入力 モデル名.繰り返し項目名[INDEX] [値] 入力画面に用意された繰り返し項目の指定した入力位置に値を入力します。 入力 顧客.メールアドレス[1] "yamada"
入力 モデル名.繰り返し項目名 #CLEAR 入力画面に用意された繰り返し項目の値をすべて消去します。 入力 顧客.メールアドレス #CLEAR
ボタン 追加 モデル名.繰り返し項目名 入力画面に用意された繰り返し項目の入力欄を一つ増やします。 ボタン 追加 顧客.メールアドレス
ボタン 挿入|追加|削除 モデル名.コンテナ名 入力画面に用意された繰り返しコンテナの挿入、追加、削除ボタンを押下します。 ボタン 挿入 顧客.問い合わせ
ボタン 追加 顧客.問い合わせ
ボタン 削除 顧客.問い合わせ
入力存在 モデル名.項目名 入力画面にこの項目が存在するかどうかを確認します。 入力存在 顧客.顧客名称
入力非存在 モデル名.項目名 入力画面に、項目が「ない」ことを確認します。閲覧権限が適用されたかどうかの確認に利用します。 入力非存在 顧客.顧客名称
入力非表示 モデル名.項目名 入力画面で、項目が「隠し項目(hidden)」となっているかどうかの確認に利用します。 入力非表示 顧客.顧客名称
値確認 モデル名.項目名 [値] 詳細画面で、項目の値を確認します。 値確認 顧客.顧客名称 "山田"
値確認 モデル名.繰り返し項目名 [値] [値]... 値確認 顧客.メールアドレス "yamada" "y@mada"
値確認 モデル名.コンテナ名[INDEX].項目名 [値] 値確認 顧客.問い合わせ[1].内容 "電話ありました。"
値確認RO モデル名.項目名 [値] 詳細画面で、項目が読み込み専用で、かつ指定した値になっていることを確認します。 値確認RO 顧客.登録ユーザ "admin"
サイズ確認 モデル名.繰り返し項目名 [整数]
サイズ確認 モデル名.コンテナ名 [整数]
詳細画面で、繰り返し項目または繰り返しコンテナ項目の「数」を確認します。 サイズ確認 顧客.問い合わせ "2"
出力存在 モデル名.項目名 詳細画面で、項目が存在することを確認します。 出力存在 顧客.顧客名称
出力非存在 モデル名.項目名 詳細画面で、項目が存在しないことを確認します。 出力非存在 顧客.顧客名称
検索条件 モデル名.項目名 [値] 検索画面の条件欄に値を入力します。値部分に式を指定することもできます。 検索条件 顧客.顧客名称 "山田"
検索条件 モデル名.項目名(下限) [数値] 検索条件 顧客.ID(下限) "1"
検索条件 モデル名.項目名(上限) [数値] 検索条件 顧客.ID(上限) "100"
検索条件 モデル名.項目名(開始) [日付値] 検索条件 顧客.訪問日(開始) { TEXT(TODAY(),"yyyy-MM-dd") }
検索条件 モデル名.項目名(終了) [日付値] 検索条件 顧客.訪問日(終了) { TEXT(TODAY(),"yyyy-MM-dd") }
検索結果 [文言] 検索結果の文言が指定どおりになっていることを確認します。 検索結果 "1件中、1件目から1件目を表示しています。"
一覧値確認 モデル名[INDEX].項目名 [値] 一覧表示画面に表示される値を確認します。 一覧値確認 顧客[1].顧客名称 "山田"
一覧値確認 モデル名.モデル参照検索項目.参照先モデル名[INDEX].項目名 [値] 一覧表示画面に表示されるモデル内の検索画面項目について、その検索画面項目が指し示す対象モデルに含まれる項目の値を確認します。 一覧値確認 サポート.顧客名.顧客[1].顧客名称 "山田"
一覧件数確認 モデル名 [件数] 一覧表示画面に表示されるモデルの件数を確認します。(*2) (*3) 一覧件数確認 顧客 "1"
ボタン 詳細 モデル名[INDEX]
一覧表示画面に用意された詳細ボタンを押下します。この命令を実行する前に、少なくとも一回は「一覧値確認」命令を実行している必要があります。 ボタン 詳細 顧客[1]
ワークフロー 申請フロー選択 [フロー名] ワークフローで、申請フローからフロー名を選択します。 ワークフロー 申請フロー選択 "年休申請フロー"
ワークフロー 申請フロー選択肢確認? [フロー名1,フロー名2,..] ワークフローで、申請フローにあるフロー名の選択肢の内容を確認します。 ワークフロー 申請フロー選択肢確認? "年休申請フロー1","年休申請フロー2"
ワークフロー コメント [コメント] ワークフロー申請時のコメントを入力します。 ワークフロー コメント "年休申請します。"
ワークフロー 申請 ワークフローの処理を行います。 ワークフロー 申請
ワークフロー 承認 ワークフロー 承認
ワークフロー 差し戻し ワークフロー 差し戻し
ワークフロー 却下 ワークフロー 却下
ワークフロー 取り消し ワークフロー 取り消し
ワークフロー 決裁 ワークフロー 決裁
ワークフロー 値確認[INDEX].項目名 [値] ワークフローの申請状況一覧の内容を確認します。 ワークフロー 値確認[1].処理者 "山田"
ワークフロー 値確認[1].処理内容 "新規登録"
ワークフロー 値確認[2].コメント "年休申請します。"
ワークフロー 申請状況数 [数] ワークフローの申請状況一覧の数を確認します。 ワークフロー 申請状況数 "2"
フォーカスアウト 入力欄にあるカーソルを解除します。 フォーカスアウト
フォーカスメイン サブウィンドウからメインウィンドウへフォーカスを移動します。このあとの命令はメインウィンドウに対して行われるようになります。 フォーカスメイン
スクロール上 モデル名.項目名
スクロール上 モデル名.項目名 #SHOW
入力画面で、入力フィールドの上部に合わせてスクロールします。下から上に向けてスクロールする場合に利用します。 スクロール上 顧客.顧客名称
スクロール上 顧客.顧客名称 #SHOW
スクロール上 モデル名.コンテナ名[INDEX].項目名
スクロール上 モデル名.コンテナ名[INDEX].項目名 #SHOW
スクロール上 顧客.問い合わせ[1].内容
スクロール上 顧客.問い合わせ[1].内容 #SHOW
スクロール下 モデル名.項目名
スクロール下 モデル名.項目名 #SHOW
入力画面で、入力フィールドの下部に合わせてスクロールします。上から下に向けてスクロールする場合に利用します。 スクロール下 顧客.顧客名称
スクロール下 顧客.顧客名称 #SHOW
スクロール下 モデル名.コンテナ名[INDEX].項目名
スクロール下 モデル名.コンテナ名[INDEX].項目名 #SHOW
スクロール下 顧客.問い合わせ[1].内容
スクロール下 顧客.問い合わせ[1].内容 #SHOW
タイトルペイン 名前 #CLICK 指定された名前をもつタイトルペインを開閉します。クリックごとに開閉されます。 タイトルペイン "内訳" #CLICK
タイトルペイン 名前 #OPEN 指定された名前をもつタイトルペインが開いていることを確認します。 タイトルペイン "内訳" #OPEN
タイトルペイン 名前 #CLOSED 指定された名前をもつタイトルペインが閉じていることを確認します。 タイトルペイン "内訳" #CLOSED
フォントサイズ [大|中|小] フォントサイズを変更します。 フォントサイズ "大"
ウィンドウサイズ [幅] [高さ] ウィンドウサイズを変更します。ヘッドレスモードでない場合、画面の解像度を超えるウィンドウサイズを指定することはできません。ヘッドレスモードを有効にすると画面の解像度を超えるウィンドウサイズを指定することができます。 ウィンドウサイズ "800" "600"
スクリーンショット [ファイル名] この時点の画面キャプチャを取得します。画像は png 形式です。ファイルの保存位置は build/reports/tests となります。ヘッドレスモードを有効にするとページ全体のスクリーンショットが取得できます。ヘッドレスモードが無効の場合は画面の解像度に合わせた範囲のスクリーンショットとなります。 スクリーンショット "capture1"
エクスポート #ALL インポートエクスポート画面で、「すべて選択する」状態でのエクスポートを実行します。 エクスポート #ALL
エクスポート [モデル] [モデル]... インポートエクスポート画面で、モデルを指定したエクスポートを実行します。 エクスポート "顧客" "お知らせ"
エクスポート #RESET インポートエクスポート画面で、「すべてを解除する」ボタンを押下します。 エクスポート #RESET
エクスポート #DOWNLOAD [ファイル名] インポートエクスポート画面で、指定したファイルの「ダウンロード」を行います。 エクスポート #DOWNLOAD "data_test01.zip"
エクスポート #DELETE [ファイル名] インポートエクスポート画面で、指定したファイルの「削除」を行います。 エクスポート #DELETE "data_test01.zip"
インポート [ファイル] インポートエクスポート画面で、指定したファイルのインポートを行います。 インポート "data_test01.zip"
*1 画面遷移後、すぐに「入力」命令が「値確認」命令を使う場合、この「準備」命令を省略することができます。
*2 検索後のデータ*全件*の件数ではなく、*現在の画面に表示されている*件数を確認します。
*3 外部キー親モデルの詳細表示画面で、子モデルの件数を確認することもできます。ただし一つの親に複数の子モデルが紐づいているような関係では、第一引数のモデル名にかかわらず、常に*先頭の*子モデルの件数を確認します。

メタ文字

用意しているメタ文字は次の通りです。

メタ文字 付与できる命令 説明
? タイトル
ページタイトル
メッセージの末尾
完全一致
ボタン 存在することの確認
- ボタン 存在しないことの確認
+ ボタン クリックできることの確認
~ ボタン クリックできないことの確認
?? タイトル
ページタイトル
メッセージの末尾
部分一致
! ログオン
各種の画面遷移ボタンの末尾
ワークフロー
標準では、画面遷移後は常にエラーがないことを確認している。この「エラーがないことを確認する」処理をスキップする。

Excel関数の利用

値の部分を {...} で囲み、式を記述することができます。利用できる関数は文字、数字、日付操作です。

入力 顧客.問い合わせ[1].日付 { TEXT(TODAY(),"yyyy-MM-dd") }

式を事前に定義する

環境命令部に define 命令を用意することができます。

:define: 今日 TEXT(TODAY(),"yyyy-MM-dd")

命令部では特別な指定&を使って、これを参照することができます。

入力 顧客.問い合わせ[1].日付 &今日

複数の define 命令を別ファイルで定義する

複数の define 命令をまとめた別ファイルを用意することができます。例えば rule.def というファイルを用意します。

:define: 今日 TEXT(TODAY(),"yyyy-MM-dd")
:define: 明日 TEXT(MOVEDAY(TODAY(),1),"yyyy-MM-dd")
:define: 昨日 TEXT(MOVEDAY(TODAY(),-1),"yyyy-MM-dd")

include 命令でこのファイルを取り込むことができます。

:include: "rule.def"
include 命令によって取り込むことができるのは、環境命令のみです。

Javaコードを埋め込む

テスト命令行に特別表記<%%>を使うことができます。この中に直接、Javaコードを書くことができます。

<%
System.out.println("Hello,WTF!");
%>

サンプル

モデル customer に対するテストのサンプルを示します。

= 顧客モデルのテスト
:group: "t001"
:id: "CustomerTest"
// ユーザ定義
:define: 今日 TEXT(TODAY(),"yyyy-MM-dd")
// ユーザ定義インクルード
:include: "rule.def"
// ------ tests are from here  ------
== ログオンのテスト
//ログオン "admin" "wagby" "English"
//ログオン "admin" "wagby" "日本語"
ログオン "admin" "wagby"
ページタイトル? "メニュー"
// スクリーンショット取得時はヘッドレスモードをtrueにすること。
スクリーンショット "capture1"
== ログオフのテスト
ログオフ
タイトル? "Wagby アプリケーション ログオン"
== ログオンユーザのパスワードミスのテスト
// '!' = no error check
ログオン! "user01" "user01"   
エラーメッセージ?? "ユーザ名またはパスワードが間違っています"
== トップメニューのテスト
ログオン "admin" "wagby"
ページタイトル? "メニュー"
メニュー "サービス > 顧客検索"
ページタイトル? "顧客 検索"  
// 引数なしの「メニュー」は、メインメニューに戻る
メニュー  
ページタイトル? "メニュー"
サブメニュー "サービス > 顧客検索"
ページタイトル? "顧客 検索"
フォントサイズ 大
ウィンドウサイズ 800 600
== 顧客の登録をキャンセル    
// 3番目の引数にモデルを指定することもできる。通常は省略する。
画面 登録 "顧客"
ページタイトル? "顧客 新規登録"
ボタン キャンセル  
ページタイトル? "顧客 検索"
ボタン "オリジナルボタン"
== 顧客の登録をテスト
画面 登録
ページタイトル? "顧客 新規登録"
// すぐに入力命令から始まるため、準備命令を省略できる。
入力 顧客.顧客名称 "山田"
入力 顧客.顧客カナ "ヤマダ"
入力 顧客.会社名称 "ジャスミン商事"
入力 顧客.電話番号 "09000000000"
選択肢確認? 顧客.業種リストボックス "流通" "製造" "販売"
入力 顧客.業種リストボックス "流通"
入力 顧客.業種ラジオボタン "流通"
?ボタン クリア 顧客.業種ラジオボタン
ボタン クリア 顧客.業種ラジオボタン
入力 顧客.業種チェックボックス "流通" "製造"
?ボタン クリア 顧客.業種チェックボックス
ボタン クリア 顧客.業種チェックボックス
ボタン 開く 顧客.業種サブウィンドウ
ボタン 閉じる 顧客.業種サブウィンドウ
入力 顧客.業種サブウィンドウ "流通"
入力 顧客.生年月日リストボックス形式 "1972-5-15"
アップロード 顧客.写真 "myphoto.png"
入力可 顧客.顧客名称
入力不可 顧客.顧客カナ
入力 顧客.趣味 "読書"
入力 顧客.趣味 "読書" #SELECT
入力 顧客.メールアドレス "yamada" "y@mada" "Yamada" "YaMaDa"
入力 顧客.メールアドレス[1] "yamada"
ボタン 追加 顧客.メールアドレス
入力 顧客.メールアドレス[2] "y@mada"
入力 顧客.メールアドレス #CLEAR
入力 顧客.メールアドレス "yamada" "y@mada"
入力 顧客.問い合わせ[1].日付 { TEXT(TODAY(),"yyyy-MM-dd") }
入力 顧客.問い合わせ[1].日付 &今日
入力 顧客.問い合わせ[1].内容 "電話ありました。"
ボタン 追加 顧客.問い合わせ
入力 顧客.問い合わせ[2].日付 &明日
入力 顧客.問い合わせ[2].内容 "回答しました。"
ボタン 挿入 顧客.問い合わせ
ボタン 削除 顧客.問い合わせ
入力非存在 顧客.顧客名称
ボタン 保存
ページタイトル? "顧客 詳細表示"
情報メッセージ数 "1"
// "情報メッセージ" だけだと、"情報メッセージ??" と解釈。部分一致となる。
情報メッセージ "1件の顧客データを新規登録しました。"
// "情報メッセージ?" は完全一致となる。
情報メッセージ? "1件の顧客データを新規登録しました。"
情報メッセージ?? "1件の顧客データを新規登録しました。"
// 他に「エラーメッセージ」「警告メッセージ」がある。
== 顧客の詳細表示のテスト
ページタイトル? "顧客 詳細表示"
// すぐに値確認命令から始まるため、準備命令を省略できる。
値確認 顧客.顧客名称 "山田"
値確認 顧客.会社名称 "ジャスミン商事"
値確認 顧客.電話番号 "09000000000"
値確認 顧客.業種リストボックス "流通"
値確認 顧客.業種ラジオボタン "流通"
値確認 顧客.業種チェックボックス "流通" "製造"
値確認 顧客.生年月日リストボックス形式 "1972-5-15"
値確認 顧客.写真 "myphoto.png"
ダウンロード 顧客.写真 "myphoto.png"
値確認 顧客.メールアドレス "yamada" "y@mada"
値確認 顧客.問い合わせ[1].日付 { TEXT(TODAY(),"yyyy-MM-dd") }
値確認 顧客.問い合わせ[1].日付 &今日
値確認 顧客.問い合わせ[1].内容 "電話ありました。"
値確認 顧客.問い合わせ[2].日付 &明日
値確認 顧客.問い合わせ[2].内容 "回答しました。"
サイズ確認 顧客.問い合わせ "2"
値確認RO 顧客.登録ユーザ "admin"
出力非存在 顧客.顧客名称
== 顧客の検索テスト
画面 検索
ページタイトル? "顧客 検索"
検索条件 顧客.ID(下限) "1"
検索条件 顧客.ID(上限) "100"
検索条件 顧客.顧客名称 "山田"
ボタン 検索
ページタイトル? "顧客 検索"
検索結果 "検索条件に合致したデータは1件見つかりました。"
== 顧客の一覧表示テスト
//「一覧画面へ」ボタンをクリック(検索画面と一覧画面が分かれている場合)
画面 一覧
ページタイトル? "顧客 一覧"
検索結果 "1件中、1件目から1件目を表示しています。"
// 一覧の値を確認してから(一覧表示の各行に用意されている)ボタンを操作すること
一覧値確認 顧客[1].ID "1"
一覧値確認 顧客[1].顧客名称 "山田"
ボタン 詳細 顧客[1]
ページタイトル? "顧客 詳細表示"
== 削除
ページタイトル? "顧客 詳細表示"
ボタン 削除
//ボタン [OK]
ページタイトル? "顧客 一覧"
== ログオフ 最終処理
ログオフ
タイトル? "Wagby アプリケーション ログオン"

一覧更新

...
== 一覧更新
画面 一覧更新 "顧客"
ページタイトル? "顧客 一覧更新"
ボタン 登録
入力 顧客[1].顧客名称 "山田"
ボタン コピー 顧客[1]
入力 顧客[2].顧客名称 "佐藤"
ボタン 新規 顧客[2]
入力 顧客[3].顧客名称 "鈴木"
ボタン 保存
情報メッセージ数 "1"
情報メッセージ? "1件の顧客データを新規登録しました。" "1件の顧客情報データをコピー登録しました。"
ページタイトル? "顧客 一覧表示"

ワークフロー

...
== ワークフロー
ログオン "yamada" "wagby"
ページタイトル? "メニュー"
メニュー "サービス > 顧客検索"
ページタイトル? "顧客 検索"  
画面 一覧
ページタイトル? "顧客 一覧"
検索結果 "1件中、1件目から1件目を表示しています。"
一覧件数確認 顧客 "1"
一覧値確認 顧客[1].顧客名称 "山田"
ボタン 詳細 顧客[1]
ページタイトル? "顧客 詳細表示"
ワークフロー 申請フロー選択 "年休申請フロー"
ワークフロー コメント "年休申請します。"
ワークフロー 申請
// 申請状況の確認
ワークフロー 値確認[1].処理者 "山田"
ワークフロー 値確認[1].処理内容 "新規登録"
ワークフロー 値確認[1].コメント ""
ワークフロー 値確認[2].処理者 "山田"
ワークフロー 値確認[2].処理内容 "申請"
ワークフロー 値確認[2].コメント "年休申請します。"

インポートエクスポート

...
== インポートエクスポート
メニュー  
ページタイトル? "メニュー"
サブメニュー "管理処理 > インポートとエクスポート"
ページタイトル? "インポートとエクスポート"
エクスポート #ALL
ページタイトル? "インポートとエクスポート"
エクスポート "顧客" "お知らせ"
ページタイトル? "インポートとエクスポート"
エクスポート #RESET
ページタイトル? "インポートとエクスポート"
エクスポート #DOWNLOAD "data_test01.zip"
ページタイトル? "インポートとエクスポート"
インポート "data_test01.zip"
ページタイトル? "インポートとエクスポート"
エクスポート #DELETE "data_test01.zip"
ページタイトル? "インポートとエクスポート"

ダウンロード

env.def, rule.def と CustomerTest.tsm およびリポジトリを含んだファイルをダウンロードできます。

ダウンロード後、テストシナリオマクロを customize/test/tsm フォルダに展開してください。

仕様・制約

対応していないパターン

次のパターンは対応していません。

  • 一覧表示グリッド形式。
  • 一覧更新画面。
  • エラー/警告/情報メッセージのコード値による判定。
  • 日付型項目のDatePicker操作。
  • 複数ファイルアップロード。
  • ラジオボタン、チェックボックスで、選択されなかったものの表示内容の確認。
  • 画面に配置するボタン(「保存」など)は「上」に配置してください。下に配置したボタンを押すことには対応していません。

ルール

  • 引数の文字列は原則として、ダブルクォートで囲みます。
  • 繰り返し項目、繰り返しコンテナ項目の添字(INDEX)は 1 から開始されます。
  • 一覧表示の行数の添字(INDEX)は 1 から開始されます。

シナリオ記述のポイント

  • モデル名(日本語)が重複した場合、正常に動作しません。すべての命令はモデル名が重複しないことを前提にしています。
  • 一行で一つの命令セットです。一つの命令を、改行を挟んで複数行で記述することはできません。
  • 複雑なテストシナリオは、画面単位で操作する複数の小さなシナリオに分割してください。一つの「テスト命令のまとまり」は、一つの画面の操作のみとします。(ここに検索、一覧表示、詳細表示といった複数の画面をまたがるテスト命令を記述することはできません。)
  • 画面遷移後、必ず「ページタイトル」命令でその画面に遷移したかどうかをこまめに確認するようにしてください。
  • 画面遷移後、すぐに「入力」命令または「値確認」命令を使う場合は「準備」命令を省略できます。
  • 日付のテストでは固定値ではなく、TODAY() や NOW() を用いることを推奨します。

更新履歴

R8.5.3

  • "タイトルペイン" 命令を追加しました。

R8.5.2

  • "一覧件数確認" 命令を追加しました。
  • "スクロール上" 命令を追加しました。入力フィールドの上部に合わせてスクロールします(下から上に向かう。)登録、更新画面で利用できます。詳細画面で用いる場合は第二引数 #SHOW を指定します。
  • "スクロール下" 命令を追加しました。入力フィールドの上部に合わせてスクロールします(下から上に向かう。)登録、更新画面で利用できます。詳細画面で用いる場合は第二引数 #SHOW を指定します。
  • "入力非表示" 命令を追加しました。隠し項目になっているかどうかを判定します。
  • "フォーカスメイン" 命令を追加しました。
  • "サブウィンドウ一覧選択" 命令を追加しました。
  • "ワークフロー 申請フロー選択肢確認?" 命令を追加しました。
  • "ワークフロー 申請状況数" 命令を追加しました。
  • ボタンの押下可/不可判定命令 "+ボタン", "~ボタン" を追加しました。

R8.5.1

  • 検索画面で "値確認", "選択肢確認?", "入力存在", "入力非存在" 命令を利用できるようになりました。
  • 画面遷移後、はじめに "入力" か "値確認" 命令を実行すると、対象モデルは自動で用意されます。それ以外の命令を行う場合は "準備" "検索準備" をまず行ってください。これによって対象モデルが用意されます。
  • ボタンが存在しないことをチェックする命令 "-ボタン" を利用できるようになりました。
  • 一覧値確認で「モデル名.モデル参照検索項目.参照先モデル名[INDEX].項目名」という書式を記述できるようになりました。
  • "フォーカスアウト" 命令を追加しました。入力項目にあるマウスのフォーカスを解除します。