なぜテストが必要か?
なぜソフトウェア開発においてテストが不可欠なのか? その理由を「品質への貢献」と「バグ発生のメカニズム」から解説します。
テストの貢献
Section titled “テストの貢献”テストは、費用対効果の高い方法で欠陥を検出・除去することで、ソフトウェアの品質を高めることに貢献します。 また、開発の初期段階(要件定義や設計)でテスト活動(レビューなど)を行うことで、欠陥の作り込みそのものを防ぐことも可能です。
品質保証 (QA) と品質管理 (QC)
Section titled “品質保証 (QA) と品質管理 (QC)”現場では混同されがちですが、JSTQBでは以下のように定義されています。
- 品質マネジメント (QM): 組織全体の品質に対する取り組み。QAとQCを含む上位概念。
- 品質保証 (QA): 「プロセス」に焦点を当てる。適切なプロセスが守られているかを確認し、欠陥の予防を目指す。(例:プロセスの改善、再発防止策の策定)
- 品質管理 (QC): 「プロダクト」に焦点を当てる。成果物の品質を確認し、欠陥を検出する。(例:テスト活動全般)
「テストは品質管理(QC)の一部」 ですが、QA(プロセス改善)のためのフィードバックを提供する重要な役割も担っています。
エラー・欠陥・故障・根本原因
Section titled “エラー・欠陥・故障・根本原因”バグがなぜ発生し、ユーザーに影響を与えるのか。その因果関係を示す用語です。
- エラー (Error) / 誤り:
- 人間の行為。開発者の勘違いや知識不足など。
- 例: 仕様を読み間違える。
- 欠陥 (Defect) / バグ / フォールト:
- エラーの結果として、コードやドキュメントに埋め込まれた不備。
- 例: コード内の論理ミス。
- 故障 (Failure):
- 欠陥のあるコードが実行された結果、システムが意図しない動作をすること。
- 例: 画面がクラッシュする、計算結果が間違っている。
根本原因 (Root Cause)
Section titled “根本原因 (Root Cause)”故障の最も大元の原因です。ここを突き止めて修正しなければ、似たような故障が再発します。
- 例: 「開発者のトレーニング不足」や「時間の重圧」など。