多言語対応アプリケーションへの対応方法

Ranorexにて多言語対応アプリケーションをテストする方法についてご紹介します。
Ranorexでは、多⾔語対応が⾏えるようにテストシナリオを編集することにより、
1つのテストシナリオで、複数言語対応のアプリケーションをテストすることができます。
今回は、テスト対象のアプリケーションとして、KeePass(※)の英語版と日本語版を使用します。
※KeePass とは、フリーで提供されている、ユーザー名やパスワードを管理するためのデスクトップアプリケーションです。
KeePassは、以下のURLからダウンロードできます。
https://keepass.info/download.html
■前提条件
KeePassのログイン画面にある キャンセル ボタンは、日本語版と英語版によって文字表記が異なります。
そのため、キャンセルボタンを認識するRanoreXPathにテキスト属性が使⽤されている場合、 各言語において以下のようなRanoreXPathになります。
日本語版 キャンセル ボタンのRanoreXPath:
/form[@controlname=’KeyPromptForm’]/button[@text=’キャンセル‘]

英語版 Cancel ボタンのRanoreXPath:
/form[@controlname=’KeyPromptForm’]/button[@text=’Cancel‘]

上記のように、Text属性を使用したRanoreXPathの場合、言語によって属性値が異なるため、同じRanoreXPathでは認識がおこなえません。
複数言語対応のアプリケーションへの対応方法は、以下のような方法がございます。
■方法1 言語に依存しない属性を使用する
キャンセルボタンを認識するためのRanoreXPathにおいて、text属性の値を⾔語に依存しない別の属性に変更します。
これにより、⾔語に依存しないRanoreXPathになります。
キャンセル ボタンの属性情報において、ControlName属性は共通の属性値(m_btnCancel)を保持しています。


そのため、Text属性ではなく、ControlName属性を使用したRanoreXPathに変更します。
操作手順は、以下となります。
1.Ranorex Studioにて、対象のプロジェクトを開き、レコーディングモジュール(rxrec)を開きます。
2.リポジトリ内から、該当のオブジェクトを選択後、 EDIT IN SPY をクリックし、PATH EDITOR を表示します。

3.PATH EDITOR から該当の要素を選択し、右側の属性の一覧から、使用したい属性にチェックを入れます。(今回は、controlname 属性を選択します。)

以下のようなRanoreXPathに変更されます。
/form[@controlname=’KeyPromptForm’]/button[@controlname=’m_btnCancel’]
これにより、上記のRanoreXPathであれば、日本語版/英語版のいずれのKeePass アプリケーションにおいても、同じパス情報でキャンセル ボタンを認識することができます。
■方法2 属性値を変数化し、言語に合ったデータを流し込む
RanoreXPathの中で使用している属性値を変数化し、流し込むデータソースの中に言語に合った値を設定します。
これにより、流し込むデータによって、RanoreXPathを動的に表すことができます。
操作① RanoreXPathの変数化
以下の手順にて、controltext 属性の値 キャンセル を変数化します。
1.Ranorex Studioにて、対象のプロジェクトを開き、レコーディングモジュール(rxrec)を開きます。
2.リポジトリ内から、該当のオブジェクトを選択後、 EDIT IN SPY をクリックし、PATH EDITOR を表示します。
3. PATH EDITOR から該当の要素を選択し、右側の属性の一覧から、変数化したい属性値(キャンセル)横の矢印を選択し、”As new Variable”をクリックします。

4.任意の変数名を設定します。

パスの編集画面 – 変数化
変数名 btnCancel とした場合、以下のようなRanoreXPathとなります。
/form[@controlname=’KeyPromptForm’]/button[@controltext=$btnCancel]
操作② 変数とデータの関連付け
言語ごとに流し込むデータを用意し、変数とデータを関連付けます。


上記設定により、1回目のデータでは日本語表記の キャンセル ボタンを認識し、2回目のデータでは英語表記の Cancel ボタンを認識します。
これにより、1つのテストシナリオで、 英語版と日本語版のアプリケーションに対するテストを実行することができます。

データ駆動型テストについては、以下のユーザーガイドをご参照ください。
https://www.ranorex.com/ja/help/latest/ranorex-studio-advanced/data-driven-testing/introduction/
■方法3 属性値に正規表現や比較演算子を使用する
オブジェクトによっては、以下の ファイル(F) ボタンのように、ボタンの中にショートカットキーの表記が含まれる場合があります。
多くのアプリケーションでは、ショートカットキーの表記においては、⾔語問わずに共通である場合が多いかと思われます。
このように、各ボタンの中に言語に依存しない共通な文字列が含まれている場合、
正規表現や、Ranorexで用意されている比較演算子を使用することで、
異なる言語表記のボタンであっても、1つのRanoreXPathで表すことができます。

たとえば、ショートカットキー “(F)” を使用したRanoreXPathとする場合、以下の手順にて変更をおこないます。
1.Ranorex Studioにて、対象のプロジェクトを開き、レコーディングモジュール(rxrec)を開きます。
2.リポジトリ内から、該当のオブジェクトを選択後、 EDIT IN SPY をクリックし、PATH EDITOR を表示します。
3. PATH EDITOR から該当の要素を選択し、右側の属性の一覧から、属性値横の比較演算子を変更します。
今回は、<(Ends With / Less Than)※ に変更します。
※ <(Ends With / Less Than)は、設定した値で終わる属性値であれば、一致する比較演算子となります。

4.属性値の部分に対し、共通の値(今回は、(F) )のみを残します。

パスの編集画面 – 属性値の変更
これにより、以下のようなRanoreXPathとなり、accesibilename属性の値が (F) で終わるボタンであれば、認識がおこなえます。
/form[@controlname=’MainForm’]/?/?/menuitem[@accessiblename<‘(F)’]
今回、紹介した方法を使用することで、 多言語対応アプリケーションにおいて、
言語ごとにテストシナリオを作成することなく、 1つのテストシナリオで、
複数の言語に対応したテストをおこなうことができますので、ぜひお試しください。