質問

当社は現在、コンパクトなフレームワーク アプリケーション用の GUI 自動テスト ツールを作成しています。最初は多くのツールを検索しましたが、どれも私たちに合ったものはありませんでした。

このツールを使用すると、テスト ケースを記録し、それらをテスト スイートにグループ化できます。すべてのテスト スイートに対して、テスト対象のアプリケーションを起動してユーザー入力をシミュレートするアプリケーションが生成されます。

一般に、このツールは正常に動作しますが、私たちが使用しているように、 ウィンドウハンドル シミュレーションのユーザー入力に関しては、あまり多くのことはできません。たとえば、コントロールの名前を取得することは不可能です (キャプションを取得するだけです)。

ウィンドウ ハンドルを使用する場合のもう 1 つの問題は、変更の確認です。現時点では、コントロールのクリックをシミュレートし、その結果に応じて、アプリケーションが次のステップに進んだかどうかを判断します。

そのようなことを行うための他の(より簡単な)方法(たとえば、メッセージキューなど)はありますか?

役に立ちましたか?

解決

自動 GUI テスト ツールが、アプリケーションが記述されているフレームワークに関する知識を持っている場合、その情報を使用して、より優れた、またはより高度なスクリプトを作成できます。 テスト完了 たとえば、Borland の VCL と WinForms について知っています。Windows Presentation Foundation を使用してアプリケーションのビルドをテストする場合、これに対する高度なサポートが提供されます。 組み入れる.

他のヒント

面白い問題ですね!私はしばらくの間、低レベル (Win32 を思い浮かべてください) Windows プログラミングを行っていませんでしたが、私ならやることは次のとおりです。

名前付きパイプを使用して、アプリケーションにそれをリッスンさせます。この名前付きパイプを通信媒体として使用して、実際の単純なプロトコルを実装します。これにより、HWND を指定したコントロールの名前、またはその他の便利なものをアプリケーションにクエリできます。アプリケーションとテスト フレームワーク間で十分な情報が交換されるように、プロトコルが十分に充実していることを確認してください。テスト フレームワークがアプリから過度の「特別な動作」を生成しないことを確認してください。その場合、実際には機能をテストするのではなく、テスト フレームワークをテストすることになります。

これを実装するには、おそらくもっとエレガントでクールな方法があると思いますが、単純な Win32 API 呼び出しのみを使用して、これが私の頭のてっぺんから覚えている方法です。

私たちが職場の製品に実装したもう 1 つのアプローチは、マウス クリックやキー イベントなどのユーザー イベントをイベント スクリプトに記録することです。これは、アプリケーションがそれを再生し、それらのイベントをメッセージ キューに人為的に挿入して、最初にスクリプトを記録したときと同じように動作させることができるほど十分な内容である必要があります。基本的に、スクリプトを再生するときにユーザーをシミュレートします。

それに加えて、スクリプトを記録するときに 1 回、スクリプトを再生するときに 1 回、重要な状態 (ユーザーのドキュメント、設定、GUI コントロール階層など) を記録できます。これにより、比較できる 2 つのデータ セットが得られ、たとえばすべてが同じであることを確認できます。このソリューションにより、変更は簡単ではありませんが (GUI が変更された場合は再記録する必要があります)、優れた回帰テストが可能になります。

(編集:これは、ベータ テスト中の優れた QA ツールでもあります。たとえば、次のとおりです。ユーザーにアクションを記録してもらうだけで、クラッシュが発生した場合は、スクリプトを再生するだけで問題を簡単に再現できる可能性が高くなります)

幸運を!

カール

使用 NUnitForms. 。私はシングルスレッドおよびマルチスレッドアプリでこれらを使用して大成功を収めました。ハンドルなどについて心配する必要はありません

NUnitForms に関する読む価値のある記事をいくつか紹介します。

NUnitForms と失敗した DragDrop 登録 - MTA と STA の問題

NUnitForms を使用したコンパイル済みアプリケーションの実行 GUI テスト

私はついに、テストアプリケーションとテスト対象アプリケーションの間で通信するための解決策を見つけました。 管理されたスパイ. 。これは基本的に、ManagedSpyLib 上に構築された .NET アプリケーションです。

ManagedSpyLib を使用すると、別のプロセスの Windows フォーム コントロールにプログラムでアクセスできます。このために、ウィンドウフックとメモリマッピングファイルを使用します。

この解決策にたどり着くのに協力してくれた皆さんに感謝します。

Managed Spy は、コンパクトなフレームワーク アプリケーション用のソリューションを提供しません。

Jamo Solutions 社 (www.jamosolutions.com) は、.net コンパクト フレームワーク アプリケーションを含む、モバイル デバイスでの自動テストの要件を満たしています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top