k6という負荷試験のツールを見つけました。Grafana Labsのプロダクトです。負荷試験の勉強になりましたので、翻訳しながら紹介します。
負荷試験の種類
- スモークテスト
- 負荷テスト
- ストレステスト
- スパイクテスト
- ソークテスト
スモークテスト
スモークテストの役割は、システムが問題なく最小限の負荷を処理できることを確認することです。
目的
- テストスクリプトにエラーがないことを確認します。
- 最小の負荷でシステムがエラーをスローしないことを確認します。
例
一人のユーザーが1分間アクセスし、リクエストの99%以上が1.5秒以内にレスポンスを返却することを確認
アクセス数
負荷テスト
負荷テストは主に、同時ユーザーまたは1秒あたりのリクエスト数の観点からシステムのパフォーマンスを評価することに関係しています。
目的
- 通常の負荷とピーク負荷の下でのシステムの現在のパフォーマンスを評価します。
- システム(コードとインフラストラクチャ)に変更を加えるときは、引き続きパフォーマンス基準を満たしていることを確認してください。
例
運用のピーク時に100人のユーザーがいるとします。はじめの5分間でユーザーが0人から100人に増加し、ユーザーが100人の状態で10分間アクセスを継続。その後5分間かけてユーザーが0人まで減少する。このリクエストを行い、リクエストの99%以上が1.5秒以内にレスポンスを返却することを確認。
アクセス数
ストレステスト
ストレステストは、システムの限界を判断するために使用される負荷テストの一種です。このテストの目的は、極端な条件下でのシステムの安定性と信頼性を検証することです。
目的
- 極端な条件下でのシステムの動作。
- ユーザーまたはスループットの観点から、システムの最大容量はどれくらいですか。
- システムの限界点とその障害モード。
- ストレステストが終了した後、手動の介入なしでシステムが回復する場合。
例
2分ごとに100ユーザー増加し高負荷状態で5分継続。インフラストラクチャが自動スケーリングするように構成されている場合、自動スケーリングメカニズムが負荷の増加にどれだけ迅速に反応するか、スケーリングイベント中に障害が発生しないかを確認することができます。
アクセス数
スパイクテスト
スパイクテストはストレステストのバリエーションですが、負荷が徐々に増加することはありません。代わりに、非常に短い期間で極端な負荷に急上昇します。ストレステストではSUT(テスト対象システム)のインフラストラクチャを段階的にスケールアップできますが、スパイクテストではできません。
目的
- 突然のトラフィックの急増の下でシステムがどのように機能するか。
- トラフィックが落ち着いたらシステムが回復するかどうか。
例
スパイクテストの典型的な必要性は、スーパーボウルや人気のある歌の競技会などの大きなテレビイベントで広告を購入した場合です。
アクセス数
ソークテスト
ソークテストは、長期間にわたるシステムの信頼性とパフォーマンスについて教えてくれます。
目的
- システムにバグやメモリリークが発生していないことを確認します。これにより、数時間の操作後にクラッシュまたは再起動が発生します。
- 予想されるアプリケーションの再起動によってリクエストが失われないことを確認します。
- 散発的に発生する競合状態に関連するバグを見つけます。
- データベースが割り当てられたストレージスペースを使い果たして停止しないことを確認してください。
- ログが割り当てられたディスクストレージを使い果たしていないことを確認してください。
- 依存している外部サービスが、一定量のリクエストが実行された後も機能を停止しないようにしてください。
例
想定されるアクセス数の80%のアクセスを4時間継続させて実施する
アクセス数