Software Testing - Non-Functional Testing

1. What is Non-Functional Testing?

Non-Functional Testing (NFT) is a type of software testing that verifies how well a system works rather than what it does.
It focuses on quality attributes like performance, scalability, usability, and security — not on specific features or functions.

Think of it this way:

  • Functional Testing = “Does it work?”

  • Non-Functional Testing = “How well does it work?”


2. Purpose of Non-Functional Testing

  • Ensure the system meets quality standards and user expectations.

  • Identify performance bottlenecks, usability issues, and potential security risks.

  • Improve the system’s reliability, efficiency, and user satisfaction.


3. Key Characteristics

  • Focuses on system attributes rather than individual features.

  • Often involves measuring and benchmarking.

  • Requires specialized tools and environments.

  • Can be manual or automated depending on the attribute tested.


4. Common Types of Non-Functional Testing

1. Performance Testing

  • Measures how fast the system responds under different loads.

  • Includes:

    • Load Testing – Normal expected traffic.

    • Stress Testing – Extreme conditions beyond limits.

    • Spike Testing – Sudden increases in traffic.

    • Endurance Testing – Long-duration stability.

2. Security Testing

  • Checks for vulnerabilities, data leaks, and unauthorized access risks.

3. Usability Testing

  • Evaluates how easy and intuitive the system is for end users.

4. Compatibility Testing

  • Ensures the system works across different devices, browsers, OS, and network conditions.

5. Reliability Testing

  • Confirms that the system runs without failure for a specific time under specific conditions.

6. Scalability Testing

  • Checks if the system can handle increasing workloads by adding resources.

7. Maintainability Testing

  • Evaluates how easily the system can be updated, fixed, or enhanced.


5. Non-Functional Testing Process

  1. Identify Quality Attributes

    • Example: Performance, security, usability.

  2. Define Measurable Criteria

    • Example: “Login response time should be ≤ 2 seconds under 1,000 concurrent users.”

  3. Select Tools

    • Example: JMeter for performance, OWASP ZAP for security.

  4. Prepare the Test Environment

    • Simulate real-world conditions (load, network, devices).

  5. Execute Tests

    • Measure, monitor, and collect results.

  6. Analyze Results

    • Compare with benchmarks and requirements.

  7. Report & Optimize

    • Log issues and suggest improvements.


6. Tools for Non-Functional Testing

  • Performance: JMeter, LoadRunner, Gatling.

  • Security: OWASP ZAP, Burp Suite, Nessus.

  • Usability: Crazy Egg, UserTesting.com.

  • Compatibility: BrowserStack, CrossBrowserTesting.

  • Monitoring: New Relic, Grafana.


7. Advantages

  • Improves user satisfaction and product quality.

  • Helps prevent failures in production.

  • Reduces maintenance costs by finding quality gaps early.

  • Ensures compliance with industry standards.


8. Disadvantages

  • Often requires specialized tools and skills.

  • Can be time-consuming and expensive.

  • Difficult to define exact pass/fail criteria for some attributes (like usability).


9. Example

If you’re testing an online banking system:

  • Functional Test: Check if fund transfer works.

  • Non-Functional Test: Check if fund transfer completes within 3 seconds under 500 concurrent users and if the system remains stable for 24 hours.