The last time I watched the 1999 film The Matrix was around 15 years ago and I was absolutely way too young. I finished the movie having no understanding of what had happened or what it had been about. So, when I saw that it was on Netflix, I decided to revisit the movie I had found mystifying in my youth. Now as a software tester (and adult), I watched the movie through a very different lens. I was struck by the lessons Morpheus, the main character Neo’s mentor, was delivering. I turned to my partner and asked, “Wait, is this movie about testing?”
For those who are unfamiliar, the plot is essentially about a post-apocalyptic world where humans are unknowingly living in a simulated reality built by artificial intelligence (AI) so that the computers can farm them for electrical power, and how a small group of survivors have broken out of the system to fight against the machines. Near the beginning of the film, Morpheus (the leader of the rebels) presents Neo with a simulated reality where Neo can practice his hand-to-hand combat skills with Morpheus. In introducing the program, Morpheus tells Neo, “This is a sparring program, similar to the programmed reality of the Matrix. It has the same basic rules; rules like gravity.
What you must learn is that these rules are no different than the rules of a computer system. Some of them can be bent. Others can be broken. Understand?”
I think I do understand. Are these not the basics of testing?
Every program we test follows the same basic rules, but some of these rules can be bent or broken, and it is our job to find these weaknesses before the users do. Morpheus, by teaching Neo to re-assess his assumptions of how the system should work to see how it does work, gives Neo the tools to find the weak points of the program. At this point in my movie watching experience, I began to see Neo as a junior tester. From this perspective, what can Morpheus show us about teaching new testers, and about growing as testers ourselves?
In the training scene when the two begin to spar, Morpheus pauses and says to Neo: “Good adaptation and improvisation. But your weakness is not your technique.” Neo has, of course, had all of his knowledge of fighting downloaded directly into his brain moments earlier, and thus has all of the knowledge he requires, but is still unable to land a punch on Morpheus.
I’m sure every tester has felt like Neo in this scene at one time. Whether from a university degree, college program, or a specialized course on testing such as that offered by PLATO Testing, by the time most testers start their first project, they have all of the knowledge they require (although it probably hasn’t been downloaded directly to their brain). New testers understand how the development process works and where defects commonly occur. They know what the intended design was and how to write up a defect should they find one. But no matter how hard they try, compared to the system, or Morpheus, they are left flailing in a highly breakable room to a 90’s soundtrack. The weakness is not their technique, so, how do you take that knowledge and apply it? Perhaps we should take Morpheus’ next piece of advice: “Stop trying to hit me, and hit me!”
A hesitancy to break the system is something I have seen in new testers when teaching the PLATO Testing courses and have experienced myself as a new tester. Breaking the system is part of our jobs as testers, but how many times have we been asked by new, and even senior teammates, “What will happen if I do this?”
This question is imperative to testing; the magic happens when we act on it. Going from fearing to embracing this question is a hurdle that all testers must jump.
Acting on “What will happen if…?” is at the core of testing.
We have to change our belief from thinking that we are working within the confines of the rules that business laid out and that development implemented, to thinking that we too are in a world where anything is possible. Testers must have a solid understanding of how the system is supposed to work in order to evaluate expected results. However, we must also remember that this ideal system is rarely the one we are working with.
Testing is not limited to executing happy paths and proofreading developers’ work. It is a creative process that requires us to think outside the box, casting aside our expectations and assumptions. Just as Morpheus is trying to convey to Neo, our focus when teaching or training new testers, and even growing as testers ourselves, should perhaps be more focused on the creative, curious, exploratory, and to some extent, fearless mindset that is required of testers. Techniques and theory are certainly important, but so too is teaching students and ourselves, that we can bend and break the rules. With this knowledge, we finally grow into ‘The One’ – a Software Tester.