Compartilhar via


【UIA】UI Automation を用いたユーザーインターフェイスのテスト - 2

■■■
2010.09.27 追記:
Visual Studio 2010 Premium, Ultimate にて 自動 UI テストが新機能として搭載されました。こちらを使うと、UI Automation に対応したアプリケーションの UI テストを、単体テストフレームワークとして実施可能です。テストしたい UI 動作のレコーディングおよび、検証(アサーション)の設定を GUI で行い、単体テストコードを自動生成してくれます。
参考:
https://blogs.msdn.com/b/tomohn/archive/2010/09/16/essense-of-tfs-vol-15-ui-automation-testing-with-team-foundation-server-2010.aspx
■■■

Windows Presentation Foundation (以下、WPF)は、ユーザー補助がはじめから考慮されている非常に将来を見据えた UI フレームワークになっています(詳しくは こちら をご覧ください)。予め用意されたいくつかの設定、実装を行うと、ユーザー補助を行うアプリケーション(UI オートメーションクライアント)に UI の情報を提供することができるようになっています。

と、ここで、ユーザー補助のベストプラクティスを紹介します:

  • プログラムによるアクセス
    • すべての UI 要素とテキストにプログラムでアクセスできるようにする
    • UI のオブジェクト、フレーム、およびページに名前、タイトル、および説明を付ける
    • すべての UI 操作でプログラム イベントが発生するようにする
  • ユーザー設定
    • システム全体の設定をすべて尊重し、ユーザー補助機能に干渉しないようにする
  • UI のビジュアル デザイン
    • 色をハードコーディングしない
    • ハイコンストラクトとすべてのシステム表示属性をサポートする
    • すべての UI がどの DPI 設定でも正しくスケーリングするようにする
  • ナビゲーション
    • すべての UI 要素にキーボード インターフェイスを用意する
    • キーボード フォーカスを表示する
    • ナビゲーションの標準と強力なナビゲーション スキームをサポートする
  • マルチモーダル インターフェイス
    • 非テキスト要素んついて、ユーザーが選択できる同等の要素を用意する
    • 色を使用しつつその代替手段も用意する
    • デバイスに依存しない呼び出しで標準の入力 API を使用する

※これまた詳細は、こちら をご覧ください。

さて、ユーザー補助を考慮したアプリケーションが作成されていると仮定すると、UI には、名前やタイトル、説明が付けられていて、これらの要素には、プログラムからアクセスできるようになっているということになります。

すなわち、これを利用すれば、UI のテストを自動化することもできるわけです。そこで UI Automation なのですが、WPF では、上述のUI にユーザ補助に必要とする名前などを付けることも実はそんなに難しくはありません。

以下の XAML をご覧ください:

<Window x:Class="WpfUIA.Window1"
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="550">
<Grid>
<TextBox AutomationProperties.Name="xInputTextBox" Height="64" Margin="13,13,141,0" Name="InputTextBox" VerticalAlignment="Top" FontSize="24" />
<Button AutomationProperties.Name="xPerformButton" Height="61" HorizontalAlignment="Right" Margin="0,16,11,0" Name="PerformButton" VerticalAlignment="Top" Width="111" FontSize="24" Click="PerformButton_Click">ボタン</Button>
<Label AutomationProperties.Name="xlabel1" Margin="16,91,12,5" Name="label1" FontSize="48" Background="Snow" BorderBrush="AliceBlue">Label</Label>
</Grid>
</Window>

この XAML は、以下の UI デザインになります。

image

テキストボックスとボタンとラベルを配置しただけですね。Visual Studio 2008 だったら、ツールボックスからコントロールをペタペタっとするただそれだけなのですが、もう一度 XAML をご覧ください。普通とちょっと違うものが設定されています。ボタンなどのコントロールのタグの中を見ると

AutomationProperties.Name="xInputTextBox"

っていうものが設定されています。これが、UI に付けた名前です。このように、UI オートメーションクライアントから利用できるように名前を付けることが WPF だと容易にできてしまうわけです(※上記で設定している名前は、適当に付けただけです)。

ユーザー補助を考慮したアプリケーションを作成しているならこの設定はされているはずです。そうでない場合は、設定しておく必要がありますが、軽度の障害も含めると非常に多くの人がユーザー補助を必要とする時代がくるとも言われていますし、アクセシビリティが要件に盛り込まれているケースも増えてきていると聞いています。設定しておいて損はないですし、UI のテストを行う必要がある場合は、設定しておきましょう。

※これらを設定していなくても、UI のテスト用の単体テストコードは、記述できます。ただ、より大変にはなります。

次回は、UI Automation の設定や、今回紹介した AutomationProperties を利用する方法を書きたいと思います。

ながさわともはる

Comments

  • Anonymous
    March 31, 2008
    序: UI Automation の紹介 第1回: ソースコードの入手方法の紹介 第2回: WPF アプリケーションにおける Accessibility 設定 第3回: 単体テストで UI Automation

  • Anonymous
    April 01, 2008
    序: UI Automation の紹介 第1回: ソースコードの入手方法の紹介 第2回: WPF アプリケーションにおける Accessibility 設定 第3回: 単体テストで UI Automation