UWSC と Ranorex の違い

テスト自動化のツール選定をおこなうにあたって、オープンソースのツールと有償ツールのどちらを使うかはまず議題にあがるテーマです。オープンソースのツールで代表的なものとしては、Seleniumが最もよく挙げられますが、Windowsアプリケーション(デスクトップアプリケーション)の自動化を検討する場合は、UWSCも候補に入るのではないでしょうか。

今回の記事では、UWSCにフォーカスし、有償ツールであるRanorexとの違いと、どちらを選ぶべきかという点についてご紹介したいと思います。

UWSCとは?

UWSCは、Windowsの操作を自動化するツールで、マウスやキーボード操作を記録して実行したり、スクリプトを記述して動作を作成することができます。2017年に最新バージョンがリリースされて以降更新が行われていませんが(2022年12月時点)、無料で使用できるということ、簡単にWindows OS上の操作が自動化ができることから、今なお利用されています。

UWSCをテスト自動化に使用するメリットはなんといっても、手軽に始められることです。フリーソフトのため、ダウンロードしてすぐに使い始めることができます。またExcelのマクロの記録のように、実際にマウスクリックやキーボード操作をおこなう形でシナリオを保存できるため、プログラミング知識がなくてもテスト作成をおこなうことができます。

なおフリーのテスト自動化ツールの1つであるSeleniumは、Webブラウザ上の操作しか自動化できませんが、UWSCはWindows上で操作するアプリケーションであれば、種類を問わず自動化できるという点もメリットの1つです。

UWSCとRanorexの違い

UWSCもRanorexも、Windows上でアプリ画面の操作の自動化ができるという点は同じですが、他にどのような違いがあるか見ていきたいと思います。

シナリオの修正・変更

UWSCでは、作成したシナリオを修正したり、編集してより便利な形に拡張したいといった場合は、コードを書く必要があります。プログラミング知識のある方であれば問題なく修正が可能と思われますが、そのような知識のない方や、非IT部門の方が対応するのは少しハードルが高いかもしれません。

Ranorexでは、シナリオ作成時はUWSCと同じように操作をキャプチャする形で記録ができますし、修正をおこなう際もコードを書くことなく、GUI上で設定変更ができます。ドラッグ&ドロップやコピー&ペーストといった一般的な操作で編集ができるため、プログラミング知識がなくても修正・編集が簡単におこなえます。操作の繰り返しを含めた基本的な動作はGUI設定で対応できますが、より複雑な処理を実装したい場合は、C#またはVB.Netでのコーディングも可能となっております。初心者から技術者の方まで幅広く活用できる設計になっています。

・テスト関連の機能

UWSCは、RPAツールとして使われることもあり、ユーザーがおこなうマウスクリックやキーボード操作をそのまま記録/実行するのが基本的な使い方です。一方テスト自動化では、操作内容の中に表示された文字列や数値の内容が正しいかチェックしたり、想定のシナリオで進んでいない場合はテストを中断するなど、一歩進んだ処理が要求されます。UWSCでこのような処理を自動化したい場合は、やはりコードを書く必要があります。

Ranorexでは、検証やスクリーンショット取得が1つの操作(アクション)として用意されているため、アプリ画面の操作の記録中にこれらを挟んだり、あとからシナリオに追加したいときもマウス操作で簡単に設定できます。またテストが失敗した場合シナリオを中断し、失敗時のスクリーンショット取得やレポート出力までが自動で実施されます。自身でこれらの処理を作る必要がなく、コストが削減できます。

オブジェクト認識

テスト自動化ツールではシナリオを記録する際に、操作内容とあわせて「どのボタンをクリックするか」「どのテキストボックスに入力するか」といったオブジェクトの情報も保存されますが、この情報の保存の仕方がUWSCとRanorexでは異なっています。

UWSCでは、動作の記録モードが2種類存在します。「低レベル記録」のモードでは、クリックや入力操作とともに画面内の座標位置を記録しますが、「高レベル記録」モードでは、座標は記録されず、オブジェクトの持つ属性値を、IDとして保存します。低レベル記録では、シナリオ実行時にアプリの表示位置がずれていたり、実行するディスプレイの大きさが違ったりすると、テストが失敗してしまうことがあるため、「高レベル記録」の方が安定性があると言えます。

Ranorexは、動作の記録時に、オブジェクトの持つ属性値と、そのオブジェクト内のクリック位置を座標情報として同時に取得します。またオブジェクトの情報はRanoreXPathという独自のパスで保存されますが、このパスにはオブジェクトの属性値だけでなく操作対象アプリの階層構造も含まれており、より正確で堅牢性の高い認識方法となっています。

テスト自動化の運用

テスト自動化においては、シナリオの作成だけでなく、その後の運用についても考えておく必要があります。シナリオが作成できたら、定期的にそのシナリオを実行し、結果を確認するフェーズに移っていきますが、その際に役立つ機能はあるのでしょうか。

残念ながら、UWSCには実行結果を自動的に出力する機能がないため、自身でコードを記述するなどで対応する必要があります。

Ranorexでは、テスト実行時には必ずレポートが作られます。レポートには、操作のログ、どのテストケースが失敗したか、エラーメッセージ、画面のスクリーンショットなどがデフォルトで出力されます。設定で任意のタイミングでスクリーンショットを取得したり、指定したメッセージを出力したり、逆に不要なログを非表示にするといった変更もできるため、このレポートをエビデンスとして使える場合もあります。これらの設定は画面上で変更でき、コードを書く必要はありません。

レポート機能以外にも、Ranorexにはテストケースの構成を管理する機能や、定期実行のための独自のコマンドライン引数、Jenkins連携機能といった運用フェーズでも役立つ様々な機能が搭載されています。一方で、上記はいずれもUWSCには用意されていません。

・サポート体制

UWSCはフリーのツールのため、有志のWebサイト等をもとに自身で使い方を学習する必要があります。また現時点では更新が止まっている状況のため、セキュリティ面や、使用しているテクノロジーやOSでの使用に問題がないか、特に開発現場で使用する場合には確認が必要です。

RanorexはユーザーガイドやBlogをはじめとしたドキュメント、トレーニングなどといったサポート体制が整っています。定期的にバージョンアップも行われており、機能追加や新しいテクノロジーや環境に対応するバージョンがリリースされています。

UWSCとRanorexの比較結果
UWSCRanorex
シナリオ作成キャプチャ形式キャプチャ形式
シナリオ修正コードベースGUIから設定変更
コードでの修正も可能
テスト関連の機能なし(コードで記述)あり
オブジェクト認識低レベル記録(座標)
高レベル記録(オブジェクトのID)
RanoreXPath
テスト自動化の運用関連機能なし関連機能あり
サポート体制有志によるWebサイトドキュメント、トレーニング
テクニカルサポート等

UWSCとRanorex どちらを選ぶべきか

無償ツールにこだわりたい場合はUWSCがおすすめ

Ranorexは有償ツールであるため、導入時のツール費用がどうしてもかかってしまいます。個人的にまずは利用したい場合や、予算がないという場合は、UWSCで自動化を始めてみるのも良いかと思います。

プログラミング知識のない方、非エンジニアの方にはRanorexがおすすめ

コーディングに関する知識のない方には、UWSCで記録したシナリオを修正するのが難しいため、修正もノーコードでおこなえるRanorexがよいでしょう。

高機能なツールを使用したい場合はRanorexがおすすめ

Ranorexは有償ツールであるため、当然のことではありますが、UWSCより全体的に高機能です。特に開発現場でテスト自動化に使用するのであれば、Ranorexを選択することで、搭載されている様々な機能が役立つ場面が多いと思われます。

継続的なテスト自動化にはRanorexがおすすめ

UWSCのようなコードベースのツールは、人によって書き方や修正方法が異なるため、シナリオが属人化しやすいという点には気を付けておく必要があります。組織で作成したテストシナリオをある程度長く使うことを想定しているのであれば、ノーコードで属人化しづらく、メンテナンス機能の多いRanorexを選んだほうがよいでしょう。

まとめ

RanorexとUWSCを比べるとできることは似ているものの、何を目的にするかによって選ぶべきツールが異なります。テスト自動化に使用したいということであれば、それに特化したRanorexのようなツールを導入することでシナリオ作成やメンテナンスのコスト削減が見込めるため、導入費用がかかったとしても長い目で見れば低コストになることが多いです。

逆に、テスト自動化専用の機能は不要という場合や、個人的に使いたいのであればUWSCで十分かもしれません。またツールの使用感を実際に確認するのも大切です。UWSCを含め、検討中のツールで短いシナリオを作ってみて、使いやすいものを選ぶのも良いと思います。

関連ページ:

Ranorexについて詳しくはこちら