Software Testing Foundations
测试只能展示软件是存在缺陷的 only show the presence of failures,不能证明是不存在缺陷的 not their absence。
软件测试术语(Terminology)
错误描述(bug 是不正式的描述):(20220527 考)
- Software Fault:故障,软件中静态存在的缺陷 A static defect in the software
- Software Error:错误,故障中内在的不正确的状态(故障的表现形式) An incorrect internal state that is the manifestation of some fault
- Software Failure:失败(?),外在表现的不正确的行为 external,incorrect behavior with respect to the requirements or other description of the expected behavior
- faults in software = design mistakes in hardware
Fault 和 Failure 举例:
- 病人外在的症状:failure
- 医生诊断的病因:fault
- 医生观测身体数据(身体各项指标),对内部因素的检查:error
- 代码从 1 开始判断:fault
具体例子:(20220527 考)
- 给 2 7 0 为用例:error(有,i 没从 0 开始),failure(没有)
- 给 0 2 7 为用例:error(有,同上),failure(有,和预期不同)
RIPR Model:(20220527 考)
- 观测到缺陷 failure,需要满足 4 个条件(组成 RIPR 模型):
- Reachability 可达性:测试用例必须能执行到 fault 所在的语句
- Infection 传染性:执行完必须改变状态(程序的状态必须是不正确的)
- Propagation 传播性:内部状态必须能改变输出(从内部传到外部,传染的状态必须导致一些输出不正确,或导致程序最终状态不正确)
- Revealability 揭示性:存在方式,帮助判断输出的状态是错误的(测试者必须观察最终程序状态的不正确的部分)