Functional testing heuristics
In functional testing it is tempting to use test techniques to cover the paths through a program or function based on specifications. It is also tempting to assume that once these paths or combinations have been covered functional testing is more or less complete. By the heuristics displayed below I intend to show that functional testing can - and perhaps should - include a large number of system aspects that are not regularly stated explicitly in requirements or in the design. I am certain that with these heuristics or points of view a number of interesting functional aspects of a system can be highlighted.This list is derived from my own experiences in testing a range of software products. I am also indebted to James Bach, who wrote the SFDPOT heuristic, and Elisabeth Hendrickson, James Lyndsay and Dale Emery, who wrote the Test Heuristics Cheat Sheet.
The following heuristics are on the list right now: Sequence, Concurrence, Confluence, Synchronization, Share, Interaction, Continuity, Hierarchy, Priority, Dependency, Repetition, Loop, Parameter, Prerequisite, Configuration, Rule, Customize, Constraint, Resource, Access, Lock, State, History, Roll back, Restore, Refresh, Clone, Temporary, Trace, Batch, Void, Absent, Feedback, Saturate, Sort, Scale, Corrupt, Integrity, Invoke, Timing and Delay.