空飛ぶロボットのつくりかた

ロボットをつくるために必要な技術をまとめます。ロボットの未来についても考えたりします。

テストを学ぼう(2)!~スローテスト問題~

スローテスト問題

スローテスト問題とは?

テストの実行に時間がかかること

ex: 全ユニットテストの実行に10分以上かかる etc…

対策

  1. 実行時間の短縮
  2. 実行環境の強化
  3. 並列で実行する
  4. 実行するものを絞り込む
実行時間の短縮方法
  1. テストデータの共有化(*)
  2. モックに置換

(*)共有フィクスチャ:フィクスチャを共有し再利用すること。しかし、独立性↓メンテナンス性↓

これらはテストコードを大きく変更するため、最終手段と考えよう

実行環境の強化
  1. 良いパソコンをゲットしよう笑
並列で実行する
  1. 複数のマシンで並列処理
  2. クラウドの仮想環境利用

テストケースが独立している場合に有効だが、後から分割は難しい…

実行するものを絞り込む
  1. テスト時間や重要度に応じてテスト頻度を調整する

ex: テスト時間のかかるものは一日一回

スローテストが発生するケース

  1. データべステスト(DBの初期化やコネクションの作成/開放はリソース消費大)
  2. 通信処理が伴うテスト(ネットワークの状態に依存しやすい)
  3. GUIを伴うテスト(アプリケーションの起動や画面のレンダリングなど負荷大)

これらを分類(カテゴリ化)して、実行不可を下げたいときは別々に実行できるようにしよう

【参考】

[Python] 初中級者のためのpytest入門 - くろのて