Breaking the Cash Register (By Accident and Not for Profit)

This weekend, I managed to hang the terminal at the supermarket checkout. After entering my customer loyalty number, I had to enter my PIN and then press The Green Button.

I pressed it. Nothing. Several more presses of The Button That Was Green, and still nothing. The checkout cashier asked what message was showing, and I told him about The Green Button. He told me the terminal was frozen.

He didn’t seem too fazed by it. He made a phone call, carried on scanning my items, and directed me to a nearby till with a Working Green Button to actually make the payment.

I’ll never know the details of what actually happened with The Green Button, but it could have been a situation like one of the following:

  • Poor testing meant the bug was never found. If this was the case, why was the testing poor? Was the tester not experienced enough? Were they being pressured to test quickly? Was it something that used to work, but something changed that broke it and the team wasn’t guided to test that part of the system (maybe all system tests for that area were green)?
  • The bug was found, but a decision was made to release the program. Perhaps there was a deadline that had to be met (conformance to Chip and PIN regulations?), so whatever state the program was in, it had to be shipped.
  • The bug was found and reported. After analysis, it was judged that the time and effort to fix it was outweighed by getting the product live. The situation would be monitored to see how many times it happened.
  • The bug was found but could not be reproduced on the developer’s machine, so it was dismissed as a random bug. When it was found to occur in live environments, analysis found a difference between the dev and test environment which was corrected for future builds.
  • The bug was found, reported, and fixed. However, a mistake when making the build meant that the fix was not included, so the bug was in the live version.
  • Live builds were being monitored for bugs, and the bug had been logged and fixed. However, it takes time to roll out a build, and this had not happened at the store where I was shopping.

If you come across a bug outside your own project, it can be tempting to think, “Why wasn’t this tested? Doesn’t the company care about quality?” The scenarios above (and there are many more) outline why it’s not so simple.

Think about how things could go wrong with your process. Are you sure bugs can’t slip through? And if they do, how would you know and handle the situation?