How Much Can a Missing Test Cost You?

I went to a local electronics place with a friend at lunch today so she could buy a TV that was on sale.  When the person at the counter rang it in, the price of the TV was ok but the “environmental fee” was $2,500 instead of $25.  Oops.  So naturally the people in the store blamed the idiot who entered the environmental fee data.  Being the nut I am, I started wondering what could have happened. As I see there, there could be quite a few problems here:

  1. the data may have been entered correctly
  2. the data input screen may have made the data entry person believe they entered it correctly  (perhaps there was validation that wouldn’t allow the operator to enter “25.00″ so they entered “25″ and there was some error that transposed the zeros incorrectly
  3. maybe the person entered “2500″ and forgot the “.” and there wasn’t a check to say “are you sure you want to add a “$2500 fee”?
  4. maybe once the item was scanned, the fee being displayed was being rendered incorrectly
  5. maybe the person entering the data was working on 12 things at the same time and simply messed up
  6. Maybe the data was added with a bulk script and there was no test to validate it
  7. maybe there wasn’t a test in place that could have caught the error before it was deployed
  8. maybe there wasn’t a conversation that a clearly out-of-boundary error wasn’t a big enough deal to worry about (I’ve never heard of a $2500 fee for electronics before!)
  9. maybe it was the data entry person’s last day and he really wanted to mess up this company

There could be many more possibilities, my point is there is much more going on than “the idiot who entered the fee incorrectly”.  There could be numerous causes and a possibility for a large loss of sales revenue.

It gets worse.  The people in the store didn’t add that fee, it was added automatically when they scanned this item.  The people in the store cannot correct the environmental fee price.  The people in the store called head office and “the guy was on lunch”, which is where we would have liked to have been.

So in my brain I see software doing something the user didn’t intend for it to do (add a fee), wouldn’t allow the operator to correct it and gave the operator no course of action to correct the problem with a customer who was prepared to plunk down a few hundred dollars right there.    Were other stores affected? This was a chain store  so I will assume their POS devices are accessing a centralized system.  How many items do each of these stores sell that have this fee and how many customers would have been turned away until the problem was fixed?

And what really happened anyway?  Was it a data input error? Was it a system problem?  Who knows and it’s un-likely we’ll find out.  All we know is we need to go back and pick up the item in a pain-in-the-ass-area of the city to get to and we wasted our lunch.

I’m probably nuts but I know how I would handle this problem, what would you do?