Dress Code株式会社のプロダクトエンジニアチームが、モノリシックなNode.js/NestJSプロダクト(約2,900ファイル・3万テストケース)のVitest実行時間を16分14秒から5分59秒(約63%削減)に短縮した事例です。CI環境はEC2 r8gd.2xlargeのセルフホストランナーを使用しています。
対策は4つです。未使用のカバレッジレポート収集機能をCI環境から除外して約7分短縮、Prismaのenum専用の入口を作りClientクラスとruntimeへの依存を切り離して平均16.52秒から14.41秒に短縮(約13%)、Vitestの実行方式をプロセス独立型(forks)からスレッド型(threads)に変更して16.00秒から14.29秒に短縮(約8.7%)、そして統合テストと重複する単体テストの整理を継続中とのことです。
著者は改善作業の大部分をAIに委任し、自身は目標設定と方針の助言に留めたとしています。
出典が伝えている要点
- Dress Code株式会社のプロダクトエンジニアチームが単体テストの実行時間削減に取り組んだ
- 対象はモノリシックアーキテクチャで約2,900ファイル、3万テストケースを持つプロダクト
- テスト実行時間を16分14秒から5分59秒に短縮した(約63%削減)
- 使用技術はNode.js v24、NestJS v11、PrismaJS v7、Vitest v4
- CI環境はEC2 r8gd.2xlargeのセルフホストランナー
- 対策1:使用していないカバレッジレポート収集機能をCI環境から除外し、約7分短縮した
- 対策2:Prismaのenum専用の入口を作成しClientクラスとruntimeへの依存を切り離すことで、平均実行時間を16.52秒から14.41秒に短縮した(約13%)
- 対策3:Vitestの実行方式をプロセス独立型(forks)からスレッド型(threads)に変更し、16.00秒から14.29秒に短縮した(約8.7%)
- 対策4として、統合テストで既に検証済みの振る舞いと重複する単体テストの整理を行っており、継続中である
- 著者はAIに改善作業をほぼ委任し、自身は目標設定と方針の助言に留めたとしている