Functional testing is the earliest and most fundamental branches of [[Software Testing]] because it verifies whether something _works_.
## Types of functional testing
- Manual testing
- Automated tesitng
Also see [[Software Testing#Types of testing|Types of software testing]] for more general ways to organize different forms of testing.
## Problems in functional testing
### Device segmentation
Unlike [[Operational testing]], which is generally more focused in the average user's experience, functional testing seeks to achieve a reasonable amount of test coverage across all potential user paths. This can be a problem because different devices, operating systems, and firmware can all affect a user's functional experience.
[[Testing video games]]
### Prioritization is difficult
[[Exhaustive testing is impossible and impractical]], so application teams must perform risk-based analyses to determine which areas are most prone to defects or the most critical to the company's business.
### Automation is a double-edged sword
[[Test automation has a compounding rate of return.]], but if teams attempt to automate too much, they also risk wasting effort. Not everything can or should be automated, but it isn't always easy to find the line.