基礎から学ぶソフトウエア・テスト(4)テストのマネージメントとレポート(前回からの続き)
開発者●テストも全部終了し,納品の準備が完了しました。 上司●よし。残業すれば何とか間に合いそうだな。で,バグの状況は? 開発者●全部直しました。 上司●バグの収束状況を聞いているんだよ。 開発者●忙しかったもので,まだまとまっていません。納品が済んだら調べます。 上司●おいおい,それくらいちゃんとまとめておいてくれよ。じゃあ,制限事項になる部分や,テストが不十分で品質に心配がある部分などは残っているのか? 開発者●いや,特に問題ありません。 上司●このWebアプリケーションは一般ユーザー向けだったな。ブラウザの種類ごとのテストはどの程度やったんだ? 開発者●…テストに使ったブラウザは,Internet Explorer 6(IE6)だけです。 上司●IE6のみ?! FireFoxやNetscapeでは動作確認してないのか? まずいなあ。ところでそのIE6のマイナー・バージョンは? 開発者●開発用のパソコンを見ないとわかりませんが…。 上司●それくらいちゃんと調べろ。あと,納品はユーザーが使う他のブラウザでもテストしてからだ! 開発者●えーっ(いまさらバグ出たらどうすんの? もうかんべんしてよ…)。 ——このプロジェクトの開発者は,これから納品までの間,帰れない日々を続けることになりそうですね。こんなときは,テストが余計な作業に見えて仕方ないかもしれません。 ソフトウエア・テストは何のために行うのか?皆さんは,ソフトウエア・テストは何のために行うのだと思いますか。書籍「ソフトウェアテスト293の鉄則」*1には,「つまるところ,テストする理由はただ一つしかない。重要な部分が動かない恐れがあるからだ」と書かれています。確かに,“人間は間違いを犯す生き物である”という言葉があるように,間違いをせずにソフトウエアを作るということは現実的には無理です。テスト工程にリリースしたプログラムのうち,だいたい100行に1〜3行は誤りが残ってしまうという報告もあります*2。プログラミングより前工程の要件定義,設計にも同様のことが言えるでしょう。したがってテスト工程では,そのソフトウエアが意図した通りに動くのか,それとも動かないのかを,きちんと確認しなければなりません。
ソフトウエア・テストの定義は,専門家によっていろいろなものが提案されています。例えば,米国のテスト・コンサルタントであるRick D. Craig氏は,テストを「ソフトウエアの品質を測定して改善するための,テストウエアをエンジニアリングし使用しかつ保守しながら同時並行的に進めるライフサイクルプロセス」と定義しています*3。この定義は,後述する「テストの全体像」を理解するうえではとてもよいと筆者は思うのですが,ちょっと読んだだけでは今ひとつわかりにくいかもしれません。そこで,ここではもう少し身近な例ということで,テストを「家計簿」にたとえて考えてみたいと思います(図1[拡大表示])。 ソフトウエアのテストは
|
![]() |
| 湯本 剛(ゆもと つよし) 株式会社豆蔵 ES事業部 |
テストも,「プロジェクトが火を噴いてきたからテストに人を追加投入しよう」という考え方ではうまくいきません。バグだらけのソフトウエアをテストをしても,テスト工数がかさむだけです。テスト工数が計画以上にならないようにするためには,バグを早めに見つけなければなりません。開発の初期段階から設計内容をテストの視点でレビューし,テスト実施前にバグを予防できるように,開発と同時並行的に進めていくのが重要です。
さて,以上のことをまとめてみましょう。
・テストとは情報サービスだ。品質向上のための改善につながることに価値がある
・テストのための手間を惜しまないのが成功の分かれ道
・早めにテストを行うことで,無駄にテストの工数を増やさない