Skip to content
academia.sh

Course Advanced

Architecture, Testing and Release

Published Updated

By the end of this course

Start course

01

Architecture

Variants of the view–model separation, the coordinator that separates navigation responsibility, unidirectional data flow with state, actions and a reducer, dependency injection for testability, and modularization with package boundaries.

  1. 01 Architectural Patterns Three places the calculation can live relative to the screen, and six checks applied to the same correct and faulty version and measured in four separations.
  2. 02 The Coordinator Pattern Handing navigation to a coordinator separate from the views, and two checks that answer differently to a fault that opens the wrong screen after payment.
  3. 03 Unidirectional Data Flow Keeping state in a single central store that changes only through actions and a reducer, and measuring the separation of checks by feeding the same action sequence to two reducers.
  4. 04 Dependency Injection An object receiving the dependency it needs from outside instead of building it itself, and how what a fake dependency imitates determines the separation of a check.
  5. 05 Modularization Splitting the application into modules along package boundaries, the rule that feature modules depend only on the core module, and the blindness of a build-passes check to a boundary violation.

02

Testing and Performance

Unit tests with test targets and assertions, UI tests with flow automation and stability, test plans and reading the coverage report, profiling tools, memory leaks through retain cycles, launch and scrolling performance, and formatting and static analysis tools.

  1. 01 Unit Tests Setting up a unit test with a test target, an assertion and a test double, and measuring in four categories whether the same boundary check tells the correct version from the faulty one.
  2. 02 UI Tests Setting up and waiting in UI tests that drive the app as a separate process and tap a button; measuring whether three checks and the moment of waiting tell the correct version from the faulty one.
  3. 03 Test Plans and Coverage Reading test plan configurations and a coverage report; measuring whether a coverage rule that checks the number of lines run and two language configurations tell the correct version from the faulty one.
  4. 04 Profiling Tools How a profiler shows where an app spends time through timelines and signposts; measuring whether a work unit budget and a check on the drawn text tell the correct version from the faulty one.
  5. 05 Memory Leak Detection How a retain cycle forms, how a weak reference breaks it, and testing whether an object is really released; measuring whether two leak checks tell the correct version from the faulty one.
  6. 06 Launch and Scrolling Performance Deferring the work done at launch and reusing row objects; measuring how a performance check that compares against a recorded baseline can turn inverted or blind depending on the version the baseline was taken from.
  7. 07 Code Quality Tools The duties and limits of formatters and static analysis rules; measuring whether a format check and a rule that scans the source text can tell the same fault apart, and how a false positive spoils a check.

03

Distribution

Signing and provisioning profiles with identity and entitlement files, continuous integration with automated builds and tests, release automation with version numbering and upload steps, beta distribution to a limited audience, the store review process and listing, and crash reporting and analytics.

  1. 01 Signing and Provisioning Profiles A measurement showing that comparing a package's entitlements with a recorded list passes the faulty version and rejects the correct one, while certificate and profile checks stay blind.
  2. 02 Continuous Integration A measurement showing that an automated pipeline on a clean machine fails both versions over a missing build setting, that the test step separates the fault once the setting is fixed, and that steps that never ran fall outside the categories.
  3. 03 Release Automation A measurement showing that a check on whether the build number is greater than the last number in the store separates an upload script that does not raise the build number, while a format check stays blind.
  4. 04 Beta Distribution A measurement showing that a check saying the feature is on for beta testers cannot see a flag that is also open outside the beta audience, while a check saying it is off for non-beta users can.
  5. 05 The Store Review Process A measurement showing that a readiness-list item checking whether the permission description is filled separates the fault, while an outdated item left on the list fails on both versions and makes the list noisy.
  6. 06 The Store Listing A measurement showing that an equality check against a recorded screenshot fails the correct version and passes the faulty version when the reference was taken from the faulty build, and that a subtitle limit check does not see the fault.
  7. 07 Crash Reporting and Analytics A measurement showing that a total crash-free session check stays blind to a fault that crashes in only one language configuration, that a per-configuration check separates it, and the closing table of the course's nineteen lessons.

Final exam

Architecture, Testing and Release — Final Exam

In preparation

This course's question bank is not complete yet. The exam opens here automatically once enough questions are added.

Start typing to search.

↑↓ ↵ Esc navigate · open · close