Sales saved by QA

A minor change could lead to a huge problem.

Garbarino is a large retail company in Argentina that has more than 200 branches... and a problem: If its system cannot issue an invoice, none of its 200 branches will. It also has an ecommerce point of sales… but now let's talk about its branch sales.

How could it be a large problem? Lets see: what happens since the moment a clerk is about to issue an invoice and detect that it is not possible?

1. The clerk attempts to do the operation again. He thinks that probably has missed something in the procedure.

2. Ask for help to another clerk

3. Informs his manager or the internal help desk about the problem.

4. ...in the meantime that particular client... Leave the facilities, cross the street and buy the product at the next corner retail company.

5. Help desk reproduces the error and escalates it to the IT development area.

6. All branches are communicated with the problem and try to run some contingency procedures…

7. Development detects the root cause and corrects or mitigate the error.

8. Commit - push - pull Request - Continuous Build system runs and generates a new version release.

9. Final coordination to all branches to communicate that the problem was solved.

Time to run through all these steps… 4 hours…. And this is being fast, accurate and not producing new errors…

The direct cost: Multiply the average hourly sales for all the branches by 4 hours... And you will find the cost of this particular, single bug. A silly bug...

Wait...What happened?? A small change… a new request that started with a good idea: “Let’s add the email info on client’s record” But they made it mandatory…. Every new client will be required to have that new field completed. But there wasn't any value for old clients. And that is what happened: A regular client came and when the invoice was created, and client’s record updated, the new constraint for not null email field triggered…. And crashed the invoice creation app.

Fortunately... A year before that bug, Garbarino hired BairesQA and put in place a large set of final user point of view tests that run automatically on every sprint. That specific bug was detected on the final set of integration tests and it never reached the public. That simple catched bug paid for a year of full QA effort. There were a lot of similar bugs detected only on those final integration tests. More than 300 tests were put in place to catch costly bugs.