2012-01-04 9 views
11

最近、JMeterを使用してWebアプリケーションの負荷テストを作成し始めました。私はこのツールが本当に好きですし、いくつかのビデオを見てから、テストの作成を始めるのは本当に簡単でした。には、画像、css、jsなどの静的リソースが含まれています。

しかし私は明確ではないことが1つあります。

JMeterホームページでは、"Best practice" sectionがあります。とりわけ、それは言う:

あなたが興味を持っていないすべてのリクエストを除外することが、最も重要なことです。たとえば、画像要求を記録することに意味はありません.JMeterは、 HTTPリクエストを参照してください)。これらはあなたのテストプランを乱すだけです。

他のページでもこれを見ましたが、画像やその他の静的リソースのリクエストをテストに含めるべきではないと言っています。しかし、私は静的リソースを含めるべきではないという理由について、良い説明を与える単一のページをまだ見つけることができませんでした。

確かに、JMeterはブラウザではありませんが、静的リソースのリクエストはアプリケーションのパフォーマンスに影響を与えますか?誰かが私に良い説明をしてくれますか:-)

答えて

7

すべては、テストしようとするものによって異なります。

一般的にJMeterのパフォーマンステストには、具体的なテストと、私が心配していることを見ている「安全ネット」テストの2つのタイプがあります。それは確かに私がそれを期待するように動作します。

特定のテストでは、Webアプリケーションの動的な側面(サーバー側のコード(.aspx、.php、.jspなど))がほぼ常に処理されます。これは、ほとんどのアプリケーションでボトルネックが発生する場所です。サーバー側のスクリプトを実行する作業は、ディスクからCSSファイルを取得して追加の処理を行わずにブラウザに提供する作業よりも何倍もあります。サーバー側のスクリプトをテストしている場合は、テストを混乱させ、テストクライアント側で帯域幅を消費するため、アセットもロードしたくありません。私のテストでは、JMeterサーバーが各スレッドで5MBのビデオファイルをダウンロードし、すべての帯域幅を消費しているので、私のテストは失敗したくありません。実際に何をしようとしているのかは、サーバーがサポートできる秒あたりのログイン数です。

静的ファイルを処理するWebサーバーの機能をテストするのは非常に重要ではありません。マイクロソフト、Apacheチーム、誰でも、これですばらしい仕事をしています。非常に具体的な懸念がない限り、テスト予算を使う良い方法があります。

セーフティネットテストは、実際にすべてが実際に私が期待した通りに機能することを証明するために、すべてのものをまとめました。通常、これらは実稼働環境で実行されるため、CDN、プロダクショングレードのハードウェア、および「ライブ」アプリケーションの設定があります。私は通常、これにクラウドベースのテストサービスを採用しているため、異なる場所からのパフォーマンスを確認し、生産段階のキットにストレスを与えるのに十分な負荷を発生させることができます。これにはJMeterを使用することができます(過去に私が使用していたJMeter Cloudサービスがいくつかあります)。それは高価です、それはダウンタイムを必要とするかもしれません、あなたは安全ネットとしてそれを行う必要があります。

+0

+1。私は自分の答えを好む。 –

+0

偉大な答えをありがとう、本当によく説明! – Daniel

1

あなたのアプリが1ページだけを見て行き、行くという偶然の訪問者によって使用されない限り、静的リソースが一度ダウンロードされてからサービスされる可能性がありますブラウザキャッシュから取得します。

また、静的リソースはユーザーの帯域幅と全体的な応答時間に影響しますが、サーバーの負荷にはあまり影響を与えません。測定する種類のものではない可能性があります。

実際のユーザーがアプリケーションで行うことを模倣する必要があると思います。

6

適切なパフォーマンステスト(特にストレステスト)を行う場合は、アプリケーションの応答時間をユーザー数/スレッド数の関数として生成する必要がある場合は、すべての静的リソースを含める必要がありますjMeterプロキシはテストを記録したときにそれらを保存していました。

ブラウザキャッシュを考慮するには、HTTP Cache ManagerまたはOnce Only controllerのいずれかを使用して、各スレッドが最初のリクエストで静的なものを1回だけダウンロードするようにします。
HTTPキャッシュマネージャーは、スレッドグループの最初の子として、テストに組み込むだけで、セットアップがはるかに簡単な、お勧めの方法です。
一度初めてのリクエストでのみユーザーにログインする必要がある場合、コントローラーのみが定期的に使用されます。

非静的なHTTPリクエストをBTWでパラメータ化することをお勧めします。同じ商品名を検索する。いつも同じ本を買うことは、あなたのアプリのパフォーマンスの効率性の一般的な考え方を与えることができる出発点です。

希望します。

関連する問題