Why Context Driven Testing?
First of all remove the confusion from your heads that this post is against or not about “Automation” or the use of technologies while practicing (Software) Testing. Secondly, read it completely and you would find yourself more enchanted and powerful because it relates to you as a Tester, that is, if you think you are.
The Murky world
This world has no guarantees or certifications of any sorts attached to its poles that in the next moment it will remain as it is. So stop believing that “Big Picture” that shows a shiny blue planet and a perfection banner on top of it. On the contrary, it is not! We live on a culturally, economically, environmentally, psychologically and even technologically volatile and murky kind of world. It does not clutch any guarantees for the next moment, and it does not contribute us with sufficient information to formulate decisions with unyielding confidence regarding our own future.
Software is something which is built out of this world, to provide solutions regarding our daily lives, the problems we face, and the assistance and services we seek. People who assemble them are engineers and architects; they put a lot at the stake, and their tediousness and dedication is overwhelming (no denying in that).
The Simple Equation
The day software is created it is brought into this world like a new born child, it brings along its own characteristics and personality. But unlike a human being, who after her birth actually goes into a complete evolution of self learning, adapting and changing as the world open itself; software on the other hand, need to be used on the simplest of all principle, the Input, the processing of these inputs and then providing the desired outputs, all of course written down in form of codes by the developers, working designs created by the designers who were guided by the customers or idea conceivers.
All this input from so many stake holders actually make the software a complex creation by human beings, and it adds more to its context (seen or unseen) then we can ever imagine. Consider the software as a planet, but unlike the planets in our solar system, which revolves around a singular central entity a.k.a The Sun, it has several entities, and each with a different size, gravity pull, heat intensity and orbit size. This is how the context of the world applies on the software.
The Challenge!
No wonder James Bach definition of the Testing as a challenge perfectly embeds itself under these conditions:
Perfect Testing is an Infinite process of comparing the Invisible to the Ambiguous, so as to avoid Unthinkable happening to the Anonymous - James Bach
As testers (who are eventually Humans) we need to test something which we are unaware regarding its internal functions, structures, the line of codes, the query structures, the stacks and matrices being used to create tables and the conditions that loops around in circles. It is actually an ever-changing scene, so it is Infinite and invisible.
Then there are requirements and specifications, and the numerous contexts that applies to the use of the software, which will always remain ambiguous, we will never be sure of anything that under what context and circumstances the user will use this application. With these ultimate and undeniable challenges, we need to make sure that something drastic and unthinkable is prevented happening to the user; the user, who we don’t know!
That’s Why CDT!
Context Driven Testing addresses the same challenges a tester can face, and then guide them with proper techniques, resources, and principles to test software and products. Context Driven Testing works on the foundations of Heuristics and Oracles, which empowers the experienced tester, let them use the available resources such as tools, documentations, collaborations and experience. It derives the tester to the learning and analysis, rather than following a guided tour, which put the scripted procedure in command and skilled tester in the background, CDT does not do that!.
The Giant Leap!
You as a tester are a single most powerful entity with the challenge in front of you. You as a tester need to find the potentially important bugs in a finite space of time. You need to be tactfully critical, skeptic about your own work and thorough in your investigations. You bug report must contain information more than a developer’s thinking and logical abilities. The story you write should be justifiable in cost and time the developer is going to spend on your findings.
Context driven testing provides and gives you as a tester a free hand in generating your own heuristics and make your own way for achieving the right essence in your testing skills. It puts the human tester in the front line and let them enhance their own role whether by using tools, techniques or principles necessary at that time and for that context.
So if you haven’t, then start exploring, discover your abilities as a tester and see if this changes you
Till then
Ciao
Arslan