由于测试的目标是暴露程序中的错误,从心理 学角度看,由程序编写者自己进行测试是不恰 当的,应由其他人测试; ◆应该认识到测试决不能证明程序是正确的。因 为我们不能进行穷举测试(包含所有可能情况 的测试) ◆结论:测试只能查找出程序中有错误,不能证 明程序中没有错误。(可靠性增加)
♣ 由于测试的目标是暴露程序中的错误,从心理 学角度看,由程序编写者自己进行测试是不恰 当的,应由其他人测试; ♣ 应该认识到测试决不能证明程序是正确的。因 为我们不能进行穷举测试(包含所有可能情况 的测试) ♣ 结论:测试只能查找出程序中有错误,不能证 明程序中没有错误。(可靠性增加)
7.2.2软件测试的准则 1)所有的测试都应该能追溯到用户需求。 测试结果最终要满足用户的需求 (从用户角度看,最严重的错误是不能满足用户需求的那些错误) 2)尽早制定测试计划。 在需求阶段制定测试计划,设计阶段制定测试方案 3)把 Pareto原理应用到软件测试中。 80%的错误只与20%的模块有关,即错误集中在某些模块上。 如:IBMS/370操作系统中44%错误仅与4%的模块有关。 问题是怎样找出这些可疑的模块并彻底测试它们
7.2.2 软件测试的准则 1)所有的测试都应该能追溯到用户需求。 测试结果最终要满足用户的需求。 (从用户角度看,最严重的错误是不能满足用户需求的那些错误) 2)尽早制定测试计划。 在需求阶段制定测试计划,设计阶段制定测试方案。 3)把Pareto原理应用到软件测试中。 80%的错误只与20%的模块有关,即错误集中在某些模块上。 如:IBM S/370操作系统中44%错误仅与4%的模块有关。 问题是怎样找出这些可疑的模块并彻底测试它们
4)从“小规模”测试开始,逐步进行“大规模”测试。 单元->集成->整个系统。 5)为了最大可能发现错误,应该由独立的第三方从事测试。 6)穷举测试是不可能的。 穷举(尽测试: 把程序中所有可能的执行路径都检查一遍的测试。 由于受时间、人力和资源的限制, 在测试中不可能执行每个可能的路径。 因此,测试只能证明程序中有错误,不能证明程序中 没有错误 但是精心设计测试方案,有可能充分覆盖程序逻辑并 使程序达到所要求的可靠性
4) 从“小规模”测试开始,逐步进行“大规模”测试。 单元->集成->整个系统。 5) 为了最大可能发现错误,应该由独立的第三方从事测试。 6) 穷举测试是不可能的。 穷举(尽)测试: 把程序中所有可能的执行路径都检查一遍的测试。 由于受时间、人力和资源的限制, 在测试中不可能执行每个可能的路径。 因此,测试只能证明程序中有错误,不能证明程序中 没有错误。 但是精心设计测试方案,有可能充分覆盖程序逻辑并 使程序达到所要求的可靠性
穷举(尽)测试:只有将所有可能的情况都测试到, 才有可能检查出所有的错误。但这是不可能的 例:程序P有两个整型输入量X、Y,输出量为Z, 如果计算机中字长为32位。 所有的测试数据组(X,Y)的数目为: 232×232=264,1毫秒执行1次,共需5亿年。 Z
穷举(尽)测试:只有将所有可能的情况都测试到, 才有可能检查出所有的错误。但这是不可能的: 例:程序 P 有两个整型输入量 X、Y,输出量为Z, 如果计算机中字长为32位。 所有的测试数据组(Xi,Yi)的数目为: 2 32×2 32=264,1毫秒执行1次,共需5亿年。 P X Y Z
图中所示的一个小程序的控制流程 曲线代表执行次数不超过20的循环, 循环体中共有5条通路。 可能执行的路径有520条,近似为 1014条可能的路径。 如果完成一个路径的测试需要1毫 秒,那么整个测试过程需要3170年
单击此处编辑母版标题样式 • 单击此处编辑母版副标题样式 • 图中所示的一个小程序的控制流程。 曲线代表执行次数不超过20的循环, 循环体中共有5条通路。 • 可能执行的路径有5 20条,近似为 1014条可能的路径。 • 如果完成一个路径的测试需要1毫 秒,那么整个测试过程需要3170年