Performance Test Plan GTAA Shared Service
Objective
To validate that GTAA service can handle expected and peak user loads without performance degradation, while ensuring the underlying Azure infrastructure operates efficiently and remains cost-effective.
Scope
The scope includes validation of: - API endpoints - Front-end user journeys - Admin interface
Performance testing will ensure acceptable performance under expected and peak load conditions.
Assumptions
- No historical traffic or performance data is currently available
- Load profiles and volumes derived from:
- RIDDLE existing data
- Comparable data from teams like:
- Care Leavers
- Childcare
- Teach in FE (TiFE)
- Early years qualification checker
- Peak usage occurs during UK business hours
Note: Detailed calculations and supporting rationale are documented in the 'GTAA Volumetrics' document.
Throughput Calculation Methodology
Steps to Calculate Throughput for Concurrent Users
-
Average Journey Time
- Get average journey time for each thread group in seconds
- Sum Gaussian time delays or calculate time difference between user start and end journey in view results tree
-
Concurrent User Allocation
- Distribute users across thread groups
- Example: TG1(5) + TG1(5) + TG1(5) + TG1(5) + TG1(5) = 25
-
Journey Executions per Second across thread groups
Exec/s = Users / Average Journey Time (Seconds)
-
Requests per Journey
- Count HTTP Requests per journey for each thread group
-
Requests per Second per Thread Group
RPS per TG = (Users / Avg Journey Time) * Requests per Journey
-
Total Estimated Throughput
- Sum of all thread group RPS values
Projected Usage
APIs (7 Thread Groups)
- Normal: 6 concurrent users (~0.5 request/sec)
- Spike: 15 concurrent users (~1 request/sec)
- Stress: 25 concurrent users (~2 requests/sec)
Front-end (6 Thread Groups)
- Normal: 40 concurrent users (~10 requests/sec)
- Spike: 120 concurrent users (~30 requests/sec)
- Stress: 160 concurrent users (~40 requests/sec)
Admin (5 Thread Groups)
- Normal: 6 concurrent users (~1 request/sec)
- Spike: 15 concurrent users (~3 request/sec)
- Stress: 25 concurrent users (~6 requests/sec)
User Journeys (Thread Groups)
APIs
- 7 distinct end-to-end administrative workflows
- Simulate real-world admin activity
- Execute sequence of POST, GET, and DELETE requests
Front-end
- 6 distinct end-to-end user journeys
- Navigate through questions
- Submit various answer selections
- Reach results page
Admin
- 5 distinct admin UI user journeys
- Cover workflows such as:
- Creating and managing questionnaires
- Managing questions
- Publishing/unpublishing questionnaires
- Submitting and deleting answers
- Performing clean-up actions
Test Scenarios
API Test Scenarios
Scenario 1: Normal Load
- Users: 6 users across 7 thread groups
- Ramp-up: 300 seconds per thread group
- Loop count: Based on 30-minute run duration
- Goal: Validate performance and stability under expected load
Scenario 2: Spike Load
- Users: 15 users across 7 thread groups
- Ramp-up: 1 second per thread group
- Loop count: Based on 5-minute run duration
- Goal: Observe system behavior during traffic surge
Scenario 3: Stress Load
- Users: 25 users across 7 thread groups
- Ramp-up: 300 seconds per thread group
- Loop count: Based on 30-minute run duration
- Goal: Identify system limits and monitor infrastructure metrics
Front-end Test Scenarios
Scenario 1: Normal Load
- Total Users: 40 users
- Thread Groups: 6 thread groups
- Users per Thread Group: ~7 users
- Ramp-up Period: 300 seconds per thread group
- Test Duration: 30 minutes
- Loop Count: Calculated based on 30-minute duration
- Goal: Validate system performance and stability under expected, realistic load conditions
Scenario 2: Spike Load
- Total Users: 120 users
- Thread Groups: 6 thread groups
- Users per Thread Group: 20 users
- Ramp-up Period: 1 second per thread group
- Test Duration: 5 minutes
- Loop Count: Calculated based on 5-minute duration
- Goal: Assess system resilience during sudden traffic surge
Scenario 3: Stress Load
- Total Users: 160 users
- Thread Groups: 6 thread groups
- Users per Thread Group: ~27 users
- Ramp-up Period: 300 seconds per thread group
- Test Duration: 30 minutes
- Loop Count: Calculated based on 30-minute duration
- Goal: Determine system limits and infrastructure performance
Admin Test Scenarios
Scenario 1: Normal Load
- Total Users: 6 users
- Thread Groups: 5 thread groups
- Users per Thread Group: 1-2 users
- Ramp-up Period: 300 seconds per thread group
- Test Duration: 30 minutes
- Loop Count: Calculated based on 30-minute duration
- Goal: Validate admin interface performance under standard usage
Scenario 2: Spike Load
- Total Users: 15 users
- Thread Groups: 5 thread groups
- Users per Thread Group: 3 users
- Ramp-up Period: 1 second per thread group
- Test Duration: 5 minutes
- Loop Count: Calculated based on 5-minute duration
- Goal: Assess admin interface resilience during sudden administrative activity
Scenario 3: Stress Load
- Total Users: 25 users
- Thread Groups: 5 thread groups
- Users per Thread Group: 5 users
- Ramp-up Period: 300 seconds per thread group
- Test Duration: 30 minutes
- Loop Count: Calculated based on 30-minute duration
- Goal: Identify admin interface and backend system limitations
Configuration Details
- HTTP Cookie Manager:
- Clear cookies each iteration
- HTTP Cache Manager:
- Clear cache each iteration
- Timers:
- Constant or Gaussian timers to simulate user think time
- Assertions:
- HTTP status = 200
- Listeners:
- Aggregate Report
- Summary Report
- View Results Tree
Success Criteria
- Error rate < 1%
- Average response time < 2 seconds
- 95th percentile < 3 seconds
- Consistent throughput without errors
- No major infrastructure bottlenecks:
- CPU
- Memory
- API gateway
Tools & Monitoring
- JMeter for load generation
- Azure client and server-side metrics
Risks & Mitigation
Risk: Lack of Historic Data
Mitigation: - Used conservative load assumptions - Incorporated historical data from Riddle and other teams
Next Steps
- Prepare .jmx file with 7 thread groups
- Configure:
- Ramp-up
- User load
- Loops per scenario
- Schedule tests:
- Normal load
- Spike load
- Stress load
- Review metrics and performance dashboards