システムはエラーを生み出さない
ソフトウェアテストの文脈において、障害に関連する似たような用語がいくつかあります。これらの用語の定義を意識しないままでいると、関係者間の意思通信の妥当や錯誤の原因になる可能性があります。そこで、国際的な組織であるISTQBの用語集をベースに、用語の関係性を次のように整理しました。
Failure/Defect/Error
障害関連用語の背景には、ソフトウェアが本来あるべき3つの階層が存在しています。
1.ソフトウェアは、何らかのBenefit
を達成するために存在します。
2.Benefit
を提供するためには、正しいFunctionality
が求められます。
3.Functionality
を正常に動作させるためには、コードのcorrectness
が必要です。
これらの階層のいずれかで不具合が発生すると、Failure
/Defect
/Error
が発生します。その関係性は下記の通りです。Failure
が確認された場合、結果として何らかのDefect
が発生しており、その原因は人間のError
によることが見えてきます。この対応を下記に図示してみました。
ISTQBの用語集では次のように定義されています。
Error(エラー)
間違った結果を生み出す人間の行為。
A human action that results in a defect.
Defect(欠陥)
作業成果物に存在する、要件または仕様を満たさない、または意図した使用を妨げる不備または欠点。
An imperfection or deficiency in a work product where it does not meet its requirements or specifications or impairs its intended use.
Failure(故障)
コンポーネントやシステムが、指定した範囲内でその要件を満たさない事象のひとつ。
An event in which a component or system does not meet its requirements within specified limits.
Validation / Verification
用語の意思総一が固まったとして、次に出てくる課題は“何をもってFailure
とするのか”という点です。この課題を考える手がかりとしてquality
という概念が役立ちます。ISTQB用語集では、quality
を以下のように定義しています。
<quality(品質)>
作業成果物が、明示的および暗黙的要件を満たしている度合い。
The degree to which a work product satisfies stated and implied requirements.
この定義からも、quality
を満たさない場合はFailure
になりうることが分かります。ISTQB Glossaryには“quality mind map”という資料も掲載されています。必要部分を抜粋して下記に掲載します。
出典: ISTQB: Mind Maps of FL v4.0 Keywords
ここではquality assurance
がverification
とvalidation
からなると述べられています。これらの用語の違いは以下の通りです。
<verification(検証)>
作業成果物が仕様を満たしていることを確認するプロセス。
The process of confirming that a work product fulfills its specification.
<validation(妥当性確認)>
作業成果物がステークホルダーのニーズに一致するかを、調査によって確認すること。
Confirmation by examination that a work product matches a stakeholder's needs.
verification
は作業成果物が要項を満たしているかを確認するものですが、validation
はニーズに適しているかというレベルの話です。自然に、verification
が満たされていてもvalidation
が満たされていなければ、それはquality
として意味を持ちません。このあたりはソフトウェアに限らず、ビジネス界隈でもよく聞く話ですね。
Errorは人間のミスに起因する
はい、記事タイトルの回収になります。Error
は人間の行為を指しているため、“システムがError
を起こした”という表現は認識の齟齬を招く可能性があります(とはいえ、ふんわりと通じてしまうからなおさら確認することが難しい気がします)。加えて、よく聞かれるbug
やfault
は正確にはDefectと対応します。“システムにバグがある”という表現は、話し手がError
を指しているのかDefect
を指しているのかが不明になりうることに注意が必要です。
これらを考えると、関係者の間で用語定義をしっかりすり合わせることが非常に重要です。特にFailure
が話題となるということは、利害関係者間で緊張した状況ですので、より一定の出典を基に出来るだけ冷静な対応が求められます。
Discussion