バグ・欠陥・故障・エラーの違いとは?ソフトウェアテストの用語を整理

バグ・欠陥・故障・エラーの違いとは?ソフトウェアテストの用語を整理

テストにお悩みの方へ

😢開発リソースが足りない...
😢リリース直前だけどテストの余裕がない
😢開発コストを抑えたい

上記のようなお悩みに対して、テスト代行サービスを運営しています。まずは無料お問い合わせください。

開発やテストの現場では「バグが出た」「不具合が発生した」「障害報告を上げて」といった言葉が日常的に飛び交います。ところが、いざ「バグと欠陥はどう違うのか」「エラーと故障は同じものか」と問われると、明確に答えられる人は多くありません。用語の定義が曖昧なままだと、原因の切り分けが曖昧になり、再発防止も的外れになります。

ソフトウェアテストの国際的な資格認定体系であるISTQB(日本組織はJSTQB)では、これらの用語は明確に区別されています。本記事では「エラー」「欠陥」「故障」という3つの中核用語を整理したうえで、現場語との対応関係、欠陥が生まれる原因、欠陥管理の実務、品質を測る指標までを解説します。


目次

バグ・欠陥・故障・エラーの違いを一覧で把握する

まず全体像を押さえておきましょう。JSTQB/ISTQBの用語体系では、3つの用語が「原因 → 結果 → 現象」という一本の因果関係でつながっています。

用語英語表記何を指すか存在する場所観測できるタイミング
エラー(誤り)Error / Mistake人間が犯す間違いそのもの人間の頭の中・行為直接は観測できない
欠陥Defect / Fault / Bugエラーの結果として成果物に埋め込まれた不備コード・仕様書・設計書などの成果物レビューや静的解析、テスト結果からの追跡で判明
故障Failure欠陥が実行され、期待どおりに動作しない事象実行中のシステムの振る舞い実行時(テスト中・運用中)

ポイントは「エラーは人に、欠陥はモノに、故障は振る舞いに存在する」という置き場所の違いです。この一点さえ押さえておけば、混乱の大半は解消します。以降でそれぞれを詳しく見ていきます。

エラー(Error)とは — 人間が犯す間違い

エラーとは、人間が犯す間違いそのものです。JSTQBの用語集では「誤った結果を生み出す人間の行為」と定義されています。日本語では「誤り」と訳されることもあり、Mistake(間違い)という語が併記されることもあります。

重要なのは、エラーはソフトウェアの中には存在しないという点です。エラーは人の認知や判断の中で起きる出来事であり、それが成果物に書き込まれて初めて形を持ちます。

エラーの具体例

  • 要件定義書の「以上」「未満」を読み違えた(仕様の誤解)
  • 境界値の扱いについて、開発者と企画担当者で認識がずれていた
  • 設計時に例外パターンの存在を思いつかなかった(考慮漏れ)
  • タイムゾーンの扱いを勘違いしたまま設計した(知識不足)
  • 納期が迫っていたため、影響範囲の確認を省略した(プレッシャー下の判断ミス)

注意したいのは、エラーの原因が「その人の能力不足」だけではないことです。仕様書の記述が曖昧、レビュー時間が確保されていない、情報が届いていないといった組織的・環境的な要因がエラーを誘発するケースは非常に多くあります。エラーを個人の責任に帰着させる文化は報告の隠蔽を招き、かえって品質を悪化させます。

欠陥(Defect)とは — 成果物に埋め込まれた不備

欠陥とは、エラーの結果として成果物の中に埋め込まれた不備です。JSTQBでは「要求された機能をコンポーネントやシステムが実行することを妨げる可能性のある不備」と定義されています。英語ではDefectのほか、Faultという語も同義で使われます。そして日常的には、この欠陥のことを「バグ」と呼んでいるケースがほとんどです。

欠陥はコードの中だけにあるわけではない

「バグ=プログラムの誤り」というイメージが強いため見落とされがちですが、欠陥はコード以外の成果物にも存在します。要件定義書、設計書、テスト設計書、ユーザーマニュアルにも欠陥は入り込みます。

欠陥が存在しうる成果物欠陥の例主な検出手段
要件定義書要件同士が矛盾している/必要な要件が記載されていないレビュー、ウォークスルー
基本設計・詳細設計書異常系の処理フローが定義されていないインスペクション、設計レビュー
ソースコード境界条件の判定式が誤っている/NULLチェック漏れ静的解析、単体テスト、コードレビュー
設定ファイル・環境定義本番環境のパラメータ値が誤っている構成レビュー、環境テスト
テスト設計書・マニュアル期待結果の記述が誤っている/実装と異なる操作手順が書かれているテストケースレビュー、ドキュメントレビュー

成果物に埋め込まれた欠陥をコードになる前に見つける活動が、レビューやインスペクションです。詳しくはレビューとインスペクションによる品質向上で解説していますが、実行を伴わずに欠陥を検出できるという意味で、テストとは補完関係にあります。

なお、DefectとFaultはほぼ同義ですが、Faultは信頼性工学の文脈で「故障を引き起こす直接原因となるシステム内部の状態」を指す傾向があります。標準ごとに微妙な差異があるため、どちらが正しいかを突き詰めるより、自組織でどの語をどの意味で使うか決めるほうが実務的です。

故障(Failure)とは — 実行時に現れる事象

故障とは、欠陥を含むコードが実行された結果、システムが期待どおりに動作しない事象です。JSTQBでは「コンポーネントやシステムが期待した結果と異なる動作をすること」と定義されています。

故障は「振る舞い」であって「モノ」ではないため、故障そのものは直せません。直せるのは欠陥のほうです。「故障を修正する」は厳密には正しくなく、「故障の原因となった欠陥を修正する」が正確な表現になります。

故障の具体例

  • 金額を入力して確定ボタンを押すと、画面がエラーメッセージなしで固まる
  • 本来は登録できないはずの日付が受け付けられてしまう
  • 帳票の合計金額が1円ずれる
  • バッチ処理が異常終了し、翌日のデータが更新されない

いずれも「実行して初めてわかる」性質を持ちます。つまりテスト実行で直接見つかるのは故障であり、欠陥は故障を手がかりに追跡して特定するという関係になります。

「エラー → 欠陥 → 故障」という因果の連鎖

3つの用語は、時間軸に沿った一本の連鎖として理解するのが最も実用的です。具体例で追ってみましょう。

段階用語起きていること(例:年齢18歳以上を会員登録可とする仕様)誰が関与するか
1エラー(Error)設計者が「18歳以上」を「18歳より上」と読み違えた人間(設計者)
2欠陥(Defect)詳細設計書に「age > 18」と記載され、コードにも同じ条件式が実装された成果物(設計書・コード)
3故障(Failure)18歳のユーザーが会員登録しようとすると「登録できません」と表示される実行中のシステム
4影響(Impact)18歳の新規会員を取りこぼし、問い合わせが増加するユーザー・ビジネス

この連鎖を意識すると、対策の打ち方が変わります。故障だけを見て「条件式を直した」で終わらせると再発します。「なぜ読み違えが起きたのか」(=エラーの発生要因)まで遡って初めて、仕様書の記述ルールを改める、境界値のレビュー観点を追加するといった本質的な再発防止につながります。

欠陥があっても故障するとは限らない

連鎖を理解するうえで極めて重要なのが、「欠陥は存在するだけでは故障を起こさない」という事実です。欠陥を含むコードが実行され、かつ特定の条件が揃って初めて故障として表面化します。

先ほどの例なら、テストデータに18歳のケースが1件もなければ、欠陥はあるのにテストは全件パスします。これが「潜在欠陥」であり、リリース後に条件が揃った瞬間に故障として噴き出します。

だからこそ、実行経路をどれだけ通したかを測るカバレッジの考え方が重要になります。命令網羅・分岐網羅・条件網羅の違いについてはC0・C1・C2カバレッジの違いと使い分けで詳しく整理しています。ただしカバレッジ100%でも、通した経路のデータが不十分なら欠陥は見逃されます。カバレッジは「見逃しの上限を下げる指標」であって、「欠陥がないことの証明」ではありません。

故障の原因が欠陥とは限らない

逆方向の非対称性もあります。故障が観測されたからといって、必ずしもソフトウェアに欠陥があるとは限りません。JSTQBでも、以下のような外部要因による故障の存在が指摘されています。

  • ハードウェアの故障(メモリ不良、ディスク障害)
  • ネットワークの断絶やパケットロス
  • 環境条件(想定外の負荷、ディスク容量の枯渇、時刻同期のずれ)
  • テスト環境固有の設定ミス(アプリケーションではなく環境側の問題)
  • テストケース自体の誤り(期待結果が間違っている)

この非対称性があるため、テスト現場では「まず観測された事象を記録し、原因が欠陥かどうかは調査後に判定する」という運用が必要になります。この「原因未確定の観測事象」を指す言葉が、次に説明するインシデントです。

「バグ」「不具合」「障害」「インシデント」との対応関係

実際の現場では、より多様な言葉が使われています。それぞれが標準用語のどれに対応するのかを整理しておきましょう。

現場で使われる語標準用語での対応実際のニュアンス使うときの注意
バグ欠陥(Defect)最も広く使われる語。厳密には欠陥だが、故障を指して使われることも多い「バグが出た」は故障、「バグを直した」は欠陥を指しているケースが多い
不具合故障(Failure)に近い「期待どおりでない状態」全般を指す日本語。原因を特定していない段階でも使える範囲が広いため、原因の所在が伝わらない
障害故障(Failure)+業務影響運用フェーズで、業務やサービスが止まった/影響が出たときに使われる「障害」は影響度の大きさを含意することが多い
インシデントIncident(原因未確定の観測事象)「調査が必要な出来事」。欠陥に起因するかはこの時点では未確定ITILの「インシデント」とは意味が異なるため文脈に注意
フォールト欠陥(Fault)Defectとほぼ同義。信頼性工学の文脈で使われやすい組織内で用語を統一しておく
エラー本来はError(人の誤り)実際には「エラー画面」「エラーログ」など、システムの出力を指して使われる最も誤用されやすい語。文脈で意味が真逆になる
デグレ/リグレッション欠陥の一種(既存機能の劣化)修正や機能追加によって、以前は動いていた機能が動かなくなること原因は新規欠陥の混入であり、区分ではなく発生パターンの呼称

「エラー」が最も混乱を招く

表の中でとくに厄介なのが「エラー」です。標準用語では人間の誤りを指しますが、現場で「エラーが出た」と言うときの「エラー」は、システムが出力したエラーメッセージ、すなわち故障の一形態を指しています。つまり同じ単語が、文脈によって連鎖の両端(原因側と結果側)のどちらも指してしまうのです。

議論が噛み合わないときは、たいていこの語の意味がずれています。「今のエラーは人の誤りのほうか、画面に出た表示のほうか」と確認するだけで話が整理されることは少なくありません。

現場では厳密に使い分けられていない、という現実

正直に言えば、日本のソフトウェア開発現場の大半では、これらの用語は厳密に使い分けられていません。「バグ票」に故障の現象が書かれ、「障害管理表」に現象と原因が混在している、というのが実態です。

これは必ずしも悪いことではありません。日常会話まで標準用語で統一すると、コミュニケーションのコストのほうが高くつきます。重要なのは、「どこで厳密さが必要になるか」を見極めることです。

場面厳密さの必要度理由
チーム内の日常会話低い文脈で伝わるため、言い換えのコストのほうが大きい
バグ票・欠陥管理システムへの記録高い「現象」と「原因」を分けて書かないと、集計も分析もできなくなる
根本原因分析(RCA)・振り返り非常に高いエラーまで遡らないと再発防止策が的外れになる
顧客・発注者への報告、契約・検収文書非常に高い「障害」か「仕様どおり」かで責任の所在が変わる
品質メトリクスの算出非常に高い数える対象が揺れると、指標そのものが意味を失う

とくに品質メトリクスの算出は要注意です。「バグ件数」を数えるとき、故障の観測件数を数えているのか、修正した欠陥の件数を数えているのかで、数値は大きく変わります。1つの欠陥が5つの故障として観測されることもあれば、5つの欠陥が1つの故障として現れることもあるためです。

欠陥はなぜ生まれるのか

欠陥の直接的な原因はエラー、つまり人間の誤りです。しかし「人間だからミスをする」で止めては改善につながりません。エラーを誘発する構造的な要因を分解して捉える必要があります。

要因のカテゴリ具体的な状況打てる手
要求の曖昧さ仕様書に「適切に処理する」など解釈の幅がある記述がある受入基準を数値・条件で書く、具体例を併記する
コミュニケーション不足仕様変更が実装担当まで届いていない変更履歴の一元管理、変更時の影響範囲レビュー
時間的プレッシャー納期直前の駆け込み修正で確認を省略する修正時の必須確認項目をチェックリスト化する
複雑性条件分岐が入れ子になり、全パターンを人が把握できないリファクタリング、デシジョンテーブルによる整理
技術・ドメイン知識の不足並行処理や文字コード、税制などの前提知識が足りない/新規フレームワークの想定外の挙動を踏むペアレビュー、有識者チェックポイントの設置、プロトタイプによる事前検証
環境・構成の差異開発環境と本番環境の設定が異なる構成管理の自動化、環境差分の明示的な管理

上流工程で作り込まれた欠陥ほど、修正コストが跳ね上がる

ソフトウェア工学の分野では古くから、欠陥は発見が遅れるほど修正コストが増大することが繰り返し指摘されてきました。バリー・ベームの研究をはじめとする複数の調査で、この傾向は一貫して報告されています。

欠陥を発見した工程修正コストの目安(要件定義時を1とした相対比)修正時に必要となる作業
要件定義1ドキュメントの修正のみ
設計3〜6倍設計書の修正+関連設計への波及確認
実装(コーディング)10倍程度コード修正+設計書との整合確認
結合・システムテスト15〜40倍修正+再テスト+リグレッションテスト+関連ドキュメント更新
受入テスト30〜70倍上記+スケジュール調整+関係者への説明
運用(リリース後)100倍以上上記+緊急対応+データ復旧+顧客対応+信用の毀損

この倍率は調査対象や開発手法によって幅があり、そのまま自組織に当てはまる数値ではありません。ただし「後になるほど指数関数的に高くつく」という傾向自体は、開発手法を問わず成立します。本番稼働後のデータ不整合の復旧コストが、要件定義時の一行の修正と比較にならないことは変わりません。

この事実こそが、上流での品質確保を重視するVモデルの発想の根拠になっています。開発工程とテスト工程の対応関係については、Vモデルの基礎と実務での活用で詳しく解説しています。

欠陥の「作り込み工程」と「検出工程」のギャップ

欠陥管理で最も見落とされやすい観点が、欠陥が作り込まれた工程と、実際に検出された工程のずれです。可視化すると、プロセスのどこが弱いのかが浮かび上がります。

作り込み工程本来検出すべき工程実際に多く検出されがちな工程ギャップが示す課題
要件定義要件レビュー受入テスト・運用要件レビューが形骸化している/受入基準が不明確
基本設計設計レビューシステムテスト設計レビューの観点が網羅されていない
詳細設計設計レビュー・単体テスト設計結合テストインターフェース仕様の詰めが甘い
実装コードレビュー・単体テスト結合テスト・システムテスト単体テストのカバレッジや観点が不足している
テスト設計テストケースレビューテスト実行中(期待結果の誤りとして発覚)テスト設計のレビュープロセスが存在しない

たとえば「要件定義で作り込まれた欠陥が受入テストで大量に見つかる」なら、テストの精度ではなく要件レビューの仕組みそのものに問題があります。テストを厚くしても解決しません。

逆に「実装で作り込まれた欠陥がシステムテストまで残っている」なら、単体テストやコードレビューの強化が効きます。欠陥データは「品質の成績表」ではなく「プロセス改善の地図」として使うべきものです。

修正が新たな欠陥を生むという問題

欠陥を修正する行為そのものも、新たなエラーを引き起こしうる人間の作業です。修正の影響範囲が広いほど、新たな欠陥を混入させる確率は上がります。

そのため、欠陥修正後には修正箇所の確認テスト(再テスト)に加えて、既存機能が壊れていないかを確認するリグレッションテストが必須になります。修正のたびに全件を再実行するのが現実的でない場合は、まず主要機能が最低限動作するかを短時間で確認するスモークテストを挟み、その先で影響範囲に応じた選択的なリグレッションテストを実施する、という二段構えが有効です。

欠陥管理の実務 — バグ票の書き方

用語の区別が最も実利をもたらすのが、欠陥の記録、いわゆる「バグ票」です。ここで現象(故障)と原因(欠陥)を混ぜて書くと、後からの分析ができなくなります。

バグ票に書くべき項目

項目内容対応する概念記入のポイント
ID・起票日・起票者一意の識別子と記録情報管理情報自動採番にして重複を防ぐ
タイトル1行で現象がわかる要約故障「〜すると〜になる」の形式にすると検索しやすい
発生環境OS、ブラウザ、バージョン、環境名、データ条件前提条件環境起因かアプリ起因かの切り分けに必須
再現手順誰がやっても同じ結果になる操作手順故障の再現条件番号付きで、初期状態から書く。再現性(3回中3回など)も併記する
期待結果本来どうあるべきか仕様根拠となる仕様書の該当箇所を明記する
実際の結果実際に何が起きたか故障スクリーンショット・ログを添付する
重要度(Severity)システムへの影響の大きさ故障の影響テスト担当者が客観的に判定する
優先度(Priority)修正の順番意思決定開発リーダー・PMが判断する
原因調査後に判明した欠陥の内容と所在欠陥起票時は空欄。調査後に埋める
混入工程どの工程で作り込まれたかエラーの発生点プロセス改善のための必須項目
修正内容何をどう直したか欠陥の除去修正の影響範囲も併記する
確認結果再テストとリグレッションテストの結果検証誰がいつ確認したかを残す

注目してほしいのは、「実際の結果」と「原因」が別の欄になっている点です。起票時点で書けるのは故障(現象)だけであり、欠陥(原因)は調査を経て確定します。1つの欄にまとめると、原因未確定の推測が事実として扱われる事故が起こります。

再現手順は「誰がやっても同じ結果になる」まで書く

再現手順の品質は修正までのリードタイムを直接左右します。開発者が再現できなければ調査は始まりません。

悪い例:「注文画面でエラーになる」

これでは、どの状態でどの操作をしたら何が起きたのかがわかりません。良い書き方は次のようになります。

  1. 会員ID「test001」でログインする(初期状態:カート内は空)
  2. 商品一覧から商品コード「A-1002」を選び、数量に「100」を入力してカートに追加する
  3. カート画面で「注文手続きへ」をクリックする
  4. 配送先に既定の住所を選択し、支払い方法で「代金引換」を選ぶ
  5. 「注文を確定する」をクリックする
  6. 期待結果:注文完了画面が表示され、注文番号が採番される
  7. 実際の結果:白画面のまま10秒経過し、「システムエラーが発生しました」と表示される(3回中3回再現。数量を99にすると再現しない)

特に価値を持つのが最後の「数量を99にすると再現しない」です。再現する条件と再現しない条件を対で示すことで、開発者は欠陥の所在を一気に絞り込めます。これは単なる親切ではなく、テスト担当者が持つべき分析スキルです。

優先度(Priority)と重要度(Severity)は別物

欠陥管理で最も混同されるのが、優先度と重要度です。重要度は「事象の影響の大きさ」、優先度は「修正する順番」であり、判断する軸も判断する人も異なります。

観点重要度(Severity)優先度(Priority)
何を評価するかシステムや業務への影響の大きさいつ修正すべきかという緊急度
判断する人テスト担当者(客観的に判定)開発リーダー・PM・プロダクトオーナー
判断の軸技術的・機能的な影響範囲ビジネス上の価値、リリース計画、修正コスト
変動するか基本的に変わらない状況によって変わる(リリース直前に上がるなど)

2軸は独立しているため4つの組み合わせが生まれます。典型例を押さえておくと判断がぶれにくくなります。

組み合わせ典型例対応方針
重要度 高/優先度 高決済処理が失敗し、金額が二重に引き落とされる最優先で即時修正。リリース停止判断も検討
重要度 高/優先度 低数年に一度しか使わない管理画面の機能がクラッシュする影響は大きいが発生頻度が低い。次期リリースで対応
重要度 低/優先度 高トップページの会社名の表記が誤っている機能影響はないが、信用に関わるため即修正
重要度 低/優先度 低設定画面の項目の並び順が設計書と異なるバックログに積み、余裕のあるタイミングで対応

「重要度 低/優先度 高」の存在が、2軸を分ける最大の理由です。1軸だけで管理していると、技術的影響は小さいがビジネス上は最優先という欠陥が「軽微」として埋もれてしまいます。

欠陥のライフサイクル

欠陥は起票から収束まで、いくつかの状態を遷移します。ステータスの定義を組織で統一しておくと、進捗の把握が容易になります。

  • 新規(New):起票直後。内容の妥当性は未確認
  • 受理(Open)/却下(Rejected):仕様どおりの動作、重複、再現不可などは却下
  • 調査中(Analyzing):原因となる欠陥を特定している段階
  • 修正中(In Progress)/修正済(Fixed):欠陥の除去作業中、または確認待ち
  • 確認済(Verified)/クローズ(Closed):再テストとリグレッションテストで確認し、対応完了
  • 保留(Deferred):今回のリリースでは対応せず、次期に持ち越すと合意した状態

実務上のポイントは、「却下」と「保留」を正しく使い分けることです。対応する余裕がないという理由で却下すると、既知の欠陥がリリース後に見えなくなります。判断としての持ち越しは、必ず「保留」として記録に残すべきです。

欠陥を数値で捉える指標

用語を正しく区別できるようになると、欠陥を定量的に扱えるようになります。代表的な指標を整理します。

指標計算式何がわかるか使うときの注意
欠陥密度検出欠陥数 ÷ 規模(KLOC、ファンクションポイントなど)規模あたりの品質水準。モジュール間の比較に使える規模の測り方を統一しないと比較にならない
欠陥除去率(DRE)該当工程で検出した欠陥数 ÷(該当工程で検出+後工程に流出した欠陥数)各工程のフィルターとしての性能流出欠陥が確定するまで算出できない
欠陥検出率単位時間・単位工数あたりの検出欠陥数テスト活動の効率高ければ良いわけではない(品質が低いだけの可能性)
欠陥流出率後工程・運用で発見された欠陥数 ÷ 総欠陥数テストプロセス全体の抜け運用での発見件数の把握が前提
欠陥収束曲線累積検出欠陥数の時系列推移テストの収束具合。リリース判断の材料テスト消化率とセットで見ないと誤読する
修正リードタイム起票からクローズまでの平均日数欠陥対応プロセスの詰まり重要度別に分けて見る
再オープン率修正確認後に再発した欠陥数 ÷ 修正欠陥数修正品質、原因分析の深さ高い場合は対症療法的な修正を疑う

指標を使うときの落とし穴

ただし指標は、扱い方を誤ると逆効果になります。

  • 件数だけで品質を判断しない:検出欠陥数が少ないのは、品質が高いからかもしれませんし、テストが甘いからかもしれません。単独では解釈できません
  • 数える対象を統一する:故障の観測件数と修正した欠陥の件数を混ぜて数えると、数値の意味が失われます
  • 個人評価や目標値に使わない:欠陥数を評価に結びつけたり「欠陥密度を◯以下にする」と目標化したりすると、起票の抑制という形で容易に達成されてしまいます
  • 欠陥の偏在を前提にする:欠陥は特定のモジュールに集中する傾向があります(欠陥の偏在/クラスタリング)。全体の平均値だけを見ると、この集中を見逃します

最後の「欠陥の偏在」は、ISTQBのテストの7原則にも挙げられる重要な性質です。集中しているモジュールを特定できれば、テスト資源をそこに重点配分できます。どのテストレベル・テストタイプで検証するかを設計する際は、ソフトウェアテストの種類一覧で全体像を確認したうえで選択するのが効率的です。


欠陥の検出を第三者視点で強化したい場合

ここまで見てきたとおり、欠陥は「人間のエラー」から生まれます。そして人間には、自分が書いたものの誤りに気づきにくいという認知的な性質があります。設計者が自分の設計をレビューし、実装者が自分のコードをテストする体制では、エラーを生んだのと同じ思い込みが、検出の場面でも働いてしまいます。

これがテストにおける「独立性」が重視される理由です。開発者とは異なる視点、異なる前提を持った担当者がテストを設計・実行することで、内部では気づけなかった欠陥が見つかります。

とはいえ、独立したテスト体制を社内に構築するには、人材の確保・育成と継続的な運用コストがかかります。ソフトウェアテスト代行サービス『テスター10』では、テスト設計から実行、欠陥の起票・管理までを第三者の立場で支援しています。

  • 開発チームとは独立した視点でのテスト設計・実行
  • 再現手順・重要度が明確なバグ票の作成と欠陥管理の運用
  • 混入工程の分析を含む、プロセス改善につながる欠陥データの整備
  • リリース前の集中的なリグレッションテストなど、スポットでの支援

「どの工程に手を打つべきかわからない」「テスト工数が確保できず、リリース前の検証が薄い」といった課題をお持ちでしたら、現状の欠陥データを一緒に見るところからご相談いただけます。


よくある質問(FAQ)

バグと欠陥は同じ意味ですか

ほぼ同じ意味です。JSTQB/ISTQBの用語集でも、Bug(バグ)はDefect(欠陥)の同義語として扱われています。ただし現場では「バグが出た」という言い方で故障(実行時の事象)を指すこともあり、文脈によって指す対象がずれます。文書に記録する際は、標準用語である「欠陥」に統一しておくと誤解が減ります。

「バグ」という言葉の由来は何ですか

1947年、コンピュータMark IIに蛾(bug)が挟まって誤動作を起こし、その虫が作業日誌に貼られたという逸話が知られています。ただし機械の不具合を指す「bug」自体はそれ以前からエジソンら技術者の間で使われており、この逸話は語源というより、コンピュータ分野で定着させた象徴的エピソードと捉えるのが正確です。

エラーが表示されていなければ欠陥はないと考えてよいですか

いいえ。むしろエラーメッセージが出ないタイプの欠陥のほうが危険です。計算結果が静かに1円ずれる、データが欠落したまま処理が正常終了する、といった欠陥はエラー表示を伴いません。期待結果と実際の結果を突き合わせるテストが必要になるのは、このためです。

欠陥をゼロにすることはできますか

現実的には不可能です。ISTQBのテストの7原則にも「テストは欠陥があることは示せるが、欠陥がないことは示せない」「全数テストは不可能である」が含まれています。目指すべきは欠陥ゼロではなく、リリース判断に必要な情報が揃っている状態です。

インシデントと欠陥はどう使い分ければよいですか

インシデントは「調査が必要な観測事象」であり、原因が確定していない段階の呼び方です。調査の結果、原因がソフトウェアの不備であれば欠陥として登録し、環境設定やテストケースの誤りであれば欠陥ではないと判定します。テスト現場では、まずインシデントとして記録し、調査後に欠陥かどうかを判定する運用が推奨されます。

「仕様どおり」と言われた場合、それは欠陥ではないのですか

実装が仕様どおりであっても、その仕様自体に欠陥がある可能性は残ります。要件定義書や設計書に埋め込まれた欠陥は、実装を見ているだけでは検出できません。「仕様どおりだが、ユーザーの目的を満たしていない」と感じた場合は、仕様の欠陥として別途起票し、要件レビューのプロセスに戻して議論すべきです。


まとめ

バグ・欠陥・故障・エラーの違いを整理します。

  • エラー(Error)は人間が犯す間違い。仕様の誤解、考慮漏れ、作業ミスなど。ソフトウェアの中には存在しない
  • 欠陥(Defect/Fault/バグ)はエラーの結果として成果物に埋め込まれた不備。コードだけでなく、仕様書や設計書にも存在する
  • 故障(Failure)は欠陥が実行されて現れる事象。振る舞いであって、直せるのは欠陥のほう
  • 欠陥があっても故障するとは限らず、故障の原因が欠陥とも限らない。この非対称性が「インシデント」という概念を必要にしている
  • 現場語の「不具合」「障害」は故障に近く、「バグ」は欠陥・故障の両方を指しうる。日常会話は柔軟でよいが、記録と分析の場面では区別が不可欠
  • 欠陥は発見が遅れるほど修正コストが跳ね上がる。作り込み工程と検出工程のギャップを可視化すれば、強化すべきプロセスが特定できる

用語の区別は知識のためのものではありません。現象と原因を分けて記録できることが、再発防止とプロセス改善の出発点になります。まずは自組織のバグ票を見直し、「実際の結果」と「原因」が別の欄になっているか、「混入工程」を記録しているかを確認するところから始めてみてください。

次に読むならこの記事

テストの手戻りを減らしたい方へ

テスト仕様書のExcelテンプレートを無料で配布しています。自社で整備する場合も、外部に任せる場合も、まずは型を持つところから。

ソフトウェアテスト代行サービスのご紹介

当社では10万円から始められるソフトウェアテスト代行サービスを提供しています。

テスト専門部隊による品質保証で、開発チームは本来の開発業務に集中できます。
品質向上と納期遵守の両立をサポートし、顧客からの信頼獲得に貢献します。

お問い合わせ

サービスに関するお問い合わせ、ご不明な点がございましたら、以下のお問い合わせフォームをご利用ください。お客様からのご質問に対し、担当者が責任を持ってお答えいたします。

よかったらシェアしてね!
目次
閉じる