『継続的デリバリー』 第9章 学習メモ

非機能テストの概観

1.はじめに

継続的デリバリーにおける、非機能テストについての調査記録です。
継続的デリバリーの中での、非機能テストについての概観を記載します。
『継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化』の第9章に対応します。

2.概要・目的

非機能要件の中でも、特に以下を重点として扱う。

非機能要件は、ソフトウェアデリバリーに関する重大なリスクとなる。
非機能要件は、システム特性とも呼ぶ。
どの非機能要件が重要なのかをプロジェクトの開始時に見つけることが重要。
非機能要件をデリバリースケジュールの中で定期的に計測する。

3.対応概要

非機能要件の分析の観点は以下の通り。

  • 可監査性など、各システム特性も1つの機能として開発する。
  • ユーザビリティの問題をパフォーマンスの問題としない。ユーザビリティとパフォーマンスは別個に扱う。

4.対応詳細

キャパシティを確保するためのプログラミングの観点は以下の通り。

キャパシティの計測手法の観点は以下の通り。

  • 利用シナリオのシミュレートをするテスト
  • 複数のテストを1つのテストスイートで並列実行
  • テストの成功/失敗基準の設定
    • 再現性の高い環境
    • 閾値の調整
    • 最大負荷により閾値を設定

キャパシティテストの観点は以下の通り。

  • カナリアリリース戦略の一環として実行
  • 受入テストを引用し、規模を拡大。成功条件を設定して、システムに負荷をかける
  • アプリケーションの記録と再生
  • UI経由でのキャパシティテストを避ける
  • サービスや公開APIへのインタラクションの記録
  • キャパシティテスト用スタブ
  • デプロイメントパイプラインにキャパシティテストを追加

キャパシティテストシステムは、実験用のリソースとなる。

5.影響・作用

非機能要件とは、現実の要件として検討する必要があるが、利用するユーザの考える要件とは異なるもの。
問題の観察や分析が重要であり、これにより、非機能要件の受け入れ基準を、機能要件と同様に設定できるようになる。
受入テストを元にした、より広範囲なシナリオベースのテストで非機能要件を検証することで、システムの特性を包括的で保守可能な形式で維持することができる。

6.おわりに

以上が、継続的デリバリーの中での、非機能テストについての概観です。

7.参考文献

『継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化』 第9章 非機能要件をテストする