10

しばらくの間、Webアプリケーションの機能テストを行うためにSeleniumRCを調査してきました。私は今、非常に効果的なテスト戦略を見つけたので、Selenium RCから離れたくありません(ASP.NET検証コントロールを検証するための良い方法を見つけるために何週間も費やした後)。

しかし、Selenium RCの冒険がPOCから実際に使用するものに移行している今、問題が発生しています。めちゃくちゃ遅いです。ページをロードし、いくつかのフィールドに入力し、ボタンをクリックする単一のテストを実行すると、実行に数秒かかります。実行中は、個々のフィールドが1つずつ入力されているのが簡単にわかります。FirefoxでSeleniumIDEを使用するのは、それほど遅くはありません。

このページを見つけました。これは、SeleniumRCが遅いことを明確に示していますhttp://selenium-grid.seleniumhq.org/how_it_works.html

しかし、それはなぜですか?ブラウザがSeleniumサーバーをポーリングしているためですか?もしそうなら、このポーリング間隔は変更できませんか?または別の理由があります。私は、実行に人間が気付くほどの時間がかかるリモートコールに慣れていません。

いくつかのテストの実行に非常に時間がかかるのは恐ろしいことです。プレゼンテーション(MVP)、ビジネス、およびデータベースレイヤーのテストスイート全体(500以上のテスト)を、単一のWebページに対して10個のテストを実行するよりもはるかに高速に実行できます。

4

3 に答える 3

7

マルチウィンドウ モードで IE と Selenium をテストしていますか? これは非常に遅いため、seleniumserver を -singlewindow で起動してみてください。

于 2010-09-02T13:05:14.953 に答える
7

機能/統合テストは、特にブラウザーで実行されるため、実行に時間がかかります。これは、MVC の 3 つのレイヤーすべてをロードしてから実行する必要があることを意味し、ページ上で何かを実行するときも同じです。したがって、すべてのアクションがデータベースに到達する可能性があります。これは、単体テストと比較して本質的に長時間実行されるタスクです。

テストはopen、そのページで を実行することから始まり、すべてがロードされるのを待ちます。したがって、これに時間がかかる場合は、ユーザーがページにアクセスするのに時間がかかる可能性があります。例: 大量の画像、縮小されていない JavaScript/CSS、ダウンロードの有効期限が短い。

Seleniumのそのページは、サーバーがボトルネックであると言っています。これは、テストを同期して実行していることを意味し、Selenium Gridに移行した場合、それらを並行して実行してテストスイートをより速く完了することができるためです. セレンサーバーが何をすべきかを確認するためにポーリングしていることを示唆しているわけではありませんが、代わりにセレンサーバーはグリッドハブをポーリングして、それがまだ生きているかどうかを確認し、まだ生きていることを示します。

テストの実行速度が遅いもう 1 つの理由は、Selenium のベース言語が DOM と対話する JavaScript であることです。テストで XPath をロケーターとして使用している場合は特に、DOM によって速度が大幅に低下する可能性があります。XPath + JavaScript + IE + Selenium == 苦痛であり、私たち Selenium 開発者がそれを微調整するためにこれ以上できることはありません。それはアルファ版の Selenium 2 で、http://selenium.googlecode.com/からダウンロードできます。私は .NET の実装に取り​​組んでおり、現時点では速度が大幅に向上しています。変化が私を驚かせたので、私はそれについてブログを書きました. 以前は Selenium 1 で 1 つのテストを実行していたのと同じ時間で、最大 8 つのテストが実行されていました。

于 2010-03-01T09:43:02.370 に答える
2

デフォルトの実行速度が遅すぎる可能性はありますか? DefaultSelenium の getSpeed() および setSpeed() メソッドを確認してください。

于 2010-03-19T03:43:13.873 に答える