13

私はビデオ広告配信技術であるテストするシステムを持っています。私は広告を配信するために1〜2分のようなすべてのビデオを読み込む必要があります。動画はFlashクライアントで再生され、YouTubeなどのFLVストリームとしてストリーミングされます。セレンを使って重い負荷をシミュレートするテストをストレスにかける方法

ブラウザだけでテストする必要がある理由は他の方法ではうまくいかず、ビデオストリーミングサーバーと広告サーバーの両方を同時にテストし、広告をリアルタイムで表示することです。

私はSelenium、WatiN、Automation Anywhereなどの多くの自動化ツールを使用しています。しかし、私のマシン(32GB RAM、16コアCPU)で10000台のブラウザを使い始めようとしているときは、誰もその仕事をすることができません。

Seleniumでは、これまでの最大FireFoxインスタンスを起動できますが、それでも低すぎます。インスタンスの半分がテストを実行しません。

セレンに関して何か提案がありますか?

+0

ロードをシミュレートする必要がある場合は、pylot(http://pylot.org/)というオープンソースツールを使用して、このツールで同時接続をシミュレートし、XMLで書かれたテストシナリオを提供することができますサイトに)。このツールは実際のブラウザを使用していません。 – alonp

答えて

4

あなたのマシンで10,000のブラウザを実行するつもりはありません。それはブラウザインスタンスごとに3.2MBの物理メモリを与え、私はFireFoxがそれを気に入らないと確信しています。

多くのスレッドでサーバーにヒットするJMeterスクリプトを作成できます。それはUIと対話しませんが、あなたがそれを伝えるどんなURLにでも当たる多くのクライアントの負荷をシミュレートします。セッションを録画してセッションを簡単にセットアップできるようにする機能も含まれています。

+0

10000は仮想番号でした。現在のサーバー設定でも、1000〜5000でも問題ありません。 Jmeterは私の場合、テストを成功させるために1分間実行する必要のあるリッチメディアアプリケーションを持っているので役に立たない。 –

+2

3.2MBまたは32MBのRAM、私はどちらかでも同様にうまくチョークすると思う。クライアントが何をしているのか気にする人が1000スレッドあると思うなら、おそらくあなたはサーバをテストしているでしょうか?クライアントがメディアを使って本格的なFirefoxで何かをやっているのか、リッチメディアアプリと同じタイミングで適切なURLにカールやwgetを書いても、サーバーには関係ありませんか? – digitaljoel

+2

テストでは、負荷のかかるサーバーだけでなく、リッチメディアアプリケーションの動作がストレス下でどのように動作するかに関連しています。私は可能な最も近い現実世界のユーザーシナリオをここでテストしようとしています。カールの要求は、リッチメディアクライアントアプリケーションを実行しないので、アプリケーション全体の実際のテストにはなりません。 –

1

私の経験によれば、Windowsマシンを使用している場合は、開かれるブラウザウィンドウインスタンスの数に制限があります。前回のテストでは、100〜150のブラウザウィンドウが制限されていました。

ブラウザウィンドウを開く必要のないヘッドレスロボットをお勧めします。 Seleniumの最新バージョンにはその機能があると思います。しかし、それはあなたが10,000人以上のユーザーのインスタンスをシミュレートしようとしているので負荷テストに似ているようですが、JMeterやLoadRunnerのような負荷テストツールを使用することをお勧めします。

+0

セラムで500以上のfirefoxインスタンスを実行できますが、問題の半分は記録されたテストスクリプトをロードしません。空白のブラウザが表示されます。このテストは実際のブラウザがなければ不可能です。テストシナリオの詳細については元の投稿を更新します。 –

+0

Sumit、アクティブなブラウザウィンドウでテストを実行する必要がある場合は、今すぐ次のオプションがあります。 –

+0

アクティブなブラウザウィンドウでテストを実行しなければならない場合は、すでにセレンスクリプトを作成しています。以下のオプションを提案する:1)Amazon EC2で複数のインスタンスを使用する。 EC2インスタンスでSelenium Gridを設定できます。詳細はhttp://selenium-grid.seleniumhq.org/setting_up_selenium_grid_on_ec2.htmlをご覧ください。 2)データセキュリティやその他の理由でクラウドを使用できない場合は、ラボで複数のテストマシンを使用してセレングリッドを設定できます。個人的には、EC2をその高速で簡単で安価なオプションとして使用することをお勧めします。 –

1

あなたは、高いトラフィックに基づいてクライアントが見るものを確認しようとしているのですか?

この場合、ジョエルはかなり正しいです。あなたが絶対にを持っていれば、クライアントが見るものを見ると、スレッドヒットを使用して結果をデータベースにダンプすることができます。とにかくクライアントには何かが表示され、何千ものブラウザインスタンスよりも並べ替えが簡単です。

どちらの方法でも、サーバー側にエラーがない場合、クライアントにエラーは表示されません。帯域幅制限環境、CPU集約環境、またはメモリ集約環境で機能をテストする場合、数千のブラウザインスタンスを実行するよりもはるかに容易です。

5

Seleniumは、特にローカルでブラウザを実行している場合は、ロード/ストレステストに最適化されていません。 1000以上のブラウザを実行すると、最も肥沃なサーバーでもチョークします。 RAMは明らかなボトルネックですが、CPUリソースと帯域幅も限られています。後者は、あなたがビデオを読み込んでいる場合の主な関心事です。

ロードバランシングが正しく機能しない可能性があるため、特定の仮想ユーザーへのビデオ広告の実際の配信だけでなく、1つのIPからテストすることはもちろんです。

既存のSeleniumテストに挑戦したい場合は、BrowserMobで良い経験をしています。彼らは基本的に、実際のブラウザの負荷テストを行うための巨大なグリッドをAWSに分散させています。

もう1つの推奨事項は、実際のパフォーマンステストツールです。 Soasta CloudTestをお勧めします。彼らは100人のユーザーを実行する無料のバージョンを持っているので、それはあなたに適しているかどうかを見ることができます。私は、CloudTestのスクリプティングが比較的簡単であることを発見しました。

免責事項:両社との私の経験は、支払いを受けた顧客であり、私は一度も働いたことがありません。

+0

BrowserMobがNeustarに変更されたようです... –

0

あなたのポストは私には広告ベースの不正行為の匂いがしますが、いずれにせよ、Firefox以外にもさまざまなウェブブラウザの使用を検討しましたか? PhantomJSは、Seleniumと互換性のあるヘッドなしWebkitベースのブラウザです。 DOM処理、CSSセレクタ、Javascript、Canvasなどのすべてのコアブラウザ機能をサポートしています。 Flashに対応しているかどうかはわかりません。

This postには、あなたが考慮する可能性のある他のヘッドレス型自動ブラウザのウェブブラウザがあります。

また、各ブラウザインスタンスがFlashプラグインをインスタンス化している場合、FirefoxではなくFlashで問題が発生する可能性を無視しないでください。あるいは、なぜいくつかの異なるFirefoxプロセスをインスタンス化するのですか?代わりにタブを使用して、あなたが望むものを達成できますか?

関連する問題