A heuristic is a fallible way to solve a problem.
The root of “heuristic” is “heuriskein”, “to discover” or “to find out”. The word had fallen into disuse until it was revived by George Polya in his book How to Solve It (1945), which provided heuristic approaches to solving math problems. (This is a terrific book if you struggle with math; a very helpful set of ideas.)
One really good and accessible book on the subject of heuristics is Gut Feelings by Gerd Gigerenzer. Another is Discussions of the Method by Billy Vaughan Koen. “The method” referred to is the engineering method. Koen suggests that everything in engineering is heuristic. He says that “the engineering method is the use of heuristics to cause the best change in a poorly understood situation within the available resources.” Every approach to solving a problem is heuristic, he says, because because we don’t know everything and everything is vulnerable to potential failure. Indeed, he claims, all is heuristic, including the assertion that all is heuristic!
Heuristics are fallible and context-dependent. In general, they tend to become less fallible when they’re applied by people with the appropriate levels of skill and wisdom in appropriate contexts; more fallible when applied carelessly or foolishly or in inappropriate contexts. Yet the nature of heuristics is that they’re always vulnerable to failure.
A mnemonic is a special kind of heuristic. A mnemonic is a fallible way to solve the problem of remembering stuff. Mnemonics are so named after Mnemosyne, the Greek goddess of memory. Interestingly, this fact doesn’t help me to remember how to spell or say her name.
Everything we do and use in testing is a heuristic. All models, oracles, and test techniques are heuristics. None is guaranteed to work; all hold the possibility of failure. No test is guaranteed to find a problem.
We use guideword heuristics to express, in a compact way, things that we might think about or do or cover or… All lists of guideword heuristics are themselves heuristics. A checklist is a special kind of heuristic; it’s a fallible way to solve the problem of forgetting things. As Kate points out, we might use a mnemonic (a special kind of heuristic) to help us remember the items (heuristics) on the checklist (also a heuristic). Like turtles, it’s heuristics all the way down.
A model is a special kind of heuristic. Applying a model is a fallible way to solve the problem of understanding something complex by representing it in terms of something simple.
An oracle is a special kind of heuristic too. Oracles are fallible ways to solve the problem “am I seeing a bug here?”. Oracles can fail to point us to a bug, and oracles can fool us into believing that we’re seeing a bug when we’re not.
A test technique is a heuristic for solving the problem of how to test something.
I’d like to offer to Kate that although heuristics can certainly be used to measure things, they can be used for much more than that. I’m also not sure what you mean by “partial oracle”; can you help me out?