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
-
Identify Quality Attributes
-
Example: Performance, security, usability.
-
-
Define Measurable Criteria
-
Example: “Login response time should be ≤ 2 seconds under 1,000 concurrent users.”
-
-
Select Tools
-
Example: JMeter for performance, OWASP ZAP for security.
-
-
Prepare the Test Environment
-
Simulate real-world conditions (load, network, devices).
-
-
Execute Tests
-
Measure, monitor, and collect results.
-
-
Analyze Results
-
Compare with benchmarks and requirements.
-
-
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.