Non-Functional Testing

Non-functional testing is a type of software testing to test non-functional parameters such as reliability, load test, performance, and accountability of the software. The primary purpose of non-functional testing is to test the reading speed of the software system as per non-functional parameters. The parameters of non-functional testing are never tested before the functional testing.

It answers: “How good is the software?” instead of just “Does it work?”

Let’s use the ATM machine example:

  • “How fast does the ATM dispense cash?” (Performance)

  • “Does it work 24/7 without crashing?” (Reliability)

  • “Can it handle 1000 users withdrawing at the same time?” (Scalability)

  • “Is the PIN stored securely?” (Security)

  • “Is the screen easy to read and use?” (Usability)

Types of Non-Functional Testing

1. Load Testing

  • What: Checks how the system performs under a specific expected number of users/transactions.

  • Goal: Ensure the system can handle normal usage.

  • Example (ATM): 500 people use ATMs at the same time across the city → does the system still work smoothly?

2. Performance Testing

  • What: Measures speed, response time, and stability of the system.

  • Goal: Ensure it is fast and responsive under normal conditions.

  • Example (ATM): How many seconds does it take from inserting card → cash dispensed?

3. Stress Testing

  • What: Push the system beyond its limits to see how it behaves when overloaded.

  • Goal: Check if it fails gracefully (without crashing completely).

  • Example (ATM): 10,000 people try to withdraw at once → does the ATM system show proper error messages or crash?

4. Security Testing

  • What: Ensures the system is safe from threats and data breaches.

  • Goal: Protect sensitive information and prevent unauthorized access.

  • Example (ATM): Is the PIN encrypted? Can hackers bypass login? Is there protection from skimming attacks?

5. Accessibility Testing

  • What: Checks if the system can be used by people with disabilities.

  • Goal: Ensure inclusivity (as per WCAG/ADA standards).

  • Example (ATM): Does the ATM have audio guidance for blind users? Is the keypad accessible for wheelchair users?

6. Scalability Testing

  • What: Checks if the system can grow with increased users, transactions, or data.

  • Goal: Ensure it can expand without performance loss.

  • Example (ATM): If the bank doubles its customers, can the ATM network handle it without slowing down?

7. Compatibility Testing

  • What: Ensures the software works correctly on different devices, OS, browsers, or environments.

  • Goal: Provide a smooth experience across platforms.

  • Example (ATM): ATM software should work on different ATM hardware models, different operating systems, and still connect with different bank servers.

  • Load – Normal expected users.

  • Performance – Speed & responsiveness.

  • Stress – Beyond limits.

  • Security – Safe from attacks.

  • Accessibility – Usable by everyone.

  • Scalability – Can grow with demand.

  • Compatibility – Works across environments/devices.