Windows デスクトップアプリでもUIテストを自動化できる。しかもノーコードで

ソフトウェア開発の大規模化への対応や、品質向上という観点でテスト自動化のニーズは広がってきました。リリーススピードは一層加速する一方で、プラットフォーム(ブラウザーやOS、ミドルウェア等)のアップデートもより頻繁におこなわれ、さらに人材不足の問題もある現在、品質の担保のためにはテストの自動化は必須と言っても過言ではありません。

様々なテストの中でもリグレッションテストをはじめとした、決まった操作・シナリオを繰り返しおこなうテストは、自動化の効果が出やすい領域です。

Webアプリケーション(ブラウザ)でのUIテスト/E2Eテストについては、自動化に関するノウハウを比較的簡単に見つけることができますし、対応するツール(Seleniumなど)も数多く存在します。一方で、Windows FormアプリやWPFといったデスクトップアプリ、クライアントアプリのテスト自動化については、情報が多くありません。そこでこの記事では、WindowsデスクトップアプリでのUIテスト自動化についてまとめました。

  • UIテスト自動化とは?
  • Windows デスクトップアプリのUIテスト自動化は可能なの?
  • CIツールとの連携はできる?
  • Windows デスクトップアプリのUIテスト自動化で注意すべきこと

UIテスト自動化とは?

当記事では、「UIテスト」というキーワードを、開発方式やテストフェーズにかかわらず、アプリケーションの画面を操作しておこなうテスト全般を指す言葉として使用します。ユーザーの操作を検証するという意味では、「E2Eテスト」と呼ばれることもあります。

UIテスト自動化は、このようなユーザーが実施してきた画面操作や検証を、自動でおこなおうとするものです。

UIテスト自動化が実際の現場で使われるユースケースとしては、ウォーターフォール開発で画面が出来上がってからおこなう 結合テスト、統合テスト、シナリオテストなどと呼ばれるフェーズ、あるいは保守フェーズにおけるリリース前の際のリグレッションテストなどが挙げられますが、それ以外でも、ユーザーが画面操作をおこない結果を確認するテストは「UIテスト自動化」の対象となります。

Windows デスクトップアプリのUIテスト自動化は可能なの?

可能です。ただし、Windows デスクトップアプリのUIテスト自動化を成功させるためには、対応しているツールの選定がとても重要です。

選定ポイント1: 対応アプリケーション

テスト自動化ツールの中にはWindows デスクトップアプリに対応していないものも多くあるため、対応しているアプリケーションは必ずチェックしましょう。

対応アプリケーションは、大きく2種類に分けられます。

  1. Webブラウザのみ対応できるもの (代表ツール:Selenium)
  2. Webブラウザ、Windows デスクトップアプリ両方対応できる (代表ツール:UWSCRanorex)

Windows デスクトップアプリのUIテスト自動化を行う際は、(2)のツールを使用する必要があります。

選定ポイント2: ツールの使いやすさ

UIテスト自動化ツールは、ものによってテストシナリオの作成方法が異なります。最近はノーコード(キャプチャ形式)でシナリオ作成ができるものが多いですが、修正時にはコードを直接修正する必要があるツールもありますので、使い勝手はチェックしておきましょう。

Ranorexは、シナリオ作成時も修正時も同様に、ノーコードで簡単に操作がおこなえます。特にプログラミング知識のない方がUIテスト自動化に携わる場合は、このような直感的に操作できるツールを選ぶとよいでしょう。

選定ポイント3: オブジェクト(コントロール)の認識方式

UIテスト自動化ツールは、作成したテストを実行する際、なんらかの方法で画面上のボタンやテキストボックスなどの要素をクリックします。この要素を見つけるための方式として、大きく以下の3つの方式が挙げられます。

  1. 座標認識型:画面内での、カーソルの位置情報を記録する
  2. イメージ認識型:対象の要素を、画像で検索する
  3. オブジェクト認識型:コード情報をもとに、要素を検索する

1や2については、アプリの画面が変わった場合などに対応できないため、3がもっとも堅牢性が高い(環境の変化に強い)方式であると言われています。現在主流のWebアプリ向けUIテスト自動化ツールは、ほとんどが「3.オブジェクト認識型」です。Windows デスクトップアプリのUIテスト自動化も同じくオブジェクト認識型のツールを選択することで、長期運用に適したテスト自動化シナリオを作成することができます。

CIツールとの連携はできる?

可能です。Jenkins をはじめとしたCIツールと連携することで、テストの実行部分も自動化することができます。

UIテスト自動化ツール Ranorex には、Jenkins と Azure DevOps の連携機能が搭載されているため、設定もスムーズにおこなえます。CIツール以外にも、バージョン管理ツール(Git/Subversion/TFVC)やテストケース管理ツール(TestRail)など様々な連携が可能ですので、ソースコミットをトリガーにテスト自動化シナリオを実行し、結果をテスト管理ツールに自動反映するといった使い方もできるようになっています。

Windows デスクトップアプリのUIテスト自動化で注意すべきこと

前述したポイントの他に、以下のポイントは評価の段階で確認しておくことで、結局使えなかったという失敗を防ぐことにつながります。

サポート対象のテクノロジー/フレームワークをチェックする

オブジェクト認識型のツールを使用する場合、必ずテスト対象とするWindows デスクトップアプリのテクノロジー(WPF、WinForms、Qtなど)に対応しているかを確認しましょう。対応していないツールでは、要素を取得できず、オブジェクト認識型のメリットを得られない場合があります。
できれば、体験版などを使用して、実際のテスト対象アプリの要素が取得できるか確認することをおすすめします。

自動化の範囲をチェックする

どのようなUIテストシナリオを自動化するかを決め、自動化の範囲を確認しておきましょう。「自動化の範囲」とは、Windows デスクトップアプリ単体を自動化できればよいのか、WebブラウザのUI操作も自動化したいのか、はたまたWebサーバーにアクセスしたレスポンスの確認まで自動化したいのかといった部分です。
これらを明確にすることによって、数あるUIテスト自動化ツールの中から、選ぶべきツールを絞り込むことができます。

使用するマシン/環境の稼動要件をチェックする

Webアプリ向けのUIテスト自動化ツールはブラウザのみが操作対象なので稼動環境は問題にならないケースもありますが、Windows デスクトップアプリを自動化する場合、多くの場合、アプリケーションが動作する環境にツールをインストールする必要が出てきます。
テストを実施する環境のOSバージョンが対応しているか、オフライン環境でテスト作成・実行ができるか、ツールに必要なソフトウェアをインストール可能か、仮想環境での実行ができるかなど、ご自身のテスト環境で動作するかもチェックしておくことが必要です。

まとめ

Windows デスクトップアプリのUIテスト自動化は、ツール選定さえ間違わなければ、Webアプリケーションと同じようにノーコードで対応できます。デスクトップアプリとWebアプリ両方対応できるツールを選べば、Webブラウザからエクスプローラーの操作を含めたファイルのアップロード/ダウンロードや、右クリックのコンテキストメニューなど、より幅広い操作を自動化することも可能になります。

つまるところ、UIテスト自動化はツール選定が肝です。自動化したいアプリ、環境、操作内容など整理して、最適なUIテスト自動化ツールを選定しましょう。