テストの本質を探る ――30年の歴史を持つ 「ソフトウェア工学」の知恵に学ぶ
●開発者=テスト担当者? 開発者≠テスト担当者?
CMM(Capability Maturity Model;能力成熟度モデル)など,最近,ソフトウェアの世界ではレベル付けすることがはやっています.多少,冗談めかしてはいますが,Beizerがテスト担当者の心理のレベル付けを紹介しています.それを表2に示します.
もちろん,フェーズは0から4へと成長していくわけです.テストとデバッグの区別がつかないのが最初のフェーズで,最終的にテストしなくても済むフェーズ4が最良というわけです.このあたりはCMMの元になった「Crosbyの5段階」と同じ構造になっています.品質を良くするためのしくみを作り上げれば,品質管理にかかるコストを最小化できます.「品質(を維持するの)はタダである(Quality is Free)」という議論です.
どういう立場の人がテスト担当者になるか,ということについてはいろいろな意見があります.一般的には,場面に応じて次のいずれかの方法がとられます.
1)開発者自身が自分の成果物をテストする
2)テスト担当者は開発者でもあるが,ほかの開発者の成果物をテストする
3)テスト担当者は開発者ではない
1)の方法は,ホワイトボックス・テストなどでプログラムを見ながらテスト・ケースを定める場合によく用いられます.しかし,その場合でも,テスト・ケースについてはほかの開発者などによるチェックが必要です.
2)は,やはり単体テストなどでよく用いられます.相互にチェックでき,追加の人員が必要ないといった利点があります.一方で,お互いに同じタイミングで成果物ができ上がっていないと,同時にテストを終了することができないという欠点があります.
3)は,システム・テストなど,開発の終盤に近いところで用いられます.理由はいくつかあります.一般に,ユーザは新たに開発されるシステムに対して初心者ですが,開発者は中身を知っています.そのため,開発者は厳しいテストを無意識に避ける傾向があります(逆の場合もある).また,開発者は技術を知っていても,ユーザが実際にどのように使うかを知らない場合,ドメイン知識を持った人でないとシステムが有効に機能するかどうかを判断できません.もちろん,ソフトウェア品質保証(SQA:software quality assurance)担当者が最終的な品質保証として検査する場合も,開発者以外がテストするケースに含まれます.
〔表2〕テスト担当者の心理のレベル付け
フェーズ
|
テスト担当者の心理
|
0 |
テストとデバッグは同じ.デバッグの対象を見つけるため にテストする |
1
|
テストは,動作する場所を示すことが目的である |
2
|
テストは,動作しない場所を示すことが目的である |
3
|
テストは,プログラムが動作しないことの影響度をある許 容範囲にすること.それ以外のなにも証明しない |
4
|
テストは行為ではない.テストしないですむ高品質ソフト ウェアを作るための心理的な訓練である |