软件开发过程中错误之所以不可避免, 从客观上说 , 是由于所开发的软件具有相当的复杂 性
从主观方面讲 ,则是由于人们思维的局限性
软件测试是指在特定的条件下系统或其中的部件进行操作、观测并记录结果, 并对系统或 部件的某方面作出评估的过程
Myers 给出的三个重要观点 : 测试是为了证明程序有错 ,而不是证明程序无错误 ; 一个好的测试用例是在于它能发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误的测试
错误出现在书写程序的过程中导致错误的原因 :对需求的误解 ;编写代码逻辑不清或疏忽软件配置错误故障是错误在程序代码中的体现,程序中的故障就是导致程序按照非预期的方式运行的因 素, 并不是所有的软件故障均有编码错误引起, 当一段包含故障的代码被执行且导致不正确的状态并传播到程序的输出,即失效发生
并不是所有的故障均会导致失效,一个故障可能导致多种失效症状由错误 →故障 →失效的基本过程 : 由于程序设计人员犯了一个错误, 并导致软件源代码中形成一个故障
如果在一定的条件下 该故障被执行且促使系统产生错误的结果,从而形成了一个失效
软件可靠性就是软件在给定条件和给定时间间隔内不出现失效的概率
软件正确性只有当一个程序在每一种输入 下都能按预期执行才能被称为是正确的
正确性是一种二进制度量 ,而可靠性则是 0 至 1 的区间度量
软件调试是在计算机程序中发现故障并减少其数目的一个方法性的过程
Testing 与 Debugging 的区别测试的目的是显示存在错误, 而调试的目的是发现错误或导致程序失效的错误原因 , 并修改 程序以修正错误
调试是测试之后的活动
测试和调试在目标、方法和思路上都有所不同,具体如下 : 1
测试从一个已知的条件开始,使用预先定义的过程 ,有预知的结果
调试从一个未知的 条件开始 ,结束的过程不可