😵‍💫

システムはエラーを生み出さない

2025/01/28に公開

ソフトウェアテストの文脈において、障害に関連する似たような用語がいくつかあります。これらの用語の定義を意識しないままでいると、関係者間の意思通信の妥当や錯誤の原因になる可能性があります。そこで、国際的な組織であるISTQBの用語集をベースに、用語の関係性を次のように整理しました。

Failure/Defect/Error

障害関連用語の背景には、ソフトウェアが本来あるべき3つの階層が存在しています。

1.ソフトウェアは、何らかのBenefitを達成するために存在します。
2.Benefitを提供するためには、正しいFunctionalityが求められます。
3.Functionalityを正常に動作させるためには、コードのcorrectnessが必要です。

これらの階層のいずれかで不具合が発生すると、Failure/Defect/Errorが発生します。その関係性は下記の通りです。Failureが確認された場合、結果として何らかのDefectが発生しており、その原因は人間のErrorによることが見えてきます。この対応を下記に図示してみました。

deviation

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”という資料も掲載されています。必要部分を抜粋して下記に掲載します。

mind map出典: ISTQB: Mind Maps of FL v4.0 Keywords

ここではquality assuranceverificationvalidationからなると述べられています。これらの用語の違いは以下の通りです。

<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を起こした”という表現は認識の齟齬を招く可能性があります(とはいえ、ふんわりと通じてしまうからなおさら確認することが難しい気がします)。加えて、よく聞かれるbugfaultは正確にはDefectと対応します。“システムにバグがある”という表現は、話し手がErrorを指しているのかDefectを指しているのかが不明になりうることに注意が必要です。

これらを考えると、関係者の間で用語定義をしっかりすり合わせることが非常に重要です。特にFailureが話題となるということは、利害関係者間で緊張した状況ですので、より一定の出典を基に出来るだけ冷静な対応が求められます。

参考資料

Discussion