Thursday, April 29, 2010

Thinking "Hard" to Test "Soft"

Recently I had the opportunity to discuss some creative testing challenges with another tester, and this brought to mind some of the more interesting and creative test tools I have used over the years, as well as some of the techniques that we worked on to make them possible.

Back in my previous life at a computer peripheral company, I worked as a lone gun tester for a product management team. My goal was to work with both hardware and software to test engineering prototypes and other pieces of the puzzle. Since many of the devices I checked were also hardware devices, this gave me the opportunity to test elements that many software testers may not often think about. When I was looking at touch pads, more than just the pad and its circuitry and driver had to be taken into consideration. We had to look at things like adhesive, semi-conductive coverings, and how to test the devices under adverse conditions. Three items that became my friends in testing were the oven, the freezer and the ESD gun.

When you test hardware, you actually have to create real life harnesses and bezels to hold devices in place. One of the most fun aspects of working at the computer peripheral company was the time I spent in the shop. We would often need to make plastic and brass bezels to hold devices, or to create test devices for certain requirements. At one time, we had to work on a way to apply weight and force to a navigation stick (the kind that looks like a pencil eraser in the middle of the keyboard. This device required the ability to test for shear force at a specific weight, and as such, required a unique testing apparatus. It was fun to sit down with a program like solid works and design a literal piece of hardware that was shaped like a hollowed out octagon, with a slot cut into each side, and a mounting point in the back. This allowed us to test eight axis points, each at 45 degree angle increments, and apply direct pressure as measurable points, as well as retrieve data on the device’s readings at those specific weights.

One of the most interesting devices we had was the ESD table and gun. This device allowed the user to lower an electrical element towards an object, and when it came within enough distance and metal to discharge, it would fire off the charge that was stored (manipulated by a computer program). I found it interesting to note that the huiman body, under certain circumstances, is able to generate anywhere from 8kV at normal activity to upwards of 25Kv (this is that static electricity build-up that can be so damaging to electronics, and thus the reason we test for it). The harness that worked the gun was a simple air compressor, when the user wanted to lower the gun, a foot pedal was pressed, and the apparatus lowered to the height set by the user. Taking the foot off the pedal caused the air chamber to fill with air, and the pressure caused the gun to rise to its previous position.

To simulate force, we often created apparatuses that would allow us to swing weights towards objects, sometimes small, sometimes fairly heavy. I had the benefit of a lot of creative types at this company who were more than willing to give me their time and ideas to make some of most interesting contraptions. One of the devices was a “finger” that would rotate at random along the surface of a touch pad, simulating various weights and taking readings from the pad under various adverse situations (extreme heat, extreme cold, with sand swirling around in the chamber, etc.). It was fun seeing what these people would come up with.

Today in software testing, while I do not have to necessarily test for the weight that it will take to render a device malformed o the point where it will no longer work properly, that level of “creative destructiveness is still needed to effectively and thoroughly test software. Each day that I work, I try to think to myself “what would be the equivalent of that “swing ing hammer test” or that “octagon shear test” or “that finger in the freezing windy sandstorm”?With software, everything is abstract and takes place in code, so much of the “physical apparatus” isn’t actually used, but it still helps to think about them from time to time, as it gives me some paradigms to compare and parallels I might come up with. If you haven’t used hardware testing techniques before, do a little reading on some industrial testing systems to see how companies have solved some of these challenges. If you have worked with hardware, look for the comparisons and see where a little bit of “shop work” might come in handy on your next software project. You may be surprised at what you find.

No comments: