测试准则

测试准则(Test oracle)，是软件测试员或软件工程师用来检测测试是否通过的一种机制。Kaner, Cem; A Course in Black Box Software Testing , 2004测试准则决定在给定的测试用例输入下产品应有的输出，从而与被测试系统的输出做比较。这一术语在威廉·豪登（William Howden）的《测试理论入门》一书中首次被使用和定义。Miller, Edward; and Howden, William E.; Software Testing and Validation Techniques, Long Beach, CA: IEEE Computer Society Press, 1978 (first edition), pp. 16-19又对不同类型的测试准则给予了拓展。Weyuker, Elaine J.; "The Oracle Assumption of Program Testing", in Proceedings of the 13th International Conference on System Sciences (ICSS), Honolulu, HI, January 1980, pp. 44-49测试准则经常独立于被测试系统。Jalote, Pankaj; An Integrated Approach to Software Engineering, Springer/Birkhäuser, 2005, ISBN 0-387-20881-X 在自动化测试中后置条件方法是通常被使用的自动化了的测试准则。Meyer, Bertrand; et al.; "Programs that Test Themselves", IEEE Computer, 42:9 (September 2009), pp. 46-55测试准则问题往往比看起来要难得多，同时会连带要求解决可控性和可观测性问题。Ammann, Paul; and Offutt, Jeff; "Introduction to Software Testing", Cambridge University Press, 2008, ISBN 978-0-521-88038-1

常见的测试准则包括：
 设计规格和软件文档
 其它产品（例如：作为一个软件程序的测试准则，有可能是使用不同算法计算同一个数学表达式的其它程序）
 为一组少量测试输入提供近似或准确结果的"启发式准则"Hoffman, Douglas; Heuristic Test Oracles , Software Testing & Quality Engineering Magazine, 1999
 使用统计学特征的"统计式准则"Mayer, Johannes; and Guderlei, Ralph; Test Oracles Using Statistical Methods 
 由相似性比较一个测试执行结果而产生的"一致性准则"Hoffman, Douglas; Analysis of a Taxonomy for Test Oracles , Quality Week, 1998
 由使用相同模型而产生和确认系统行为的"基于模型的准则"Robinson, Harry; Finite State Model-Based Testing on a Shoestring , STAR West 1999
 人工准则（例如：由手工分析来确定被测试系统的正确性）

參考資料

參見
 Binder, Robert V. (1999). "Chapter 18 - Oracles" in Testing Object-Oriented Systems: Models, Patterns, and Tools, Addison-Wesley Professional, 7 November 1999, ISBN 978-0-201-80938-1

Category:软件测试