Excellence in Software Engineering
BLOG | Testing
What is Context – Driven Testing and what is not!
18 October 2017

Author: Seda ALTIOKOĞLU, SW Test Engineer / Defence SW Applications Group

Context-Driven Testing is an approach that aims to get the best results with what we have, apart from the usual test techniques and standards.  It is a mindset shift (or School of testing) developed by Cem Kaner, James Bach and Bret Pettichord. All the details about this approach can be found in their book “Lessons Learned in Software Testing” [1].

You may have noticed that I used the term “approach” instead of  “method” while defining it. Designers can also be referred to it as an “Open Community”. It is an approach that everyone can contribute by recommending the testers to select their own test technique, test deliverable, test documentation and test objectives according to the specific situations in the project [2]. This process is defined as “living and growing” not only because of this approach, but also the nature of the test. Is not “testing” a process with its own dynamics in every project?

Testers tend to start with the requirements of the customer to take into account practical constraints and best practices, in general. In fact, context-driven testers should avoid using best practice and testing standards. According to the context-driven testers, the context-driven approach provides a suggestion about implementation-level rather than prescriptions. Basically, Context-Driven Testing tells us not to be a person who suggests a tool or an approach immediately when talking about the test.

Let’s have a look at seven basic principles for implementing Context-Driven Testing: [2]

  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, are we able to do the right things at the right times to effectively test our products.

When we consider these principles, we understand why context-driven testing is a non-standard approach. The experience gained in previous projects could not contribute to the same project in the current project. Different working groups are working for a different purpose. These completely different test strategies can be good for different goals.  Even if your product seems like to pass your test, but actually it may have failed as could not follow. We need to pay attention to whole these things. Most of the testers assumed that they do context-driven testing correct but unfortunately, there has been some conceptual confusion. Applying to the best practices first and project-specific situations second is called “context-aware” not “context-driven” [3].

The other approaches that are confused with context-driven are:

Context-oblivious: Situation of the getting to work without first thoughts, project coverage, testing practices, testing environment, project environment and what you see from others.

Context-specific: To try to get results by applying old habits, old successful methods and approaches even though the scope and concept of the project are changed in case of not taking an active role in different project.

Context-imperial: Situation of the moving the way that is about to believing only one truth.

How to ensure effective context-driven testing [4] :

Ask questions: To get the project’s context and get the maximum test coverage, you have to ask questions to the development team, stakeholders, fellow testers etc.

Plan ahead: Planning ahead the test plan and sharing it with the whole team will make you increase the work efficiently, build rapport within the company and generate more meaningful conversations

Adjust your plan: With changing schedules, new features and arising priorities it is necessary that you adapt to your strategy accordingly

Let stakeholders decide on the project completion: Let stakeholder decide the completion of the project. It relieves the tester from responsibility of project completion and helps him to focus on testing

Avoid applying any practice blindly: Flexibility is very important for context-driven tester because what works for one project may not necessary will work for other


When we should not apply [4] :

As a result, apart from the usual testing techniques and standards, it is an approach that aims to get the best results with what we have. The approach tells us how to learn the application, overcome difficulties and working together with other testers rather than how to describe a test case definition.

I  agree with James Bach’s emphasis “testing (and every engineering activity) is a solution to a very difficult problem, it must be tailored to the context of the project, and therefore testing is a human activity that requires a great deal of skill to do well.”

[1] http://context-driven-testing.com/?page_id=9
[2] http://kaner.com/?p=49
[3] http://www.satisfice.com/blog/archives/74
[4] https://www.guru99.com/context-driven-testing.html

Past Articles

How to Test Rest Services with Rest-Assured Framework

How to Test Rest Services with Rest-Assured Framework

est stands for “REpresentational State Transfer”, that is an architectural style for developing web services. A RESTful API is an application program interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data.

Docker Powered Test Environments

Docker Powered Test Environments

Testing is the most crucial phase among other software development processes. Being a crucial step for delivering high quality applications, it helps software teams to have a relatively different point of view for the product they develop.

Basic Test Algorithms of Complex Hardware

Basic Test Algorithms of Complex Hardware

This post is about basic test algorithms for complex hardware that contains RAMs, flashes, bootloaders and processors and I will try to briefly explain the purpose, working and testing principles of them.


Pin It on Pinterest