品質保証(SQA)
定義
ソフトウェア品質を体系的に監視・改善するための活動。テストが欠陥を「発見」するのに対し、QAは欠陥を「防ぐ」プロセスを構築することを目的とする。
なぜ重要か
品質はテストで追加できない。設計・実装プロセスに組み込むものである(Deming)。
テストフェーズで品質を担保しようとすると、修正コストが爆発する。要件・設計・実装の各フェーズで品質ゲートを設けることで、欠陥の発生自体を防ぐ。
品質の8側面(Garvin)
| 側面 | 意味 |
|---|---|
| パフォーマンス | 主要機能の動作特性 |
| 機能性 | 仕様通りの機能の存在 |
| 信頼性 | 障害なしに動作し続ける能力 |
| 適合性 | 基準・標準への準拠 |
| 耐久性 | メンテナンスなしに機能し続ける時間 |
| 保守性 | 欠陥を発見・修正する容易さ |
| 審美性 | ユーザーインターフェースの質感 |
| 知覚品質 | ユーザーの主観的な品質感 |
SQAの主要活動
- コードレビュー: Pull Requestベースで実装を検査。欠陥発見だけでなく知識共有の場として機能させる。
- 静的解析: linter・型チェッカーで実行前に欠陥を発見する
- 品質メトリクスの計測: 欠陥密度・テストカバレッジ・サイクロマティック複雑度(10以下推奨)
適用場面
- チームの「良いコード」の定義を合意するとき
- コードレビューの観点を標準化するとき
- 本番障害のポストモーテムをプロセス改善につなげるとき
関連概念
出典
実践ソフトウェアエンジニアリング(Pressman)第16〜18章