Published On: May 20th, 20243.9 min read

Before we understand why we do context-driven testing, we must understand what is the traditional way of testing and what it means by context-driven testing.

The Traditional Way of Testing

For a long period, debates have been going around the software quality testing community over the right way to do testing. Various writers, speakers, groups, and institutions touted their approaches as being the best practices. Cem Kaner was the first to notice that “best practices” coming from academia didn’t work so well when you try to apply them in industry. Those best practices published in books by people who worked in the bank business didn’t work so well for the people in Silicon Valley. And those best practices for mass-market commercial software went against the medical business. Based on those conclusions, they were declaring that testing should be thus and so. It is not that their findings were wrong, they might have been right for their own contexts. The problem is that it is not universally applicable to all domains.

Concept of Context-Driven Testing

As time went by more people were facing the same problem. The reasonable people suggested that there is no best practice and it can not be applied to all domains. Standards for a medical solution will not work for a computer or mobile game development industry. People like Cem Kaner, James Bach and Bret Pettichord who recognized these issues went on to declare a set of principles based on the idea that if you want to add value to your solution through your testing, then you have to consider the context first, before anything else.

Relationship of context to content and users

Relationship of context to content and users

The Context-Driven Testing Principles

The Seven Basic Principles of the Context-Driven testing are:

  1. The value of any practice depends on its context.
  2. There are good practices in context, but there are no best practices.
  3. People, working together, are the most important part of any project’s context.
  4. Projects unfold over time in ways that are often not predictable.
  5. The product is a solution. If the problem isn’t solved, the product doesn’t work.
  6. Good software testing is a challenging intellectual process.
  7. Only through judgment and skill, exercised cooperatively throughout the entire project, we can do the right things at the right time to effectively test our products.

Principles in Action

  • Testing groups will serve the project for testing-related services, they do not run the project.
  • Testing strategies can differ according to stakeholder’s objectives. Objectives can be developing, qualifying, debugging, investigating or other kinds of services related to it.
  • Different test groups may have different missions thus establishing a standard practice for a mission will not work
  • Invalid metrics are dangerous
  • The value of a test case is in its ability to be informative for reducing uncertainty.
  • A passed test does not mean that it may not fail in ways that you and your script are ignoring.
  • Automated testing is not manual testing done automatically.
  • Different types of bugs will be revealed in different scenarios. The testing technique should focus on different aspects of different scenarios.
  • Testing is worthwhile to satisfy their stakeholder’s requirements.

So, Why Context Driven Testing?

Before asking this you must make sure your answers to the following questions are all affirmative:

  1. Do you value more in individuals rather than their interactions over processes or tools?
  2. Do you value more in seeing working software over documentation?
  3. Do you value more in collaborating with your customers (including development) over negotiating contracts (and specs)?
  4. Do you value more in responding to change over following the plan?

Some people believe that you should refuse to test until you have a clear, complete, up-to-date, and unambiguous specification. Is it really applicable in the industry? Think about the latest fashion of industry prototyping, extreme programming, agile, etc.

Now, as it’s been said, people may ask “So, you don’t believe in the documentation?” Not true; we do believe in documentation. But we believe in communication more. We believe in conversation more than documentation versions because it is clearer, faster and more effective.

Some people say “Exploratory testing? So that’s manual testing, you don’t believe in test automation?” Not true; we do believe in automation as a tool. We favor interacting with the machine as the users of the product do, but we also love using automation for things that automation can help us with.

Context-driven testing is an approach like negative testing, not a technique. Do not use it as oracles or standards being used in traditional testing. Change oracles according to your context and keep asking yourself WHY?

Contributor: MD. Wasiqul Huq, Software Engineer (QA), Nascenia
Share it, Choose Your Platform!

More to Explore

The Quest for Knowledge Continues. Fuel Your Curiosity.