If developers can guarantee that there are no bugs in their written codes, we the testers will be out of the job!

If the Requirement analysts can claim that the given requirements are 100% complete, and a pre-packaged application would furnish customers with what they want, then both Testers and Developers are out of the Job.

If the Pre-packaged application comes up with a marketing tag line, of “Plug and Play” then all of us would be out of the job.

So all hail to those enhancements, changes, patches, releases, deadlines and the bugs that appear and re-appear and then give way to the new ones – it is a ride we all have to take, how well we take it, is another question!

In reality, the process goes on, and no jobs are lost because it’s all nothing but the “Leaky Abstractions”.

The Requirements, the lines of codes, matrices, statuses, test cases, scripts and frameworks, queries, SOPs, and the bugs report, because Human being is an imperfect creature – so we cannot guarantee anything to be accurate as we claim it to be.

What to do?

As tester we need to be sure to provide maximum coverage to our testing and exploration in order to find the potentially important bugs and make sure to find all of them. In order to do this, we must put ourselves in the developer’s shoes, behind the desk of a Business Analyst, or within a customer support phone call. We must be aware of the business domain the application is built around, and we must be an expert of that domain. Because if you don’t know what you are looking at, you would not find what you are looking for!

Systems, with their structure, routines, database items, conditions, modules, parameters, report arrays, interfaces, platforms, deliverables, users, and other such complexities exist in a “Phase Space”. This phase space represents each component of the system independent or intersecting with other components. As a tester, the bugs which you are looking for exist within this finite space of time and components. To move around this space you must gain or have the proper knowledge. To gain that knowledge you need to be aware of the physical universe around you.

Domain Expert, Developers, Business Analysts, Documentations, Previous Bug reports, people other than team, other similar systems, Google, and materials written for such system. You don’t need to seek out that specific Functional or System requirement specifications, if these are available then good, otherwise getting dependent on them will only limit your coverage.

The phase space is not empty; the application components are like a debris of meteors, spread throughout the finite space of time. To locate the bug hidden within that complex structure, we need to induce complexity in our actions, our scenarios and the way we use the system. Traditional approaches of tracking step after step requirements cannot work here. We need to play around the system, we need to have variety of actions to beat the variety of scenarios – only then we can find the potentially important bugs in a defined time frame.

Once you know what the application is and what it can do, you can explore the phase space with confidence, once you start exploring you will further learn about it.

The exploration is constructed over four paradigms:

- Learning
- Testing
- Collaboration
- Self-Management

You are not exploring if your findings and association is not based on these 4 paradigms. You can call it a guided tour, but that will only take you from one point to another and then call it an end.

With each paradigm there is a need for the Analysis and investigation with an outcome of extraordinary importance. Remember, testing is anthropology; it is an intellectual activity with knowledge and research at its back-end. The outcomes you get are Knowledge from the Learning Paradigm, experimentation from the testing domain, a network of people from collaborative activities, as testing is clearly not a solitude job, and then you get a compelling story to share with self-management of your bug reports, records, data and findings.

So for the next release be prepared with your skills and abilities to move around that phase space with confidence, hunt down those bugs with an open mind, collaborate, learn and do not forget to tell that story with compassion and details.


Arslan Ali is a Software Testing and Training professional; he serves his passion at OuttaBox (www.outtabox.co) as a Training Consultant for various software testing workshops, and also works as a Senior Consultant Information Solutions at Sidat Hyder Morshed Associates – a renowned software solution provided in Pakistan.

Arslan has been around ICT industry past 15 years and have diverse experience in Software Development, Quality Assurance and Business Process implementation.

You can reach him out on twitter @arslan0644.

Share Button