Shopify Jan 15, 2019

iOS Application Testing Strategies at Shopify

Article Summary

Shopify's iOS team ships hundreds of commits weekly to a monorepo. Their testing strategy keeps quality high without slowing down velocity.

Uzziah Eyee from Shopify's engineering team breaks down their comprehensive iOS testing approach. The article uses a car-building analogy to explain how different test types work together across the application stack.

Key Takeaways

Critical Insight

Testing at every layer (Models, Views, ViewModels, ViewControllers, Flows) enables frequent releases while maintaining quality in a fast-paced monorepo environment.

The team reveals an unexpected benefit of UI automation tests that helps millions of users beyond just catching bugs.

About This Article

Problem

Shopify's monorepo had hundreds of commits per week across multiple app projects, but there were no systematic quality checks at the component level. This meant regression bugs could slip through and spread widely.

Solution

Uzziah Eyee's team built a testing strategy with three layers. Unit tests covered Models. FBSnapshotTestCase handled View snapshots. XCUITest automated Workflow testing. They structured this around the Test Pyramid principle.

Impact

Teams could release frequently without fear. The layered approach caught visual regressions, business logic errors, and workflow failures at the right level of abstraction before code reached production.