すべての記事Education 
テスト戦略:コードへの信頼を築く
2026年1月18日
テスト戦略:コードへの信頼を築く
テストはあなたのセーフティネットです。テストがあれば、自信を持ってリリースでき、恐れずにリファクタリングできます。
テストピラミッド
単体テスト(土台)
- 高速で独立している
- 個々の関数やコンポーネントをテストする
- 高いカバレッジ、低いコスト
結合テスト(中間)
- コンポーネント間の連携をテストする
- データベースクエリ
- APIエンドポイント
E2Eテスト(頂点)
- 完全なユーザーフローをテストする
- 低速だが包括的
- 重要なパスに注力する
何をテストするか
実装ではなく、振る舞いをテストする
❌ 悪い例:内部状態をテストする
expect(component.state.isOpen).toBe(true)
✅ 良い例:ユーザーに見える振る舞いをテストする
expect(screen.getByRole('dialog')).toBeVisible()
Reactコンポーネントのテスト
React Testing Library
ユーザーの操作に注目します。
test('submits form with user data', async () => {
render(<SignupForm />)
await userEvent.type(
screen.getByLabelText(/email/i),
'test@example.com'
)
await userEvent.click(screen.getByRole('button'))
expect(screen.getByText(/success/i)).toBeInTheDocument()
})
APIのテスト
エンドポイントを徹底的にテストしましょう。
- 正常系(ハッピーパス)
- エラーケース
- エッジケース
- 認証・認可
モックのベストプラクティス
- 自分のコードではなく、外部サービスをモックする
- 現実的なモックデータを使う
- モックを最新の状態に保つ
継続的インテグレーション
テストを自動的に実行しましょう。
- すべてのプルリクエストで
- デプロイの前に
- 低速なテストは夜間に
テストカバレッジ
意味のあるカバレッジを目指しましょう。
- 80%が良い目標
- 100%が常に現実的とは限らない
- 重要なパスに注力する
テストを省略してよいとき
省略しても構わない場合もあります。
- プロトタイプや技術検証(スパイク)
- 純粋なUIのスタイリング
- サードパーティライブラリのラッパー
まとめ
良いテストは開発を遅くするのではなく、速くします。テストスイートに投資しましょう。それはあなたの心の平穏への投資です。