テストを学ぼう(2)!~スローテスト問題~
スローテスト問題
スローテスト問題とは?
テストの実行に時間がかかること
ex: 全ユニットテストの実行に10分以上かかる etc…
対策
- 実行時間の短縮
- 実行環境の強化
- 並列で実行する
- 実行するものを絞り込む
実行時間の短縮方法
- テストデータの共有化(*)
- モックに置換
(*)共有フィクスチャ:フィクスチャを共有し再利用すること。しかし、独立性↓メンテナンス性↓
これらはテストコードを大きく変更するため、最終手段と考えよう
実行環境の強化
- 良いパソコンをゲットしよう笑
並列で実行する
- 複数のマシンで並列処理
- クラウドの仮想環境利用
テストケースが独立している場合に有効だが、後から分割は難しい…
実行するものを絞り込む
- テスト時間や重要度に応じてテスト頻度を調整する
ex: テスト時間のかかるものは一日一回
スローテストが発生するケース
- データべステスト(DBの初期化やコネクションの作成/開放はリソース消費大)
- 通信処理が伴うテスト(ネットワークの状態に依存しやすい)
- GUIを伴うテスト(アプリケーションの起動や画面のレンダリングなど負荷大)
これらを分類(カテゴリ化)して、実行不可を下げたいときは別々に実行できるようにしよう
【参考】