パラメーター
この章では、パラメーターの概要、およびその追加方法と使用方法について説明します。
パラメーターは、1 行のみのデータソース、つまり、もっとも単純なデータソースの一種として見なすことができます。パラメーターは、モジュールの再利用性や、テストのメンテナンス性を高めるために役立ちます。また、あるレコーディング モジュールから別のレコーディング モジュールへの変数値の受け渡しも可能にします。
スクリーンキャスト
以下のスクリーンキャストで、この章で説明している内容を確認できます。
パラメーターの追加
パラメーターは、テスト スイート ビューの、テスト スイート/テスト コンテナーのプロパティ ダイアログから追加できます。以下のアイテムに対してパラメーターを追加できます。
- テスト スイート (= グローバル パラメーター)
- テスト コンテナー (= ローカル パラメーター)
メモ
アイテムにパラメーターを追加すると、そのすべての子孫が継承します。
- テスト スイートの場合、子孫のすべてのテスト コンテナーが継承します。
- テスト コンテナーの場合、子孫のすべてのテスト コンテナーが継承します。兄弟や親は継承しません。
パラメーター ダイアログ
パラメーターの追加ダイアログは、以下の手順で開きます。
パラメーターを追加したいアイテムを選択し、右クリック メニューを開きます。
テスト スイートの場合、グローバル パラメーター… をクリックします。
テスト コンテナーの場合、データ バインディング… をクリックします。
パラメーターのインデックスです。追加できるパラメーターの数に上限はありません。
パラメーターの名前です。Add row… をクリックし名前を入力することで新しいパラメーターを作成できます。
パラメーターのデフォルト値です。任意の文字列が指定できます。
パラメーターが現在バインディングされている変数です。ドロップダウン メニューから、バインディングする変数を指定できます。
斜体で表示されているパラメーターは、先祖から継承したものです。これらの変数は、先祖でのみ編集できます。
自動生成 をクリックすると、バインドされていない変数に対するパラメーターを自動的に作成します。作成されるパラメーターは、バインドされていない変数と同じ名前になります。自動バインド をクリックすると、これらのパラメーターと変数を自動的にバインドします。
パラメーターの使用
このセクションでは、パラメーターの使用方法についての 2 つの例を説明します。
1 つ目の例はシンプルで、多くのテストで役立ちます。この例では、レコーディング モジュールの再利用性を高めるために、パラメーターを使用します。
2 つ目の例は少し複雑で用途が限定されますが、こちらも有用です。この例では、あるレコーディング モジュールで定義された変数から、別のレコーディング モジュールの変数へ、パラメーターを使用して値を受け渡します。これにより効率性やメンテナンス性が向上します。
例 1: モジュールの再利用性の向上
メモ
この例は非常に短いため、サンプル ソリューションは用意していません。
さまざまな機能を提供する、典型的なテスト対象アプリを考えます。これらの機能は、ユーザーが UI を介してアクセスする、さまざまな画面に表示されます。
たとえば、Ranorex Studio Demo Application では、いくつかのタブがあり、異なる機能を提供しています。
これらの画面をテストするには、画面ごとに、いくつかの異なるテスト ケースを作成する必要があります。なぜなら、画面ごとに異なる機能をテストしているため、テストのステップも異なるためです。しかしながら、テストの最初のステップ、テスト対象アプリの起動部分については、常に同じです。このステップは、以下のアクションで構成されます。
- テスト対象アプリの起動
- テスト対象の画面を表示するためのタブ メニューのクリック
ここでは、再利用可能なモジュールを作成し、効率性を高めたいと思います。しかし 1 つ問題があります。それは、クリックするタブの名前が、テスト ケースごとに異なることです。
これを解決するもっとも簡単で効率的な方法は、変数とパラメーターを使用することです。
変数の定義
レコーディング モジュール StartAUT で、Click アクションにリンクするリポジトリ アイテムを変数化します。
Demo Application のタブをクリックする Mouse-Click アクションを定義し、⇢ 変数の定義 の手順にしたがってリポジトリ変数を作成します。変数名は $varTab とします。
パラメーターの定義と変数とのリンク
最初のテスト ケース (Introduction_testing) でパラメーターを定義し、リポジトリ変数とバインドします。
テスト ケースを右クリックし、データ バインディング… をクリックします。
パラメーター セクションで、Tab という名前のパラメーターを作成し、値を Introduction とします。
メモ
パラメーター値は、UI 要素を識別する RanoreXPath 内の属性値です。Introduction タブの場合、[@accessiblename=’Introduction‘] です。Test database タブの場合、[@accessiblename=’Test database‘] です。
詳しくは、Ranorex Studio アドバンスト > ⇢ RanoreXPath を参照してください。
このパラメーターを varTab 変数とバインドし、OK をクリックします。
以上の手順を、他のテスト ケースについても繰り返し、パラメーター値を、所定のタブを識別する属性値で置き換えます。
以上の手順が完了したらテストを実行します。複数のタブの選択の切り替えが自動でおこなわれるはずです。
例 2: テスト実行時にモジュール間での値の受け渡し
この例では、テスト実行中に任意のモジュールで生成された値を取得し、別のモジュールに受け渡す方法について説明します。変数、パラメーター、Get value アクションを使用します。
この例では、Ranorex Studio Demo Application の Database タブを使用します。
サンプル ソリューションのダウンロード
この例は複雑なため、サンプル ソリューションを用意しています。以下のファイルをダウンロードし、以降の説明で使用してください。完成したサンプルは、このセクションの最後でダウンロードできます。
サンプル ソリューション
Topic: Parameters – passing values across modules
Time: 15 minutes
インストール:
任意のフォルダーに解凍します。
Ranorex Studio を起動し、ソリューション ファイルを開きます。
ヒント
このサンプル ソリューションは、Ranorex Studio 8.0 以降で利用できます。8.2 以降を利用している場合には、ソリューションのアップグレードをおこなってください。
テストの説明
この例では、Ranorex Studio Demo Application のデータベースに、人物データを入力するためのデータ駆動型テストをおこないます。エントリーのたびに、エントリー数を示すカウンターが増加します。テスト実行の最後で、エントリーの総数をレポートに表示します。
初期状態のテスト スイート
Demo Application の起動と、Test database タブのクリック
データ ソースからデータベースへエントリーを追加する 6 つのレコーディング モジュール
カウンターの値を取得し変数へ書き込む GetDBCounter レコーディング モジュール
カウンターの値をレポートへ表示する WriteMaxCounterToReport レコーディング モジュール
Demo Application の終了
カウンターの値は、追加されたエントリーの数に応じて、テスト実行中に動的に変化します。たとえば、データ ソースの変更や、条件分岐の設定に応じても、最終的な値が変化します。したがって、テストの実行中に、カウンターがどのような値となるのかを確実に知ることはできず、また、それを知ろうとするには多くの労力が必要になります。正しい値をレポートに自動的に記録するには、変数とパラメーターを使用します。
値の抽出と変数への書き込み
最初に、すべてのエントリーが追加された後のカウンターの値を Get value アクションを使用して取得し、新しい変数へ書き込みます。
レコーディング モジュール GetDBCounter を開きます。
Get value アクションを追加し、 エントリー カウンターを示すリポジトリ アイテムとリンクします。
新しい変数 $varCounter を作成します。カウンターの値が、この変数に書き込まれます。
カウンター値をレポートに表示
次に、カウンターの値をレポートに表示するアクションを追加します。
レコーディング モジュール WriteMaxCounterToReport を開きます。
以下の図のように、2 つの Log message アクションを追加します。
新しい変数 $varWriteCounter を追加します。この変数は、GetDBCounter モジュールから値を受け取り、レポートに表示します。
転送用のパラメーターの作成
GetDBCounter モジュールで定義された変数は、テスト実行中に、動的に生成されたカウンターの値を受け取れるようになっています。しかしながら、WriteMaxCounterToReport モジュールで定義された変数は、この値を取得できるようにはなっていません。これは、変数とその値のスコープが、モジュールに対してローカルであるためです。変数を “リンク” する必要があります。これには、これらの変数を、同じパラメーターにバインドする必要があります。
変数をリンクするパラメーターは、両方のモジュールの共通の先祖に配置する必要があります。今回の例の場合、それぞれのモジュールは別々のテスト コンテナーに配置されており、最初の共通の先祖は、テスト スイート RxSampleParameter になります。2 つのモジュールが同じテスト コンテナーに配置されている場合には、そのテスト コンテナーにパラメーターを追加できます。
テスト スイート RxSampleParameter を右クリックし、グローバル パラメーター… をクリックします。
パラメーター セクションで、parCounter という名前のパラメーターを追加します。
OK をクリックします。
メモ
テスト実行中に値を受け取るパラメーターであることを示すため、パラメーター値は空のままにします。任意の値を入力することもできますが、テスト実行によって置き換えられます。
変数とパラメーターのリンク
追加されたパラメーターを使用して、変数とバインドしてリンクさせることができます。これによって、動的に生成された値が、任意のモジュールから別のモジュールに受け渡されます。
テスト ケース AddPersonToDb を右クリックし、データ バインディング… をクリックします。
パラメーター セクションで、斜体で表示されている継承されたパラメーターを、変数 $varCounter とバインドします。
OK をクリックします。
他のテスト ケースにある、別の変数についても同じ手順を繰り返します。
テスト ケース WriteReport を右クリックし、データ バインディング… をクリックします。
パラメーター セクションで、斜体で表示されている継承されたパラメーターを、変数 $varWriteCounter とバインドします。
OK をクリックします。
以上のように、すべてのモジュールが同じパラメーターにアクセスできる限り、任意のテスト コンテナー内で、モジュール間で値を受け渡すことができます。当然のことながら、これは時系列で処理されるため、値を渡すモジュールは、値を受け取るモジュールの前に実行される必要があります。
テストを実行すると、カウンターの値がレポートに正しく表示されていることが確認できます。
完成したサンプル ソリューション
サンプル ソリューション
Topic: Parameters – passing values across modules
Time: 15 minutes
Web テストの例
動的に生成される値を取得し受け渡す処理は、Web テストでも発生します。Ranorex Studio に含まれている Web テストのサンプル (Ranorex Studio スタート ページ > Sample solutions > Web example) には、この例が含まれています。
PublishNewPost モジュールは、WordPress で、投稿のタイトルとコンテンツを入力して公開ボタンをクリックする処理をおこないます。投稿が公開されると、公開された投稿に固有な URL が自動的に生成されます。
ValidatePost モジュールで、投稿が正しくおこなわれたかを確認するために、この URL が必要になります。また、DeletePost モジュールで、この投稿が正しく削除できることを確認するためにも、この URL が必要になります。
しかしながら、Demo Application のカウンターの値の場合と同様に、テスト実行中に URL がどのようなものになるかは分かりません。
したがって、GetPostURL モジュールは値を抽出し、それを変数に書き込み、他の 2 つのモジュールに受け渡します。この例では、すべてのモジュールが同じテスト ケース内に配置されているため、リンク用のパラメーターはこのテスト ケースで定義されており、すべての変数がバインドされています。