Testing Lessons From a Glass Factory

Testing Lessons From a Glass Factory
March 15 07:00 2011 Print This Article

A number of years ago, I took a tour of a plate glass factory. Plate glass manufacturing is pretty simple: dirt pours in one end of a factory where it’s melted in a huge furnace. The melted dirt is then poured out as a thin sheet which then cools into glass as it rolls along a mile-long conveyor belt. The process is continuous – dirt constantly pours in and glass constantly flows out in a never ending ribbon. At the very end of the factory, away from the furnace, a lonely robot slices the ribbon into panes of glass for things like windows and doors.

Periodically, a technician will take one of those glass panes back to a lab where it is broken up, melted, dissolved with chemicals, and analyzed in fine detail under a microscope. That technician is a tester – one who is testing the production of the glass to make sure it matches quality requirements. His job is very different from that of a software tester, but surprisingly there are many things a software tester can learn from him.

That may sound bizarre because software isn’t manufactured. There is no real “production” in software – every copy of an application should be exactly the same. But production testing is about more than manufacturing. It’s about managing variability – and understanding variability should be incredibly important to software testers.

Variability – randomness – creeps into manufacturing processes and destroys precision and control. Variability is when a bolt on a cutting robot loosens over time, suddenly making it produce curved cuts instead of straight cuts. Variability is when the wrong mineral gets loose in a precise mixture of dirt, producing glass that’s the wrong color. Testing looks for these random events and stops them before they get out of control.

Many testers assume that software is never variable. When I install an application on my computer, it should be the same as it was on your computer when you developed it. This fundamental assumption is flawed. The reality is that everyone’s computer is a little different, and how we interact with our computers varies from person to person.

My wife loves to open browser windows. She hates tabs and she also hates closing windows. Her poor Macbook will often have every browser running at the same time, each with usually 20 or 30 windows open. I hate that. I use tabs, keep only a few windows open at a time, and use Spaces on my Mac to keep them organized. Variability.

Years ago, I installed a piece of software that added some unwanted toolbars to one of my other applications. Those toolbars were supposed to be helpful, and I imagine many people found them very useful. But I disliked them, and there was no way to turn them off. I resorted to deleting the system files that created the toolbars. Variability.

Sometimes we forget to install important software updates, or we install them haphazardly. Sometimes updates conflict and files get out of sync. After upgrading OS X on one of my older Macs, I reinstalled the software from the “extras CD” that originally came with the computer. The CD had several free tools and applications that I thought were useful, but little did I know that one of those extra applications had become a core part of the OS. When I installed that CD I unknowingly overwrote a key system file with one that was much older. Variability.

Software testers have a lot to do.  Software can be so complex that it’s a full time job just to make sure it matches the original spec and doesn’t crash. We do some exploratory testing if we have time, and often that’s it. Only after the software is released do we hear stories about variability getting in the way.

One of my old teachers, who had been an army instructor prior to becoming a college professor, used to shout: “Variability is the enemy!” In manufacturing, quality experts will hunt variability and control it one system at a time, much like an army winning battle after battle. But software testers can’t visit the homes and businesses of their users and demand that they use an application in only one way.

Software testers must embrace variability and find ways to understand it, and product managers must look for ways to accommodate it. By embracing variability we can learn about it and make our software resilient against it. Think about that the next time you see a computer that hasn’t been updated in 24 months with two different anti-virus systems and a web browser that’s a year and half out of date. That computer could belong to your customer. Variability.

Source: http://blog.utest.com

Related Posts:

  • No Related Posts

About Article Author

view more articles
Nataliia Vasylyna
Nataliia Vasylyna

View More Articles