77 lines
2.4 KiB
Markdown
77 lines
2.4 KiB
Markdown
# 18. Performance Testing (XCTestMetric)
|
|
|
|
meta:
|
|
id: ios-production-18
|
|
feature: ios-production
|
|
priority: P2
|
|
depends_on: []
|
|
tags: [testing, performance, quality]
|
|
|
|
objective:
|
|
- Implement performance testing using XCTestMetric to ensure consistent 60fps and fast response times
|
|
|
|
deliverables:
|
|
- Performance tests for critical flows
|
|
- XCTMetric measurements
|
|
- Baseline performance documentation
|
|
- Performance regression detection in CI
|
|
|
|
steps:
|
|
1. Set up performance tests:
|
|
- Create XCTestCase with measure blocks
|
|
- Use XCTClockMetric for time measurements
|
|
- Use XCTCPUMetric for CPU usage
|
|
- Use XCTMemoryMetric for memory usage
|
|
2. Test critical flows:
|
|
- App launch time (cold and warm)
|
|
- Dashboard scroll performance (60fps)
|
|
- Alert list scroll performance
|
|
- Service screen transitions
|
|
- API response time (with mocked data)
|
|
- Image loading performance
|
|
3. Establish baselines:
|
|
- Run tests 10 times to establish baseline
|
|
- Document expected ranges for each metric
|
|
- Set performance budgets
|
|
4. Add regression detection:
|
|
- Configure XCTest to fail on 10% regression
|
|
- Add to CI pipeline
|
|
- Alert on performance degradation
|
|
5. Test on physical devices:
|
|
- iPhone SE (2nd gen) — minimum supported device
|
|
- iPhone 12 — mid-range target
|
|
- iPhone 15 Pro — high-end target
|
|
6. Document performance:
|
|
- Create docs/PERFORMANCE.md
|
|
- List all measured metrics and baselines
|
|
- Document optimization techniques used
|
|
|
|
tests:
|
|
- Performance: All metrics within budget
|
|
- Regression: 10% regression triggers failure
|
|
- Device: Tests pass on physical devices
|
|
|
|
acceptance_criteria:
|
|
- 10+ performance test cases
|
|
- App launch time measured and baselined
|
|
- Scroll performance tested (target 60fps)
|
|
- API response time measured
|
|
- Memory usage tracked during key flows
|
|
- Baselines established for iPhone SE, 12, and 15 Pro
|
|
- 10% regression threshold configured
|
|
- Performance tests run in CI
|
|
- Performance budget documented
|
|
- No performance regressions in release builds
|
|
|
|
validation:
|
|
- Run performance tests → all within budget
|
|
- Introduce slow animation → test fails
|
|
- Check CI → performance tests passing
|
|
- Review docs → baselines documented
|
|
|
|
notes:
|
|
- Performance tests should run on physical devices, not simulators
|
|
- Simulators don't reflect real-world performance accurately
|
|
- Use Xcode's Metrics tab to track performance over time
|
|
- Consider using Firebase Performance Monitoring for real-world data
|