How to find bugs in your mobile app

Branimir Hrzenjak
Author
11 minutes
Reading time
Development
Category

With so many mobile applications on the market, ensuring that your app performs smoothly is imperative if you wish to stay competitive.

Users expect a certain level of quality from the apps they use, and finding and removing bugs from your software is one way to deliver a high-quality product.

Maybe your team is developing a mobile app, or you have already released one and are trying to improve it.

In either case, read on if you want some tips on how to find bugs in your software.

This article covers seven ways to help your team detect issues in your mobile app more effectively.

Keep the Pareto principle in mind

The Pareto principle states that, in many different areas of life, most consequences can be attributed to a small number of causes.

More specifically, it says that:

Pareto principle
Source: Shake

This principle was developed by management consultant Joseph M. Juran, drawing inspiration from Vilfredo Pareto—an Italian economist who found that 20% of the population in Italy owned around 80% of the land.

Initially used for quality control and improvement, the Pareto principle has since found many more use cases in various areas.

Bug and crash reporting tool for your mobile app.

We can also use the Pareto principle in software development to focus your team’s bug-finding efforts.

The effects of this principle were observed by Microsoft way back in 2002, with the former CEO Steve Balmer writing the following in an email to customers:

Steve Ballmer quote
Source: Shake

This observation came after Microsoft discovered that most crashes, bugs, and errors in their operating system and Microsoft Office were caused by only a small portion of bugs—around 20 percent of the total number of bugs.

Even more striking was that 50 percent of all problems stemmed from 1 percent of all flawed code.

You can use this insight to direct the efforts of your developers and testers—instead of making them find every bug in the code, it might be better to get them to focus on finding the few bugs causing the most issues.

This may not be an easy task, however.

As technology analyst Rob Enderle says,

What’s forgotten is that 20 percent are often the most complex, most difficult issues to correct and the most likely to spawn new problems as part of the correction process.

As difficult as the 20% may be to fix, the rewards are likely even greater—you will have dealt with 80% fewer issues plaguing your software.

Use automated tests for better coverage

Since your code may contain bugs that are difficult to find and solve, you want to free up your team’s time and resources to focus mainly on them.

Manually testing an entire application can be a slow and imperfect process, especially when it’s executed on a tight deadline.

Instead, it may be a good idea to use automated testing.

With automated testing, you can not only take some of the burden off your QA team, but also improve test coverage by lowering the time it takes to prepare and run tests—so you can run many more test cases efficiently and reliably, without any human error.

Automation tools such as Selenium, Watir, and LoadRunner can help you run tests in a fraction of the time compared to manual testing, without taking up as many human resources in the process.

Ideally, you may want automated tests to be the main tests conducted, lowering manual testing to a minimum.

Just look at this testing strategy:

 testing strategy example
Source: Medium

As you can see, most tests on this pyramid are conducted automatically, with only a small subset of them needing to be done manually.

One way to use automation is to employ parallel testing of your application.

Parallel testing allows teams to perform automated tests on several environments simultaneously—lowering downtime and increasing test coverage and quality.

Here’s a visual representation of parallel testing compared to sequential testing.

Parallel vs Sequential Testing
Source: Shake

While sequential testing is performed by running multiple different tests one by one on a single device, parallel testing involves running various tests on different devices at the same time.

It involves simultaneously running automated tests on different environment specifications—various devices, operating systems, app versions, browser configurations, etc.

The main goal of parallel testing, as well as automatic testing in general, is to make finding bugs a more efficient process—by employing it, you can speed up the testing process significantly.

Put your app through continuous testing

Along with automating your testing, continuously testing your application can ensure your team catches bugs as early as possible in the development process.

Continuous testing of your application refers to the practice of performing tests at every stage of the software development life cycle (SDLC).

This practice has many advantages, some of which are shown below.

Continuous testing advantages
Source: Shake

By opting for continuous testing, QA specialists and testers will be included early on in the development process.

They can collaborate closely with the other teams and solve problems easier with their combined efforts.

Through this interaction and cooperation, developers and testers can also detect bugs early in the development process, catching many issues as soon as they are created.

This will, in turn, offer the benefit of reducing the cost of fixing the found bugs:

relative cost to fix bugs, based on time of detection chart
Source: Deepsource

Since the cost of detecting and fixing bugs can increase exponentially as bugs go unnoticed throughout the SDLC, continuous testing can mitigate these costs and help find bugs early on.

Kent Beck, the creator of the Extreme Programming methodology, points out that:

Most defects end up costing more than it would have cost to prevent them. Defects are expensive when they occur, both the direct costs of fixing the defects and the indirect costs because of damaged relationships, lost business, and lost development time.

Continuous testing can also lead to early prevention of bugs, with testers pointing out possible weaknesses to developers before these weaknesses develop into larger issues.

So, by practicing continuous testing, you can use the strengths of your team of testers early on and potentially prevent the loss of time and money associated with detecting bugs late in development.

Encourage rubber duck debugging

An excellent way to find bugs is through a practice called rubber duck debugging, also known as rubberducking.

This debugging method involves explaining the code in great detail to someone with little knowledge or experience in the field, or even to an inanimate object.

Sometimes, just talking about the issue at hand can help boost your team’s creativity—making the verbal and logical parts of their minds cooperate enough to shed new light on the problem and solve it.

Trying to explain the situation to others can shift your employees’ thinking in two ways:

Benefits of explaining a problem to others
Source: Shake

The first shift is significant—when we are just thinking about something, our thoughts rush quickly through our heads.

But when we verbally articulate the same idea, our thought process has to be slowed down so we can translate it into words more effectively.

This deliberate way of thinking can make developers and testers review code step by step and even help them find some small details they may have previously missed.

The second shift in thinking occurs when people take up the role of a teacher.

When we are trying to express our thoughts to someone less experienced and knowledgeable than us, we have to change the way we explain things, and talk about things more simply.

These shifts change our thinking perspective and can potentially help your team understand the issue more thoroughly.

The most important part of this method is that it doesn’t have to be done with a real person present—the explanation produces shifts in perspective, not the listener.

As the name suggests—you can have developers explain their thoughts to a rubber duck, or you can follow this example and have a cardboard cutout dog in the office, which developers and testers can explain their problems to.

Advise them to take breaks from looking

Finding bugs can be a tedious process, and it is possible for your team to get too caught up in their task.

Focusing on a task too much can make it difficult to solve as people get stuck in one way of thinking and start getting frustrated.

Taking regular breaks can help with this.

According to the Take Back the Lunch Break survey conducted by Trok, breaks are beneficial to employees, as they help improve performance.

Benefits of taking breaks
Source: Shake

As you can see, the overwhelming majority of employees find breaks beneficial to their work, so you would do well to incentivize them.

After taking breaks, developers and testers can return to their tasks with more focus and creativity.

Taking a break and stepping away from the computer can make mobile app bugs more apparent—as developers and testers may look for them in places they previously didn’t think of.

Along with this, scheduling breaks for your team can help with their overall stress—an important point if you wish to take care of your team’s mental health and have them function optimally.

According to a study by Ezcater, taking the time to rest enhances well-being and improves mental health.

Taking breaks lowers stress and increases productivity
Source: Shake

As you can see, taking breaks may help some of your employees relieve stress and be more productive as a result.

Scheduling regular breaks can also help your team get unstuck when dealing with complex, hard-to-find bugs—enabling them to come up with fresh and creative solutions after a good rest.

Make finding bugs a joint effort

If your testers and developers join forces to find bugs, they will be able to achieve that goal more quickly.

Teamwork makes finding bugs easier as it brings together professionals from different sectors, all of whom bring their various perspectives, skills and knowledge to the table.

Along with helping them find bugs more quickly, working together can create a stronger bond between team members and create a positive and productive workplace environment.

An example of a practice that joins the efforts of different teams, which you can start employing immediately, is a bug bash.

This event involves members from many different teams in your organization with the sole purpose of finding a large number of bugs in a short time.

To implement it, you can follow these steps

8-step guide to a bug bash screenshot
Source: Usersnap

As you can see, a bug bash is a well-organized and planned event with specially allocated roles and timeframes.

The event is structured like this so that team members can focus only on finding as many bugs as possible and have fun while doing so.

Bug bashes are an especially effective way to find bugs when they are held right before big changes or updates to your application.

These periods are ideal as your app will be at the end of the development process and has already undergone rigorous testing—with the bug bash, the remaining bugs can be found and removed, polishing the product before release.

By scheduling bug bashes before major app releases, you can create a fun event for your team while also keeping your application bug-free and functioning optimally.

Have a great way to report bugs

It’s important for an effective bug bash to use a template for the bug report.

Perhaps you already have a standard bug report template, which includes all of the essential elements, such as environment, steps to reproduce, console logs, etc.


If not, you can use a bug reporting tool to help automate your process and save your team valuable time and effort.

One such tool is our own bug-reporting tool, Shake.

Shake is a tool that can streamline the entire process of receiving feedback from testers and users in a simple and effective way.

Just by shaking your mobile phone when a bug or crash occurs, Shake can record all of the relevant data that occurred around the issue and send it to developers directly.

The generated report includes over 70 metrics allowing developers to get a detailed view of the problem.

Gentoo screenshot
Source: Shake

These include environment specifications such as app version, device name, and operating system, visual proof of the bug, which the user can upload, the steps it took to make the bug appear, etc.

With a solid bug reporting tool, your team can document the found bugs effectively and help developers get clear and accurate information that they can use to start fixing the bugs.

Conclusion

Bugs are a frustrating part of the software development process.

A single high-severity bug that causes app crashes and disrupts important functionalities can potentially postpone app development and further testing until it’s found and fixed.

In this article, we’ve given you various tips to help your team speed up the time it takes to find bugs and focus their efforts more effectively.

We hope that by implementing some of them, you can save valuable time and resources and give your users a pleasant, bug-free experience while using your product.

About Shake

Shake is a bug and crash reporting tool for mobile apps. It was founded in 2019 with the mission to help app developers spend less time on debugging and manual overhead — and growing daily since thanks to a small and dedicated team of geeks based in the EU.

Meet your favorite bug and crash reporting tool.

Add to app in minutes

Doesn’t affect app speed

GDPR & CCPA compliant