This weekend I went with my family to a Robotic Dairy Farm.
Obviously the kids had a blast with the cows, and my oldest son made me proud by showing off his cow-milking skills, or at least how he’s not afraid to try 🙂
How is this related to testing???
Let’s start by saying that after having done both these jobs during my professional lifetime, milking a cow is nothing like testing software.
Still during the visit we learned something that reminded me of how we should always look for alternative (and sometimes unconventional) approaches to solve our biggest testing challenges.
Solving the “Hardware Disease” in the Dairy Industry
Did you know that there is such a thing as “Hardware Disease” that harms dairy cattle? (and NO!, it is not related to a cow using a mouse and hurting its wrist in any way!!!).
Based on what they explained to us in the farm, up to some years ago close to 1% of all dairy cows would die as a result of eating metal objects (together with the hay) that would get in their stomachs, perforate them and cause large internal bleeding.
To solve this issue they first tried to develop technology that would “find and extract” all metal objects from the hay before feeding it to cows, but this approach proved both expensive and impractical.
Then, someone though about an unconventional approach: “Instead of fetching them before they are eaten, let’s prevent the cows from dying even if they ingest these metal objects”. And they came up with the idea of feeding cows a relatively small but powerful Cow Magnet that would sit on their “second stomach” and catch metal objects before they would cause any harm to the animal.
As weird as it sounds this solution worked, and it is now widely used in the Dairy Industry saving thousands of cows a year world wide.
Looking for our own “Cow Magnet” solutions
Now let’s get back to testing…
How many times have you gotten stuck trying to solve a problem using conventional approaches instead of trying to think “outside the box” looking for unconventional wisdom?
When this happens it is usually because you are focusing on the wrong problem, like in the case of the cows where they tried to tackle the issues of the metal objects instead of focusing on the death of the cattle.
Let’s use an example of a testing challenge and how we solved it to explain what I mean.
A “Cow Magnet” to solve DB migration failures
Long before I started working in PractiTest, I was managing the QA for another enterprise software company. The product I was in charge of testing ran locally on our customer’s servers (this was before the world learned about the advantages of SaaS software!), and we had thousands of installations world-wide, ranging from a handful of licenses and all the way to customers with thousands of end-users.
We had a problem in this company. Each release (once or twice a year) we had to migrated the database to a new schema, and for a large number of the customers (who had made modifications mainly to create their own reports) this meant that their “version upgrade” would get stuck during the db migration phase, and they would need to get someone from our support to manually “fix” the issues and complete the migration process.
This resulted in large number of organizations that were afraid to upgrade, and our product quickly started getting a bad reputation in the field.
In the beginning we defined the testing problem as “been able to generate all these db customizations internally in the lab”, but after 2 releases of trying this approach the results in the field were still disastrous.
Then we started searching for our “Cow Magnet”, or in other words we re-defined our challenge this time to “making sure as many of the problematic databases would be able to migrate successfully”. Notice that instead of focusing on the “testing artifact” we focused on the problem from the perspective of our users, and this was the big breakthrough.
We got in touch with our support team and asked them to contact all customers who had experience migration issues in the past and ask them if they would provide us with a copy of their databases.
We got our hands on close to 40 such projects (only about 1/3 of the organizations agreed to send us their DBs) and we created an automatic framework that would run the upgrade on all of them once a week verifying the results of this operation (a simple pass or fail test), and informing Development whenever one of their changes “broke” the migration.
By running these tests we found that each release had only between 10 to 20 operations that would be responsible for most of the migration issues. And within one release we reduced the upgrade issues from around 6% to less than 0.3% of all upgraded projects.
Three quick methods to find your “Cow Magnets”?
Looking for your “Cow Magnet” is not hard, and the main challenge is to re-define your problems in a way that will let you find “other” possible solutions.
Following are three methods I use to achieve this.
Method 1 – Look at the problem from your user’s perspective
This is the simplest method and one you can even do by yourself, simply try to put yourself in your customer’s shoes and think how he sees the problem.
Like in the example above, the user didn’t care the problem was caused by his customizations, he simply wanted his project to be migrated successfully. Or in the case of the dairy farmers, they didn’t care about the pieces of metal, they simply wanted their cows not to die.
Method 2 – 5 Whys
To quote Wikipedia on it: “The 5 Whys is a question-asking technique used to explore the cause-and-effect relationships underlying a particular problem. The primary goal of the technique is to determine the root cause of a defect or problem…”
Basically, take some of your peers and write down the problem you are trying to solve on a whiteboard, then ask WHY? (e.g. why are looking to take out the metal objects of the hay, or why are databases failing to upgrade?).
Write the answer/s you got, and ask once again the question WHY?
Repeat this process 4 to 5 times and you will get to the source of the issue you are trying to solve and hopefully to more ways how to solve it.
Method 3 – Brainstorm with other members of your Organizations, but not from your own team!
This might be the most effective method since it will give you the broader results, but it is also the most time consuming, so use it only when the problem you are looking to solve is important enough.
Set up a meeting where you bring people from other teams in your company such as Support, Sales, Marketing, Finance, HR, etc. Then perform a brainstorming session with them around your problem (you can use the 5 whys, or any other brainstorming method you like) and try to bring as many ideas as possible into the table.
The advantage of this method is that it will provide a lot of varied approaches that are not biased by the technical nature of the testing and development teams.
Have you come up any “Cow Magnets” in the past?
An additional example that comes to mind is the tale about the Russian Space Pencil: As part of the Space Race it became apparent that pens (that work based on the principle of gravity) don’t work in outer space. The Americans spent millions of dollars developing a pen that would work on Zero-G conditions (and also under water, at extreme conditions or cold and heat, etc), while the Russians simply gave their cosmonauts pencils… (BTW, this is apparently only an urban legend but still drives the point home)
Have you come up with “Cow Magnets” of your own?
Share them with us and give additional ideas on how to go around solving problems using unconventional approaches!
(*Image by FreeDigitalPhotos.net)