DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports
Events Video Library
Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
View Events Video Library
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

Integrating PostgreSQL Databases with ANF: Join this workshop to learn how to create a PostgreSQL server using Instaclustr’s managed service

Mobile Database Essentials: Assess data needs, storage requirements, and more when leveraging databases for cloud and edge applications.

Monitoring and Observability for LLMs: Datadog and Google Cloud discuss how to achieve optimal AI model performance.

Automated Testing: The latest on architecture, TDD, and the benefits of AI and low-code tools.

Related

  • Adherence Enterprise Project Gating Governance With Agile DevOps
  • Continuous Delivery: Create Products Faster with Lower Risks
  • Scaling Feature Flag Management for Better Progressive Delivery [Webinar]
  • DevOps: CI/CD Tools to Watch Out for in 2022

Trending

  • AWS Lambda vs. Fargate: The Battle of Cloud Giants
  • 6 Proven Kubernetes Deployment Best Practices for Your Projects
  • AWS ECS vs. Kubernetes: The Complete Guide
  • CAN Bus: How It Works, Pros and Cons, and Fast Local Processing Tutorial
  1. DZone
  2. Testing, Deployment, and Maintenance
  3. DevOps and CI/CD
  4. Fearless iOS Continuous Delivery With TestFlight and Phased Release

Fearless iOS Continuous Delivery With TestFlight and Phased Release

Learn how the features newly available in Apple's beta testing platform, TestFlight, enable continuous delivery for iOS mobile apps.

Shashikant Jagtap user avatar by
Shashikant Jagtap
·
Jul. 20, 17 · News
Like (1)
Save
Tweet
Share
3.99K Views

Join the DZone community and get the full member experience.

Join For Free

The major obstacles to continuous delivery are the lack confidence in the release candidate and fear of critical bugs in production. While releasing an iOS app, there is always the fear and risk of bugs in production, no matter how much time is spent on testing in the pre-production environment. It's because we are unsure that our beta testing environment mimics the production environment. There are loads of third party iOS beta testing services available in the market, but Apple has its own beta testing service platform called TestFlight to give us confidence in our testing.

In previous posts, we have seen how to setup end to end continuous delivery pipeline for iOS app with Fastlane. Using this setup, we can deliver any commit or merge to a GitHub branch to TestFlight, causing multiple builds uploaded to iTunes Connect. It would be a good idea to maintain those builds in TestFlight and distribute them to relevant people to test.

Why TestFlight?

There are various beta testing platforms available to test ad-hoc builds, like Fabric or HockyApp. There are eleven of them mentioned in this great blog post, TestFlight Alternatives, which compares all of them. TestFlight has a major enhancement, as mentioned in What's New in iTunes Connect at WWDC 2017 session 302. There are multiple reasons why we shouldn't use other beta testing platforms; some of them are as follows:

  • TestFlight is Apple's official beta testing platform, so there is no possibility of breaking it if the API is changed.
  • It's easy to distribute the builds to anyone by adding testers to internal or external testers.
  • No need to maintain devices and provisioning profiles for ad-hoc distribution.
  • No need for separate configurations to distribute.ipa file like other beta testing platforms.

This is a small list, but there are various other reasons that you should think of getting rid of these third party beta testing services. The top reason would be the recent enhancement by Apple in TestFlight, which we will explore in this post.

Multiple Builds and Groups

As per the latest upgrade in TestFlight, we can create multiple groups in and distribute specific builds to a specific group. In an Agile world, we can create a group for QA Engineers, Product Owners, and Stakeholders. We can continuously deliver the builds to TestFlight and assign the build to a specific group to get early feedback. As suggested in the WWDC talk, we can create Alpha, Beta, and Release candidate groups. As builds mature, we can promote them to a final Release Candidate group. We can also create a group for experimentation to check specific features separately.

Switch Between the Builds

There might be a tester added to multiple groups, and they can now see the previous builds to which they have access and select another build for testing. This feature will be very helpful for QA Engineers to test multiple features easily and without hassle. The previous builds can hold the test information so that testers can identify the information to test. Now TestFlight builds will also show the session count and the crash count. Apple is also planning to extend the testers limit to 10,000 testers at some point this year.

Phased Release

The practice of Continuous Delivery enables us to deploy new builds to TestFlight, but production is a unique environment. No matter how much testing we have done in pre-production, we have to watch the behavior of the app in production once released. If we are about to release a new feature which involves risk, or we are less confident about it but we want to test how it performs in production without taking too much risk, then phased releases can solve the problem.

When the feature is enabled for a phased release, it will be distributed to certain users for seven days. The limited users will receive the updates and try the build in the production to verify the new feature. The percentage of users selected are shown in the figure below:

There is a difference between the phased release and feature flagging; you can read the main difference on the blog here, but it is similar.

Enable Phased Release

There is a new radio button in iTunes Connect called "Use phased release" which can be selected to enable the phased release for the build. We can select it for any build which we are less confident about and we don't want to distribute to 100% of our users.

Roll Out or Rollback

There are two possibilities after we release the build using phased release: either our feature is working fine in production, or our feature has bugs. We have the ability to deal with both of these situations.

  • When the phased release is OK, we can deliver it to 100% of users by pressing the "Release to All Users" button. This will stop the phased release and everybody will get the updated version.
  • When the phased release has minor issues, we can pause the release for a maximum of 30 days and we can submit another build with the new fix.
  • When the phased release has serious issues, we can remove the current version from sale.

Advocate Continuous Delivery

The newly announced features like multi-build, multi-group, and phased release are the catalyst for continuous delivery. These new features give developers the confidence to manage risky releases by taking a calculated risk. There will be big changes likely to happen in iOS projects all over the world.

  • iOS developers won't be scared about making multiple TestFlight builds, provided they are automated.
  • Everybody will understand the value of an automated release/deployment process.
  • With the help of groups in TestFlight, we can get early feedback from QA, Product Owners, and Stakeholders. Once everyone is happy, releasing is a click away.
  • Product owners won't be scared to make frequent releases using phased release, as there won't be major risk even if the application is broken in production.

Delivering the product (iOS apps) to end users quickly and whenever needed is the key to success. It can be easily achieved by setting up the Continuous Delivery pipeline and using the newly added features like Multi Build TestFlight and phased release.

Continuous Integration/Deployment Release (agency) TestFlight Delivery (commerce)

Published at DZone with permission of Shashikant Jagtap, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • Adherence Enterprise Project Gating Governance With Agile DevOps
  • Continuous Delivery: Create Products Faster with Lower Risks
  • Scaling Feature Flag Management for Better Progressive Delivery [Webinar]
  • DevOps: CI/CD Tools to Watch Out for in 2022

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends: