csvなどで固定環境を再現することで生産性をあげられるのはプロジェクト初期のみだから。
- 事前に3人のuserをcsvで作成している場合、userを追加するテストで合計4人になったら成功というテストが書かれるとcsvに4人目のuserを定義するとテストが落ちる
- 各種テストの事情により拡張されて身動きがとれなくなる
- テストケースが依存しているカラムがどれかわからない。ランダム値かつテストケース毎に必要な分だけテストコード側から固定値を指定することで、そのテストケースが何を確認したいのかが理解しやすくなる。
- 拡張されすぎないようにcsvを複数作成してテストで使い分ける対策が取られるが、複数csvの責務の境界線管理は難しく、かつ複数作っても必要としている柔軟性には及ばない
- 固定値には"1"など単純な値が指定されることが多く、アプリケーションのバグに気づかない
- csvだけでなくテスト実行により書き込まれたデータも消す必要がある
ランダムなのでテストケースが増えてくるとpkが衝突することもある。その場合は失敗したテストだけ再実行する仕組みをCIに入れると良い。 IDの採番を中央管理してpk衝突を防止できるが、まずは分散テストの分散数を増やしてテスト実行時間を減らしつつ、pkが被りにくいようするほうが目先の利益がある。 ID採番がしたくなればランダム生成しているコード部分に手を加えればいいだけなので、あとから採用するのは難しくない。