Yasuo's Notebook

ソフトウェア開発の話題が中心の備忘録です。

TFS事件簿

ALM Advent Calendar 2012 #TFSUG : ATNDの7日目です。

TFSを使っていて今年遭遇したトラブルを紹介します。
両方ともTFS 2010を使っていました。

TFS事件簿No.1 テスト結果消滅事件

今年、使って良かったツールの最上位に入るのがVisual Studio Test ProfessionalのTest Managerです。
Test Managerはその名の通り、テストマネジメントのためのツールです。
テストケースの設計、テストの実施などをサポートしています。
TFSと密接に関連付いているのが特徴で、ユーザストーリーとテストのトレーサビリティを取れたりテスト実施からTFSのバグを容易に起票できます。
テスト結果として操作手順や画像、操作記録の動画などのエビデンスを自動的に取得しテストケースやバグと関連付けてくれます。
このツールを入れて、テストを順調に実施していたある日、事件はおきました。
前の日まで、テスト結果を示すグラフには、数百件の手動テストを実施済みで順調にテストが進んでいることを示していました。
「今日もテスト頑張るぞ」とツールを開いたその時。。。
ツールに表示された文字を見て凍り付きました。

テスト実施済み 0件

なんと、前の日まで頑張って実施していたテストの結果が消えているではありませんか!
ツールのどの画面を調べてもテスト結果は見つかりませんでした。

誰がテスト結果を消したのか?

調査の結果、犯人が見つかりました。犯人は、なんとTFSだったのです。
TFSは何故、テスト結果を消したのでしょうか?
答えは「ビルド結果の保持ポリシーに従って、ビルドを削除した」です。
TFSのビルドには保持ポリシーが設定できます。
TFS2010のデフォルトでは、成功したビルドの保持ポリシーのデフォルトは以下の通りになっています。

最新10ビルド保持、テスト結果を含む全データを削除する。

Test Managerでテスト対象のビルドを設定します。
そうすると、テスト結果は全て、ビルドに関連付けられた情報として蓄積されます。
もし、TFSがテスト対象のビルドを消してしまうとどうなるか?
そうです。テスト結果も一緒に全て消えてしまうのです。
もちろん、TFSでは、ビルドに対して個別の保持する設定を行えたり、ビルド削除時にテスト結果を消さない設定を行うことができます。「手動テスト対象になるようなビルドは名前付けして保持を行う設定をするだろう」というポリシーなんだと思います。(実際にそうするべきです)
ちなみに、TFS2012では、ビルドの保持ポリシーのデフォルトがテスト結果は削除しないように変更されています。
TFSにより開発にかかわるデータを密接結びついていることを実感させる事件でもあります。
Visual Studio2010、TFS2010とTest Managerを使っている方は、くれぐれも注意してください。