テストの目的を一言で言い表すならば何かと聞かれて人によって様々な答えがありそうです。最もよくありそうなのは「欠陥を検出する」ことだと言えそうです。その他に「品質を保証する」、「ユーザを満足させる」などがあるでしょう。
JSTQBのシラバスでは、テストの目的として次の4つが挙げられています。
1. 欠陥の検出
2. 対象ソフトウェアの品質レベルが充分であることの確認
3. 意思決定のための情報の提示
4. 欠陥の作りこみの防止
このうち、4は実際にソフトウェアを動作させるのではなく、レビューや静的解析のことを指しています。どれもそれなりに説得力がありますが、ソフトウェアテストの目的を「一言で言い表す」ということを考えるとどれもあてはまりません。
私がソフトウェアテストの目的を一言で言い表すならばと聞かれたなら「ソフトウェアの品質を測定する」ことだと答えるでしょう。これは上の2に近いですが同じことではありません。
IEEE 標準規格 610.12-1990 ではソフトウェアテストを次のように定義しています。
「ある特定の条件下でシステムまたはコンポーネントを操作するプロセスであり、その結果を観察または記録して、システムまたはコンポーネントのある側面を評価すること」
ここではソフトウエアのある側面を評価することが目的とされています。「側面」を「品質」と言い換えても大きな違いにはならないと思われます。
Rick Craig と Stefan Jaskiel は、著書の "Systematic Software Testing" (邦訳「体系的ソフトウェアテスト入門」)の中で、ソフトウェアテストを次のように定義しています。
「テストとは、テストされるソフトウェアの品質を測定して改善するために、テストウェアをエンジニアリングし、利用し、保守しながら、同時並行的に進めるライフサイクルプロセスである」
ここでもソフトウエアの品質を測定することが品質の改善とともに目的とされています。
私のいう「ソフトウェアの品質を測定する」は、JSTQBのシラバスの2でいう「対象ソフトウェアの品質レベルが充分であることの確認」とはかなり意味が異なります。「ソフトウェアの品質を測定する」には「品質レベルが充分であることの確認」は含まれません。
ソフトウェアの品質を測定することができていれば、品質レベルが充分であるかどうかの確認はそれ以上テストすることなく自明となります。ソフトウェアの品質を測定することができていれば、意思決定のための情報(ソフトウェア信頼度成長曲線等のデータ)の提示に必要なテストはそれ以上必要ありません。ソフトウェアの品質を測定した結果として、欠陥を検出したり、欠陥の作りこみ防止となります。
シラバスで挙げられている4つのテストの目的はいずれも、「ソフトウェアの品質を測定する」という目的を達成したことの結果として実現されるものです。
それでは「ソフトウェアの品質」とは何でしょうか。SQuBOK策定部会・編集の「ソフトウェア品質知識体系ガイド -SQuBOK Guide-」ではソフトウェア品質の定義について何人もの著名人や諸組織による10通りの定義が時系列で解説されています。これらによるとソフトウェアの品質とは単に要求仕様を満たすだけではなく、顧客やユーザのニーズを満たしている度合いも含まれていると見なされているようです。機能要件のみならず非機能要件も満足して初めて品質が高いと言えることになるのでしょう。
ソフトウェアテストの目的を一言で言い表すとすれば 、「ソフトウェアの品質を測定する」という表現が私には一番しっくりきます。
JSTQBのシラバスでは、テストの目的として次の4つが挙げられています。
1. 欠陥の検出
2. 対象ソフトウェアの品質レベルが充分であることの確認
3. 意思決定のための情報の提示
4. 欠陥の作りこみの防止
このうち、4は実際にソフトウェアを動作させるのではなく、レビューや静的解析のことを指しています。どれもそれなりに説得力がありますが、ソフトウェアテストの目的を「一言で言い表す」ということを考えるとどれもあてはまりません。
私がソフトウェアテストの目的を一言で言い表すならばと聞かれたなら「ソフトウェアの品質を測定する」ことだと答えるでしょう。これは上の2に近いですが同じことではありません。
IEEE 標準規格 610.12-1990 ではソフトウェアテストを次のように定義しています。
「ある特定の条件下でシステムまたはコンポーネントを操作するプロセスであり、その結果を観察または記録して、システムまたはコンポーネントのある側面を評価すること」
ここではソフトウエアのある側面を評価することが目的とされています。「側面」を「品質」と言い換えても大きな違いにはならないと思われます。
Rick Craig と Stefan Jaskiel は、著書の "Systematic Software Testing" (邦訳「体系的ソフトウェアテスト入門」)の中で、ソフトウェアテストを次のように定義しています。
「テストとは、テストされるソフトウェアの品質を測定して改善するために、テストウェアをエンジニアリングし、利用し、保守しながら、同時並行的に進めるライフサイクルプロセスである」
ここでもソフトウエアの品質を測定することが品質の改善とともに目的とされています。
私のいう「ソフトウェアの品質を測定する」は、JSTQBのシラバスの2でいう「対象ソフトウェアの品質レベルが充分であることの確認」とはかなり意味が異なります。「ソフトウェアの品質を測定する」には「品質レベルが充分であることの確認」は含まれません。
ソフトウェアの品質を測定することができていれば、品質レベルが充分であるかどうかの確認はそれ以上テストすることなく自明となります。ソフトウェアの品質を測定することができていれば、意思決定のための情報(ソフトウェア信頼度成長曲線等のデータ)の提示に必要なテストはそれ以上必要ありません。ソフトウェアの品質を測定した結果として、欠陥を検出したり、欠陥の作りこみ防止となります。
シラバスで挙げられている4つのテストの目的はいずれも、「ソフトウェアの品質を測定する」という目的を達成したことの結果として実現されるものです。
それでは「ソフトウェアの品質」とは何でしょうか。SQuBOK策定部会・編集の「ソフトウェア品質知識体系ガイド -SQuBOK Guide-」ではソフトウェア品質の定義について何人もの著名人や諸組織による10通りの定義が時系列で解説されています。これらによるとソフトウェアの品質とは単に要求仕様を満たすだけではなく、顧客やユーザのニーズを満たしている度合いも含まれていると見なされているようです。機能要件のみならず非機能要件も満足して初めて品質が高いと言えることになるのでしょう。
ソフトウェアテストの目的を一言で言い表すとすれば 、「ソフトウェアの品質を測定する」という表現が私には一番しっくりきます。