Question 1
Testing strategy & tradeoffs
How do you decide what to test at the unit, integration, and UI level in a large iOS app?
Answer outline
Start from risk and cost of failure. e.g. failures during onboarding, IAP, sign up/in are very high cost-of-failure areas.
Unit tests fit pure logic and contracts you can isolate.
Integration tests fit system boundaries (persistence and stubbed networking).
UI tests are the slowest and flakiest—use them for critical journeys and gaps lower layers cannot cover.
Principles
- Unit: algorithms, state machines, parsers; anything deterministic without I/O.
- Integration: multiple real types must agree (DB + repository, coordinator + deep link).
- UI: few stable flows; accessibility IDs; deterministic data/backends.