Outline
テスト自動化の操作・検証対象となる画面要素が、ほぼ同じ構成であるが、一部分だけ異なる場合がある。例えば、以下の図のように、複数のプランがあり、その任意のプランを選んでテスト(複数のデータバリエーションテスト)を行いたい場合が該当する。
この図では、左下のプレミアムプランの”このプランで予約”のボタンの(最適化した)XPathは以下のとおりである
//h5[text()="プレミアムプラン"]/../a[text()="このプランで予約"]
ただ、ほかのプランで予約するテストをしたい場合どうなるか?
以下のとおりである。
画面要素 | XPath |
---|---|
お得な特典付プラン | //h5[text()="お得な特典付プラン"]/../a[text()="このプランで予約"] |
ディナー付きプラン | //h5[text()="ディナー付きプラン"]/../a[text()="このプランで予約"] |
お得なプラン | //h5[text()="お得なプラン"]/../a[text()="このプランで予約"] |
もし、これをひとつづつ画面要素として登録すると、画面要素の数が多くなり、保守が大変である。
また、テストケース側では、テストデータの都度画面要素を選びなおしになるため、こちらも保守が大変である。
これを解決させるには、以下のように画面要素に変数を含めることである。
画面要素 | XPath |
---|---|
${planname} | //h5[text()="${planname}"]/../a[text()="このプランで予約"] |
こうすれば、変数${planname}のみをコントロールするだけで済む。
もちいるテスト自動化ツール
テスト対象
テスト自動化練習サイトを用いる。
Email : ichiro@example.com / Password : password でログイン後、宿泊予約をクリックした画面で、変数で指定したプランを予約する。
T-DASH
画面定義
画面キャプチャツールでは、変数を含んだ画面要素のXPathは取れません。
そのため、chrome developer toolを使い、かつ変数化できそうなところを探し出して、XPathを直接画面定義に記載する。
要素名 | 値 |
---|---|
任意_このプランで予約 | //h5[text()="${planname}"]/../a[text()="このプランで予約"] |
カスタム動作
T-DASHの標準機能では、変数を新規に定義して値を設定する機能はありません。
そのため、変数を設定するカスタム動作を作成する
以下設定内容を reserve.yamlのファイル名で保存する
ACT-CAT-CUSTOM-792c1a17-5c76-489e-8155-05106db44f12:
action_category_name: 予約
icon: ''
color: '#de5b64'
custom_data:
file_name: Reservation
pip_list: []
library_list: []
actions:
ACT-CUSTOM-028f3104-9d1e-4856-98a3-6a8781d804d2:
action_name: plannameの変数を設定する
action_type: operation
action_format: 「設定値1」を変数plannameに設定する
action_note: ''
action_args:
- value1
action_def:
- - Set Suite Variable
- ${planname}
- ${value1}
次に、作成された reserve.yamlをT-DASHの動作定義 -> カスタム動作 -> カスタム動作をインポート にてインポートし、実際にインポートされた設定内容を開く
このカスタム動作は、単純に設定値1の値を、変数${planname} 、画面定義で用いた変数を新規に定義して設定する。
テストケース
1行目で、カスタム動作「plannameの変数を設定する」を呼び出し、${planname}にプラン名「ディナー付きプラン」を設定する
5行目で、変数${planname}を含むXPathである、「任意_このプランで予約」をクリックする。
テスト実行
1行目で指定したプラン、「ディナー付きプラン」が選ばれて実行されたことが確認できる
同様にして、変数を「お得なプラン」に変更すれば、「お得なプラン」が選ばれることが確認できる
このようにして、同じ構造のXPathに変数を用いることで、スクリプトの保守性を上げることができる。