AJAX を多用するエンタープライズ Web アプリケーションのテストを担当しています。人間の介入なしでテストを継続的に実行できるシステムを構築する必要があります。現在、主に負荷テストに関心がありますが、負荷を生成するために使用したのと同じスクリプトを機能テストで使用したいと考えています。
現在、負荷テストのためにグラインダーを使用しています。スクリプトを記録し、それらを処理して、特に非同期リクエストを処理します。このシステムは今のところ機能しています。ただし、スクリプトはデリケートで、開発サイクル中に維持することはできません。HTMLとJavaScriptの詳細を抽象化するプログラミング言語を介して「ブラウザを実行」できる必要がありますが、ヘッドレスでなければなりません。つまり、テスト スクリプトが壊れた場合、それはアプリケーションの実際の破損を表しているに違いありません。xvfbで実行中の firefox は、xvfbで実行されているヘッドレス Linux マシンでも、firefox が依然として大量のリソースを使用しているため、機能しません。ヘッドレスxサーバー下でwebdriverでFirefoxを動かしてみました。
これが理想的なソリューションであるため、私は何日もHTMLUnitに取り組んできました。私はJythonでHTMLUnitドライバーを書いてきたので、それらをグラインダーで使用できます。残念ながら、私は javascript エラー (firefox/chrome/IE の実際のエラーではない) に遭遇しており、私はこの道の終わりにいると思います。いずれにせよ、私はHtmlUnitをよく知っており、代替手段が本当に必要です。
他にもいくつかの解決策があることは知っています ( envjsとzombie.js )。しかし、これらのテクノロジーがどの程度開発されているかはわかりません。行き止まりになってさらに 1 週間を無駄にしたくありません。
Firefox または Webkit のソース コードを使用して、すべてのレンダリング/GUI 呼び出しをコメント アウトし、実際のヘッドレス ブラウザーを作成するのはどれほど難しいでしょうか? これは行われましたか?これを行う方が簡単でしょうか?正直なところ、なぜこれがまだ行われていないのか理解できないので、予想よりもはるかに難しいと推測しています。
妥当なパフォーマンス特性を備えた真のヘッドレス ブラウザを手に入れることができれば (この問題を解決するには大きなサーバー フリートがありますが、GUI レンダリングを備えた実際の Firefox には十分な大きさではありません)、準備が整うと思います。