5

約 1 年半の間、デスクトップ アプリケーションと Web アプリケーションの両方の GUI 自動化ツールである SilkTest を使用してきました。マウスとキーボードの入力をシミュレートし、最終的にエンド ユーザーの動作をシミュレートします。ただし、少し不安定であることがわかりました。Button.Click() または DialogBox.Close() メソッドの呼び出しが 9 回連続して正常に機能した場合、10 回目の呼び出しで失敗したように見え、11 回目の呼び出しで元に戻ります。通常、私はこれを SilkTest (またはテスト中のアプリケーション、または OS、またはあなたが持っているもの) の癖にチョークで書き留めますが、Selenium のような他の GUI 自動化ツールにも同様の問題があることがわかります。

Selenium Click() がアンカー要素で失敗する

Selenium Click() がボタン オブジェクトのクリックに失敗する

デスクトップ アプリの場合、各 GUI コントロール/ダイアログにはそれに関連付けられたタグ要素があり (少なくとも Windows ベースの GUI では)、Web ページの場合はページ要素のドメイン オブジェクト モデル階層があることを知っています。私の推測では、これらのツールは、これらの階層をナビゲートし、独自の要素やコントロールを見つける際に問題に遭遇することがあります。しかし、ここで何が起こっているのでしょうか? SilkTest は比較的古い商用ソフトウェア パッケージですが、selenium は比較的新しく、オープン ソースであり、常に進化しています。どちらも同様の問題を抱えている可能性があるという事実は、私にいくつかのフラグを立てます.

また、これは他の GUI テスト ツールにも当てはまりますか? それとも、少し変わった経験をしただけですか?

4

1 に答える 1

6

ここで話していることは2つあります。1つは、テスト対象のアプリケーションで自動化するオブジェクトを見つけるという概念です。SilkTest(およびその他のツール)がこれをどのように行うかについての説明は非常に正確です。つまり、自動化ソフトウェアがコントロールを識別するために使用できるものがある限り、問題はありません。

2つ目は、自動化自体がランダムに失敗する理由です。ツールはコントロールが見つからなかったと報告していないため、クリックやタイプなどの適切なアクションをアプリケーションに送信したと見なす必要があります。これは、アプリケーションが送信するアクションを受け入れる準備ができていない可能性があります。これは、「準備が整う前に」何かをクリックしようとした場合と似ています。この場合、アプリケーションは入力をバッファリングするか破棄するかを決定できます。入力。

では、これをどのように修正しますか?1つの方法は、ツールの機能を使用して、アプリケーションに入力のストリームを盲目的に送信するのではなく、アプリケーションが入力の準備ができたときに解決しようとすることです。SilkTestには、これを実行できる機能があります(TestPartnerも同様です)。セレンは私が使ったことがないのでコメントできません。

これをテストする簡単な方法は、問題のあるアクションの前に数秒間一時停止を挿入し、これをループで実行して、これで問題が解決するかどうかを確認することです。問題が解決する場合は、問題です。これで問題が解決しない場合は、テストツールのベンダーに連絡する必要がある他の問題が発生しています。

アプリケーションはますます複雑になっていることを忘れないでください。つまり、マルチスレッド、通信などです。これらのいずれかにより、自動同期が失敗し、アクションが失敗する可能性があります。

お役に立てば幸いです。

于 2012-05-23T21:30:44.360 に答える