Functional testing (feature testing) is a testing method that verifies system behavior in terms of specific features or use cases. It covers a broader scope than unit testing, confirming that multiple modules work together correctly.
Functional tests occupy the middle layer of the test pyramid. While unit tests guarantee correctness at the function level and E2E tests verify the behavior of the entire system, functional tests validate "the result of a single user action."
For example, a functional test for "creating an employee" runs through the entire flow from invoking the server action, through validation, saving to the DB, and returning the response. However, launching a browser is not required; it is executed via HTTP request simulation or direct server action calls.
The scope of "a single feature" can easily become ambiguous, but the criterion is simple. One server action call or one API endpoint call corresponds to one functional test. Chains of multiple actions — such as "create department → create job type → create employee" — are classified as integration tests.
Functional tests verify from a developer's perspective whether "the implementation conforms to the specification." Acceptance tests verify from a business perspective whether "the requirements are met." Even when validating the same operation, the viewpoint of verification and the level of granularity in description differ.


Acceptance testing is a testing method that verifies whether developed features meet business requirements and user stories, from the perspective of the product owner and stakeholders.

Unit testing is a testing method that individually verifies the smallest units of a program, such as functions and methods. By replacing external dependencies with mocks, it allows for rapid validation of the target logic in isolation.

E2E testing (End-to-End testing) is a testing methodology that simulates user interactions to drive requests through the entire system via a browser or API, verifying that the expected results are produced.


What Are AI Agent Protocols (MCP & A2A)? How Multi-Agent Collaboration Works

TDD (Test-Driven Development) is a development methodology in which tests are written before implementation code, repeating a short cycle of test failure (RED) → implementation (GREEN) → refactoring (Refactor).