201 lines
6.0 KiB
Markdown
201 lines
6.0 KiB
Markdown
# Load Testing Script - End-to-End Assessment Flow
|
|
|
|
## Overview
|
|
|
|
This script performs **load testing** by running multiple students through the complete end-to-end flow simultaneously:
|
|
|
|
1. ✅ **Login** (with smart password handling)
|
|
2. ✅ **Password Reset** (if needed)
|
|
3. ✅ **Profile Completion** (if needed)
|
|
4. ✅ **Complete ONE Domain Assessment** (100% reliable flow)
|
|
|
|
## Prerequisites
|
|
|
|
- ✅ **100% Working Flow**: Only uses flows we're 100% confident about
|
|
- ✅ **Single Domain Assessment**: Uses the most reliable assessment flow
|
|
- ✅ **All 5 Question Types**: Handles Multiple Choice, True/False, Rating Scale, Open Ended, Matrix
|
|
- ✅ **Error Handling**: Robust error handling and recovery
|
|
- ✅ **Randomized Waits**: Realistic timing for load testing
|
|
|
|
## Usage
|
|
|
|
### Basic Usage
|
|
|
|
```bash
|
|
python scripts/load_test_e2e_assessment.py --students 10 --csv students.csv
|
|
```
|
|
|
|
### With Custom Concurrency
|
|
|
|
```bash
|
|
python scripts/load_test_e2e_assessment.py --students 50 --csv students.csv --concurrent 10
|
|
```
|
|
|
|
### Visible Mode (for debugging)
|
|
|
|
```bash
|
|
python scripts/load_test_e2e_assessment.py --students 5 --csv students.csv --no-headless
|
|
```
|
|
|
|
## Arguments
|
|
|
|
| Argument | Required | Default | Description |
|
|
|----------|----------|---------|-------------|
|
|
| `--students` | ✅ Yes | - | Number of students to test |
|
|
| `--csv` | ✅ Yes | - | Path to CSV file with student data |
|
|
| `--concurrent` | ❌ No | 5 | Number of concurrent students |
|
|
| `--headless` | ❌ No | True | Run in headless mode |
|
|
| `--no-headless` | ❌ No | - | Run in visible mode (for debugging) |
|
|
|
|
## CSV Format
|
|
|
|
The CSV file should contain student data with at least:
|
|
- `cpid` or `CPID` column (or first column)
|
|
- `password` column (for initial password)
|
|
- Other student data (first_name, last_name, etc.) for profile completion
|
|
|
|
Example:
|
|
```csv
|
|
cpid,password,first_name,last_name,date_of_birth
|
|
SC309TB0284,VXa$Ai5kj4rV,John,Doe,2008-01-15
|
|
BAR210A010D,Admin@123,Jane,Smith,2007-05-20
|
|
```
|
|
|
|
## What It Does
|
|
|
|
### For Each Student:
|
|
|
|
1. **Setup WebDriver** - Creates a new browser instance
|
|
2. **Login** - Logs in with smart password handling (tries Excel password, then Admin@123)
|
|
3. **Password Reset** - Resets password if needed (only if not already reset)
|
|
4. **Profile Completion** - Completes profile to 100% if needed (only if incomplete)
|
|
5. **Navigate to Assessments** - Goes to assessments page
|
|
6. **Start Assessment** - Starts the first available assessment
|
|
7. **Select Domain** - Selects the first unlocked domain
|
|
8. **Answer All Questions** - Answers all questions in the domain (all 5 types)
|
|
9. **Submit Domain** - Submits the domain assessment
|
|
10. **Provide Feedback** - Provides domain feedback
|
|
11. **Cleanup** - Closes browser instance
|
|
|
|
## Output
|
|
|
|
The script provides:
|
|
- ✅ Real-time progress updates
|
|
- ✅ Success/failure status for each student
|
|
- ✅ Duration tracking
|
|
- ✅ Error reporting
|
|
- ✅ Summary statistics
|
|
|
|
Example output:
|
|
```
|
|
🚀 Starting flow for: SC309TB0284
|
|
✅ Completed: SC309TB0284 (success) - 245.32s
|
|
🚀 Starting flow for: BAR210A010D
|
|
✅ Completed: BAR210A010D (success) - 198.76s
|
|
|
|
================================================================================
|
|
LOAD TEST SUMMARY
|
|
================================================================================
|
|
✅ Success: 8/10
|
|
❌ Failed: 2/10
|
|
⏭️ Skipped: 0/10
|
|
⏱️ Total Duration: 1205.45s
|
|
📊 Average per Student: 120.54s
|
|
```
|
|
|
|
## Performance Considerations
|
|
|
|
### Recommended Settings
|
|
|
|
- **Small Load (1-10 students)**: `--concurrent 3-5`
|
|
- **Medium Load (10-50 students)**: `--concurrent 5-10`
|
|
- **Large Load (50+ students)**: `--concurrent 10-20`
|
|
|
|
### System Requirements
|
|
|
|
- **RAM**: ~500MB per concurrent student
|
|
- **CPU**: Multi-core recommended for concurrent execution
|
|
- **Network**: Stable connection to backend server
|
|
|
|
## Error Handling
|
|
|
|
The script handles:
|
|
- ✅ Login failures
|
|
- ✅ Password reset failures
|
|
- ✅ Profile completion failures
|
|
- ✅ Assessment navigation failures
|
|
- ✅ Question answering failures
|
|
- ✅ Network timeouts
|
|
- ✅ Browser crashes
|
|
|
|
All errors are logged and reported in the summary.
|
|
|
|
## Limitations
|
|
|
|
- ⚠️ **Single Domain Only**: Completes only ONE domain per student (the most reliable flow)
|
|
- ⚠️ **No Multi-Domain**: Does not complete all 6 domains (not yet 100% reliable)
|
|
- ⚠️ **No Final Feedback**: Does not handle final feedback after all domains (not yet 100% reliable)
|
|
|
|
## Future Enhancements
|
|
|
|
- [ ] Multi-domain completion (when 100% reliable)
|
|
- [ ] Final feedback handling (when 100% reliable)
|
|
- [ ] Performance metrics collection
|
|
- [ ] Backend response time tracking
|
|
- [ ] Database query monitoring
|
|
- [ ] Resource usage monitoring
|
|
|
|
## Troubleshooting
|
|
|
|
### "No students loaded from CSV"
|
|
- Check CSV file path
|
|
- Verify CSV has `cpid` or `CPID` column
|
|
- Check file encoding (should be UTF-8)
|
|
|
|
### "Driver setup failed"
|
|
- Ensure Chrome browser is installed
|
|
- Check ChromeDriver is in PATH
|
|
- Verify Chrome version matches ChromeDriver version
|
|
|
|
### "No assessments available"
|
|
- Ensure student profile is 100% complete
|
|
- Check if assessments are assigned to students
|
|
- Verify environment (local vs live)
|
|
|
|
### High failure rate
|
|
- Reduce `--concurrent` value
|
|
- Check backend server capacity
|
|
- Verify network stability
|
|
- Check system resources (RAM, CPU)
|
|
|
|
## Example Commands
|
|
|
|
### Test with 5 students (debugging)
|
|
```bash
|
|
python scripts/load_test_e2e_assessment.py --students 5 --csv students.csv --no-headless
|
|
```
|
|
|
|
### Test with 20 students (medium load)
|
|
```bash
|
|
python scripts/load_test_e2e_assessment.py --students 20 --csv students.csv --concurrent 5
|
|
```
|
|
|
|
### Test with 100 students (large load)
|
|
```bash
|
|
python scripts/load_test_e2e_assessment.py --students 100 --csv students.csv --concurrent 10
|
|
```
|
|
|
|
## Notes
|
|
|
|
- ✅ **100% Reliable Flow**: Only uses flows we're 100% confident about
|
|
- ✅ **Single Domain**: Completes one domain assessment per student
|
|
- ✅ **All Question Types**: Handles all 5 question types automatically
|
|
- ✅ **Error Recovery**: Robust error handling and recovery mechanisms
|
|
- ✅ **Realistic Timing**: Uses randomized waits for realistic behavior
|
|
|
|
---
|
|
|
|
**Status**: ✅ **READY FOR USE** - All flows are 100% reliable and tested
|
|
|
|
|