この章では、パラメーターとは何か、パラメーターの追加方法、および利用方法について学習します。
パラメーターは1行だけのデータ ソース、つまり最もシンプルなデータ ソースと考えることができます。モジュールの再利用性やテストの保守性を保つために便利な機能です。また、あるレコーディング モジュールから別のレコーディング モジュールへ変数の値を渡すためにも利用できます。
この章の構成
パラメータは、テスト スイート ビューにて、各アイテムのプロパティ ダイアログで追加することができます。以下2箇所で、パラメーターが追加できます。
あるアイテムにパラメーターを追加すると、その子はすべてそのパラメーターを継承します。
以下の手順で、パラメーターを追加するダイアログにアクセスできます。
1
パラメーターを追加したい項目を右クリックします。
a
テスト スイートの場合、グローバル パラメーター... をクリックします。
b
テスト コンテナの場合、データ バインディング... をクリックします。


追加したパラメーターの番号です。パラメーター数に制限はありません。
既存の各パラメーターの名前です。Add... をクリックして、新しいパラメーター名を入力します。
各パラメーターの初期値です。新しいパラメーターには値を割り当ててください。任意の文字列が指定可能です。
各パラメーターの現在のバインド状況です。ドロップダウン メニューを使用して、新しいパラメーターを変数にバインドしてください。
イタリック体のパラメーターは先祖のテスト スイートあるいはテスト コンテナから受け継いだものです。これらはその先祖のアイテムでのみ編集できます。
自動生成 をクリックすると、バインドされていない変数のパラメーターが自動的に作成されます。パラメータは、バインドされていない変数と同じ名前で作られます。次に 自動バインド をクリックすると、自動生成したパラメーターが自動的にそれぞれの変数にバインドされます。
このセクションでは、パラメーターの使い方の例を 2 つ紹介します。
最初の例は、シンプルなシナリオで多くのパターンを持つテストに役立ちます。レコーディング モジュールの再利用性を高めるためにパラメーターを使用する方法です。
2 つ目の例は、より複雑で、適用できる範囲も限られていますが、非常に有用です。パラメーターを使用して、テストの実行中に、ある変数から別のレコーディング モジュールの別の変数に値を渡すというものです。これにより、テストの効率を上げ、メンテナンスの手間を省くことができます。
この例は非常に短いので、サンプル ソリューションはありません。
様々な機能を提供する典型的なテスト対象アプリを考えてみましょう。テスト対象アプリは、ユーザーがUIを通じてアクセスするさまざまな画面上に、これらの機能を提供します。
例えば、Ranorex Studio デモアプリケーションにはいくつかタブがあり、それぞれ異なる機能を提供しています。

これらの画面をテストするためには、画面ごとにいくつかの異なるテスト ケースを作成する必要があります。なぜなら、各画面で異なる機能をテストするため、テスト手順はそれぞれのケースで異なるからです。しかし、最初のステップは常に同じで、テスト対象アプリを開いて画面を開く操作です。これは、常に以下のアクションで構成されます。
上記を共通化することにより、再利用性の高いモジュールとなり、再利用可能なモジュールはテストの効率を向上します。しかし、ひとつ問題があります。クリックするタブの名前がテストケースごとに違うという点です。
これを解決する最も簡単で効率的な方法は、変数とパラメーターを使うことです。
レコーディング モジュール StartAUT では、Clickアクションにリンクされたリポジトリ アイテムに変数を作成します。
デモアプリケーションのタブをクリックするアクションを作成し、⇢ テストと変数の定義 のリポジトリ変数の説明にしたがって変数を作成します。変数名を $varTab とします。

では、最初のテスト ケース(Introduction_testing)でパラメーターを定義し、リポジトリ変数をバインドします。
テスト ケースを右クリックし、データ バインディング... をクリックします。
Parameters 配下に Tab という名称のパラメーターを追加し、Introduction という値を Value に入力します。
パラメーターの値は、UI要素を特定する RanoreXPath の属性値です。Introduction タブの場合、[@accessiblename='Introduction']となります。 Test database タブでは、[@accessiblename='Test database']となります。
詳しくは、Ranorex Studio アドバンスト > ⇢ RanoreXPath を参照してください。
変数 varTab をバインドし、OK をクリックします。

他のテスト ケースでも同様の手順を実施し、パラメーターの値を、それぞれのタブを識別する属性値( Test database、Image-based automation など)に置き換えます。
以上で完了です。テストを実行すると、自動的にタブをクリックするようになります。
この例では、テストの実行中に、あるモジュールで生成された値を別のモジュールに渡す方法を紹介します。変数、パラメーター、Get value アクションを使ってこれを実現します。
Ranorex Studio デモアプリケーションの小さな Database のテストを使って、この内容を説明します。
この例はより複雑なため、サンプル ソリューションを用意しています。以下のファイルをダウンロードして、指示に従ってください。完成したサンプルはこの章の最後にあります。
Topic: Parameters – passing values across modules
Time: 15 minutes
インストール:
任意のフォルダーに解凍します。
Ranorex Studio を起動し、ソリューション ファイルを開きます。
この例では、データ駆動型テストを使用して、Ranorex Studio デモアプリケーションの Database に人数を入力します。入力するたびに、入力件数を示すカウンターの値が増加します。テスト実行の最後に、エントリーの総数をレポートに出力します。


デモアプリを起動し、データベース登録の画面を開きます。
最初の 6 つのレコーディング モジュールは、前のサブチャプターで説明したように、データ ソースからのエントリーをデータベースに追加します。
レコーディング モジュール GetDBCounter はカウンターの値を取得し、変数に書き込みます。
レコーディング モジュール WriteMaxCounterToReport は、カウンターの値をレポートに記録します。
テスト対象アプリを閉じます。
カウンターの値は、追加されたエントリーの数に応じて、テスト実行中に動的に生成されます。データ ソースの変更や条件の追加などによって、最終的な数値は変化します。そのため、テスト実行中にカウンターの値がどうなるかを確実に知ることはできませんし、その都度調べるのは手間がかかりすぎます。正確な値を自動的にレポートに出力するためには、変数とパラメーターを使用する必要があります。
まず、テスト実行中にすべてのエントリが追加された後のカウンターの値を取得し、変数に書き込むために、値を取得するアクションを使用します。
レコーディング モジュール GetDBCounter を開きます。
カウンターのリポジトリ アイテムにリンクした Get value アクションを追加します。
新しい変数 $varCounter を作成します。カウンターの値はこの変数に書き込まれます。

次に、カウンターの値をレポートに出力するアクションを追加します。
レコーディング モジュール WriteMaxCounterToReport を開きます。
以下の画像のように、2 つの新しい Log message アクションを追加します。
新しい変数 $varWriteCounter を追加します。この変数は GetDBCounter モジュールから値を受け取り、レポートに記録します。

テスト実行中、GetDBCounter の変数は、動的に生成されたカウンターの値を受け取ります。しかし、WriteMaxCounterToReport の変数は、値を取得できません。変数とその値は、そのモジュール内でのみ有効のためです。各変数を「リンク」させるため、変数をすべて同じパラメーターにバインドします。
変数をリンクするパラメーターは、両方のモジュールの共通の祖先 に存在する必要があります。この場合、モジュールは 2 つの別々のテスト コンテナに入っているので、 最初の共通の先祖はテスト スイートの項目 RxSampleParameter となります。もし 2 つのモジュールが同じテスト コンテナ内にあれば、そのコンテナにパラメーターを追加できます。
テスト スイート RxSampleParameter を右クリックし、グローバル パラメーター... をクリックします。
Parameters 配下に、parCounter という名称のパラメーターを追加します。
OK をクリックします。

テストの実行中に値を受け取るパラメーターであることを示すために、値を空にしています。何か値を入力してもかまいません。テスト実行時にこの値は置き換えられます。
パラメーターが追加されたので、これに変数をバインドして、リンクさせることができます。これにより、動的に生成された値をモジュール間で受け渡しできるようになります。
テスト ケース AddPersonToDB を右クリックし、データ バインディング... をクリックします。
Parameters 配下の、イタリック体の継承パラメーターを変数 $varCounter にバインドします。
OK をクリックします。
もう一方のテスト ケースの 2 番目の変数で、この手順を繰り返し実施します。
テスト ケース WriteReport を右クリックし、データ バインディング... をクリックします。
Parameters 配下の、イタリック体の継承パラメーターを変数 $varWriteCounter にバインドします。
OK をクリックします。

このような手順で、すべてのモジュールが同じパラメーターにアクセスできる限り、任意のテスト コンテナ内で、あるモジュールから別のモジュールや他のモジュールに値を渡すことができます。当然ながら、これも時系列の順にしか動作しません。つまり、値を渡す側のモジュールは、 受け取る側のモジュールの前に実行される必要があります。
テストを実行すると、カウンターの値が正しくレポートに記録されていることが確認できます。

Topic: Parameters – passing values across modules
Time: 15 minutes
動的に生成された値の取得と受け渡しは、Webテストでも利用できます。Ranorex Studio (Ranorex Studio スタート ページ > Sample solutions > Web example) に含まれるWebテスト サンプルで、デモを確認できます。

PublishNewPost モジュールは、投稿のタイトルと内容を入力し、WordPress の Publish ボタンをクリックします。WordPress で投稿を公開すると、公開された投稿に固有のURLが自動的に生成されます。
このURLは ValidatePost モジュールで必要とされ、テストがブログ投稿に移動し、正しく公開されたかどうかを確認できるようにします。このURLは DeletePost モジュールでも必要で、削除される正しい投稿に移動します。
しかし、デモアプリのカウンターの値と同様、テスト実行中にどんなURLになるかはわかりません。
したがって、モジュール GetPostURL は値を取り出し、変数に書き込み、他の 2 つのモジュールに渡します。これは前の例で説明したのと同じように動作しますが、ここではすべてのモジュールが同じテスト ケースに含まれています。したがって、リンクされたパラメーターはこのテスト ケースにあり、すべての変数がそのパラメータにバインドされます。