Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

性能テストの実施レベル

IPA 非機能要求グレード *1 の性能品質保証(B.4)では、測定頻度・確認範囲のほかに「スパイク負荷対応」(B.4.3.1)があり、これをテストでどこまで確認するか?が一つのポイントになります。その他にも様々な観点があり、たとえば以下ページの「3.3 テスト方法の決定」にある観点が代表的です。

https://qiita.com/s_yokoi/items/4e21aed46e561badce94#33-%E3%83%86%E3%82%B9%E3%83%88%E6%96%B9%E6%B3%95%E3%81%AE%E6%B1%BA%E5%AE%9A

その他によく行われるテストとしては、処理を長時間実行してメモリ・スレッド・コネクションなどのリークを確認する耐久テスト(ヒートラン)があります。

https://www.oracle.com/jp/technical-resources/article/ats-tech/tech/useful-class-8.html

# 名称 別名 備考
1 予備テスト 単価測定、無風性能テスト 口語では単に「味見」と言われることもある
2 パフォーマンステスト 性能テスト、性能測定
3 ロードテスト 負荷テスト 性能テストは実施せず、いきなり性能要件の上限でマシン負荷と応答時間を測定することが多い
4 キャパシティテスト 限界値テスト、高負荷テスト 「限界値テスト」は日本語の文脈だとBoundary value analysis(境界値テスト)の類義語として使われる場合が多いので「高負荷テスト」と呼ぶことが多い
5 ストレステスト 過負荷テスト、死に様テスト
6 耐久テスト ヒートラン ストレステストで兼ねることも多い

個人的には「単価測定」「負荷テスト」「高負荷テスト」「過負荷テスト」の4つに分けて説明することが多いです。

見逃されがちなのがストレステストと耐久テストです。ただ、非機能要求グレードB.4.3.1がレベル1(Sorry動作なし)だとストレステストは実施しないケースもあります。たとえば接続元の数が限定されており、接続元1つからは高々1つしかコネクションが張られず、かつ1コネクションごとの最大データ量が決まっている(または内部処理よりデータが届く速度の方が遅い)場合には、どうやってもサーバビジーになるほどの負荷はかけられないので、ストレステストは実施しません。