performance testing vs load testing vs stress testing
パフォーマンステスト、負荷テスト、ストレステストの違い–例を挙げて
このシリーズの以前のチュートリアルが最適です パフォーマンステストガイド 初心者のために。
ソフトウェアテストの分野では、パフォーマンステスト、負荷テスト、ストレステストなどの用語に出くわします。これらの用語は、しばしば誤解され、同じ概念として解釈されます。
ただし、これら3つのテストタイプには大きな違いがあり、テスターが同じことを理解することが重要です。
=> 完全なパフォーマンステストチュートリアルシリーズについては、ここをクリックしてください
このチュートリアルでは、これらのテストタイプのそれぞれについて説明し、それらの正確な違いを理解します。
学習内容:
パフォーマンステスト、負荷テスト、およびストレステストの違い
#1)パフォーマンステスト
パフォーマンステストとは何ですか?
パフォーマンステストは、特定の状況下でシステムのコンポーネントがどのように実行されているかを確認するために実行されるテストです。
製品のリソース使用量、スケーラビリティ、および信頼性も、このテストで検証されます。このテストは、ソフトウェア製品の設計とアーキテクチャにおけるパフォーマンスの問題に対処することに焦点を当てたパフォーマンスエンジニアリングのサブセットです。
上の画像は私たちにそれを明確に説明しています パフォーマンステストは、負荷テストとストレステストの両方のスーパーセットです。 パフォーマンステストに含まれる他のタイプのテストは、スパイクテスト、ボリュームテスト、耐久性テスト、および スケーラビリティテスト 。したがって、パフォーマンステストは基本的に非常に広い用語です。
パフォーマンステストの目標:
パフォーマンステストの主な目標には、システムのベンチマーク動作の確立が含まれます。パフォーマンステスト中に満たす必要のある業界定義のベンチマークがいくつかあります。
パフォーマンステストは、アプリケーションの欠陥を見つけることを目的としていません。また、テストに合格または不合格にはなりません。むしろ、それは設定の重要なタスクに対処します アプリケーションのベンチマークと標準 。パフォーマンステストは非常に正確に行う必要があります。アプリケーション/システムパフォーマンスの綿密な監視は、パフォーマンステストの主な特徴です。
アプリケーションのベンチマークと標準は、速度、応答時間、スループット、リソース使用量、安定性などの属性の観点から設定する必要があります。これらの属性はすべて、パフォーマンステストでテストされます。
例えば、
たとえば、「接続速度と遅延」のグラフを使用して、アプリケーションネットワークのパフォーマンスをテストできます。レイテンシーは、送信元から宛先に到達するデータ間の時間差です。
70kbのページは、28.8kbpsモデムの最悪の接続(遅延= 1000ミリ秒)の場合、ロードに15秒以上かかりませんが、同じサイズのページは、256kbps DSLの平均接続(遅延= 100)の場合、5秒以内に表示されます。ミリ秒)。
1.5 mbpsのT1接続(遅延= 50ミリ秒)では、この目標を達成するためにパフォーマンスベンチマークを1秒に設定します。
別の 例 要求/応答モデルのモデルになります。要求の生成と応答の確認応答の間の時間差がxミリ秒(ミリ秒)からyミリ秒の範囲である必要があるというベンチマークを設定できます。ここで、xとyは標準の数字です。
パフォーマンステストが成功すると、データベース、ネットワーク、ソフトウェア、ハードウェアなどに関連する可能性のあるパフォーマンスの問題のほとんどが予測されます。
#2)負荷テスト
負荷テストは、しきい値の制限に達するまでシステムの負荷を絶えず着実に増加させることによってシステムをテストすることを目的としています。これは、パフォーマンステストのサブセットです。
負荷テストは、市場で入手可能な適切な自動化ツールのいずれかを使用することで簡単に実行できます。 WAPTとLoadRunnerは、負荷テストを支援する2つの有名なツールです。負荷テストは、次のような名前でも有名です。 ボリュームテスト そして 耐久試験 。
ただし、ボリュームテストは主にデータベースに焦点を当てています。 耐久試験 長期間にわたって大きな負荷をかけたままにして、システムをテストします。
負荷テストの唯一の目的は、システムの耐久性をテストして結果を監視するために、システムが処理できる最大のジョブをシステムに割り当てることです。ここで興味深い事実は、ゼロ負荷状態でのシステムの動作を決定するために、システムに空のタスクが与えられることがあるということです。
javaリストの作成方法
負荷テストで監視される属性には、ピークパフォーマンス、サーバースループット、さまざまな負荷レベルでの応答時間(ブレークのしきい値未満)、H / W環境の適切性、パフォーマンスに影響を与えずに処理できるユーザーアプリケーションの数が含まれます。
負荷テストの目標:
負荷テストの目標は次のとおりです。
- バッファオーバーフロー、メモリリーク、メモリの管理ミスに関連するアプリケーションの欠陥を明らかにします。負荷テストの結果として最終的に発生する問題には、負荷分散の問題、帯域幅の問題、既存のシステムの容量などが含まれる場合があります。
- データベース、ハードウェア、ネットワークなど、アプリケーションのすべてのコンポーネントの上限を決定して、アプリケーションが将来予想される負荷を管理できるようにすること。
- アプリケーションのSLAを設定します。
例えば、
一度に1000人のユーザーで溢れる可能性のあるアプリケーションのメール機能を確認することを検討しましょう。現在、1000人のユーザーがさまざまな方法で電子メールトランザクション(読み取り、送信、削除、転送、返信)を実行できます。
ユーザーごとに1時間に1つのトランザクションを実行すると、1時間に1000トランザクションになります。 10トランザクション/ユーザーをシミュレートすることにより、10000トランザクション/時間で電子メールサーバーを占有することにより、電子メールサーバーの負荷テストを行うことができます。
負荷テストの別の例を次の画像に示します。
上の画像は、というツールで実行された負荷テストを示しています。 JMeter 。このテストは、システムが処理できるユーザーの数を特定するために行われます。このテストでは、負荷が1000ユーザーに達するまで、30秒ごとに100ユーザーが追加されます。各ステップは完了するのに30秒かかり、JMeterは次のステップを開始する前に30秒待機します。
負荷が1000スレッドに達すると、それらすべてが一緒に300秒(5分)実行を続け、最後に3秒ごとに10スレッドを停止します。
#3)ストレステスト
ストレステストでは、システムを破壊するために、既存のリソースを過剰なジョブで過負荷にするさまざまなアクティビティが実行されます。 ネガティブテスト システムからのコンポーネントの取り外しを含む、ストレステストの一部としても行われます。
としても知られている 疲労試験 、このテストでは、帯域幅の容量を超えてアプリケーションをテストすることにより、アプリケーションの安定性を把握する必要があります。
したがって、基本的に、ストレステストでは、ピーク負荷および通常の状態を超えたアプリケーションの動作を評価します。
ストレステストの目的は、システムの障害を確認し、システムがどのように正常に回復するかを監視することです。ここでの課題は、テストを開始する前に制御された環境をセットアップして、最も予測不可能なシナリオでシステムの動作を繰り返し正確にキャプチャできるようにすることです。
ストレステストの結果として最終的に発生する問題には、同期の問題、メモリリーク、競合状態などが含まれる場合があります。ストレステストで、ユーザー数が突然増加した場合のシステムの動作をチェックしている場合、それからそれはスパイクテストと呼ばれます。
ストレステストが、ユーザー数の緩やかな増加を通じて一定期間にわたるシステムの持続可能性をチェックすることである場合、それはソークテストと呼ばれます。
ストレステストの目標:
ストレステストの目的は、クラッシュ後のレポートを分析して、障害後のアプリケーションの動作を定義することです。
最大の課題は、障害後にシステムが機密データのセキュリティを危険にさらさないようにすることです。ストレステストが成功すると、最もひどい故障が発生した後でも、システムはすべてのコンポーネントとともに正常に戻ります。
例えば、
例として、OpenOffice.orgのWriter1.1.0のようなワードプロセッサは、文字、プレゼンテーション、スプレッドシートなどの開発に使用されます。ストレステストの目的は、余分な文字をロードすることです。
これを行うには、大量のテキストを処理するしきい値の制限に達するまで、データの行を繰り返し貼り付けます。文字サイズが65,535文字に達するとすぐに、それ以上のデータの受け入れを拒否します。
Writer 1.1.0でのストレステストの結果は、ストレス下でクラッシュせず、状況を適切に処理するという結果を生成します。これにより、厳しいストレス条件下でもアプリケーションが正しく動作していることが確認されます。
7000人のユーザーの突然の立ち上げによるスパイクテストを示す負荷テストの別の例を以下に示します。
FAQの
パフォーマンステスト、ストレステスト、および負荷テストについて十分に議論したので、次に、テスターが回答を求めるいくつかの関連する頻繁な質問を調べてみましょう。
Q#1)負荷テストとパフォーマンステストは同じですか?
回答: これに対する答えは「いいえ」です。それらは同じではありません。
これまでに、パフォーマンステストと負荷テストの違いを明確に理解している必要があります。以下の表の要約を参照して、パフォーマンスと負荷テストの目的、調査するスコープ属性、および明らかにする問題がどのように異なるかを確認できます。
Q#2) 負荷テストと同時にストレステストを行うのは不公平なテストですか?
回答: ストレステストと負荷テストを並行して行うのは不公平なので、これは多くのソフトウェアテストのインタビューや認定試験でもよくある質問です。これに対する答えは「いいえ」です。負荷テストを行うと同時にストレステストを行うことは不公平ではありません。
不公平なテストはありません。テスターとしてのあなたの仕事は、問題を見つけることです。ただし、ソフトウェアテストの実際が適用される場合があり、この状況で検出された問題は修正されない場合があります。
Q#3)リカバリテストはパフォーマンステストの一部ですか?
回答: はい、リカバリテストはパフォーマンステストに分類され、負荷テストとともに実施されることもあります。に 回復テスト 、アプリケーションが障害、クラッシュ、ハードウェア障害、およびその他の同様の問題からどれだけうまく回復できるかとしてアクセスされます。
このアクティビティでは、ソフトウェアが強制的に失敗し、適切に回復できるかどうかが検証されます。 例えば、 アプリケーションの実行中にシステムを突然再起動してから、アプリケーションのデータ整合性を検証します。
Q#4)パフォーマンステストにはコーディングが必要ですか?
回答: パフォーマンステストでは、高度なレベルのコーディングを知っている必要はありません。ただし、プログラミングの基本的な知識があることは、追加の利点です。
例えば、 JMeterを使用している場合は、Javaの基礎を知っておくとよいでしょう。特定のものをデバッグするのに役立ち、必要に応じて独自のスクリプトを作成することもできます。
Q#5)パフォーマンステストのスパイクテストとは何ですか?
回答: スパイクテストでは、膨大な数のユーザーによって負荷が急激に増減し、後でシステムの動作が観察されます。スパイクテストは主に、システムが負荷の突然の変化を処理できるかどうかを確認するために行われます。
.binファイルの実行方法
負荷テストとストレステストの違い
要約すると、以下の表で、負荷テスト、ストレステスト、およびパフォーマンステストの主な違いを観察してみましょう。
性能試験 | 負荷テスト | ストレステスト | |
---|---|---|---|
ドメイン | 負荷およびストレステストのスーパーセット | パフォーマンステストのサブセット。 | パフォーマンステストのサブセット。 |
範囲 | 非常に広い範囲。含まれるもの-負荷テスト、ストレステスト、容量テスト、ボリュームテスト、耐久性テスト、スパイクテスト、スケーラビリティテスト、信頼性テストなど。 | パフォーマンステストと比較して範囲が狭い。ボリュームテストと耐久性テストが含まれます。 | パフォーマンステストと比較して範囲が狭い。ソークテストとスパイクテストが含まれます。 |
主な目標 | アプリケーションのベンチマークと標準を設定します。 | システムの上限を特定するには、アプリのSLAを設定し、システムが大量の負荷を処理する方法を確認します。 | 強い負荷の下でシステムがどのように動作し、障害からどのように回復するかを特定するため。基本的に、予期しないトラフィックの急増に備えてアプリを準備します。 |
負荷制限 | 両方–休憩のしきい値の上下。 | 休憩のしきい値まで | 休憩のしきい値を超える |
研究された属性 | リソース使用量、信頼性、スケーラビリティ、リソース使用量、応答時間、スループット、速度など。 | さまざまな負荷レベルでのピークパフォーマンス、サーバースループット、応答時間 (休憩のしきい値を下回る)、 H / W環境の適切性、処理できるユーザーアプリの数、負荷分散の要件など。 | 帯域幅容量、応答時間を超える安定性 (休憩のしきい値を超える)、 等 |
このテストタイプで特定された問題 | ランタイムの肥大化、最適化の範囲、速度、遅延、スループットなどに関連する問題を含むすべてのパフォーマンスのバグ。基本的に–パフォーマンスに関連するものは何でも! | 負荷分散の問題、帯域幅の問題、システム容量の問題、応答時間の低下、スループットの問題など。 | 過負荷、過負荷状態でのデータ破損の問題、速度低下、メモリリークなどのセキュリティの抜け穴。 |
負荷、ストレス、およびボリュームテストの違い
これで、負荷テストとストレステスト、および2つの違いについてすでに理解できました。ここで、ボリュームテストとは何か、および負荷テストやストレステストとどのように異なるのかを調べてみましょう。
ボリュームテストは、主にデータベースに焦点を当てた一種のパフォーマンステストでもあります。
ボリュームテストでは、特定のボリュームのデータに対してシステムがどのように動作するかがチェックされます。したがって、データベースには最大容量が詰め込まれ、応答時間やサーバースループットなどのパフォーマンスレベルが監視されます。
非常に単純にするために、負荷、ストレス、およびボリュームテストの違いを以下に示します。
ボリュームテスト | 負荷テスト | ストレステスト |
---|---|---|
膨大な量のデータ | 膨大な数のユーザー | システムクラッシュに向けて、ユーザーが多すぎ、データが多すぎます。 |
結論
このチュートリアルでは、パフォーマンステスト、負荷テスト、およびストレステストが互いにどのように異なるか、および各テストタイプの範囲について、例を通して見て理解しました。
また、スパイクテスト、リカバリテスト、ボリュームテストなど、パフォーマンステストの多くのカテゴリを簡単に調べ、これらのそれぞれが互いにどのように異なるかを理解しました。
このチュートリアルが、パフォーマンス、負荷、およびストレステストの実際的な違いを理解するのに非常に役立つことを願っています。
機能テストとパフォーマンステストの詳細については、今後のチュートリアルを確認してください。
=> 完全なパフォーマンステストチュートリアルシリーズについては、こちらをご覧ください