UIA Pro アドイン

関連:GUI テストおよびコンポーネント

このトピックでは,UIA Pro アドインの概要と,Microsoft UI Automation パターンを実装したアプリケーションを UIA Pro を使用してテストする方法について解説します。

概要

UI Automation Pro(UIA Pro)は,既存の UI Automation サポートの上位バージョンです。ユーザは,UI Automation サポートの場合と同様に,UI Automation プロバイダ・インタフェースを実装した Windows ベース・アプリケーションをテストできます。

さらに,テストの作成と保守が容易になり,テスト・パフォーマンスが改善され,より多くのオブジェクト,メソッド,およびパターンがサポートされます。

UIA Pro を使用するには,UIA Pro アドインをインストールしてロードする必要があります。

最近,このアドインはさらに機能強化され,完全な成熟度とサポートが提供されるようになりました。詳細については,"UIA Pro の機能拡張" を参照を参照してください。

実装に関するガイダンスと最適化のヒントについては,"UIA Pro アドインのベスト・プラクティス" を参照を参照してください。

UIA Pro パターン

UIA Pro アドインを使用すると,アプリケーションの外観にかかわらず,Microsoft UI Automation パターンを実装しているアプリケーションをテストできます。これらのパターンは,UI 要素の動作と機能を定義します。

各 UI コントロールは,その本来の機能に対応するパターンを実装します。

次に例を示します。

  • Grid パターン:行と列でデータを表示するコントロールに使用され,セル・データの取得や操作などの機能を有効にします。

    UIAProDataGrid("Grid").GridPattern.GetCellValue(0,0)

  • Invoke パターン:ボタン,チェックボックス,その他のクリック可能な要素など,アクティブ化できるコントロール。

    UIAProButton("Button").InvokePattern.Invoke

  • Scroll パターン:スクロール・バー,リスト・ボックス,リスト・ビュー,コンボ・ボックスなど,スクロール可能なコンテンツを処理するコントロール。

    UIAProScrollBar("ScrollBar").ScrollPattern.SetScrollPercent 50,50

各コントロールで実際に利用可能なパターンは,ここに示した例とは異なる場合があります。各 UI オートメーション要素でサポートされるパターンは,アプリケーションの実装によって決まります。

オブジェクトがサポートするパターンを特定するには,次の手順を実行します。

  • オブジェクト・スパイツールを使用して,オブジェクトを視覚的に検査します。SupportedPatterns プロパティに,選択したオブジェクトでサポートされているすべてのパターンが一覧表示されます。

  • 実行時には,UIAProObject("Element").GetSupportedPatterns メソッドを使用します。

UIA Pro 関数

各オブジェクトは,アプリケーションとの詳細な通信を可能にする多くのローレベル関数をサポートしています。作業をより簡単にするために,UIA Pro Add-in は,複数のローレベル関数をパッケージ化し,より汎用的で使いやすいメソッドとして提供するハイレベル関数も用意しています。より特定の目的に合わせた設計が必要な場合は,ローレベル関数を組み合わせて独自の機能を構築してください。

ハイレベル関数

ローレベル関数は,システムまたはフレームワークレベルで動作する,UI 要素の個別の直接的な操作です。個別のローレベル・メソッドを使用することで,実行する各ステップを完全に制御でき,特定のパターンやプロパティを使用して UI 要素に直接アクセスして操作できます。ローレベル関数は,ハイレベル関数が提供する以上の高度なカスタマイズを必要とする,より複雑なシナリオに最適です。

ローレベル関数

ローレベル関数は,システムまたはフレームワークレベルで動作する,UI 要素の個別の直接的な操作です。ローレベル・メソッドは,複数の個別のコマンドで構成されており,操作の各ステップを完全に制御できます。これらを使用すると,特定のパターンとプロパティを使用して UI 要素に直接アクセスして操作できます。ローレベル関数は,ハイレベル関数が提供する以上の高度なカスタマイズを必要とする,より複雑なシナリオに最適です。

例:

ハイレベル関数 ローレベル関数
UIAProDataGrid("Grid").GridPattern.GetCellText(0,0) UIAProDataGrid("Grid").GridPattern.GetCell(0,0).TextPattern.GetText()
UIAProDataGrid("Grid").GridPattern.GetCellValue(0,0) UIAProDataGrid("Grid").GridPattern.GetCell(0,0).ValuePattern.GetValue()
UIAProDataGrid("Grid").GridPattern.ClickCell(0,0) UIAProDataGrid("Grid").GridPattern.GetCell(0,0).Click

オブジェクトの記述における相対パス

UIA Pro オブジェクトの path プロパティは,そのオブジェクトがオブジェクト階層内でどの位置にあるかを示します。ルート・ウィンドウから始まる完全な階層構造を表す絶対パスを使用する代わりに,相対パスを使用して要素を記述することもできます。

相対パスは,オブジェクト・リポジトリまたはプログラム的記述で定義されている,直近の親オブジェクトを基準としたテスト・オブジェクトの位置を表します。

テストのメンテナンスを容易にするために相対パスを使用します。親オブジェクトのパスが変更されても,子オブジェクトの相対パスは有効なままであり,更新する必要がありません。

標準設定では,新しいテスト・オブジェクトに作成される path プロパティは絶対パスです。オブジェクト認識センター(oic),オブジェクト・リポジトリ,またはプログラム的記述において,オブジェクトの path プロパティを手動で相対パスに変更することができます。

相対パスを持つテスト・オブジェクトは,絶対パスを持つテスト・オブジェクトの下に配置することができます。ただし,オブジェクトに相対パスを使用する場合,そのすべての子孫オブジェクトも相対パスを使用する必要があります。

相対パスはチルダ(~)文字で示されます。

絶対パス

  • 親:Window;Pane;Pane

  • 子:Window;Pane;Pane;List;ListItem

相対パス

  • 親:Window;Pane;Pane

  • 子:~List;ListItem

path プロパティの詳細については,"path 記述プロパティの使用" を参照を参照してください。

UIA Pro モードでのオブジェクトのスパイ

オブジェクト・スパイとオブジェクト認識センターには,UIA Pro オブジェクト認識のための独立したモードが用意されています。このモードを使用して,UI Automation プロパティに基づいてオブジェクトを認識し,UIA Pro テスト・オブジェクトを作成します。

UIA Pro モードでオブジェクトをスパイするには

次のいずれかを実行します。

  • オブジェクト・スパイで,指差しアイコンのドロップダウン矢印をクリックし,[UIA Pro]を選択し,ボタンをクリックして UIA Pro モードでオブジェクトをスパイします。

  • オブジェクト認識センターで[UIA Pro]ボタンをクリックして,UIA Pro モードでオブジェクトをスパイします。

UIA Pro モードでは,オブジェクトのプロパティを表示したり,スパイしたオブジェクトをローカル・リポジトリまたは共有リポジトリに追加したり,テストにドラッグしてステップを作成したりできます。詳細については," オブジェクト・スパイの使用" を参照および"オブジェクト認識センターの使用" を参照を参照してください。

オブジェクトのプロパティは,ネイティブ・テクノロジではなく UI Automation を使用して認識されるように表示されます。

UIA Pro テスト・ステップの作成

オブジェクト・スパイまたはオブジェクト認識センターから,オブジェクトを作成してテストに追加できます。

各テスト・オブジェクトは,次のタイプのメソッドをサポートしています。

  • OpenText Functional Testing の共通メソッドとプロパティ,たとえば ClickType など。

  • コントロール・タイプのサポート対象パターンに応じたメソッド。supportedpatterns 記述プロパティを使用すると,オブジェクトがサポートするパターンを確認できます。

これらのテスト・オブジェクト・メソッドの詳細については,『Object Model Reference』の「UIA Pro」セクションを参照してください。

使用可能なテスト・オブジェクトとメソッドは,アプリケーション内で実装されているプロパティとパターンに完全に依存します。お使いのアプリケーションのオブジェクトのプロパティ(特にコントロール・タイプ ID とサポートされるパターン)について理解し,使用できるテスト・オブジェクトとメソッドを把握しておくことをお勧めします。

UIA Pro の機能拡張

このセクションでは,UIA Pro アドインに最近導入された機能拡張について説明します。

領域 機能拡張
パフォーマンスと安定性

強化された UIA Pro アドインには次のような利点があります。

  • パフォーマンスの大幅な向上

  • テストの安定性の向上

オブジェクトの階層構造:テスト・オブジェクト・ツリーのナビゲーション

UI Automation アプリケーションには,深いオブジェクト階層構造が存在することがよくあります。機能拡張されたアドインは,階層内のすべてのオブジェクトへの完全なアクセスと操作をサポートします。

新しいメソッドにより,テスト・オブジェクト・ツリーの包括的かつ柔軟なスキャンが可能です。

  • すべてのレベルから子オブジェクトまたは親オブジェクトを取得したり,取得するオブジェクトのレベル数を指定したりできます。

  • 取得する子オブジェクトまたは親オブジェクトのタイプの記述を指定することもできます。

詳細については,『Object Model Reference』の「UIA Pro」セクションで次のメソッドを参照してください。

GetAncestorsGetChildrenGetDescendantsGetParent。後方互換性のために ChildObjects メソッドも引き続きサポートされていますが,ChildObjects メソッドではなくこれらのメソッドを使用してください。

オブジェクトの階層構造:スパイ オブジェクト認識センターには,スパイした UIA Pro オブジェクトの完全な階層構造が表示されます。テスト・オブジェクトをオブジェクト・リポジトリに追加すると,その最も重要な祖先のみが含められます。
オブジェクトの階層構造:共通メソッドとプロパティ

実行セッション中に GetCell メソッドなどで取得されたオブジェクトでは,共通メソッドとプロパティがサポートされます。

新たにサポートされるメソッドは,ExistGetROPropertyGetTOPropertySetTOPropertyHighlightRefreshObjectToStringCheckPropertyWaitProperty です。

これにより,実行時にアプリケーションのオブジェクト階層内で検出されたオブジェクトを操作できる堅牢なテストが可能になります。

たとえば,以下のステートメントが新たにサポートされるようになりました。

UIAProDataGrid("dataGrid").GridPattern.GetCell(1,1).Highlight

より特化したオブジェクトの記述

補足プロパティがサポートされており,最適化されたテスト・オブジェクトの記述を作成できます。

以前は,すべてのオブジェクト識別プロパティが,すべての UIA Pro テスト・オブジェクト記述に含まれていました。[オブジェクトの認識]ダイアログ・ボックスで,各タイプの UIA Pro テスト・オブジェクトに対して考慮されるプロパティを確認できます。[オブジェクトの認識]ダイアログ・ボックスの使用法の詳細については,"テスト・オブジェクト・クラスに対するオブジェクト認識の設定" を参照を参照してください。

このプロパティのリストは編集できませんが,テスト・オブジェクトをオブジェクト・リポジトリに追加した後で,その記述を編集し,テスト・オブジェクトの認識に使用されるプロパティのリストとその値を変更できます。

オブジェクトの記述における相対パス

テストのメンテナンスを容易にするために,テスト・オブジェクトの path プロパティを,親オブジェクトを基準とした相対パスとして定義できます。

親オブジェクトのパスが変更されても,子オブジェクトの相対パスは有効なままで,更新の必要がありません。詳細については,"オブジェクトの記述における相対パス" を参照を参照してください。

修正された既知の不具合

以下の既知の問題が修正されました。

  • アプリケーション内でオブジェクトを一意に識別するためのオブジェクト・インデックスが正しく使用されていませんでした。

  • HighlightGetROPropertyRefreshObject などの一部のステップが実行結果レポートに含まれていませんでした。

  • アプリケーション内で一時的にアクセスできなくなっていたオブジェクトが再び利用可能になったときに,そのオブジェクトに対するテスト・ステップが失敗していました。

  • 一部の状況で,OpenText Functional Testing が応答しなくなることがありました。これらのケースの一部では,お客様がいくつかのレジストリ・キーを再適用する必要がありました。

  • 一部のケースで,オブジェクト・リポジトリのオブジェクトの強調表示が機能しないことがありました。

  • テスト実行時,各ステップへの進行状況が明確に表示されず,実行が停止したように見えることがありました。

  • オブジェクトが識別できない場合,ステップは失敗し,見つからなかったオブジェクトがレポートに示されます。一部のケースで,レポートにテスト・オブジェクトの階層内のオブジェクトの 1 つが示されているものの,見つからないオブジェクトが示されていないことがありました。

  • UIA Pro のステップを編集する際,コード補完機能により,メソッドの引数として使用する列挙型の値が提案されることがあります。しかし,テスト実行時にこれらの値は認識されませんでした。

その他の参照項目: