3

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

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

通常、このツールは問題なく動作しますが、シミュレーション ユーザー入力にウィンドウ ハンドルを使用しているため、多くのことを実行できません。たとえば、コントロールの名前を取得することはできません (キャプションを取得するだけです)。

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

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

4

5 に答える 5

2

面白い問題!低レベル (Win32 と考えてください) の Windows プログラミングをしばらく行っていませんが、次のようにします。

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

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

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

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

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

幸運を!

カール

于 2008-08-20T20:33:28.237 に答える
1

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

于 2008-08-20T20:17:00.303 に答える
1

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

読む価値のある NUnitForms に関するいくつかの投稿を次に示します。

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

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

于 2008-11-12T09:42:00.780 に答える
0

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

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

この解決策にたどり着くのを手伝ってくれたすべての人に感謝します!

于 2008-08-25T16:14:55.713 に答える
0

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

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

于 2008-11-12T09:23:54.793 に答える