UI 要素
グラフィカル ユーザー インターフェース 要素 (UI 要素) は、コンピューターに格納されている情報を表す、コンピューターのスクリーン上で可視なグラフィカル要素であり、ユーザーとソフトウェアの対話を可能にします。例えば、ウィンドウ、テキスト フィールド、ボタン、ラベル、リストなどの要素です。
Ranorex Studio は、GUI テストを自動化するツールであるため、作成するテストで使用する UI 要素を、確実に識別できる必要があります。この章では、この仕組みについて説明します。
スクリーンキャスト
以下のスクリーンキャストで、この章で説明している内容を確認できます。
関連する章
この章では、Ranorex Spy および RanoreXPath に密接に関連するトピックスについて説明します。これらの機能は、Ranorex Studio における UI 要素の識別の仕組みについて説明しているため、合わせて参照することをおすすめします。
参照
RanoreXPath については、Ranorex Studio アドバンスト > ⇢ RanoreXPath を参照してください。
参照
Ranorex Spy については、Ranorex Studio アドバンスト > ⇢ Ranorex Spy を参照してください。
UI 要素の識別
まず、人間が UI 要素をどのように識別しているのかを確認してみましょう。私たちにとって、このプロセスは通常、非常に直感的です。
例えば、Ranorex Studio Demo Application の起動画面を見てみます。
タイトル バー
メイン メニュー
タブ メニュー
Welcome メッセージを表示する テキスト ラベル
名前を入力する テキスト フィールド
Welcome メッセージをリセットする テキスト リンク
アプリを終了する 終了ボタン
ユーザーの視点
UI 要素の信頼性のある識別をおこなうための課題をよりよく理解するために、特定の UI 要素、ここではテキスト入力フィールドに注目してみます。
Text input field of demo application
あなたは、赤色の枠で囲われた UI 要素がテキスト入力フィールドだと、どのようにして認識しましたか?
考えられる回答:
- このソフトウェアのユーザーガイドを読んだからです
- 経験的に知っているからです
- テキストを入力してみて、入力できたからです
- 誰かが教えて/見せてくれました
- ‘Enter your name’ および ‘Submit’ ボタンが表示されているからです
これらはすべて優れた指標であり、フィールドがテキスト入力を受け付けるのであれば、これがテキスト入力フィールドであることは確実です。しかしながら、ソフトウェアのコードにアクセスできる場合を除き、UI 要素が何を実行しているかの詳細を、確実に判断することはできません。代わりに、コンテキスト ベースの手掛かりと、テキスト入力フィールドとはどんなものであるかの一般的な考え、つまり、UI 要素の “内部表現” に頼る必要があります。
Ranorex Studio のアプローチ
Ranorex Studio はアプリケーションであるため、マニュアル、誰かの知見、人間の直間といった指標にアクセスすることはできません。Ranorex Studio のアプローチは、テスト対象アプリをフックし、GUI で使用されているテクノロジーを検出し、UI 要素を識別して、⇢ UI のロールと機能 に応じて分類することをベースとしています。
しかしながら、Ranorex Studio はいくつかの点で、人間が UI 要素を識別する方法と非常に似た方法で識別をおこないます。Ranorex Studio は、リポジトリ アイテムと呼ばれる、UI 要素の “内部表現” を生成します。リポジトリ アイテムには、ソフトウェアの GUI 構造内の特定の UI 要素を表す、RanoreXPath と呼ばれる固有の識別子が割り当てられます。これは、2 段階のステップでおこなわれます。
テスト対象アプリの GUI における UI 要素
UI 要素の内部表現
確認事項:
- Ranorex Studio は、UI 要素をテスト ソリューション内のリポジトリ アイテムとして表現します。
- Ranorex Studio は、UI 要素の種類を最適な方法で識別し、特定のロール (Role) と機能 (Capability) にマッピングします。
- Ranorex Studio は、各リポジトリ アイテムに一意の識別子を割り当てます。この識別子は RanoreXPath と呼ばれ、GUI 構造における UI 要素の位置を表現します。
GUI 構造
テスト対象アプリ内の UI 要素は、特定の構造で構成されています。Ranorex Studio がアプリ内の UI 要素を識別するために GUI をスキャンする際、⇢ Ranorex Spy で確認できる階層的な要素ツリーで、アプリの構造を表現します。
Example of an element tree
Form RxMainFrame
- テスト対象アプリのトップレベルの UI 要素です。つまり、Demo Application のウィンドウ全体です。
- この UI 要素には、Demo Application の他のほぼすべての UI 要素 (要素ツリー上で通常別のツリーとして表現される、コンテキスト メニューやリスト アイテムを除く) が含まれます。
- このツリーに含まれる UI 要素の例として、Exit ボタン、メイン メニュー、Copyright テキスト ラベルなどが挙げられます。
TabPageList RxTabControl
- ‘Introduction’, ‘Test database’, ‘Image-based automation’, ‘UI-element test area’, ‘Upload’ が含まれる、タブ コンテナーです。
- Ranorex Studio は、この UI 要素の名前 (RxTabControl) を、テスト対象アプリから直接取得しています。
TabPage RxTabIntroduction
- Demo Applicationの ‘Introduction’ タブです。
- この UI 要素には、このタブにある他のすべての要素が含まれます。
- Ranorex Studio は、この UI 要素の名前 (RxTabIntroduction) を、テスト対象アプリから直接取得しています。
Text field txtUsername
- Welcome メッセージに表示される名前のテキスト入力フィールドです。
- この UI 要素には、このパネルの他の要素とともに、タブ要素 RxTabIntroduction に含まれています。
上記の例は、説明のために単純化しています。完全な階層ツリーの Ranorex Spy での表示は、以下のようになります。