Files
Kordant/tasks/ios-production/18-performance-testing.md
2026-05-26 16:06:34 -04:00

2.4 KiB

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