Software Testing Non-Functional Testing

Non-functional testing evaluates how well the software performs, rather than what it does. While functional tests check features, non-functional tests measure qualities like speed, reliability, usability, and security.

The Core Difference

  FUNCTIONAL TESTING          NON-FUNCTIONAL TESTING
  ──────────────────          ──────────────────────
  "Does search work?"         "How fast does search return results?"
  "Can a user upload files?"  "Can 10,000 users upload files at once?"
  "Does checkout complete?"   "Does checkout work after 3 days of uptime?"

  Tests FEATURES              Tests QUALITY ATTRIBUTES

Types of Non-Functional Testing

Performance Testing

Measures how fast the software responds under various conditions. A website that takes 10 seconds to load loses most of its users before they see the content.

  Tools: JMeter, Gatling, Locust, k6
  Metrics: Response time, Throughput, Error rate

Load Testing

Checks the software's behaviour under expected peak user loads. For example, testing whether an online exam portal can handle 5,000 students logging in simultaneously during an exam schedule.

  Normal Load:    100 users   → Response: 200ms  ✔
  Expected Peak:  5,000 users → Response: 800ms  ✔
  Above Peak:     8,000 users → Response: 5000ms ✘ (too slow)

Stress Testing

Pushes the system beyond its normal limits to see where it breaks and how it recovers. The goal is to find the breaking point and ensure the software fails gracefully.

  ┌────────────────────────────────────────────────┐
  │ Normal:  500 users → OK                        │
  │ Stress:  5,000 users → Response slows          │
  │ Extreme: 50,000 users → System crashes         │
  │ Recovery: Traffic drops → Does system restart? │
  └────────────────────────────────────────────────┘

Spike Testing

Tests the software's response to a sudden sharp increase in load. An e-commerce site may have 100 users all day and then 50,000 users the moment a flash sale starts. Spike testing checks whether the site survives that sudden jump.

Soak Testing (Endurance Testing)

Runs the software under normal load for an extended period — hours or days — to check for memory leaks, slowdowns, and resource exhaustion that only appear over time.

Usability Testing

Checks whether real users can use the software easily and without confusion. A tester observes real users completing tasks and notes where they struggle, hesitate, or make errors.

  Usability Test Task: "Find the settings to change your notification preferences"

  User A: Found it in 12 seconds → Good
  User B: Took 3 minutes and gave up → Usability issue found

Security Testing

Checks the software for vulnerabilities that attackers could exploit. Security testing is covered in depth in a later topic.

Compatibility Testing

Verifies that the software works correctly across different operating systems, browsers, devices, and screen sizes.

  Browser Matrix:
  ┌──────────┬─────────────┬──────────┬─────────┐
  │ Chrome   │ Firefox     │ Safari   │ Edge    │
  │ Windows  │ Windows     │ macOS    │ Windows │
  │   ✔     │    ✔       │   ✔     │   ✔    │
  ├──────────┼─────────────┼──────────┼─────────┤
  │ Chrome   │ Firefox     │          │         │
  │ Android  │ Android     │  iOS     │         │
  │   ✔     │    ✔       │   ✔     │         │  
  └──────────┴─────────────┴──────────┴─────────┘

Reliability Testing

Checks how consistently the software performs over time without failure. A payment gateway that fails 1 in every 100 transactions has a reliability problem.

Accessibility Testing

Checks whether the software is usable by people with disabilities — including those who use screen readers, keyboard-only navigation, or high contrast modes.

Key Non-Functional Metrics

  METRIC               DESCRIPTION                  GOOD EXAMPLE
  ──────               ───────────                  ────────────
  Response Time        Time to respond to a request  Under 200ms
  Throughput           Requests handled per second   500 req/sec
  Error Rate           % of failed requests          Under 0.1%
  Uptime               % of time system is online    99.9%
  Mean Time to Fail    Avg time before a failure     30 days
  Mean Time to Recover Avg time to restore service   5 minutes

Why Non-Functional Testing Is Often Skipped (And Why That Is a Mistake)

Non-functional testing requires specialised tools and time, so project managers sometimes deprioritise it under schedule pressure. The result: software that works in development but crashes in production when real users arrive. A well-known example is e-commerce sites that go offline on peak sale days because load was never tested. Non-functional testing is not optional — it is what makes software production-ready.

Leave a Comment

Your email address will not be published. Required fields are marked *