再発防止策
うちのチームで,かなり痛いバグを出してしまいました.
状況は,
- 本番環境で,とあるバグが見つかる
- 急いで修正,修正内容は問題箇所が数行と,そのプログラムが使用しているDBのマスタデータ数レコード
- が誤って,他のプログラムが使用するマスタデータを上書きするSQLをリリースしてしまう
- テストチームでは,まさか他のプログラムにエンバグしているとは思わないのでテストせず,もともと問題のあったプログラムの修正確認のみをおこなって完了報告をしてしまう
- 本番環境で,デグレード発生!
まぁ,ご存知の通り,こういったタイプのバグは単純なバグより罪が重いわけで,開発プロセスの見直しだとか再発防止策だとかを考えないといけません.面倒くさいことは確かですが,お客さんの立場に立って考えれば当然ではあります.それは分かっているのですが……
今どきの考え方だったら,テスティングフレームワーク(NUnitとか)を使って,ふだんからTDDを心がける,というのが良さそうです.うちのプロジェクトではわりとそういったことをしているんですが,残念ながら全てのプロジェクトでやっているわけではなく,さらに他チームから引き取ったプログラムなのでそれらのセットアップを惜しんでしまった,というのがアンラッキーではありました(もっとも,このことからまだまだTDDがチームに根付いていないのだということも分かりました).とはいえ,これをお客さんに伝えても,理解されないか誤って理解されるかのどちらかなので,再発防止策で書くには気が引けます.
ツールに頼らないとすると,あとは根性になります.気をつけるとか,クロスチェックするとか.しっかりとドキュメントを作るとか.しかしこのようなプロセス改善は,形骸化することが目に見えているし,チームの士気が削がれるので,やりたくありません.
なにかいいアイデアはないでしょうか?本気で困っています.