The term bug bash has been around for decades yet does not seem to have a formal definition. It is widely used and understood by many people, yet in two distinct ways. Over the years, I’ve participated in and organized two different types of bug bashes with different goals and results.
A bug bash could refer to one of two activities:
- A time-boxed event where you bring in people from inside and outside of the development organization to ad hoc test the application to find as many bugs as possible in the time given.
- A time-boxed event where a software development team focuses on fixing as many bugs as possible in the time given.
Both types of bug bashes have a few things in common: they are time-limited, focused on bugs, and typically occur outside the normal development process or cycle. Each option has its own benefits and drawbacks, but both can benefit your team if done well.
Bug bashes focused on bug hunting
This is likely the most common use of the term “bug bash,” and it was also my first experience with it. It is a lightweight way to uncover many potential issues quickly and without requiring much effort to organize.
All you need is some people, an environment to test in, and some way of documenting the findings, such as a bug reporting tool. That’s it. Anything else is a bonus, even if the lure of pizza and beer might increase your chances of getting participants.
The primary purpose of this exercise is to find as many bugs as possible in a limited amount of time. When well planned and executed, bug bashes can promote knowledge sharing, relationship building, and overall quality improvements. Even a poorly planned bug bash can be a net positive (you’ll certainly find more bugs than usual), but a genuinely successful bug bash builds camaraderie amongst team members as well.
To make sure you reap all the benefits of a great bug bash, start by identifying the when, why, who, and what.
When should you schedule a bug-hunting bug bash?
First, the product must be at the right stage for a bug bash. You don’t want to hunt for bugs too early, as many features might not be ready for testing. Make sure you have key functionality set up in a testing environment before diving into a bug bash.
For scheduling, you need to find a time when people will be available to attend. Doing it during office hours will increase the attendance of some groups, while others might be more likely to attend if you run it as an event after work with some food and beverages. Depending on your context and culture, this will differ, so spend some time figuring out the best approach.
Talk to team leaders across your organization to find a date and time that works for most people. Even if everyone can’t attend, proactively having these conversations will encourage more people to participate in testing efforts and make teams feel heard and valued. The key is to make this an invitation rather than a mandatory event — trying to force people to participate will only cause friction.
It’s also important to plan for time to process the actual results, preferably as soon as possible after the event. You can’t schedule a bug bash two days before a big release and expect to be able to fix the problems you found. You’ll need time to review the results, find the critical bugs and interesting problems, prioritize everything, and implement fixes. The timeline will depend on how deep you go with the bug bash.
For example, when I ran a small bug bash with an experienced crew, the results were sorted and roughly prioritized within the same day. When running my largest bug bash, however, we spent an entire day reading through, cleaning up, and grouping the findings, which included two release-stopping bugs. In the first scenario, we could release as planned, while the second scenario required an additional two weeks of work because we had to rethink the flow of a core feature.
As you get more experienced with bug bashes and your team, you’ll find a cadence that works well for you.
Why perform a bug-hunting bug bash?
To have a successful bug bash, you need to know why you’re doing it. Establishing a purpose will also help you set the scope and restraints for the exercise.
You can go as focused or broad as you want — maybe you’re launching a new feature and want the lion’s share of focus on the new functionality while lightly touching on the rest of the system. Or, if you’re releasing an entirely new application, you might want the testers to cover as much ground as possible. A focused approach will allow you to dig deeper into those areas of the product and uncover less shallow bugs. Casting a wider net, on the other hand, might mean a big influx of smaller problems that provide useful insights and uncover important information.
Another option is to use this exercise to observe people outside of engineering using the system. This is a great way to increase awareness of your application outside of your team and build relationships between development and other departments. If that is your primary goal, I would advise letting people go wild. Put up a scoreboard, buy snacks, pair people up, and have fun!
Whatever purpose you choose, be sure to communicate the exercise's goal and provide guidance. If you are including people who are not used to exploratory testing, this is an excellent opportunity for you or your testers to pair up with them to spread knowledge. You could prepare a list of test ideas, heuristics, and an example of a bug report. You could also spend some time with each participant and talk about building on their own test ideas and making them more valuable. You could even give your testers an extra mission to observe their non-tester partner and take notes of interesting behavior.
If you involve people outside of engineering, help them with things that might feel easy to you but would be new to them — how to set things up, particular test users to use, where and how to report findings, etc. When you work on an application it’s easy to forget that what’s obvious to you may not be obvious to others.
Who should be involved in a bug-hunting bug bash?
The participants in a bug bash can range from a single team to external users. Even limiting the activity to only the development team can be valuable. Testing together can build relationships, increase product awareness, and build a better understanding of the end user.
The benefits increase if you expand the scope to include other engineering teams — especially those closely connected to your part of the bigger ecosystem. For example, if your team owns the login solution, involving teams working on authorization or user creation could be a big win. If you own the check-out flow of an e-commerce application, inviting teams working on features such as returns, “my orders” or login/logout could be invaluable.
Limiting bug bash participants to only engineering or technical teams generally requires less preparation because the people involved will need little to no instruction. However, I believe the most common way of running these kinds of events is to extend the invitation to people outside of engineering and/or product.
You might extend an open invitation to anyone in the organization that wants to participate or invite specific people or departments. Finance, accounting, sales, marketing, and customer support are all great choices that are sure to give you new insights. They are also good relations to build if you want to create excellent products. If you are up to a challenge and feel confident, compliance and legal could be interesting companions as well.
By including people with different relationships to your software, you increase the diversity of the tests that will happen. However, you might need to spend a bit more time preparing instructions, environments, and data. You’ll also need to provide coaching during the event.
My go-to participants are usually people working in customer support, marketing, or departments that are affected by the output of your system but who are not working in it on a daily basis. My favorite participant ever was our CEO! Having the uppermost boss sit down with the team and explore the system had an incredible impact on morale, and some important relationships started in that room.
And lastly, nothing says you can’t make this even bigger! External events that involve current and potential users require more planning and infrastructure, but they’re a great way of getting the user’s perspective directly. You will need a testing environment where people can safely try out all functionality and good ways of observing the system while under test. This could be a great way of testing out your monitoring and logging. Plus, if you set up a way of communicating with people directly, you could live-trace behavior and movement through services.
Preparation for a bug-hunting bug bash
Once you have a date and time, a location, and attendees, you need a few practicalities:
A system to test
Make sure you have an environment set up that the attendees can access. Sort out any links, test data, connections to external services (or mocks of those), and access rights before the event. If that’s not possible, make sure you have someone on site who can handle that at the start of the event. What this environment is depends on your context, but I prefer having a dedicated, isolated environment where I know the state and data. Consider what makes the most sense in your context and gives you the most value with the least risk involved.
Instructions for the attendees
Prepare simple instructions to help people understand what to do. These should include areas you want them to focus on, places they can/should avoid, and instructions on recording findings. The instructions don’t have to be long or complicated — the key is to avoid people getting stuck or frustrated. Be sure to include links to the system under test and documentation of findings, along with who to ask if they need further guidance.
A way to report or record findings
Depending on your current setup, this could be a spreadsheet or simple post-its, but ideally, you’d use a test management system and/or issue-tracking tool. My experience is that it’s good to isolate the things reported during the event from other reports, so if you go with something like Jira, create a tag or a separate project to ensure you can quickly sort things afterward.
Once people show up and get going, it’s nice to have someone coordinate and guide them, especially if attendees are not used to working in your system or reporting findings. Your guide should be someone with good knowledge of your application and the tools you want people to use — likely a tester — but also someone who can observe and improve your setup next time.
Before the event ends, let attendees know what to expect next. Inevitably, there will be people who expect every single bug to be prioritized and fixed instantly, so it’s crucial to set realistic expectations. Give them an idea of your timeline for going through, analyzing, grouping, and prioritizing your findings.
Consider things such as:
- What is brand new information?
- Are there duplicates we can group or remove?
- What needs follow-up to be better understood?
- Is there anything urgent that needs to be dealt with immediately?
A good observer will take notes of attendees who either did an exceptional job, might need more guidance next time, or people you want to avoid inviting next time.
Bug bashes focused on bug-weeding
The other type of bug bash I’ve been part of is where the team stops all other work to focus on fixing bugs for a limited time.
Spending a few days solely on removing small annoying bugs might not move the needle in any big ways, but it can be great for team morale or just a nice change of pace.
We typically decide on time and scope, get approval from the product owner or a similar person, and then communicate our unavailability to other teams or stakeholders (unless, of course, there are urgent production issues). We then prepare a list of minor issues that seem like good candidates, such as clearly documented issues that will likely require little effort to fix and are not related to any feature we plan to work on soon.
The goal is to close as many bugs as possible, so nothing complicated or vague is allowed. Sometimes, we pick a particular focus area (maybe one we want to learn more about in the future or one we haven’t had time to work on lately). Other times, we might cast a wide net.
We set ground rules for things like:
- How to deal with scope creep, or when to leave it if it turns out to be more complicated than anticipated
- How we want to work, for example, who wants to work solo and who wants an opportunity to pair with someone they rarely work with
- What meetings and daily work should be paused, for example, will daily standups continue or be put on hold?
Some bug-weeding bug bashes move mountains, like when we managed to fix 14 important bugs that had been festering for too long just because we fixed what we thought was a tiny unrelated problem. Other times, we only fix a few because we didn’t stick to the scope creep rule. In my experience, the number of bugs didn’t matter as much as the fun bonding time we had as a team.
My biggest takeaway from this type of bug bash is that going through all the potential issues to work on was more time-consuming but also more valuable than the bug bashing itself. Looking at ways to group problems and weed out duplicates is great for understanding the state of the product. Plus, this work helps prevent incorrect assumptions about reports by facilitating conversations with stakeholders about details and interpretations.
Bug bashes help build relationships
If done well, bug bashes can be great for a team and a product. They build relationships and understanding between people, roles, teams, or even departments. Whoever shows up will set the tone for the event, so be sure to work on relationships before, during, and after to get the most out of that network. You never know who will be your most valuable asset or ally in the future.
Bug bashes don’t require a large budget or lots of preparation, but putting in a little extra effort to prepare can take them from a fun event to a truly valuable exercise that enhances the quality of your product.
The most important findings, or bug fixes, are sometimes not the most obvious ones. Sometimes, small changes are the catalyst for big improvements.
Either way, make sure you have fun doing it.