「電卓落とし」はテストファースト開発??
ガチャーン、8888888888、ガチャーン、8888888888、ガチャーン、8888888988
あっ、この電卓壊れた!
私が社会人になったばかりのころ、毎日こんなことをやっていた。
■電卓の落下テスト
とあるメーカーの品質保証部。当時新人の私は人海戦術の作業員として駆り出されていた。関数電卓を50cmとか100cmとかの高さから落とし、8888888888 を打って表示を確認。これを何百回も繰り返していた。
私が配属された部署は、電卓などの電子基板のLSIを接合する技術を開発していた。接合部の強度を保障するテストの1つとして、落下テストを行っていた。強度が弱くて配線が切れると電卓の8の表示が、9とか3とかになってしまう。落下テストを繰り返し、どこが切れたかを観察し、切れた部分を補強する対策を打つ。これもテストファースト開発なのだろうか? いや、つぎはぎ開発っていう方が正しそうだ。(笑)
いずれにせよ、電卓はこういう厳しいテストをしながら開発されている。こういうのがハードウェアの品質保証だ。
■ソフトウェアの品質保証
その後私はソフトウェアの仕事に移ってきたが、ここでは品質の考え方が違った。レビューの回数やテストの件数がメトリクス(品質測定基準)となるのは分かる。しかし、テストで検出したバグ件数が一定数に満たないもの(やバグ曲線が収束していないもの)はテストが不十分とされて品質基準を満たさないというのはちょっと違う。ハードウェアの場合は、不具合が一定件数以上あった場合は品質基準を満たさず不合格となるが、ここが逆だ。バグ件数が多い方が品質が高いかのような品質基準だ。これは以下のことを前提としているからだが。
- 作りたてのソフトウェアには必ずバグがある
- すべてのバグを検出できるようなテストを行うのは不可能
ハードウェアの品質担当にはこんな前提は甘いと思われるのではないだろうか。バグがあって当たり前なんて!
■未来のソフトの品質は?
最近ではソフトウェアの仕様を記述すると自動的にソースコードを作成するツールがいくつも作られている。今後このようなツールが進歩すると、いつの日かどんなシステムでもバグ0件のソースコードを作れるようになるのだろうか?
バグ0件のソフトウェア。それはソフトウェア開発者の永遠のテーマなのかもしれない。ただそれでテスターの仕事が減ってしまうと私は困るのだが。
関数電卓を見ると、私は一度床に落としてみたくなってしまう。間違ってもスマホやタブレットPCはわざと落とさないようにしないといけないな。(^_^;)
abekkanでした。
コメント
ちけんち
ハードウェア開発とソフトウェア開発ではテストの位置づけが違いますよね。ハードウェア開発においては、製品を作り上げてから品質確認のためにテストをするし、ソフトウェア開発においては製品を作り上げる過程としてテストがあると思っています。
ハードウェア開発でも、設計変更のコストがソフトウェア並に低くなればテストの位置づけもソフトウェアに近くなるかもしれませんね。
abekkan
〉ちけんちさん
コメントありがとうございます。
ソフトウェア開発には「品質を作り込む」という言葉がありますが私はこの言葉は好きです。出来上がってからこの品質どう? って言うより作りながら頑張れる方がやりがいがありそうな気がします。
ハードとソフトのテストの位置づけは、たしかに近づいて来るかもしれませんね。
Mtaka
意味はちょっと違いますが、コアを無効化して出荷するCPUとかある意味、バグ(配線の不良など)を内在してるともいえるかも。
ハードも動作の範囲を決めて保障するし、そういう意味ではどこまで保障するかに依るのかなともおもってます。
# ソフトは周りの環境あってこそなので、だからこそテスト数は増えるし、それでも保障しきれなくなる部分が多いのかなーとも思ったり。
>Mtakaさん
コメントありがとうございます。
おっしゃる通り、同じソフトウェアでも特定の環境でのみ不具合が出たりするので、いろいろな環境でテストしなくてはいけません。だから保障しきれない、バグがあって当たり前(?!)になってしまうのでしょうか。(^_^;)