テストとデバッグの違いは何でしょう?

回答の条件
  • URL必須
  • 1人30回まで
  • 登録:
  • 終了:2008/12/04 22:30:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答27件)

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

ポイント13pt

テストとは、作ったものが仕様どおりか確認するものです。

デバッグは、不具合があるので、その原因を調べて修正することです。

テストは、不具合を見つけるもので、デバッグは、その不具合を修正することですね。

もちろん、修正箇所を探すのもデバッグの作業に含まれています。


http://ja.wikipedia.org/wiki/%E3%83%87%E3%83%90%E3%83%83%E3%82%B...

id:garyo

ありがとうございます。

某ソフトウェアテスト系メーリングリストの過去ログを読んでいた時に、

ソフトウェアテストの専門家の方の間でも色々意見の違いがあるようでしたので質問してみました。

皆さんの回答を読むのを楽しみにしています。

2008/12/02 06:06:04
id:kn1967 No.2

回答回数2915ベストアンサー獲得回数301

ポイント13pt

■テスト

設計どおりに動作するかを試す行為


■デバッグ

原因を探して修正する行為


テスト

 → 設計どおりに動かなかった場合はデバッグを行う

 → 再びテスト 

 → 設計どおりに動かなかった場合はデバッグを行う

 → またまたテスト

以下、テストが正常に終了するまで繰り返す。


http://www ダミー

id:garyo

ありがとうございます。

良く「テストはデバッグではない」などといいますが、テストとデバッグの違いは何なのでしょうね?

2008/12/02 06:04:12
id:yamadakouzi No.3

回答回数296ベストアンサー獲得回数6

ポイント13pt

テストは、ロジックなどが正しく組み立てられて、与えられた条件で、正しい結果が出るかチェックすること。

デバッグは、テストの結果、正しくないロジックや流れを修正してゆく事。

上記は考え方の一例です。

http://q.hatena.ne.jp/dummy

id:garyo

ありがとうございます。

2008/12/02 06:07:22
id:yamadakouzi No.4

回答回数296ベストアンサー獲得回数6

ポイント13pt

日本語に直すと

てすと(Test)=課題を与え、試験(すること)

デバッグ(Debag)=虫(小害虫)駆除==>プログラミングでは悪い所を修正する事

http://q.hatena.ne.jp/dummy

id:garyo

ありがとうございます。

2008/12/02 06:08:10
id:hijk05 No.5

回答回数1307ベストアンサー獲得回数23

ポイント13pt

バグを検出するのがテスト

バグを修正するのがデバッグ

http://q.hatena.ne.jp/answer

id:garyo

ありがとうございます。

2008/12/02 06:09:19
id:adhd-idea No.6

回答回数1ベストアンサー獲得回数0

ポイント13pt

テストは試しに動かしてみること。

デバッグはテストして、エラーがでるところを特定し、コードを書き直すこと。

http://q.hatena.ne.jp/answer

id:garyo

ありがとうございます。

2008/12/02 06:09:55
id:Paddington No.7

回答回数161ベストアンサー獲得回数3

ポイント13pt

発見されたバグを消すのがデバッグ.バグを発見するのがテスト.

http://www.st.rim.or.jp/~k-kazuma/SD/SD107.html

id:garyo

ありがとうございます。

2008/12/02 06:10:45
id:Gay_Yahng No.8

回答回数724ベストアンサー獲得回数26

ポイント13pt

ちゃんと機能どおりに動くか確かめるのがテスト

機能どおり動かない原因を突き止めて正しく機能するようにするのがデバッグ

 

最初からバグがあること前提でテストも含んでデバッグということもあるかも。

http://q.hatena.ne.jp/1227792325

id:garyo

ありがとうございます。

2008/12/02 06:11:44
id:lightbody No.9

回答回数31ベストアンサー獲得回数1

ポイント13pt

例えばある商品を「テスト」「デバッグ」する場合

「テスト」

その商品の機能が仕様通りかどうかを確認する。

またテストと言ってもユーザーレベル(製品仕様書レベル)のテストやプログラマーレベル(製品設計詳細仕様書レベル)など

レベルがいろいろあります。

「デバッグ」

その商品の機能が仕様通りかどうかを確認し、問題があった場合、その原因までを特定する。デバッグもテストと同じように

レベルがありますが一般的にデバッグはテストとよりも深く検証していくという意味で使われると思います。

http://www.google.co.jp

id:garyo

ありがとうございます。

どちらも「その商品の機能が仕様通りかどうかを確認し」までは同じですね。

2008/12/02 06:15:43
id:msuhara No.10

回答回数9ベストアンサー獲得回数1

ポイント13pt
デバッグ
想定外の動作を改修することである。
テスト
想定する動作が行われることを検証することである。

デバッグはテストの十分条件(デバッグ⇒テスト)である。デバッグ作業後、テスト作業を行い想定内の動作となることをもって作業が完了するため。

テストはデバッグの必要条件(テスト⇒デバッグ)である。テストして想定外の動作がなければデバッグ作業を行うことがないため。

一般的な解釈

id:garyo

ありがとうございます。

必要条件・十分条件というのは面白いですね。

2008/12/02 06:20:12
id:ntack No.11

回答回数14ベストアンサー獲得回数1

ポイント12pt

こんな感じでしょうか:

 デバッグ---主にソフトウェア開発の下流工程(詳細設計〜コーディングあたり)での問題を検出する行為。

 テスト----上記に限らず、あらゆる問題を検出する行為。

境界は開発対象によって違うだろうし、人によっても解釈が違うと思います。

はっきり区別してないことも多いでしょう。

 はっきり区別してなさそうな例 : http://ci.nii.ac.jp/naid/110002945769/

組み込み系で自動販売機を例にとると(想像ですが):

 デバッグ---お金を入れて商品を選んでボタンを押して、、、販売状況の送信内容が正しいか見て、、、、仕様書通りに動作するかを調べる。

 テスト----上記のような行為以外に、変造硬貨を見分けられるとか、寒い環境で規定時間以内にコーヒーを暖められるかとか、3分以内にバールでこじあけることができないとか(?)、蹴っ飛ばしても倒れないとか、ボタンの配置がわかりやすいかとか、消費電力はどうだとかいったことを調べる。

ビジネス系でのテストは、、そうですね、たとえば(想像ですが)、

1000カ所から同時にアクセスされたときの応答時間はどうだとか、異常が起きてバックアップシステムに切り替わるときデータの欠落はないかとか応答時間はどうだとか、、いろいろあると思います。

id:garyo

ありがとうございます。

デバッグとテストの違いを挙げて頂いてわかりやすいです。

デバッグといっても、単体・結合までのテストは開発者が行うことが多いですが、機能試験以降は評価チームという風に分かれていることも多いですね。

xUnitを使ったTDD(テスト駆動開発)はテストと名前がついていますが、実際は開発手法で評価ではないという話もあります。

2008/12/02 06:38:04
id:shivashanti No.12

回答回数22ベストアンサー獲得回数1

ポイント12pt

http://otndnld.oracle.co.jp/document/products/as10g/101320/doc_c...

URLはダミーです。

テスト → バグを探す行為

デバッグ → バグを除去する行為

id:garyo

ありがとうございます。

2008/12/02 06:39:33
id:shellcat No.13

回答回数6ベストアンサー獲得回数0

ポイント12pt

テストは「期待した機能が動作すること」を確認する作業、

デバッグは「予期しない動作するかどうか」を確認する作業

という区別はどうでしょうか。


とか思っていたらどうやら違うようです。

以下のURLによれば、

「テストはバグを見つけること」「デバッグはバグを直すこと」

とのことです。

http://www.st.rim.or.jp/~k-kazuma/SD/SD107.html

id:garyo

ありがとうございます。

http://www.jstqb.jp/dl/JSTQB-Syllabus.Foundation.V1.1.0.pdf

JSTQBのシラバスによるとバグには以下の定義があります。

人間はエラー(誤り)を犯す。そのエラーがコード、ソフトウェア、システム、ドキュメントの欠陥(フォールト、バグ)となる。

コードの欠陥が実行されると、実行すべきこと(あるいは実行してはならないこと)を正しく実行できず、故障が起きる。

ソフトウェア、システム、ドキュメントの欠陥で故障が発生することもあるが、すべての欠陥が故障となるわけではない

エラー(誤り)→フォールト・バグ(欠陥)→故障

何か、仕様と異なる動作があれば、最初はインシデントとして報告され、不具合かどうか解析されるわけですね。

上記シラバスには以下のように書かれていました。URL先と同じようなことです。

デバッグとテストは同じではない。テストは欠陥から発生する故障を見つけることである。一方、デバッグは、欠陥の原

因を突き止め、ソースコードを修正し、欠陥も正しく修正したことを確認する一連の開発作業である。その後、テスト担

当者が確認テストを実施し、修正により故障が解決したことを確認する。このように、テスト担当者のテストと開発担当

者のデバッグは目的が大きく異なる。

2008/12/02 10:16:35
id:heart_kokoro No.14

回答回数13ベストアンサー獲得回数0

ポイント12pt

一言で言うと、

「テスト」とは

プログラムに問題がないかを確認する一連の作業。

「デバッグ」とは

プログラム内で発見された問題点を修正する一連の作業。


要するに、2つを比較すると、目的が違うと思います。

「テスト」は、問題がないことを証明することが目的。

「デバッグ」は、起きてしまった問題点を回復することが目的。

テスト

http://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A...

デバッグ

http://ja.wikipedia.org/wiki/%E3%83%87%E3%83%90%E3%83%83%E3%82%B...

id:garyo

ありがとうございます。

>要するに、2つを比較すると、目的が違うと思います。

同じようにテストをしても目的が違うわけですね。


テストの目的は

1)(欠陥(フォールト、バグ)から発生する)故障を見つけること……テスト1

2)欠陥(フォールト、バグ)が修正され故障が直ったことを確認すること……テスト2


デバッグの目的は

3)故障から欠陥(フォールト、バグ)を見つけること

4)欠陥(フォールト、バグ)を修正し故障が直ったことを確認すること……テスト3

と考えると良いでしょうか。


エラー(誤り)、欠陥(フォールト、バグ)、故障、インシデントがすべてバグと呼ばれたり、上記テスト1、テスト2、テスト3が全てテストと呼ばれたりという用語の関係で色々混乱しそうな気がしました。


以前聞いた例では「テストは健康診断」で、体調不良などが見つかると「原因を調べて直すのがデバッグ」と聞きましたが、その意味がわかったような気がします。

2008/12/02 12:36:17
id:ppp2005 No.15

回答回数20ベストアンサー獲得回数0

ポイント12pt

こんなのはどうでしょう。

■テスト:不具合の有無を確認する行為。修正行為は含まれない。

仕様や正解がない場合もある。仕様の不具合を発見することもある。

プロトタイプを作ってテストする場合などは、正解を見つけるためにテストすることもある。

■デバグ:仕様を満足しない箇所を発見(これはテストとも呼ばれる)し修正する行為。

必ず正解が有る。正解がないとデバグはできない。

仕様通りであれば、例え仕様が誤っていても、デバグでは発見されない。

仕様自体をデバグする場合は、仕様を規定する要求事項のバグは発見されない。

つまりデバグ対象より上位にある仕様事項の誤りは発見できないことになる。

http://www.google.com/

id:garyo

ありがとうございます。

>必ず正解が有る。正解がないとデバグはできない。

これはまず、確認可能な要件があることが前提だと思います。デバッグでもテストでも同様だと思います。

設計・実装・デバッグ・テストなどで仕様の不備が見つかることもありますが。

2008/12/02 10:11:13
id:jaguarsan No.16

回答回数4ベストアンサー獲得回数0

ポイント12pt

みなさんとは違う視点を。

おそらく質問ではIT業界を前提として質問をされていると思いますが、

ゲーム業界(というかファン?)の間ではデバッグ=テストという解釈が一般的ですね。

http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&...

よく2ch等ではデバッガーがバイトだから品質が低いみたいな話がありますが、

作った人以外にはプログラムを修正できるわけないので

この文脈では完全にデバッガー=テスターです。

ちなみにIT業界ではデバッグ行程においてはバグを見つける人と修正する人は別人であるべきというのが普通なので、

「デバッガー≠テスター」が一般的です。

id:garyo

ありがとうございます。

>この文脈では完全にデバッガー=テスターです。

それは知りませんでした。デバッガーというとデバッグするツールを連想します。

>ちなみにIT業界ではデバッグ行程においてはバグを見つける人と修正する人は別人であるべきというのが普通なので、

>「デバッガー≠テスター」が一般的です。

そうですね。

実装する人はソフトの中身をよく知っているので、無意識のうちにバグらないようにテストしたり、「元々そう思って」実装しているので間違いに気がつかないことがあります。

2008/12/02 11:49:38
id:fgh66 No.17

回答回数4ベストアンサー獲得回数0

id:garyo

「不適切な回答」機能を試してみたかったので開いてみました。

2008/12/02 11:54:15
id:iio77 No.18

回答回数171ベストアンサー獲得回数0

ポイント13pt

根本的に違う

http://q.hatena.ne.jp/1227792325

id:garyo

「不適切な回答」機能を試してみたかったので開いてみました。

2008/12/02 11:53:26
id:inui3000 No.19

回答回数23ベストアンサー獲得回数1

ポイント12pt

デバッグは、プログラムを動作させながら不具合を探し修正すること。

対してテストは、もっと試験範囲が広く、不具合修正は含まれない。

動作させて不具合を出すテストもあれば、プログラムコードを眺めて書き方にルール違反があるかどうか調べるテスト、などもある。試験全般。

イメージとしてはこんな感じかな。

テスト > デバッグ-修正作業

http://q.hatena.ne.jp/1227792325

id:garyo

ありがとうございます。

2008/12/03 19:07:03

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 uiuiui 21 3 0 2008-12-04 22:23:12
2 uiuiui 21 3 0 2008-12-04 22:25:40
3 uiuiui 21 3 0 2008-12-04 22:28:04
  • id:nobu_macsuzuki
    釣れますか?


    ひょっとして、設計もしないで、コード書き出してますか?
    コンパイラは、スペルチェッカではありませんよ。
    仕様を規定すれば、テストベンチができて、それに対してテストをして、満足できなければ、解析・デバッグでしょ?
    とりあえず、動くコードの話ですかね?


    以上、会社で初めてまともなコードを書いたときに、同僚であるスーパーハッカーに頂いた言葉。
  • id:taknt
    設計書は、ちゃんと動いてから作成するっていうパターンは 多いですよね。

    おおまかな設計書は、先に作っても詳細設計書は、プログラムを見ながら作るなんてことが。



  • id:oe-roel
    テスト=保証(品質、仕様、内部規定など)が目的
    デバッグ=その名のとおりバグを除去する事が目的

    とりあえず建前はこうですが、回答が楽しみ。

    # まあ、工程とかの構造的上、分離させているだけだし、
    # 別の方法論をとっても、明確に分けなくても上手くいくなら問題はないと思う。
  • id:garyo
    >テスト=保証(品質、仕様、内部規定など)が目的
    テストの目的が「故障を見つけること」か、「故障が無いことを確認すること」かでも違ってきそうですね。
    テストの終了判定や
    「故障がたくさん見つかるテスト」と「故障が見つからないテスト」はどちらが「良いテスト」なのか
    などに絡んできそうです。
  • id:yamadakouzi
    yamadakouzi 2008/12/02 22:20:29
    私も含めですが、回答が機械(コンピューター)のハード、ソフト的な記述が多いようですね。もっと広い意味で捉えてもいいのではないかと思います。
    私は、コンピュターの作動テストやプログラム作成、解析などもやりますが、化学や物理の実験・分析もやりますし、数学の公式作りや、検証・評価もしますので、回答の考えの分野に少し偏りがあるように感じました。

    テスト=試験・検査・検証、評価付けの資料作り
    デバッグ=不都合を取り除く作業、評価の悪い物を除外する、修正・訂正

    悪い使われ方
    テスト=(ある限られた機能・能力のみに絞っての)ランク(評価)付けの道具
    デバッグ=点数の悪い物・者の切捨て
  • id:yamadakouzi
    yamadakouzi 2008/12/02 22:28:58
    言い忘れましたが、私はコンピューター関係ではプログラマー、SE(システムエンジニア)よりSA(システムアナライザー=分析者)寄りです。だからプログラム言語にはあまり依存しません。
  • id:garyo
    >yamadakouziさん
    >私も含めですが、回答が機械(コンピューター)のハード、ソフト的な記述が多いようですね。もっと広い意味で捉えてもいいのではないかと思います。
    明日12/04まで回答可能なので、何かありましたら、回答してみてください。
    色々な考えを聞かせて頂けると嬉しいです。
  • id:garyo
    「バグを発見するのがテストでバグを直すのがデバッグ」という回答が多く見られましたが、
    バグを狭義の意味の「欠陥」とすると上記は正確ではないですね。
    テストで分かるのは「故障」であって「欠陥」ではないですから。
    ※テストでは「故障」の原因である「バグ(欠陥)」までは見つかりません。

    >エラー(誤り)→フォールト・バグ(欠陥)→故障

    「バグ(欠陥)」によって起こる「故障」を見つけるのが「テスト」
    「故障」からその原因の「バグ(欠陥)」を見つけて治すのが「デバッグ」

    これがテストとデバッグの違いだと思います。

  • id:taknt
    テストは、バグがあるのか調べるものじゃなくて
    仕様どおりに出来てるか確認する作業ですね。

    ま、テストといえば、学校などで行う試験という意味合いもあります。
    ちゃんとできるか 調べるということです。

    試験が 悪かったから デバッグするなんて 言わないですよね。
  • id:garyo
    >試験が 悪かったから デバッグするなんて 言わないですよね。
    昔家庭教師をしてた子は分数のA/B=B÷Aと覚えていました。
    だから分数が出るたびに計算を間違えていました。
    学校の試験も、間違いを見つけたら「なぜ間違うのか」という原因を探して、
    間違う原因を直してあげると考えると、デバッグと同じかも知れません。

    >テストは、バグがあるのか調べるものじゃなくて
    >仕様どおりに出来てるか確認する作業ですね。
    最終出荷判定で色々問題になるんですよね。
    テストのカバレッジ、信頼度成長曲線、残バグ数
    中には「仕様通りにできているが使い物にならない」なんてこともありますからね。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません