« テレビといじめと | トップページ | Everything all right? »

2006/10/05

テスティング -ソフトウェア・テスティングとは?-

 今回から不定期に何回か、『ソフトウェア・テスティング』 についてかきたいと思う。
系統立ったテスティングの手法については、最近は多くの優秀な書籍が出版されているのでそちらを呼んでいただきたい。私が書こうと思っているのは、書籍には書かれにくい、ノウハウとか勘所といったものである。もともと文章にしにくい類のものであるから、どこまで伝わるかははなはだ疑問ではあるが、今テスティングに従事している人たち、これからやってみようという人たちに少しでも参考になればと思う。

 最近は多少 “ソフトウェア・テスティング” が取り上げられるようになったものの、私から見るとまだまだテストが軽んじられているように思われる。
極論ではあるが、テストを十分に行わないソフトであれば、そのソフトは発売しないほうが徳である、とさえ思っている。最近でも、NTTのIP電話がつながりにくくなる事故が起こっていて、原因の一つがソフトウェアの不具合といわれている。地名的な不具合を持つソフトを発売(もしくは使用)することによって、企業にかえって多額の損失を与えることがいかに多いことか。
ソフトウェア開発会社の経営者や幹部にはプログラマー上がりが多いことが問題の一つであるように思われる。多くのプログラマーと話をしてみると、その大半の人たちが 「プログラミングをしてソフトウェアをくみ上げれば製品ができる」 と思っていた。テストは、駆け出しプログラマーが丁稚奉公でやるものであり、できればやりたくないもの、といった印象を強く受けた。
ソフトウェアに限らず、外部からの検査を受けない物や組織がとんでもない事態や事件を引き起こすことは珍しいことではない。ソフトウェア・テストは、製品を売ろうと思えば、プログラミングと同じに重要なことなのである。

 プロフィールにも書いたとおり、私は6年ほどパッケージソフトウェアのテスティング業務に従事してきた。6年やるとそれなりに“ノウハウ”や“勘”といったものもたまってくる。ただ、残念なことにそういったものは文書化しにくい。高度な文才をもっていれば可能なのかもしれないが、いかんせん私にはその技術はないようである。

 さて、今回は 「私がテスティングをどう思っているか」 について書きたいと思う。

 私がソフトウェア製作を説明する上でよく使う例えが “三権分立” である。
“仕様の策定(スペック)”=立法、“仕様の実装(プログラミング)”=行政、“仕様の検証(テスト)”=司法
となる。つまりテスティングとは、裁判所の仕事に当たる。
テストというと、実装(プログラム)のミス=“バグ”を見つけることが仕事であると思われる場合が多い。しかし、私にはそれよりも、“仕様(スペック)のミス” を見つけることのほうがより重要と思われる。なぜか? ソフト制作においては下流工程に行くほど修正が大規模になり時間もコストもかかってしまう。マスターディスクを作ってからの修正は、コード修正・再ビルド・総テスト・マスターディスクの再作成、ととんでもない労力を要する。それが、仕様段階の修正なら、文章をちょいちょいと書き直すだけで済む。とても簡単である。

 では、どのように仕様をテストするのか?
仕様の策定者が仕様を考えているときから、その頭に入り込んでいっしょに仕様の穴を埋めてあげることである。そのためには多くの経験を積んで、頭の中でその仕様が実際にコンピューター上で動く様子をシミュレートできなければ、よい助言は与えられない。
また、仕様段階でバグをつぶしていけばいくほど、実際にプログラムを動かしてテストする段階で出てくるバグが少なくなり、テスターとしての評価が難しくなる問題もある。しかしそれについては、「何件のバグを出したか」ではなく、「何時間で(見つけたバグの修正も含めて)テストが完了したか」 を評価すべきである。もちろん、すべての仕様および書かれたコードをテストしたという前提で。テスト量が同じであれば、バグが見つからなかったほうが絶対にコストが安くすんでいるはずなのだから。

『バグは、見つけるよりも、作らせないことが重要』

という形にテスティングは進んでいくべきであるというのが、私のテスティングというものの考えである。

 次回は、「テスターの適正」 について書いてみようと思う。

|
|

« テレビといじめと | トップページ | Everything all right? »

テスティング」カテゴリの記事

コメント

はじめまして。トラックバックさせてもらいました。
今後の連載もチェックしますー

投稿: softest | 2006/10/05 11:49

softestさんへ
トラックバック&コメントをありがとうございます。
自分がこだわっているテスティングにたいしてトラックバック&コメントをしてもらったことをたいへんうれしく思います。

引用していただいた “三権分立” の例えについては、「テスティングも、仕様の策定やプログラミングと同格だよ」 という意味もこめて使っています。世間的にテスターはどうもプログラマーの下働きと思われているように感じてますので。
司法は場合によっては法律すらも違憲なものとして停止することが出来ます。テスター(司法)が仕様(法律)や実装(プログラム)を販売する品質に達していない(違憲)と判断して発売を禁止できる権限をもっているはずなのです。
しかし現実には、司法が時の権力者に都合がいい判断をするのと同じように、テスターが納得していなくても経営判断で発売されてしまうことがあるというのがとてもさびしい・・・。

世間では、「テスト不足で完了しているなー」としか思えないような事故が多くみられます。現在ではコンピュータ・システム抜きには日常生活が成り立たないところまで来ています。広く深く勉強なさっているようですし、社会基盤の安定化のためにも是非 softestさんにもがんばっていただきたいと思います。

投稿: マスト | 2006/10/05 15:51

僕の勤めている会社では「下働き」といった印象は薄いかもしれませんが、もっとテストフェーズを見つめなおす必要はあるかなあと考えています。
社会基盤の安定まで影響できるかわかりませんが、まずは身近なところで啓蒙できたらと思っています。

投稿: softest | 2006/10/06 10:24

はじめまして。
「テスティング」で検索したら、ヒットしたので拝読させて
頂きました。
ワタシは昔々のその昔にプログラミングをしてたことこそありますが、今は「評価/テスティング」のお仕事に就くべきか否か考えているところです。
なので、書かれている内容については大変興味深かったです。

テストの不足に関しては、「やっぱりそうなのか」といったところです。設計終了後に仕様変更があったりなんかして、押せ押せ状態になった結果、テストの工数を食われるということもあったようです。

しかし今後、重要度は上がっても重要視されるかどうかは不明な気が致します。

投稿: ねこ | 2007/01/05 12:19

ねこ さん、コメントをいただき、ありがとうございます。
ねこさんは、テスティング業務に就こうか就くまいか悩んでいるんですね。状況が許す(チャンスとか、やり直しが利く、等)のであれば、一度、テスティングをしてみてはいかがでしょうか? 実際に仕事をしてみないと“向いている・向いていない”や“好き・嫌い”はわからないと思いますし。
プログラミングの経験は、テスティングでも十二分に役に立つと思います。プログラマーだからこそ気がつく、バグの出やすいポイントなどもありますから。
“重要視”されるか?という点では、重要視の意味によります。“脚光を浴びる”という意味では、テスティングが脚光を浴びることは難しいと、私は思っています。テスティングは出来上がったものを評価する立場です。世間的にはやはり評論家より、“制作者”に注目が集まります。
それでも、能力のある評論家は周りから信頼されますし、制作物を購入する場合には、あてにされます。そういった周りからの信頼で満足感が得られるのであれば、テスティングは十分にやりがいのある仕事だと、私は考えています。

投稿: マスト | 2007/01/05 13:14

マストさん、早速のレスをありがとうございました。

ワタシはマストさんと同学年なので(^^;)
やり直しが利くかどうかは、微妙どころか無いに等しいカンジです。このお仕事に就いてみようかと考えたのは、
やはり今後の需要と重要性を考慮してみたからです。

"重要視"のご説明がありましたが、ワタシとしてはビジネスとしての注目度が高いかどうかになります。例えば同じIT企業の中でも、テスト部門の認知度が低かったのが違ってきたりとか、職種として"テストエンジニア"が市民権を得たりとかです。今のネットワークエンジニアやセキュリティエンジニアみたいなもんでしょうか。

今、就労を考えている企業はテスト専門なのですが、様々な製品のテスティングを手がけており、更には仕様の段階で品質向上のためにテスト部門の見地からサポートをする、といったビジネスを展開しつつあります。マストさんなら我が意を得たり、なんて思うところもあるかもしれません。

システム開発にPL法が適用されたら、このお仕事の重要度はかなり高まるのでしょうけど(笑)。

投稿: ねこ | 2007/01/05 14:19

ねこさん。
なるほど、私にとってもなかなか魅力的な会社ですね。特に、仕様策定に参加できるという点は、画期的ではないかと思います。外部の会社からの“参考意見”とされなければ、なおいいですね。
個人的には、今後、ソフトウェアのテスト業務は重要度が増していくと考えています。OSや業務用ソフトだけでなく、ケータイやゲームでも致命的なバグが世間一般に取り上げられるようになっています。製品開発会社としても、不具合の多発で好感度が低下すれば、売り上げに大きく影響してくるでしょう。とすれば、ソフトウェアのテスティングに力を入れざるを得ないと思うからです。
とはいえ、テスティングが製品開発における最下流の工程であることには変わりはありません。そして、上からの圧力は増加することはあっても低下することはないでしょう。すると、テスティングは、けっこうきつい業務になっていくのではないか、とも思っています。
今後、社会のソフトウェア依存度がますます高まっていく上で、企業の会計監査のように、世に出すソフトウェアにも、公式な“テスト監査”みたいなものができるかもしれないと、勝手に妄想しています。

投稿: マスト | 2007/01/05 18:13

マストさん、こんにちわ。
またまたコメントします。
とはいえ、悩んでしまっているのでこれはタダの愚痴かも(すいません)。

ワタシが応募したテスティング専門会社は、ソフトウェアのみでなく(とはいえ4割がこれ)、家電や通信インフラ、サービスなどが対象になっています。
ちなみにココ↓
http://www.humancrest.co.jp/index.html

本来はハードやソフトをウリウリといじり倒したかったという、コドモじみた遊び心から、このお仕事をしてみようかと思ったのですが、
「このお仕事が自分に向かない⇒やっぱり別のIT系の仕事に就くことにしたい」となったとき、果たしてこのテスティングの経験は役に立つのかしらん?

SEって結構ツブシがきく職種だと思うんです。なのでSEからの転身ってなんでもしやすそうだけど、テスティングは・・・うーむ。

「仕事する前に辞めること考えるんかっ!」というご意見はおいといて。

投稿: ねこ | 2007/01/19 13:06

ねこさん、こんにちは。
面白い質問を、ありがとうございます。
私なりの回答は、一つの記事として作成しました。
"テスティング -テスティングから得たもの-" (2007年1月20日公開)
また、何かありましたら、ぜひコメントしてください。

投稿: マスト | 2007/01/19 23:23

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/61641/12043751

この記事へのトラックバック一覧です: テスティング -ソフトウェア・テスティングとは?-:

» テスティングの役割、インスペクションの役割 [ソフトウェアテストの勉強室]
インスペクションとは、「不具合を作らない手法」で、テストは「不具合は見つけ出す手 [続きを読む]

受信: 2006/10/05 11:48

« テレビといじめと | トップページ | Everything all right? »