機能テスト(フィーチャーテスト)とは、特定の機能やユースケース単位でシステムの振る舞いを検証するテスト手法である。単体テストより広い範囲を対象とし、複数のモジュールが連携して正しく動作するかを確認する。
テストピラミッドの中間層に位置するのが機能テストだ。単体テストが関数単位の正しさを保証し、E2E テストがシステム全体の動作を確認するのに対し、機能テストは「1つのユーザーアクションに対する結果」を検証する。
たとえば「従業員を作成する」という機能テストでは、サーバーアクションの呼び出しからバリデーション、DB への保存、レスポンスの返却までを通す。ただし、ブラウザの起動は不要で、HTTP リクエストのシミュレーションやサーバーアクションの直接呼び出しで実行する。
「1つの機能」の範囲が曖昧になりがちだが、判断基準はシンプルだ。1つのサーバーアクションまたは1つの API エンドポイントの呼び出しが1件の機能テストに対応する。「部署作成→職種作成→従業員作成」のように複数アクションを連鎖させるものは統合テスト(インテグレーションテスト)に分類する。
機能テストは開発者の視点で「実装が仕様どおりか」を確認する。受け入れテストはビジネスの視点で「要件を満たしているか」を確認する。同じ操作を検証していても、検証の観点と記述の粒度が異なる。


ハーネスエンジニアリングとは?AIエージェントのミスを構造で防ぐ設計手法
シフトレフトとは、テスト・セキュリティチェック・品質検証などの工程を開発ライフサイクルの早い段階に前倒しすることで、欠陥の発見と修正のコストを下げる開発手法である。