想定のアクセスを再現して、応答時間・エラー率・限界を測る(k6・JMeter など)。
負荷テストは、多くの利用者が同時に使ったときに、速さと安定が目標を満たすか、どこまで耐えられるかを確かめるテストです。k6、JMeter、Gatling、Locust などの道具でリクエストを大量に送ります。
シナリオの作り方
- 実際の使われ方に合わせる:アクセスのログや分析から、よく使われる操作とその割合を出す(例:一覧を見る 70%・詳細 25%・購入 5%)。1つの API だけを叩き続けると、キャッシュが効いて実際より良い結果になりがちです。
- 目標の量を決める:普段の最大のアクセス、セールなどの山、その何倍まで耐えるべきか。
- 種類を使い分ける(下の表)。
- 本番に近い環境で流す。データ量が少ない環境では、遅い SQL が見つかりません。外部サービス(決済など)はモックにし、本番や他社に負荷をかけないよう事前に合意します。
| 種類 | 負荷のかけ方 | 分かること |
|---|---|---|
| 負荷テスト | 目標の量(普段の最大や山)を一定時間 | 目標の応答時間・エラー率を満たすか |
| ストレステスト | 限界を超えるまで少しずつ上げる | 限界点と、壊れ方(止まるか・遅くなるか・戻るか) |
| 耐久テスト | 普段くらいの量を数時間〜長時間 | メモリの漏れ、ディスクやログの増え方、接続の取りこぼし |
| スパイクテスト | 短い時間で急に増やす | オートスケールが間に合うか、キューやレート制限の動き |
面接ではこう答える
負荷テストは、多くの利用者が同時に使ったときに、応答時間とエラー率が目標を満たすか、どこまで耐えられるかを確かめるテストです。目標の量をかける負荷テスト、限界まで上げるストレステスト、長時間かける耐久テスト、急に増やすスパイクテストを使い分けます。シナリオはアクセスのログから実際の操作の割合で作り、本番に近いデータ量の環境で流します。
QAとの関わりセールやキャンペーンの前、大きな構成変更の前に、SRE や開発者と一緒に計画する場面が多いです。