16

AJAX を多用するエンタープライズ Web アプリケーションのテストを担当しています。人間の介入なしでテストを継続的に実行できるシステムを構築する必要があります。現在、主に負荷テストに関心がありますが、負荷を生成するために使用したのと同じスクリプトを機能テストで使用したいと考えています。

現在、負荷テストのためにグラインダーを使用しています。スクリプトを記録し、それらを処理して、特に非同期リクエストを処理します。このシステムは今のところ機能しています。ただし、スクリプトはデリケートで、開発サイクル中に維持することはできません。HTMLとJavaScriptの詳細を抽象化するプログラミング言語を介して「ブラウザを実行」できる必要がありますが、ヘッドレスでなければなりません。つまり、テスト スクリプトが壊れた場合、それはアプリケーションの実際の破損を表しているに違いありません。xvfbで実行中の firefox は、xvfbで実行されているヘッドレス Linux マシンでも、firefox が依然として大量のリソースを使用しているため、機能しませ。ヘッドレスxサーバー下でwebdriverでFirefoxを動かしてみました。

これが理想的なソリューションであるため、私は何日もHTMLUnitに取り組んできました。私はJythonでHTMLUnitドライバーを書いてきたので、それらをグラインダーで使用できます。残念ながら、私は javascript エラー (firefox/chrome/IE の実際のエラーではない) に遭遇しており、私はこの道の終わりにいると思います。いずれにせよ、私はHtmlUnitをよく知っており、代替手段が本当に必要です。

他にもいくつかの解決策があることは知っています ( envjszombie.js )。しかし、これらのテクノロジーがどの程度開発されているかはわかりません。行き止まりになってさらに 1 週​​間を無駄にしたくありません。

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

妥当なパフォーマンス特性を備えた真のヘッドレス ブラウザを手に入れることができれば (この問題を解決するには大きなサーバー フリートがありますが、GUI レンダリングを備えた実際の Firefox には十分な大きさではありません)、準備が整うと思います。

4

4 に答える 4

14

ここに画像の説明を入力

これはhttp://www.phantomjs.org/にいる人たちによって行われました。彼ら自身の言葉で:

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

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

PhantomJS は Ariya Hidayat によって作成されました

于 2011-09-30T12:19:39.960 に答える
1

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

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

以下も参照してください。

于 2011-01-18T03:01:36.833 に答える
1

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

于 2014-02-10T09:00:23.730 に答える
0

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

于 2011-05-16T05:58:03.770 に答える