以下是软件测试中常用但极易混淆的一些名词,我会不断更新,欢迎各位提出不同的意见。
缺陷(fault) 是程序实现或设计中的错误、失误。
错误(error) 同“缺陷”。
失效(failure) 是程序的错误行为,由包含缺陷的程序产生。
失效在一定条件(condition)下发生。例如,当程序试图进行除0运算时,就会出现崩溃。在这种情况下,缺陷是允许被0除的代码,失效是崩溃。但是只有在除法中的一个关键变量取值为0时,才会看到失效。那个变量取值为0是失效发生必须满足的关键条件。
征兆(symptom) 与失效类似,但是不那么严重。例如, 如果程序存在内存泄漏,则程序在给出内存耗尽错误消息之前很久就开始逐渐慢下来。这种降速就是不能直接看得到的内部问题的征兆。
程序错误(bug) 是含义很广的词,可以指任何软件问题。报告程序错误的人描述的可能是缺陷、失效或使程序对项目相关人员的价值减弱的局限性。
过失(defect) 有一种法律指责含义,表示“产品肯定出现了问题”。有些公司不允许这样的词出现在错误报告或与程序错误有关的备忘录中。有些公司喜欢用异常(anomaly)、问题(problem、issue)替代程序错误。
当报告一个程序错误之后,程序员会将其修复(fixed),或决定不修复(won't fix)。他们会把这个程序错误标识为已解决(resolved)(已修复(fixed)、推迟(postponed)、不可重现(not repro)、设计如此(by design)等)。