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?