Q5 of 38 · Manual & exploratory
What is the difference between functional and non-functional testing?
Short answer
Short answer: Functional testing checks **what** the system does — does the login button log the user in. Non-functional testing checks **how well** it does it — performance, security, accessibility, usability, reliability under load.
Detail
Functional testing maps to the requirements list: each "the system shall..." statement gets at least one test verifying the behaviour. It answers questions of correctness — given X input, do we see Y output? Most user stories generate functional tests directly.
Non-functional testing covers the qualities a feature must have to be acceptable. The classic categories are performance (latency, throughput), security (auth, injection, data exposure), accessibility (WCAG, screen reader support), usability (cognitive load, learnability), reliability (uptime, mean time to failure), scalability (does it survive 10x load), and compatibility (browsers, OS, locales).
In practice the line blurs. "Login responds within 500ms" is sometimes called functional (it's a stated contract) and sometimes non-functional (it's about how fast). The interview-worthy point: most teams under-invest in non-functional testing because it's not in the user-story acceptance criteria, and that's where a disproportionate share of customer pain comes from.