We testers are into tools these days. It seems that if you aren’t flashing some shiny new tool around to your testing buddies, they start to suspect you’re not up to snuff. But the best tools aren’t some fancy plug-in that’s all the rage on Twitter; the most useful implements at your disposal for software testing are learning tools.
The seven liberal arts have been revered as learning tools since the time of the ancient Greeks. They are traditionally divided into two groups: the trivium, which includes grammar, logic, and rhetoric; and the quadrivium, which includes arithmetic, geometry, astronomy, and music. As Dorothy L. Sayers, author of The Lost Tools of Learning, puts it, “The whole of the trivium was, in fact, intended to teach the pupil the proper use of the tools of learning, before he began to apply them to ‘subjects.’” If the trivium are about the proper use of the tools of learning, the quadrivium are about the practice in using these tools and provide a transition to more advanced studies in the classics.
So, why am I talking about such scholarly things in an article where I’m supposed to be reflecting on my experience in software testing? Because it was during my years studying the liberal arts and classics that I began—without even realizing it—to think like a tester.
Learning to Reason before Learning to Test
After doing a year studying computer engineering at Washington State University, I decided to pursue a liberal arts degree at Thomas Aquinas College. My motivation was mostly out of a recognition that there was more to do with my mind than math, science, and computer programming. About ten years later, not really finding much in the way of gainful employment, I resumed taking programming classes because I had always been good at it, and, if nothing else, it seemed to be paying a livable wage.
Eventually, I ended up in software testing. Of course, programming was a part of my job, so having learned how to do this came in very handy. On many occasions I’ve called on my programming skills to solve problems related to the test effort in the form of tools and ad hoc scripts, so I don’t discount the value of my programming classes in the slightest. Nevertheless, I realize now that throughout my time as a software tester, my liberal arts degree had far more of an impact on my abilities.
One example involves two areas of study: Latin grammar and philosophy, particularly Aristotle’s works on formal logic. Both helped me come to know the concept of equivocation, or using ambiguous language so that it’s open to different meanings.
It’s important to be aware of equivocation when dealing with technical and complex subjects. For instance, I’ve been following the debate about testing versus checking among the context-driven testing community, which primarily centers around the concern that test automation could replace manual testing. To me, the chief problem in the debate is that when we call mere checking testing, we are equivocating on testing. Imprecise language muddies the meaning and makes the debate difficult. It turns people against one another or, worse, makes people become frustrated, tire of the discussion, and eventually lose interest in it, a result I consider tragic.
Astronomy, another liberal art, is another good example of how an area of classical studies influenced my testing. In college we read the Almagest, written by Ptolemy, an ancient Grecian astronomer. This study walks the student through the process of discovery of how the heavens rotate. First, you notice that all the stars move and, furthermore, that they are rotating in common around a central point (as far as appearances go, anyway). These bodies are classically referred to as the “fixed stars.” Next you realize that a few of them move differently than the rest, namely, the planets, moons, and sun. You notice further that planetary motions aren’t necessarily regular like those of the fixed stars—some actually move backward on their paths for a while. This is a great model for how we come to distinguish small systems from larger ones. When tackling complex situations, I find myself instinctually falling back on this pattern of thought: looking for the larger system first, then proceeding to decipher the smaller ones.