Verifying Apple platform applications.
WHAT LEVELS EXIST
Unit tests, for logic Interface tests, driving the application Performance tests, measuring specific operations
WHAT TO TEST AS UNITS
Business logic and view models, with dependencies substituted.
WHAT TO SUBSTITUTE
Network, storage, time and randomness.
WHY TIME AND RANDOMNESS
Otherwise tests fail intermittently.
WHAT INTERFACE TESTS COST
Slowness and fragility.
WHAT THAT MEANS
Few of them, covering the most important paths.
WHAT DEBUGGING TOOLS PROVIDE
Breakpoints, including conditional ones View hierarchy inspection Memory graph inspection, for cycles Network inspection Energy and performance profiling
WHAT TO USE FOR INTERMITTENT CRASHES
The diagnostic tools that detect memory misuse and threading violations.
WHAT TO ENABLE DURING DEVELOPMENT
The main thread checker, which reports interface work on background threads.
WHY
It catches a common and damaging class of bug immediately.
WHAT TO TEST ON
Physical devices, including an older one.
WHAT TO CHECK BEFORE RELEASE
Memory, energy, and startup time.