Product

How to run a bug bash before launch

Editorial · Reveneau · November 6, 2026

How to run a bug bash before launch

We have sat in bug bashes that produced forty tickets and not one of them mattered. Every ticket was a typo, a color that was a shade off, a button that could be two pixels to the left. The room had spent an hour together and found nothing that would have stopped a real customer from getting stuck. That is not because the product was clean. It is because the session was set up to find small things instead of real ones, and that is a structural problem with three fixes: who is in the room, what you ask them to do, and how you decide what gets fixed before launch versus after.

Invite the people who did not build it

The person who wrote the code is the worst person to test whether a stranger can use it, because they already know where everything is.

A bug bash exists to put fresh eyes on a near-final build before it reaches a real customer. The practice traces back to Ron Patton's book Software Testing, which described gathering developers, testers, and other staff to test a build together outside their normal roles, and it became a standard pre-release step at companies including Microsoft and Google, where cross-team sessions are still run before major releases.

For that to work, the room needs people who were not on the build team. Pull in customer support, who will field the calls when something breaks. Pull in sales, who know what the customer was promised. Pull in someone from finance or operations who fits the target user profile but has never touched this feature. Each of these people carries an honest kind of ignorance: they do not know the intended path, so they cannot follow it by accident. That is the whole value. An engineer who built the checkout flow will type the right values into the right fields in the right order without thinking about it. Someone from support, given the same screen and a goal instead of a script, will hit the thing a real customer hits.

Keep engineers in the room too. Somebody needs to be able to say whether a report is a real defect or expected behavior, and to fix the sharpest ones on the spot. Just do not let them be the majority.

Give people a goal, not a checklist

Most bug bashes fail at the instruction, not the participants.

"Click around and try to break it" produces typo reports, because a typo is the easiest thing to notice and report, and an open-ended instruction rewards whatever is easiest. A specific task rewards something different. Write each task as a goal the way a customer would describe it, not as a list of steps: "You just signed up. Get your team invited and your first project set up." "You are trying to cancel your subscription before the trial ends. Do it." Do not tell people which screen to start on or which button to press. The gap between the goal and the path they actually take is where the real findings live: a confusing label, a missing confirmation, a state the interface never explains, a dead end with no way back.

Split the group so different people run different tasks, not everyone running the same happy path in parallel. Six people repeating the same signup flow will find the same three problems six times. Six people running six different realistic tasks, chosen to cover the flows that matter most, cover six times the ground.

Run the session for one to two hours. Long enough for someone unfamiliar with the product to attempt two or three tasks without rushing. Short enough that attention stays sharp and people report the problem instead of quietly working around it, which is what tends to happen once fatigue sets in.

On sample size: the Nielsen Norman Group's research found that testing with five users typically surfaces about 85 percent of a product's usability problems, because most usability problems are common enough that several users hit the same one, while only a few are rare enough to need a much larger group to catch. A bash with six to ten participants, each assigned a different realistic task, is closer to that finding than a bigger group clicking through the same one or two flows. More people help less than different people.

Triage in the room, on the spot, with a rule

A bug bash generates a pile of findings fast, and the pile itself is not the output. What matters is what gets fixed before the product ships and what gets scheduled for after.

Sort every finding into one of three groups, and do it in the room while the context is still fresh, not in a ticket queue two days later:

  • Blocks the core task. The user cannot finish what they came to do, data is lost or corrupted, or the product does something it should never do (charges twice, deletes without confirming, exposes another account's data). This is a launch blocker. Nothing else needs a debate.
  • Confusing but has a workaround. The user can finish, but it took longer than it should have, or they had to guess. This is real and it is not a blocker. It goes on a list for the first post-launch update, with a name and a date attached in the room, not "soon."
  • Cosmetic. Spacing, color, copy that could be tighter. Fix it if it is fast. Otherwise it waits.

The naming and the date matter more than they sound like they should. A finding that gets marked "important" and then dropped into a backlog with no owner will not get fixed, and everyone in the room knows that, which is exactly why people keep arguing that their finding belongs in the blocker group even when it does not. Give the second group a real date for a real update, said out loud, and the argument mostly goes away, because deferring a finding no longer feels like losing it.

Do not let one person, especially the engineer who built the feature, be the sole judge of what gets downgraded from blocker to backlog. The person closest to the code is also the person most likely to see a real gap as a small detail, because they already understand why the interface behaves the way it does. Somebody in the room who does not have that context should have a real vote on triage, and every downgrade should get a one-line reason written down next to it. That line is what keeps the second group from becoming a place where real problems go to be forgotten.

What a bug bash cannot do

A bug bash finds problems in how a real person understands and moves through the product on one specific day, with one specific build. It will not catch a regression introduced next month, and it will not re-check the same rule on every future change the way an automated check does. In the work we do, a bug bash and an eval suite answer different questions: the bash tells you whether a stranger can complete the task, the automated checks tell you whether the thing that worked yesterday still works today. Running one instead of the other leaves a real gap, not a smaller version of the same coverage.

That is also why a bug bash belongs right before launch and not as a substitute for testing earlier. It is expensive to run, it needs real people's real time, and it works best on a build that is close to final. Automated checks run on every change, all the way through development, because a machine's time is nearly free and a person's is not.

Thanks to the customer support and sales teams who have shown up to bashes they had no reason to attend, and found the exact problems the build team was too close to see. The fastest way to learn what confuses your customer is to hand your product to someone who has never seen it and watch, quietly, where they get stuck.

Sources

Common questions

What is a bug bash?

A bug bash is a timeboxed session, usually one to two hours, where people from across a team use a near-final build at the same time to find problems before release. It is distinct from normal QA because the people in the room are not only testers, and the goal is coverage across real usage patterns rather than a scripted regression pass.

Who should be in a pre-launch bug bash besides engineers?

Include the people who will support the product after launch and the people who never opened the ticket, such as sales, customer support, someone from finance or operations, and anyone on the team who fits the target user profile but was not involved in building the feature. Engineers who wrote the code already know the intended path, so they are the least likely people in the room to get lost the way a new user will.

Why do bug bashes usually surface typos instead of real usability problems?

Because an open-ended "click around and find bugs" instruction lets people default to the easiest thing to spot, which is a misspelled label or a misaligned button. Giving each participant a specific task written as a goal, not a set of steps, forces them to find their own path through the product, which is where confusing flows and missing states actually show up.

How long should a bug bash run?

Most effective sessions run one to two hours. Long enough for a participant to complete two or three realistic tasks without knowing the product, short enough that attention does not drop and people do not start working around problems instead of reporting them.

How many participants does a bug bash actually need?

Research from the Nielsen Norman Group found that testing with five users typically surfaces about 85 percent of a product's usability problems, because most problems repeat across users while only a few are unique to one person. A pre-launch bash with six to ten people, each given a different task, covers more ground than a larger unscripted group clicking through the same happy path.

What is the difference between a bug bash and QA testing?

QA testing follows a written test plan against expected behavior, usually run by the same people every cycle. A bug bash removes the script and adds people who were not involved in building the feature, so it catches the gap between what the team assumes a user will do and what an unfamiliar person actually does when given a goal and no instructions.

How do you decide what gets fixed before launch versus after?

Sort every finding into one of three groups: it blocks or corrupts the core task, it is confusing but has a workaround, or it is cosmetic. Only the first group is a blocker. The second group goes on a dated list for the first post-launch update, and naming that date in the room is what stops an "important" finding from being re-argued into a blocker anyway.

Should the same person triage every bug bash finding?

No single person should have sole authority to downgrade a finding, because the person closest to the code is also the person most likely to see a real gap as a small detail. Triage should include at least one person who was not on the build team, and every downgrade decision should be written down with a reason, not just a status change.

What should happen to a bug bash finding that gets deferred?

It needs an owner and a date, not just a lower priority label. A finding with no owner and no date functions the same as a finding nobody wrote down, because nothing forces anyone to return to it once launch week ends and attention moves elsewhere.

Can a bug bash replace automated testing?

No. A bug bash finds problems in how a real person understands and moves through the product, which is not something an automated check can evaluate. Automated checks are better at catching a regression the moment it is introduced and at re-verifying the same rule on every future change, which a one-time bash cannot do. The two catch different classes of problem and neither substitutes for the other.

What is the most common mistake teams make running a bug bash?

Treating it as an open house instead of a structured session. Without assigned tasks, a time limit, and a triage owner, a bug bash becomes an unstructured hour where people report whatever catches their eye first, which is almost always spelling and spacing, not the flow that will actually confuse a paying customer in week one.