System & Acceptance Testing
System testing and acceptance testing are the final verification stages before software is released. They validate that the complete system works as expected and meets business requirements.
System Testing
+---------------------------------------------------------+
| SYSTEM TESTING TYPES |
+---------------------------------------------------------+
| |
| FUNCTIONAL TESTING |
| - Tests that the system does what it should |
| - Based on requirements specification |
| |
| NON-FUNCTIONAL TESTING |
| - Performance: response time, throughput |
| - Security: vulnerability scanning, penetration |
| - Usability: user experience evaluation |
| - Reliability: uptime, failure recovery |
| - Scalability: behavior under increasing load |
| |
| REGRESSION TESTING |
| - Verifies new changes don't break existing features |
| |
+---------------------------------------------------------+
Acceptance Testing
Acceptance testing determines whether the system satisfies business requirements and is ready for deployment. It is typically performed by end users or stakeholders.
// Acceptance Test Example (Given-When-Then format)
Given a customer with a valid coupon code
When the customer applies the coupon at checkout
Then a 20% discount is applied to the total
And the updated total is displayed to the customer
And the coupon is marked as used in the system
User Acceptance Testing (UAT)
- Conducted by end users, not developers
- Validates real-world scenarios and workflows
- Often uses production-like test data
- Result: Go/No-Go decision for deployment
- Captures issues that automated tests might miss
Key Takeaways
- System testing covers both functional and non-functional requirements
- Acceptance testing confirms business value delivery
- UAT is the final quality gate before release
- Regression testing ensures changes don't break existing features