要件フェーズ、概要設計フェーズで負荷テストの要不要の判断をする材料として、実施要/実施不要 マトリックスを作ってみました。
結構前に書いたもので、うろ覚え知識の中で適当なことを書いているかもですが、自分の思考整理として置いておきます。
前提となる情報
マトリックスの前に前提となる情報を記載します。
ここでの負荷テスト
負荷テスト支援サービス | テスト支援サービス | インターネットサービス | テクマトリックス株式会社
に記載があるロードテストを指して「負荷テスト」と言っています。
理想は
どんな機能においても負荷テストは実施すべき
現実は
納期、工数の問題(短い、足りない)でできない場合がある。
重要な機能を対象に負荷テストを実施する。
対象アプリケーション
Web アプリ 、ストレージは RDB に対する負荷テストを想定しています。
以前書いた記事
初めて負荷テストを実施した時の感想を初負荷テストで、得られた知見 | Monotalk にまとめています。
よろしければこちらもご確認ください。
マトリックスのパラメータ
-
バッチ/オンライン
バッチ処理かオンライン処理かを表します。 -
大量データあり/大量データなし
大量データの CRUD のありなしを示します。 -
アクセス量 多い/少ない
アクセス量[リクエスト数]の多い/少ないを示します。
オンライン処理のみのパラメータと考えます。 -
外部サービス連携あり/連携なし
外部 Web API の呼び出し(でなくても、自分達で内部処理をコントロールできない API)との連携あり/連携なしを示します。 -
高負荷クエリの発行あり/発行なし
負荷の高いクエリの発行あり/発行なしを示します。
マトリックスの結果値
-
負荷テスト
要不要でいくと、理想は要だと思ったので、やったほうがいいですよのレベルで記載。
5を 必要、1を 不要 と位置づけます。 -
改善施策
負荷テストで問題がでた、または出そうな場合の改善策を記載。-
A
Index の有無。
適切な Index が貼られている場合は、Table の分割等を検討する。 -
B
プログラム実装で、非効率な処理実装がないのか確認する。
RDB であればデッドロックを疑うのもいい。 -
C
参照系で外部サービスの Cache 化。
更新系であれば非同期での更新を検討する。 -
D
クエリのチューニング。
RDB 以外のストレージを使うことを検討する。 -
E
並列処理で発生する問題、Java であれば Syncronyzed の範囲が広すぎる等。
ThreadLocal 等に対象実装を置き換えできないか検討する。
-
マトリックス
NO | バッチ/オンライン | 大量データ | アクセス量 | 外部サービス連携 | 高負荷クエリ | 負荷テスト | 改善施策 |
---|---|---|---|---|---|---|---|
1-1 | batch | 有 | - | 有 | 有 | 5 | A/B/C/D |
1-2 | batch | 有 | - | 有 | 無 | 4 | A/B/C |
1-3 | batch | 有 | - | 無 | 有 | 3 | A/B/D |
1-4 | batch | 有 | - | 無 | 無 | 2 | A/B |
1-5 | batch | 無 | - | 有 | 有 | 3 | B/C/D |
1-6 | batch | 無 | - | 有 | 無 | 2 | B/C |
1-7 | batch | 無 | - | 無 | 有 | 2 | B/D |
1-8 | batch | 無 | - | 無 | 無 | 1 | B |
2-1 | online | 有 | 多 | 有 | 有 | 5 | A/B/C/D/E |
2-2 | online | 有 | 多 | 有 | 無 | 5 | A/B/C/E |
2-3 | online | 有 | 多 | 無 | 有 | 4 | A/B/D/E |
2-4 | online | 有 | 多 | 無 | 無 | 3 | A/B/E |
2-5 | online | 無 | 多 | 有 | 有 | 4 | B/C/D/E |
2-6 | online | 無 | 多 | 有 | 無 | 3 | B/C/E |
2-7 | online | 無 | 多 | 無 | 有 | 3 | B/D/E |
2-8 | online | 無 | 多 | 無 | 無 | 2 | B/E |
2-9 | online | 有 | 少 | 有 | 有 | 5 | A/B/C/D |
2-10 | online | 有 | 少 | 有 | 無 | 4 | A/B/C |
2-11 | online | 有 | 少 | 無 | 有 | 3 | A/B/D |
2-12 | online | 有 | 少 | 無 | 無 | 2 | A/B |
2-13 | online | 無 | 少 | 有 | 有 | 3 | B/C/D |
2-14 | online | 無 | 少 | 有 | 無 | 2 | B/C |
2-15 | online | 無 | 少 | 無 | 有 | 2 | B/D |
2-16 | online | 無 | 少 | 無 | 無 | 1 | B |
アクセス量が多いテスト以外は、負荷テストツール無しでも確認できるのでそのあたりを実施すべきテストフェーズできちっと拾いたいものです。
以上です。
コメント