障害やバグの原因を記録・分析することはよくあると思います。このとき、たまに「障害の原因はテスト不足」といった分析がなされているのを見かけます。

テストが不足していた、テストケースに漏れがあった、は障害の原因と言えるのだろうか?と考えたときに、個人的には違うかなと思っています。

障害を防ぐときの考え方

障害の原因を単に「テスト不足」としてしまうとどのような問題があるのでしょうか。

障害などを予防するには、

  • 起こさないための工夫
  • 起こってしまったときに検知する工夫

の2つの側面で考える必要があると思っています。

JSTQB用語で言い換えるならば、

  • 欠陥(バグ)を埋め込まないための工夫(エラーを防ぐ工夫)
  • 欠陥(バグ)を見つけるための工夫

でしょうか。久しぶりに見返した・・・↓

先に書いた「障害の原因はテスト不足!」と言ってしまうと、上記の2側面のうち後者、「欠陥を見つけるための工夫」に問題があったということになります。

ただ、これだと根本解決にならないですよね。

そもそも障害が起こらないようにする、すなわち欠陥を埋め込まないための工夫が不可欠です。ただ人間のやることは完璧ではないので、欠陥を埋め込まないための工夫をしても含まれてしまうものについて、テストでちゃんと検出しましょう、という話だと思っています。なので「テスト不足が原因なのでテストを増やします」だと、根本的な対応になっていない。根本原因とその対策を考えるべき、ですね。