テストフレームワーク(テストフレームワーク)
ソフトウェア自動テストの実行基盤。2026年は Vitest 4/Playwright 1.59/Cypress 13/Jest 30 が JS 主流、各言語固有 (pytest/JUnit/Go testing) も健在。
概要
テストフレームワーク (Testing Framework) はソフトウェアの自動テストコードを実行・管理する基盤ソフト。1989年 Kent Beck の SUnit (Smalltalk) を起点に、JUnit (1997, Java)、unittest (2001, Python)、QUnit (2008, JS)、Mocha (2011)、Jasmine (2010)、Jest (2014)、Vitest (2021) と発展してきた。E2E (End-to-End) 領域は Selenium (2004)、Cypress (2017)、Playwright (2020) が主要選択肢。
2025-2026年の JavaScript エコシステムは Vitest 4 が新興本命。Vite ベースで Jest 比 2-5倍高速、ESM ネイティブ対応、TypeScript 標準対応で、新規プロジェクトの 65% が Vitest 採用 (State of JS 2025)。E2E 領域は Playwright 1.59 が Cypress を逆転、マルチブラウザ (Chromium/Firefox/WebKit) 対応・並列実行・AI 機能 (Codegen Pilot) で優位。
各言語の主要選択肢: Python = pytest 8 (シェア 78%), Java = JUnit 5 + Mockito, Go = 標準 testing + testify, Rust = 標準 cargo test + tokio-test, C# = xUnit/NUnit, Ruby = RSpec/Minitest, PHP = PHPUnit/Pest。CI/CD 統合では GitHub Actions が64%、GitLab CI 18%、CircleCI 9%、Jenkins 9% が2026年4月時点のシェア。
主な特徴・仕組み
- テスト種別: Unit (関数単位) / Integration (モジュール結合) / E2E (実ブラウザ) / Visual Regression / Performance / Mutation
- JS 主要 2026: Vitest 4 (Unit), Playwright 1.59 (E2E), Cypress 13 (E2E), Jest 30 (Unit/Legacy), Storybook 9 + interactions
- Python 主要 2026: pytest 8 + pytest-asyncio + pytest-benchmark, unittest (標準ライブラリ)
- Java 主要 2026: JUnit 5 + Mockito + AssertJ, TestNG, Spock (Groovy)
- モック手法: Sinon (JS), Mockito (Java), MagicMock (Python), gomock (Go)
- アサーション: expect/should/assert スタイル、Jest/Vitest は expect、pytest は assert
- カバレッジ: Istanbul (JS), Coverage.py (Python), JaCoCo (Java)、80%以上が業界目標
- 並列実行: Vitest 4 = 2-3倍高速 (Worker Threads)、Playwright = ブラウザ並列、pytest-xdist
- AI 機能 2026: Playwright Codegen Pilot (テスト自動生成)、Cursor + Vitest (テストファースト開発)
- CI 連携: GitHub Actions matrix で OS×Node.js バージョン並列実行、合計 30-50秒 → 5-15秒に短縮
主要テストフレームワーク比較表(2026年4月)
| FW | 言語 | 種別 | 速度 | 採用率 | 特徴 |
|---|---|---|---|---|---|
| Vitest 4 | TS/JS | Unit/Integration | 超高速 | 65% (新規 JS) | Vite ベース、ESM、TS 標準 |
| Jest 30 | JS | Unit | 高速 | 35% (既存) | 老舗、CRA 標準だった |
| Playwright 1.59 | TS/Python/Java | E2E | 高速 | 58% (E2E 新規) | マルチブラウザ、AI 統合 |
| Cypress 13 | JS | E2E | 中速 | 32% (E2E 既存) | UX 良、ブラウザ単一 |
| pytest 8 | Python | All | 高速 | 78% | 標準的 Python テスト |
| JUnit 5 | Java | Unit | 高速 | 92% | Java 業界標準 |
| Go testing | Go | Unit/E2E | 高速 | 95% | 標準ライブラリ、シンプル |
| Storybook 9 | TS/JS | Visual/Interaction | 高速 | 48% | コンポーネント開発 |
| Mocha + Chai | JS | Unit | 中速 | 12% (レガシー) | 古典的、柔軟 |
自作PC でのテスト環境構築
CI/CD + 高速テスト実行向け自作PC:
- CPU: Ryzen 9 9900X (12C24T, ¥99,800) — Vitest 4 並列実行・Playwright マルチブラウザ並列
- メモリ: DDR5-5600 64GB (¥49,800) — Chromium/Firefox/WebKit 並列起動 + ホット reload
- ストレージ: NVMe Gen4 SSD 2TB (¥28,800) — node_modules 1案件 1-3GB×複数案件
- GPU: 統合 GPU (Ryzen 9 内蔵) で十分、テスト実行に独立 GPU 不要
- CI Runner: 自宅 Ryzen 9 を GitHub Actions Self-hosted Runner 化 (月電気代¥3,000)、CI 時間 60-80% 削減
- 必須ツール: VS Code + Vitest 拡張、Cursor + Claude Code、TestRail/Allure (テスト管理)
テストフレームワークと類似ツールの違い
- テストFW vs テストランナー: ランナーは実行ツール (Mocha/Jest CLI)、FW は assert+モック等の包括機能
- テストFW vs CI/CD: CI/CD はパイプライン実行 (GitHub Actions)、FW は個別テスト
- テストFW vs リント (ESLint): リントは静的解析、テストは動的実行
- テストFW vs E2E ツール (Cypress/Playwright): E2E は実ブラウザ、Unit は単体
よくある質問(FAQ)
Q1: 2026年新規プロジェクトの推奨スタック? A: TS/JS = Vitest 4 (Unit) + Playwright 1.59 (E2E) + Storybook 9 (Visual) が最強構成。CI は GitHub Actions、E2E は AWS/Cloudflare の本物環境にデプロイ後実行が品質保証の鉄板。Python なら pytest 8 + pytest-asyncio。
Q2: Jest から Vitest へ移行のコスト? A: 軽い。設定 95% 互換 (jest.config.js → vitest.config.ts)、テストコードは ほぼゼロ修正、import.meta.vitest 等の Vite 特有機能を追加で活用。CRA 廃止 (2025年10月) で Jest ユーザの大半が Vitest 移行中、移行所要時間 1-3日。
Q3: 自作PC で CI Self-hosted Runner は得? A: 得。GitHub Actions の月3,000分超過分は $0.008/分 ($24/月で 50時間相当)、自宅 Ryzen 9 なら電気代月¥3,000 で無制限。プロジェクト多数なら年¥300,000+ 削減、CI 時間も Self-hosted の方が高速 (キャッシュ局所性)。
まとめ
- テストフレームワーク = ソフト自動テスト基盤、1989年 SUnit 起源
- 2026年 JS 主流: Vitest 4 (Unit) + Playwright 1.59 (E2E)、新規採用率 65/58%
- Python pytest 8、Java JUnit 5、Go 標準 testing が各言語標準
- 自作PC は Ryzen 9+64GB で Self-hosted Runner 化、CI コスト年¥300,000+ 削減