テストとは、作ったものが仕様どおりか確認するものです。
デバッグは、不具合があるので、その原因を調べて修正することです。
テストは、不具合を見つけるもので、デバッグは、その不具合を修正することですね。
もちろん、修正箇所を探すのもデバッグの作業に含まれています。
http://ja.wikipedia.org/wiki/%E3%83%87%E3%83%90%E3%83%83%E3%82%B...
■テスト
設計どおりに動作するかを試す行為
■デバッグ
原因を探して修正する行為
テスト
→ 設計どおりに動かなかった場合はデバッグを行う
→ 再びテスト
→ 設計どおりに動かなかった場合はデバッグを行う
→ またまたテスト
以下、テストが正常に終了するまで繰り返す。
http://www ダミー
ありがとうございます。
良く「テストはデバッグではない」などといいますが、テストとデバッグの違いは何なのでしょうね?
テストは、ロジックなどが正しく組み立てられて、与えられた条件で、正しい結果が出るかチェックすること。
デバッグは、テストの結果、正しくないロジックや流れを修正してゆく事。
上記は考え方の一例です。
ありがとうございます。
日本語に直すと
てすと(Test)=課題を与え、試験(すること)
デバッグ(Debag)=虫(小害虫)駆除==>プログラミングでは悪い所を修正する事
ありがとうございます。
ありがとうございます。
ありがとうございます。
ちゃんと機能どおりに動くか確かめるのがテスト
機能どおり動かない原因を突き止めて正しく機能するようにするのがデバッグ
最初からバグがあること前提でテストも含んでデバッグということもあるかも。
ありがとうございます。
例えばある商品を「テスト」「デバッグ」する場合
「テスト」
その商品の機能が仕様通りかどうかを確認する。
またテストと言ってもユーザーレベル(製品仕様書レベル)のテストやプログラマーレベル(製品設計詳細仕様書レベル)など
レベルがいろいろあります。
「デバッグ」
その商品の機能が仕様通りかどうかを確認し、問題があった場合、その原因までを特定する。デバッグもテストと同じように
レベルがありますが一般的にデバッグはテストとよりも深く検証していくという意味で使われると思います。
ありがとうございます。
どちらも「その商品の機能が仕様通りかどうかを確認し」までは同じですね。
デバッグはテストの十分条件(デバッグ⇒テスト)である。デバッグ作業後、テスト作業を行い想定内の動作となることをもって作業が完了するため。
テストはデバッグの必要条件(テスト⇒デバッグ)である。テストして想定外の動作がなければデバッグ作業を行うことがないため。
ありがとうございます。
必要条件・十分条件というのは面白いですね。
こんな感じでしょうか:
デバッグ---主にソフトウェア開発の下流工程(詳細設計〜コーディングあたり)での問題を検出する行為。
テスト----上記に限らず、あらゆる問題を検出する行為。
境界は開発対象によって違うだろうし、人によっても解釈が違うと思います。
はっきり区別してないことも多いでしょう。
はっきり区別してなさそうな例 : http://ci.nii.ac.jp/naid/110002945769/
組み込み系で自動販売機を例にとると(想像ですが):
デバッグ---お金を入れて商品を選んでボタンを押して、、、販売状況の送信内容が正しいか見て、、、、仕様書通りに動作するかを調べる。
テスト----上記のような行為以外に、変造硬貨を見分けられるとか、寒い環境で規定時間以内にコーヒーを暖められるかとか、3分以内にバールでこじあけることができないとか(?)、蹴っ飛ばしても倒れないとか、ボタンの配置がわかりやすいかとか、消費電力はどうだとかいったことを調べる。
ビジネス系でのテストは、、そうですね、たとえば(想像ですが)、
1000カ所から同時にアクセスされたときの応答時間はどうだとか、異常が起きてバックアップシステムに切り替わるときデータの欠落はないかとか応答時間はどうだとか、、いろいろあると思います。
ありがとうございます。
デバッグとテストの違いを挙げて頂いてわかりやすいです。
デバッグといっても、単体・結合までのテストは開発者が行うことが多いですが、機能試験以降は評価チームという風に分かれていることも多いですね。
xUnitを使ったTDD(テスト駆動開発)はテストと名前がついていますが、実際は開発手法で評価ではないという話もあります。
http://otndnld.oracle.co.jp/document/products/as10g/101320/doc_c...
URLはダミーです。
テスト → バグを探す行為
デバッグ → バグを除去する行為
ありがとうございます。
テストは「期待した機能が動作すること」を確認する作業、
デバッグは「予期しない動作するかどうか」を確認する作業
という区別はどうでしょうか。
とか思っていたらどうやら違うようです。
以下のURLによれば、
「テストはバグを見つけること」「デバッグはバグを直すこと」
とのことです。
ありがとうございます。
http://www.jstqb.jp/dl/JSTQB-Syllabus.Foundation.V1.1.0.pdf
JSTQBのシラバスによるとバグには以下の定義があります。
人間はエラー(誤り)を犯す。そのエラーがコード、ソフトウェア、システム、ドキュメントの欠陥(フォールト、バグ)となる。
コードの欠陥が実行されると、実行すべきこと(あるいは実行してはならないこと)を正しく実行できず、故障が起きる。
ソフトウェア、システム、ドキュメントの欠陥で故障が発生することもあるが、すべての欠陥が故障となるわけではない
エラー(誤り)→フォールト・バグ(欠陥)→故障
何か、仕様と異なる動作があれば、最初はインシデントとして報告され、不具合かどうか解析されるわけですね。
上記シラバスには以下のように書かれていました。URL先と同じようなことです。
デバッグとテストは同じではない。テストは欠陥から発生する故障を見つけることである。一方、デバッグは、欠陥の原
因を突き止め、ソースコードを修正し、欠陥も正しく修正したことを確認する一連の開発作業である。その後、テスト担
当者が確認テストを実施し、修正により故障が解決したことを確認する。このように、テスト担当者のテストと開発担当
者のデバッグは目的が大きく異なる。
一言で言うと、
「テスト」とは
プログラムに問題がないかを確認する一連の作業。
「デバッグ」とは
プログラム内で発見された問題点を修正する一連の作業。
要するに、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...
ありがとうございます。
>要するに、2つを比較すると、目的が違うと思います。
同じようにテストをしても目的が違うわけですね。
テストの目的は
1)(欠陥(フォールト、バグ)から発生する)故障を見つけること……テスト1
2)欠陥(フォールト、バグ)が修正され故障が直ったことを確認すること……テスト2
デバッグの目的は
3)故障から欠陥(フォールト、バグ)を見つけること
4)欠陥(フォールト、バグ)を修正し故障が直ったことを確認すること……テスト3
と考えると良いでしょうか。
エラー(誤り)、欠陥(フォールト、バグ)、故障、インシデントがすべてバグと呼ばれたり、上記テスト1、テスト2、テスト3が全てテストと呼ばれたりという用語の関係で色々混乱しそうな気がしました。
以前聞いた例では「テストは健康診断」で、体調不良などが見つかると「原因を調べて直すのがデバッグ」と聞きましたが、その意味がわかったような気がします。
こんなのはどうでしょう。
■テスト:不具合の有無を確認する行為。修正行為は含まれない。
仕様や正解がない場合もある。仕様の不具合を発見することもある。
プロトタイプを作ってテストする場合などは、正解を見つけるためにテストすることもある。
■デバグ:仕様を満足しない箇所を発見(これはテストとも呼ばれる)し修正する行為。
必ず正解が有る。正解がないとデバグはできない。
仕様通りであれば、例え仕様が誤っていても、デバグでは発見されない。
仕様自体をデバグする場合は、仕様を規定する要求事項のバグは発見されない。
つまりデバグ対象より上位にある仕様事項の誤りは発見できないことになる。
ありがとうございます。
>必ず正解が有る。正解がないとデバグはできない。
これはまず、確認可能な要件があることが前提だと思います。デバッグでもテストでも同様だと思います。
設計・実装・デバッグ・テストなどで仕様の不備が見つかることもありますが。
みなさんとは違う視点を。
おそらく質問ではIT業界を前提として質問をされていると思いますが、
ゲーム業界(というかファン?)の間ではデバッグ=テストという解釈が一般的ですね。
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&...
よく2ch等ではデバッガーがバイトだから品質が低いみたいな話がありますが、
作った人以外にはプログラムを修正できるわけないので
この文脈では完全にデバッガー=テスターです。
ちなみにIT業界ではデバッグ行程においてはバグを見つける人と修正する人は別人であるべきというのが普通なので、
「デバッガー≠テスター」が一般的です。
ありがとうございます。
>この文脈では完全にデバッガー=テスターです。
それは知りませんでした。デバッガーというとデバッグするツールを連想します。
>ちなみにIT業界ではデバッグ行程においてはバグを見つける人と修正する人は別人であるべきというのが普通なので、
>「デバッガー≠テスター」が一般的です。
そうですね。
実装する人はソフトの中身をよく知っているので、無意識のうちにバグらないようにテストしたり、「元々そう思って」実装しているので間違いに気がつかないことがあります。
デバッグは、プログラムを動作させながら不具合を探し修正すること。
対してテストは、もっと試験範囲が広く、不具合修正は含まれない。
動作させて不具合を出すテストもあれば、プログラムコードを眺めて書き方にルール違反があるかどうか調べるテスト、などもある。試験全般。
イメージとしてはこんな感じかな。
テスト > デバッグ-修正作業
ありがとうございます。
回答者 | 回答 | 受取 | ベストアンサー | 回答時間 | |
---|---|---|---|---|---|
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 |
ありがとうございます。
某ソフトウェアテスト系メーリングリストの過去ログを読んでいた時に、
ソフトウェアテストの専門家の方の間でも色々意見の違いがあるようでしたので質問してみました。
皆さんの回答を読むのを楽しみにしています。