今回は「不具合、欠陥、バグ、障害、エラー … などの用語の示す意味の違い」についてまとめます。
はじめに
用語の定義はプロジェクトによってまちまちなので、プロジェクトに参画するたびメンバーと認識をあわせる必要があります。 実際、不具合まわりの解説をしているブログやサイトも名称はやや異なる定義をしていたりしました。
ここでは「用語にはどんなものがあるか」と「分類する考え方にどんなものがあるのか」をまとめているので、プロジェクトにあわせて適切に組み合わせて利用するような使い方をイメージして記事を書いています。
どんな用語があるのか
よく見かける用語を洗い出すと以下のようなものになります。 これら以外にもまだまだありそうですが、これだけの用語に対してプロジェクトで同一の認識がとれないと混乱を生んでしまう原因になってしまします。。
【用語集】
- 問題
- 課題
- 不具合
- 障害
- 欠陥
- 故障
- 誤り
- incident
- defect
- fault
- failure
- error
- bug
分類して違いを理解する
分類方法をいろいろと調べて整理しようとしたのですが、どうもしっくり来ませんでした。 結局、考え方によって名前の付け方が異なるようだったので、以下の分類方法(考え方)についてそれぞれまとめてみます。
- 不具合発生のメカニズムによる分類(機電系)
- 不具合発生のメカニズムによる分類(ITシステム系)
- テスト実施時の不具合管理フローによる分類
不具合発生のメカニズムによる分類(機電系)
不具合発生のメカニズムから分類する場合、以下の3工程に分類できます。
-
欠陥(defect)
「システム内に内在する企図と異なる動作の要因となる不備」のこと。
-
障害(fault)
「欠陥によって誘発される、システムがユーザーの期待する動きと異なる動きをする事象」のこと。
-
故障(failure)
「障害が発生した結果、システムが利用できなくなる事象」のこと。
不具合発生のメカニズムによる分類(ITシステム系)
ITシステム開発の現場でよく見かける流れにしたがった分類です。 ISTQBの定義に近い定義の方法になります。 出てくる用語は4種類になります。
図は障害分析の考え方としても使えそうなものにしてみました。
-
誤り(mistake)
「望まない結果を生み出す人の間違った行動」のこと。
-
欠陥(defect, bug, fault)
「システム内に内在するコードやドキュメントの不備」のこと。
-
障害(failure)
「システムがユーザーの期待する動きを提供できない事象」のこと。 システムに「欠陥」があったとしても実行されなければ「障害」とはならない。
-
問題(error)
「障害("期待する動作"と"現状の動作"のギャップ)を検知して明文化されたもの」のこと。 「問題」がすべて「障害(=システム上の問題)」とは限らない。 後述の「不具合管理フロー」にある通り、要件漏れ/不備、操作者のミスといったものも含まれる。
テスト実施時の不具合管理フローによる分類(ITシステム系)
こちらもITシステム開発の現場で見かける分類になります。
テスト実施時に行われる不具合管理のフローに従った分類を行うと、以下の2種類に分類できます。
-
不具合
「システムを使うユーザーが期待する動きと異なる動きをする事象」のこと。 「設計/実装の問題」か「それ以外の問題」かを分離する前の状態。 前述の「不具合発生のメカニズムによる分類(ITシステム系)」における「問題」とほぼ等しい。
-
欠陥
「要件で定義された通りの設計や実装になっていない事象」のこと。 実際には「要件がそもそも漏れていた、考慮できていなかった」や「テスト仕様書の不備」「テスト実施者の誤り」もあるため、「不具合」の原因がシステムに起因していると特定された状態。 前述の「不具合発生のメカニズムによる分類(ITシステム系)」における「障害」とほぼ等しい。
参考記事
- DevelopersIO - システムのバグと欠陥の哲学
- たこはちの「へのかっぱ」日記 - 不具合と欠陥
- Programmer_Mixin_Conductor's Blog - 用語整理:エラー(誤り)、バグ・欠陥・フォールト、故障、インシデント
今回は「不具合や欠陥といった用語の整理」を行いました。 参考になったでしょうか? 本記事がお役に立っていると嬉しいです!!
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!