2011-01-18 4 views
16

私は、AJAXを大量に使用するエンタープライズWebアプリケーションのテストを担当しています。人間の介入なしにテストを連続して実行できるシステムを構築する必要があります。現在私は主に負荷テストに興味がありますが、機能テストで使用される負荷を生成するために使用された同じスクリプトが必要です。リアルレスヘッドブラウザ

現在、負荷テストのために私はgrinderを使用しています。スクリプトを記録し、非同期要求を処理するためにスクリプトを記録します。このシステムは今のところ機能します。スクリプトは繊細で、私たちの開発サイクル中にそれらを維持することはできません。私は、HTMLやJavaScriptの詳細を抽象化するプログラミング言語を使って 'ブラウザを走らせる'ことができる必要がありますが、ヘッドレスでなければなりません。言い換えれば、私のテストスクリプトが壊れた場合、それはアプリケーションの実際の破損を表す必要があります。 xvfbで実行中のfirefoxは、xvfbを実行しているヘッドレスLinuxマシンでも、firefoxは依然として多すぎるリソースを使用しているため、動作しません。私はheadless xサーバーの下でwebdriverでfirefoxを運転しようとしました。

HTMLUnitは、これが理想的なソリューションであるため、数日間作業しています。私はHTMLUnitのドライバをJythonに書いているので、グラインダーで使うことができます。残念ながら、私はjavascriptのエラー(firefox/chrome/IEでは実際のエラーではありません)を実行しています。私はこのために道路の終わりにいると思います。いずれにしても、私はHtmlUnitをよく知っていて、本当に別のものが必要です。

他の解決策がいくつかあります(envjsおよびzombie.js)。しかし、私はこれらの技術がどのように開発されたのか分かりませんし、もう1週間は無駄な時間を無駄にしたくはありません。

FirefoxやWebkitのいずれかのソースコードを取得して、すべてのレンダリング/ GUI呼び出しをコメントアウトし、実際のヘッドレスブラウザを作成することはどれほど難しいでしょうか?これは完了しましたか?これを他のものよりも簡単に行うことができますか?正直なところ、なぜこれがまだ行われていないのかわからないので、私はそれが私が予想しているよりずっと難しいと推測しています。

妥当なパフォーマンス特性を持つ真のヘッドレスブラウザを得ることができれば(私はこの問題で投げる大規模なサーバー艦隊を持っていますが、実際のFirefoxのGUIレンダリングでは十分ではありません)、私は設定されます。

+0

BrowserMob(http://browsermob.com/performance-testing)やGomez(http://www.gomez.com/products-solutions/products/load-testing/)のような商用サービスの使用を検討しましたか?安くはないが、Firefox/Webkitをハックしようとするよりも簡単だ。 –

+0

私は本当にこれらのサービスを見ていないが、私はそれらを聞いた。私は、オープンソース技術を用いて社内システムを組み立てることに熱心です。私たちは多くのテストサーバーを持っており、実際にそれらを利用したいと考えています。しかし、提案をありがとう。 – user573225

答えて

1

利用可能なJavaScriptユニットテストツールを利用して、必要な種類の環境を組み立てることができます。

たとえば、env.jsrhinoにロードすると、ほとんどのJavaScriptをテストするための許容される偽のブラウザが得られることがわかりました。ウィンドウに相対的な要素のような特定のDOM属性は不足していますが、これは私の経験上深刻な問題ではありません。

も参照してください:

+0

ありがとう、私は次にrhinoでenv.jsを試してみるかもしれません。これにより、現在のJavaベースの読み込みフレームワークと統合することができます。 HtmlUnitと比較してどのようなアイデアがありますか? zombie.jsの経験は何ですか? – user573225

+0

私が思い出したことは、HTMLUnitを最後に見たときに、私が必要としていたJavaScriptサポートがなくなったことです。私はzombie.jsを試していないが、それを指摘してくれてありがとうございます。 – Jonah

0

WebKitDriverを見てください。このプロジェクトには、WebKitのヘッドレス実装が含まれています。

14

enter image description here

これを超えるhttp://www.phantomjs.org/で男によって行われています。彼ら自身の言葉で:

PhantomJSは、JavaScript APIを備えたヘッドレスWebKitです。 DOM処理、CSSセレクタ、JSON、Canvas、SVGなど、さまざまなWeb標準を素早くネイティブにサポートしています。

PhantomJSは、Webベースのアプリケーション、サイトスクレイピング、ページキャプチャ、SVGレンダラ、PDFコンバータなどのさまざまなユースケースのヘッドレステストに最適なソリューションです。

PhantomJSはLoadBoosterを見てみましょうAriyaヒダヤットによって

+5

Geckoはどうですか? – Rolf

+1

www.slimerjs.orgでも、ヘッドレスでxvfbなし –

1

が作成されます。これは、ヘッドレスブラウザPhantomJSを使用してWebサイトをテストするクラウドベースの負荷テストサービスです。免責事項:私はLoadBoosterのために働いています。