Non-Functional Testing
Non-functional testing checks how well a system does its job rather than what it does; the ISTQB Foundation syllabus calls it the testing of "how well the system behaves". It checks the quality characteristics other than functional suitability, such as performance efficiency, security, usability, reliability and compatibility. On a team you meet it as named test types: performance, security, usability, accessibility, compatibility, reliability and localization testing.
Take a sign-in page. A functional test asks whether a correct email and password sign the user in. Non-functional tests ask how well: does it answer within 2 seconds while 500 people sign in at once, can it be used with a keyboard and a screen reader, does it resist password guessing, and does the Arabic version read right to left?
Why it matters
A product can pass every functional test and still fail its users: the payment page times out on the first day of a sale, a screen-reader user cannot reach the Pay button, or one customer can open another customer’s invoice. Such failures hit many users at once, and their cause is often a design decision, so late fixes are costly; the Foundation syllabus warns that late discovery of non-functional defects can seriously threaten a project.
For a tester, "does it work?" becomes "does it work well enough, for whom, under which conditions?" That needs a target agreed in advance, or "fast enough" becomes an argument at release time instead of a test result.
What it does versus how well it does it
A functional test checks behaviour against a rule: this input, this expected output. A non-functional test keeps the feature and adds a condition and a measure: how fast, how many users at once, on which device, after which failure. Many reuse a functional test and check a constraint while it runs, such as search returning the right results within 2 seconds.
It may need a special environment: a production-like system for load, real devices, assistive technology, or real users in a usability lab. Its expected result is a target, and the outcome is a measured value compared with it. Where possible it starts early, in requirement and design reviews and in component tests, because the fix for a slow or insecure design is rarely small.
The areas a tester meets first
The lesson on software quality introduced the nine ISO/IEC 25010 characteristics: functional suitability belongs to functional testing, the other eight to non-functional testing. Maintainability is judged mostly through reviews and static analysis, and safety matters where software can cause harm. In daily work testers meet these areas first:
- Performance (performance efficiency): how fast it responds, how much load it carries and what resources it uses.
- Security: only authorised people can see and change data, and attacks are resisted.
- Usability (interaction capability in ISO/IEC 25010:2023): intended users reach their goals with effectiveness, efficiency and satisfaction, the three parts of the ISO 9241-11 definition.
- Accessibility: people with disabilities can use it, usually judged against WCAG 2.2. ISO/IEC 25010 treats it as part of interaction capability.
- Compatibility: it works on the supported browsers, devices and operating systems, and with connected systems. ISO/IEC 25010 files browser and device support under flexibility (portability in 2011); teams usually call both compatibility.
- Reliability: it works correctly for as long as needed, stays available, and keeps working or recovers when something goes wrong, such as a dropped connection.
- Localization: each language and region version is complete and correct, from translation and right-to-left layout to date, number and currency formats. It is not an ISO/IEC 25010 characteristic; teams plan it as its own test type.
Try it: Test Scenario Generator Try it: Security Header Analyzer
Turning "fast" into a measurable criterion
"The page must be fast" cannot be tested, because nobody can say when it fails. For times, prefer percentiles to averages. The 95th percentile (p95) is the time within which 95% of requests finish: "p95 at most 2 s" means at least 95% of requests finish within 2 seconds, while an average of 1 second can hide requests that take 10. For a standard, name the version and level, such as WCAG 2.2 level AA.
A measurable acceptance criterion states four things:
- Measure: what is counted, such as p95 response time, error rate, task success rate or minutes to recover.
- Target: the threshold that decides pass or fail, with its unit: at most 2 s, below 1%, zero.
- Conditions: the load, data, devices, network, users and environment the target applies to.
- Method: how and where it is measured, so that two testers get comparable numbers.
Vague: The registration page must be fast.
Measurable:
Measure p95 response time of "Register", and error rate
Target p95 <= 2 s, errors < 1%
Conditions 2,000 concurrent students for 15 minutes,
production-size data, staging environment
Method load test script; numbers from the tool reportWorked example: course registration day
A university opens course registration at 09:00, and most students try in the first minutes. The story is functional: "As a student, I want to register for a course section, so that I have a seat." In refinement the tester asks one question per area, and the team agrees these criteria:
- Performance: with 2,000 concurrent students for 15 minutes, p95 for Register at most 2 s and errors below 1%, in a load test on staging with production-size data.
- Security: a request with another student’s id is refused with HTTP status 403 (Forbidden) or 404 (Not Found) and returns no data, checked with two test accounts.
- Usability: at least 4 of 5 first-year students register unaided within 3 minutes in a moderated session, where a facilitator gives the task and watches without helping.
- Accessibility: WCAG 2.2 level AA; for example every step works by keyboard alone (success criterion 2.1.1) and normal text has a contrast ratio of at least 4.5:1 (1.4.3), checked with a keyboard walk-through and a contrast checker.
- Compatibility: the registration tests pass on every browser and device in the support matrix, run on each row.
- Reliability: if the connection drops after Register is pressed, the student has one registration or none, never two, checked by cutting the network mid-request and counting registrations.
- Localization: the Arabic interface has no untranslated text, reads right to left and shows class times in the university’s time zone, checked with Arabic test data.
| Area | Example test | Measure and target |
|---|---|---|
| Performanceperformance efficiency | Load test on staging, production-size data2,000 concurrent students for 15 minutes | p95 for Register at most 2 serrors below 1% |
| Security | Two test accounts, student ids swapped | 403 or 404 and no datafor every request with another student’s id |
| Usabilityinteraction capability | Moderated session with first-year students | At least 4 of 5 register unaidedwithin 3 minutes |
| AccessibilityWCAG 2.2 level AA | Keyboard-only walk-through and contrast check | Every step works by keyboard (2.1.1)normal text contrast at least 4.5:1 (1.4.3) |
| Compatibility | Registration tests on each support-matrix row | Pass on every supported browser and device |
| Reliability | Cut the network after Register is pressed | One registration or none, never twocount the registrations afterwards |
| Localization | Walk the flow in Arabic with Arabic test data | Zero untranslated textright-to-left layout; class times in the university’s time zone |
The targets are this example’s; each product agrees its own with the product owner.
Common mistakes
- Leaving non-functional testing to the end, when a slow design or a missing security control is expensive to change.
- Accepting "fast", "secure" or "user-friendly" without a measure, a target and conditions.
- Reporting average response times, which hide the slow requests users notice.
- Measuring performance on a laptop or a nearly empty database and treating the number as a production result.
- Treating an automated accessibility scan as proof of WCAG conformance; many success criteria need human judgement.
- Testing only in English on one browser, so layout, translation and device problems reach users first.
The QA perspective
Raise non-functional questions in refinement and requirements reviews, before code: "How many users at peak?", "Who may see this data?", "Which browsers and devices do we support?", "Which WCAG level do we commit to?" The product owner decides the targets; developers, operations and security specialists say what is realistic. An unanswered question becomes an open item with an owner.
Record the conditions with every result: build, environment, data size, load, device, browser and tool. A non-functional bug report states the criterion, the measured value and the method: "p95 for Register was 4.8 s at 2,000 users (target 2 s), staging, build 7.3.1." Report which areas were not tested, so that the team accepts that risk knowingly. Run load and security tests only on systems you own or have written permission to test, and at an agreed time.
Practice exercise
Make vague requirements measurable
An online pharmacy is launching its website in Arabic and English. Its requirements document contains the four statements below. For each one, name the area, then rewrite it as an acceptance criterion with a measure, a target, conditions and a method. Where you do not know a number, write the question you would ask and who should answer it.
NFR-1 The website must be fast.
NFR-2 Customer data must be secure.
NFR-3 The website must be easy for older customers to use.
NFR-4 Orders must never be lost.- Name the area of each statement.
- Choose a measure that shows the need is met.
- Propose a target and the conditions it applies to.
- Describe the method and list your open questions.
Show the model answer
NFR-1, performance: with 500 concurrent users for 15 minutes, p95 for search and for placing an order at most 2 s and errors below 1%, in a load test on staging with production-size data. Ask the product owner for the real peak.
NFR-2, security: a customer sees only their own orders, prescriptions and addresses; any request with another customer’s id returns 403 or 404 and no data, checked with two test accounts on every page and endpoint that takes an id. Ask the security lead which other controls apply.
NFR-3, usability and accessibility: at least 4 of 5 customers aged 60 or over repeat a previous order unaided within 3 minutes in a moderated session, and the site meets WCAG 2.2 level AA, checked with keyboard, screen reader and enlarged text. Ask the product owner which tasks matter most to older customers and on which devices they shop.
NFR-4, reliability: if the network or the payment provider fails during checkout, the customer ends with exactly one paid order, or with no order and no charge, and can see which; the target is zero orders without a payment and zero payments without an order. Test by cutting the network and stopping the payment test service mid-order, then compare orders with payments. Ask the developers how a retried payment is kept from creating a second order.
Frequently asked questions
Is non-functional testing only for specialists?
No. Deep performance or security testing needs specialists and tools, but every tester can ask for measurable criteria, notice slow screens, try the keyboard, switch the language and test on a second device. Later specialist modules of this roadmap go deeper into each area.
Can non-functional tests be automated?
Many can: load tests are scripts, some accessibility rules and security headers can be checked automatically in a pipeline, and compatibility runs can use browser automation. Others need people, such as usability sessions and judging whether an image’s alternative text makes sense. Most teams combine both.
What is the difference between a non-functional requirement and a non-functional test?
The requirement states the quality the product must have, ideally with a measure and a target. The test is the activity that measures it under stated conditions and compares the result with the target. A vague requirement leads to a test with no expected result.
Is localization functional or non-functional testing?
Teams classify it differently. A wrong currency calculation is a functional defect, while truncated Arabic text or a layout that does not mirror is usually reported as a localization defect. What matters is that it is planned and has criteria, not which column it sits in.
References
- ISTQB Certified Tester Foundation Level (CTFL) v4.0The foundation syllabus of software testing: test levels and types, test design techniques, test management and tools.
- ISO/IEC 25010:2023 — Systems and software Quality Requirements and Evaluation (SQuaRE) — Product quality modelThe product quality model: functional suitability, performance efficiency, compatibility, interaction capability, reliability, security, maintainability and flexibility.
- ISO 9241-11:2018 — Ergonomics of human-system interaction — Part 11: Usability: Definitions and conceptsThe framework for the concept of usability: effectiveness, efficiency and satisfaction for specified users, goals and context of use, with usability treated as an outcome of use.
- Web Content Accessibility Guidelines (WCAG) 2.2The W3C Recommendation that defines the testable success criteria for accessible web content, organised under four principles and three conformance levels (A, AA, AAA).
Practise with Mutqan tools
Generate high-level test scenarios covering functional, negative, security, usability and compatibility angles for a feature.
Measure an endpoint's response time over several samples: min, max, average, median and p95.
Grade HTTP security headers (CSP, HSTS, X-Frame-Options, Referrer-Policy, Permissions-Policy, COOP/CORP) from pasted headers or a public URL.
Generate Arabic names, addresses, sentences, numbers (Arabic-Indic digits) and RTL edge cases for localisation testing.
Go deeper
Your progress on this topic
Not started
Mark the topic complete when you have studied it and done the exercise.
Sign in to track your progress
Mark topics complete, continue where you left off and unlock specialisation exams.