101.テスト界隈で使われる言葉『デバッグ=テスト?』
デバッグとテスト
デバッグとテスト。
一緒でしょ?という人も多いのですが、実をいうとちょっと違います。
「テスト」はバグを見つける……もとい、システムに存在する欠陥によって起こる故障を発見することを目的としています。
「デバッグ」はバグのもとをつきとめて取り除く……もとい、故障のもととなる欠陥を見つけて、その欠陥の原因をつきとめて、修正するという一連の開発の活動です。
テストとデバッグは聞いていると何となくみんな言葉を使い分けている気がします。
雰囲気で使い分けている感じですが、こういう意味なんだよーと覚えておくと良さそうです。
バグとエラーと欠陥と故障
みんな、バグという言葉を使いますが、テスト系の難しい本を読むときは実はバグという言葉はほとんど出てきません。
代わりに「エラー」「欠陥」「故障」という言葉が出てきます。
この辺も覚えておくと、テスト系の難し目の本も読みやすいかもしれません。
まずは「エラー」
テスト系の本で「エラー」と出てきた時は「間違った結果を生み出す人間の行為」という定義になります。
勘違いとか思い込みとか疲れていてなんかやらかしちゃうとか。
ヒューマンエラー的な意味ですね。
続いて「欠陥」
こちらは「作業成果物に存在する、要件または仕様を満たさない不備または欠点」と定義されています。
難しい言葉で「なに??」となるわけですが、要はプログラムのミスってる場所とかタイポしてたとか実装漏れてたとか、作ったモノに潜んでいるミスってる箇所です。
「エラー」によって「欠陥」が埋め込まれる、という流れなわけです。
最後は「故障」
テスト系の本で「故障」と出てきた時は「コンポーネントやシステムが定義された範囲内で要求する機能を実行しないこと」と定義されています。
やっぱり難しい言葉で「なに??」となるわけですが、要は実行したけど動かないとか動きおかしいとか、実行したらおかしなことが起こった、といったことです。
「エラー」によって「欠陥」が埋め込まれて、その「欠陥」部分が実行されると「故障」が発生するわけです。
ちなみに「欠陥」部分が実行されなかったら表に問題は出てこない…つまり「故障」にはつながらなかったりします。
皆さんが「バグだ!」というのは、ほとんどの場合「故障」を指していそうです。
けど「バグを作りこんだ」みたいな文脈だと「欠陥」を指していそうですね!ややこしいですね!w
なんでわざわざ小難しくするの?
自分が言い表したいことを、相手に齟齬なく伝えるためには定義や、その言葉の表す範囲が決まっていた方が齟齬なく伝わります。
そうですね……例えば世の中に甘いものを指す言葉が「スイーツ」しかなかったとします。
「パフェ」も「ケーキ」も言葉がないとします。
そうすると「苺がのったクリームたっぷりのおいしいスイーツ」と言ったとすると人によってはケーキ的なものを想像するかもしれないし、パフェ的なものを想像するかもしれません。
人によってブレちゃうわけですね。
そのようなわけで、言葉の定義などがはっきり決まっていると、言い表したいことが齟齬なく伝わるわけです。
ゴッドハンド
テスト組織を見回すと、なぜか触っただけでバグが発生して「またオレなにかやっちゃいました?」みたいな人がいます。
こういう人は「ゴッドハンド」とあがめられることが多いです。
ただゴッドハンド持ちの人は、フィーリングでバグを出せる人が多くて再現ができないといった人が多いような気もします(^-^;