Software bugs are a natural occurrence in the software development cycle but they sure can be the bane of app developers’ lives. To be able to fix issues swiftly and efficiently, they must be reproducible in the development environment.

From a software testing standpoint, this means that finding a bug is just the tip of the iceberg – being able to show consistently and step-by-step the mechanisms leading to a particular issue allows testers to deliver actionable bug reports that make fixing problems easier for the developer team. Simply put, once a problem has been found, it must be replicated and the steps leading to it properly documented. If the root cause of the issue is unknown, it can’t be fixed. Hence why bug reproduction is a crucial step in the software testing life cycle and essential to delivering flawless web and mobile app experiences

To delve a bit deeper into this topic, we asked our Community Test Lead, Bryan, to share his thoughts and best practices.

Related: Meet a tester: Bryan

Issue reproduction best practices

As a tester, why is issue reproduction important? 

To be honest, at the beginning of my testing career, I wasn’t very fond of issue reproducing tasks. Mainly this was because most of the issues were quite complicated or some tickets were hard to understand (e.g., when you work from a poor bug report). But as I gained more experience, I learned to embrace the whole process.

I have realized that going through different bug reproduction tickets provides extremely valuable insight into other testers’ testing approaches –  being able to isolate a bug and narrow down the specific steps that cause the issue is a skill that every good software tester must master. Therefore, you can learn a lot from other people’s work, eventually benefitting from their experience and becoming a better tester. 

Furthermore, I have found that taking on bug reproduction tasks opens up my mind to new testing ideas and methodologies when I’m stuck in a rut – this is especially true in situations where the project has been running for a long while and it feels like I have exhausted all my test ideas or reported every possible issue. 

Generally speaking, performing issue reproduction tasks can also be very enlightening for testers who are new to a specific project. Reproducing other testers’ issues helps get a better feel for the app itself as well as for the project requirements (since most may have different rules on how to write bug reports).

Related: How to write a bug report that will make your engineers love you

At Testlio, issue reproduction tasks are performed across all projects, in every test cycle. We want to be sure that the issues we send out to the customer are easily understandable and actionable. Thus, it’s important to eliminate any unwanted feedback and noise – especially considering that when hunting an application for bugs, you can end up with a large variety of software problems (ranging from insignificant to major).

So when we are reproducing bugs, we are making sure that we are not reporting one-time anomalies that have almost zero chance of happening in real-life situations. 

Not only does this help increase the quality of issues reported to the clients, but it also provides an important learning point for testers. 

How do you tackle bug reproducing tasks?

When I get assigned bug reproduction tasks, I first skim through all the issues assigned to me – and try to categorize them in a systematic way. For example, if I get assigned 10 issues of which 3 require the user to be logged out of the application, I will group these together and reproduce them at the same time, instead of logging in and out every so often. Categorizing issues helps to address them in a swift and organised manner.

In most test cycles, issue reproduction is performed before issue validation – this step is meant to confirm whether the reported bug is valid or not. Thus approving and rejecting issues are largely dependent upon the comments left by those who have reproduced them. Therefore, I always try my best to ensure that I document everything I do, narrowing down as much as possible the steps to reproduce. 

If recording a video, enabling touch indicators is really helpful to demonstrate the exact interactions. Depending on project rules, it might be good to add logs as well to make debugging easier for the developers.

Issue reproduction comment template for reproducible or not reproducible bugs
Example of ‘Is reproducible’ comment template
Related: issue reproduction guide 

What advice do you have for new testers?

Reproducing bugs might seem like a tedious task, but it is a crucial step in the software testing life cycle. It’s an opportunity to learn from other testers and work at isolating bugs. Furthermore, it’s a great way to get noticed by the project team who always appreciates testers that are proactive and willing to help. In my case, this is how I was able to obtain the Testlio Bug Hunter badge in record time! 🙂 

This is part of our Ask a tester series where we feature QA experts from our network who share with us their experience, expertise, and perspective on software testing.  

Josepha is an aspiring polymath, interested in anything and everything.
Get our monthly email newsletter covering testing trends, insights, and events.