3. 03‐Jun‐14
3
How Do We Recognize Problems?
An oracle is…
• a means by which we recognize
a problem that happens during
testing.
• a way to recognize a problem
• something that tells us “problem” or
“no problem”
Familiar Problems
If a product is consistent with problems we’ve seen before,
we suspect that there might be a problem.
10. 03‐Jun‐14
10
Feelings as Heuristic Triggers for Oracles
• An emotional reaction or a feeling is a trigger to
attention and learning.
• Without emotion, we don’t reason well.
– See Damasio, The Feeling of What Happens
• When you find yourself mildly concerned about
something, someone else could be very concerned
about it.
• Observe emotions to help overcome your biases, to
evaluate significance, and to calibrate responses.
Emotions and feelings are signals.
Look into what they’re signalling.
Tacit Explicit
Other PeopleTester
Your
Feelings &
Mental Models
Shared Artifacts
(specs, tools, etc.)
Stakeholders’
Feelings &
Mental Models
Inference
Observable
Consistencies
ReferenceConference
Experience
Oracles from the Inside Out
11. 03‐Jun‐14
11
• A person whose opinion matters.
• An opinion held by a person who matters.
• A disagreement among people who matter.
• A reference document with useful information.
• A known good example output.
• A known bad example output.
• A process or tool by which the output is checked.
• A process or tool that helps a tester identify patterns.
• A feeling like confusion or annoyance.
• A desirable consistency between related things.
General Examples of Oracles
things that suggest “problem” or “no problem”
21
People
Mechanisms &
Artifacts
Feelings
Principles
Using and Choosing Our Oracles
• Some oracles are more authoritative
– but less predictable ... like the product owner
• Some oracles are more consistent
– but maybe not up to date … like the requirements document
• Some oracles are more immediate
– but less reliable … like our feelings
• Some oracles are more precise
– but less accurate … like an automated check with a bug in it
• Some oracles are more accurate
– but less precise … like our Blink oracles
• Some oracles are more available
– but less authoritative … like the programmer
• Some oracles are easier to interpret
– but more narrowly focused … like a good automated check