失敗したこと その4 「単体テストの観点が足りなかった」

このプロジェクトでは、単体テストを二つの工程に分け、定義した。ひとつは、クラスのメソッド単位で行う単体テスト。もう一つは、詳細設計書通りに動作するか。私の期待としては、前者がクラスに対するホワイトボックス試験となり、後者があるクラス群に対するブラックボックス試験となるはずだった。しかし、実施した結果は、前者は、メソッドに対するホワイトボックス試験となり、後者は設計書に対するホワイトボックス試験となってしまった。その結果、ブラックボックスの観点での試験が失われた。
ブラックボックスの観点が失われてしまったことで、入力値のバリエーション試験が失われた。後工程になって発見されたバグのうち、入力値のバリエーションに依存するバグの割合が多いことに気づき、急遽、品質強化試験を実施することとなり、順調に進んでいたかと思われていた開発が、一気に修羅場と化した。
なぜそんなことになったか。純粋に観点から漏れてた。馬鹿じゃないの?死ぬの?>俺 と言ってしまうと、終わってしまう。しかし、もし詳細設計書の記述を、ロジック中心ではなく、プログラムに対する入出力仕様を明確にしていれば、当初の想定通り、詳細設計書に対する試験が、ブラックボックス的な観点となっていたのではないかと。
設計書は、入出力仕様をきちんと書けば、ロジックはいらないと豪語していた大学時代に戻りたい。初めてのアーキテクト的な役割で、自信がなかったんです。ごめんなさい。