ソフトウェアの品質を学びまくる

ソフトウェアの品質、ソフトウェアテストなどについて学んだことを記録するブログです。

「誤り」と「障害」と「故障」

 いわゆる「バグ」と、その周りの言葉は、定義が曖昧だったり使う人によったりして、誤解を招きやすいですよね。ちょっと整理してみました。

SQuBOKの定義

 JIS X 0014:1999、SQuBOKでの定義は以下の通りです。

誤差・誤り(error)

計算、観測もしくは測定された値または状態と、真の、指定されたもしくは理論的に正しい値または状態との間の相違。

 ソフトウェア設計書の記述として、「または」「もしくは」を連発したこんな書きっぷりが蔓延していたら、0.01秒で差し戻しますが。。。

障害(fault)

要求された機能を遂行する機能単位の能力の、縮退または喪失を引き起こす、異常な状態。

 「状態」という言葉に違和感がありますが、これは「間違っている」という現実を指すものと理解しています。

故障(failure)

要求された機能を遂行する、機能単位の能力がなくなること。

 その間違いがもたらす結果が、failureというわけです。ちょっとわかりづらいですね。

間違い(mistake)

間違い・人的過誤(mistake, human error)
意図しない結果を引き起こす人間の行為。

 これが、JSTQBでいうerrorに相当するようですな。で、JSTQBのdefectに当たる言葉は、faultということか。
 SQuBOKガイドには、広島私立大学の大場充氏の言葉として、

テストは、Failure を起こさせることで Fault の存在を表面化させるものである。

とあり、これはすんなり納得できるのですが、同氏の

Fault は「記述上に固定されている欠陥」で、第三者にも確認できる。Error は、認識の問題であり、第三者には確認する方法がない。

については理解ができませぬなあ。突然、哲学・・・。

JSTQBの定義

 一方、JSTQBの用語集では、もう少しヒトに優しい言葉で記されています。

エラー(error、誤り)

間違った結果を生み出す人間の行為

 「10以上」は10を含まないと小学生時代から信じたままコードを書いたとか、そういう「バグを作るキッカケ」と思えばよいでしょうか。
 SQuBOKとはまったく立ち位置が違うので、要注意ですね。JSTQBでは「行為」、SQuBOKではその行為によって生じてしまった、あるべき姿との「差異」

欠陥(defect、バグ、失敗)

要求された機能をコンポーネントまたはシステムに果たせなくする、コンポーネントまたはシステムの中の不備。(中略)実行中に欠陥に遭遇した場合、コンポーネントまたはシステムの故障を引き起こす。

 「10以上」は10を含まないという頑なな思いから、また指の激しい滑りから、「if i > 10 then」とコーディングしてしまった・・・。  その結果が、欠陥ですね。JSTQBの「欠陥」は、「中の不備」とあるので、ドキュメント段階での問題点は含まないようにも見えます。

 ちなみにわたし(の周りで)は、「バグ」をプログラム内部の問題点、「不良」を、システム/ソフトウェア構築に伴う生産物に含まれる問題点(バグを含む)といった意味で使っております。

故障(failure)

コンポーネントやシステムが、期待した機能、サービス、結果を提供できないこと。

 指滑りコードがテストされる日がついにやってきた。境界値テストとして「i=9」と「i=10」を試してみる。この2つは結果が違うはずだが・・・。いや、何故か同じだ!
 というように、欠陥がある現象として白日の元にさらされた状態。これが「故障」ですね。SQuBOKの「error」は、どちらかといえば、JSTQBの「故障」に近いように思います。

こんな対応?

 微妙ながら、対応はこんな感じかな。

SQuBOK JSTQB
mistake error
error   ?
fault   defect
failure failure

ついでに・・・

 ついでながら、JSTQBの認定試験で、「故障率」と「欠陥密度」の定義に関する問いが出題されていました。

故障率(faiulre rate)

測定単位に発生したあるカテゴリの故障数の率。例えば、単位時間あたりの故障数、トランザクション数あたりの故障数、コンピュータの運用回数あたりの故障数。

欠陥密度(defect density)

コンポーネントまたはシステムの中で特定された欠陥の数をコンポーネントまたはシステムの大きさで割った値。

 しっかり覚えていなかったので、故障率の方は間違えた気が。「欠陥」と「故障」の意味をちゃんと覚えていれば、間違いようもないですけどね。

2018年1月13日追記

秋山さんにいただいたコメントを追加します。