Context-driven testing is a paradigm for developing and
debugging computer software that takes into account the ways
in which the programs will be used or are expected to be
used in the real world. In order to successfully conduct
this type of testing, software developers must identify the
intended market and evaluate the environments in which
people are likely to employ the product. Context-driven
testing is sometimes considered a "flavor" of agile software
development.
A program that works well for one person in a given
situation might prove inadequate or inappropriate for
another person or situation. For example, a word processor
with mathematical symbols and a set of tools for positioning
and manipulating them might be ideal for a college professor
writing a physics textbook but cumbersome and annoying for a
novelist. Conversely, a simple text editor may be preferred
by the novelist but be rejected by the professor.
Context-driven testing revolves around the fact that there
is no single "best solution" that applies to all cases. In
addition, it takes into account the fact that complex
software projects often evolve in unpredictable ways.
Context-driven testing is based on the notion that a
computer program should be treated as a solution. It follows
that if a program does not resolve the problem or situation
it is meant to address, then it cannot be considered a success.
Advantages of context-driven testing include enhanced
user-friendliness of the end product, optimized
functionality for intended users and adaptability of the
product to changing markets and social values. The
context-driven methodology does not necessarily work well in
all situations. Other approaches might prove better for
developers who are under the direct supervision and control
of an autocratic "boss" who takes responsibility for the
results of work done. Context-driven testing would likely
prove superfluous in stable environments where conditions
rarely or never change.