健全性测试

健全性测试或合理性检验是一种快速评估某说法或计算结果是否可能正确的基本测试。合理性检验的目的是排除某些明显错误的结果，而不是捕捉每一个可能的错误。可以使用经验法则或粗略计算以执行测试。 

例如，在算术中，当乘以9时，使用9的除数规则来验证结果的数字总和是否可被9整除是一个合理性检验——它不会捕获每个乘法误差，但它是一个快速而简单的发现许多可能错误的方法。 

在计算机科学中，健全性测试是计算机程序、系统、计算或其他分析的功能的非常简短的贯穿，以确保系统或方法的一部分大致按预期工作。 这通常是在更详尽的一轮测试之前。

 数学 
理智测试可以参考各种数量级和其他简单經驗法則的设备，用于交叉检查数学计算。例如： 

 如果一个人试图计算738的平方并得出54,464，一种快速的合理性检验可以检查结果是否正确。 考虑700 < 738，但700² = 490,000 > 54,464。 由于对不等式两边的正整数平方不改变不等式的符号，所以结果不可能正确。 正确答案是738² = 544,644，比54,464大10倍以上。
 在乘法中，918×155不是142,135，因为918能被3整除，但142,135不能（各位数字相加为16，不是3的倍数）。另外，乘积的最后一位必须与两因子最后一位的乘积（8×5=40）结尾相同，但142,135不以“40”的结尾“0”结束，而正确的答案是：918×155 = 142,290。一种更快的检验是偶数和奇数的乘积是偶数，而142,135是奇数。

 物理 

 汽车的输出功率不可能是700千焦 ，因为这是能量的单位，而不是功率（单位时间的能量）的单位。 这是量纲分析的基本应用。 
 在确定物理性质时，与已知或类似物质相比，往往可以洞察到结果是否合理。 例如，大多数金属能沉在水中，所以大多数金属的密度应该比水的密度（）更大。
 使用费米估计通常能更好地估计预期值的数量级。

 软件开发 
在软件开发中，健全性测试（软件测试的一种形式，提供“快速、广泛、和浅层的测试”）确定它是否可能及合理开展进一步的测试。 

有时候健全性测试与冒烟测试是同义词。ISTQB® Glossary for the International Software Testing Qualification Board® software testing qualification scheme, ISTQB Glossary  International Software Testing Qualification Board.健全性测试或冒烟测试确定继续测试是否可行和合理 。健全性测试执行确定系统是否可访问且应用程序逻辑是否响应所需的应用程序功能的子集。 如果健全性测试失败，则尝试更严格的测试是不合理的。 通过快速确定应用程序是否存在缺陷而无需进行任何严格测试，可以避免浪费时间和精力。许多公司在自动构建中运行健全性测试，作为其软件开发生命周期的一部分。Hassan, A. E. and Zhang, K. 2006. Using Decision Trees to Predict the Certification Result of a Build. In Proceedings of the 21st IEEE/ACM international Conference on Automated Software Engineering (September 18 – 22, 2006). Automated Software Engineering. IEEE Computer Society, Washington, DC, 189–198. 

可以使用健全性测试来辅助调试软件。 考虑一下，应用程序或软件通常涉及系统外部输入和输出之间的多个子系统。 当整个系统未按预期执行时，可以使用健全性测试来帮助决定接下来要调查的内容。 如果一个子系统未给出预期结果，则可能会从进一步调查中消除其他子系统。 

“Hello World”程序通常用作开发环境的健全性测试。 如果程序无法编译或执行，则支持环境可能存在配置问题。 如果它有效，任何被诊断的问题可能都在于实际的应用程序。 

健全性测试的另一种可能更常见的用法是表示在程序代码中执行的检查，通常是对函数的参数或从中返回，以查看答案是否可以被认为是正确的。 例程越复杂，检查其响应就越重要。 这个简单的案例是检查打开，写入或关闭的文件是否在这些活动中没有失败——这是一个经常被程序员忽略的健全性测试。但是，由于各种原因，更复杂的项目也可以进行健全性测试。

这方面的例子包括银行账户管理系统，它检查提款是否合理，不要求超过账户包含，并且存款或购买是合理的，以适应历史数据建立的模式——对于准确性，可以更仔细地检查大额存款，可以与持卡人一起检查大额购买交易以防止欺诈，在持卡人访问之前的外国地点的ATM取款可能会与他一起清理等等；这些是“运行时”的健全性测试，而不是上面提到的“开发”健全性测试。

 参见 
 概念证明 

 软件测试 
 心理计算 
 数量级 
 费米问题 
 校验 
 认证算法

 参考文献 

Category:错误检测与校正
Category:软件测试