Avoid the Trap: Regression Testing for Mobile Apps

Regression testing is traditionally time-consuming and resource-intensive. However, it's also necessary for success. What is it? And is there an easier method?

See all articles
An image of a clipboard and a checkmark.

Image: Sofy x davooda, Shutterstock

Who’s got time for regression testing? Admit it—you’ve thought the same thing. We’re naturally lazy. It’s tempting to assume that if something works now, it should work after a small change.

 I mean, I don’t think I changed anything important.

That’s the trap. Making assumptions about a change’s impact, without questioning their assumptions. It’s a losing strategy —especially for mobile app development.

So, how do we effectively include regression testing for mobile applications? 

What is regression testing?

First, let’s define regression in the context of testing: Here, regression refers to the phenomenon where changes made to a system or application introduce new defects or cause existing functionality to break. The goal of regression testing is to make sure that the system hasn’t regressed—that is, backtracked—as a result of changes. These changes can be enhancements, bug fixes, patches, or even backend network changes. 

Regression testing is the process of testing a system or application after changes have been made to ensure that the changes have not caused any unintended consequences and that the system is still functioning as intended. This is an important step in the software development process because it helps to ensure that the quality of the system is maintained over time and that any changes do not negatively impact the user experience.

The risks of not regression testing

I hate to be the bearer of bad news, but if you’re not including regression testing as part of your mobile development strategy, well, bad things will happen. Late-stage bugs will cost exponentially more to fix in production. The damage it can do to your reputation will be greater.

So, where do we start?

Illustrations of various insects.

Image: Sofy x Nadiinko, Shutterstock

The types of mobile regression testing

There are different ways to perform regression testing – depending on your needs, you might choose one over the other, or perform a hybrid. They are as follows:

  • Corrective regression testing: This type of testing is performed after a bug fix to verify that the bug is resolved and that the bug fix did not inadvertently impact other functionality. This involves running existing tests and typically doesn’t require new tests to be written.
  • Selective regression testing: Selective regression testing involves creating or running a subset of tests to run based on the most recent changes that have been made. Although it saves time, it’s never a bad idea to widen the selection.
  • Partial regression testing: This involves writing tests for a a portion of the system most recently affected by an update or change and is a wider net than selective regression testing.
  • Full regression testing: Running the whole test suite. This is typically done after a release, a large bug fix or critical changes. A full regression test runs all tests to make sure the system is functioning smoothly. 
  • Sanity check: A small, surface-level test after small changes are made. For example, a sanity check may be suitable after changing text, moving menu items, or updating a notification.

It’s common to include all types of mobile regression testing in the development lifecycle. For example, after a large release, do a Full Regression test followed by a UI-level Sanity Check. When smaller bug fixes are deployed, you can run partial and selective regressions.

You don’t have to limit regression testing around releases only. With testing automation, you can continually run tests on a schedule or as part of your CI/CD strategy.

How to develop a regression test strategy

But how should you develop a regression test strategy? Let’s dive in:

  • Take stock of your existing code base and categorize it into the functionality it serves. You can also map out the dependencies between different features. The first step is to ask yourself, do we have ample code coverage? Are all of our features testable or able to be tested? If you don’t at least have code coverage, it’s time to build up your test suite.
    Start by identifying the mission-critical features and building unit tests around them. From then you can work on their dependencies. 
  • Run tests on a schedule. After you’ve at least written tests for your critical features, it’s time to start running them on a regular schedule. Running after releases, patches, and updates is a great idea, but even running them daily would be beneficial. Scheduling tests becomes much easier with the right automation.
  • Release Governance. One of the biggest contributors to regression is a lack of control over feature releases. There has to be order to the chaos. You can’t fix a leak if you don’t turn the water off. Does the following scenario sound familiar?1. A feature is deployed without ample testing..
    2. A bug is found…
    3. A patch is released without proper analysis…
    4. …which breaks production.

    Then the team is scrambling to roll back but no one has any idea what to roll back too. This has less to do with code coverage and more to do with poor release governance. If your team is deploying randomly, without a schedule and no clear deployment process, no amount of testing will save you.

Automate it!

There’s no reason not to be direct here: Invest in automation. It’s 2023, there is no excuse to be stuck with little or no test automation. Modern DevOps relies on ease and abstraction.

With automation, you can stop running manual tests and give time back to your team to focus on making operations better. There are free, open-source tools that allow you to write tests in the language of your choice, interact with your mobile application, and automate your tests. Most of these open source tools offer a large library with hundreds of contributors that have solved problems just like yours.

Taking automation even further, Sofy provides access to hyper-intelligent regression testing, analyzing code changes and identifying tests impacted by those changes so that you can stay ahead. Sofy customers have reduced QA time by 95%—saving cost, increasing coverage, reducing bugs, and giving the team more time to spend delivering value.

Sofy also integrates easily with CI/CD tools, change management, and DevOps platforms like Azure, Jenkins, Slack, Microsoft Teams, JIRA, and more.

The best part?

Sofy is completely scriptless. Just grab a device or use our Real Device Lab, perform a manual test, automate, and run across hundreds of devices. All this without writing a line of code.

Moving forward

Despite the additional time it may take, regression testing can save hours of rework and expensive remediations. As many can attest, a bug found in production is exponentially more expensive to fix than one found in testing. Taking the time to evaluate your mobile regression testing strategy, focusing on governance, and investing in automation will prepare you for a smoother release and bug-free environment.

Disclaimer: The views and opinions expressed above are those of the contributor and do not necessarily represent or reflect the official beliefs or positions of Sofy.

 

Sign up for a 14-day trial now!

1 2 3
Sofy announces $7.75 million funding in seed round led by Voyager Capital and others. Read more