311软件测试的复杂性 EWDijkstra的一向名言对测试的不彻底性作了很好的注解:“程 序测试只能证明错误的存在,但不能证明错误的不存在”。由于穷 举测试工作量太大,实践上行不通,这就注定了一切实际测试都是 不彻底的,也就不能够保证被测试程序在理论上不存在遗留的错误。 第三章软件测试流程
3.1.1 软件测试的复杂性 第三章 软件测试流程 E.W.Dijkstra的一句名言对测试的不彻底性作了很好的注解:“程 序测试只能证明错误的存在,但不能证明错误的不存在”。由于穷 举测试工作量太大,实践上行不通,这就注定了一切实际测试都是 不彻底的,也就不能够保证被测试程序在理论上不存在遗留的错误
311软件测试的复杂性 2)软件测试是有风险的 穷举测试的不可行性使得大多数软件在进行测试的时候只能采取非 穷举测试,这又意味着一种冒险。比如在使用 Microsoft office工具 中的Word时,可以作这样的一个测试:①新建一个Word文档;②在 文档中输入汉字“胡”;③设置其字体属性为“隶书”,字号为初 弓,效果为“空心”;④将页面的显示比例设为“500%。这时 在“胡字的内部会出现“胡万进印”四个字。类似问题在实际测 试中如果不使用穷举测试是很难发现的,而如果在软件投入市场时 才发现则修复代价就会非常高。这就会产生一个矛盾:软件测试员 不能做到完全的测试,不完全测试又不能证明软件的百分之百的可 靠。那么如何在这两者的矛盾中找到一个相对的平衡点呢? 第三章软件测试流程
3.1.1 软件测试的复杂性 第三章 软件测试流程 (2) 软件测试是有风险的 穷举测试的不可行性使得大多数软件在进行测试的时候只能采取非 穷举测试,这又意味着一种冒险。比如在使用Microsoft Office工具 中的Word时,可以作这样的一个测试:①新建一个Word文档;②在 文档中输入汉字 “胡”;③设置其字体属性为“隶书”,字号为初 号,效果为“ 空心”;④将页面的显示比例设为“500%”。这时 在“胡”字的内部会出现“胡万进印”四个字。类似问题在实际测 试中如果不使用穷举测试是很难发现的,而如果在软件投入市场时 才发现则修复代价就会非常高。这就会产生一个矛盾:软件测试员 不能做到完全的测试,不完全测试又不能证明软件的百分之百的可 靠。那么如何在这两者的矛盾中找到一个相对的平衡点呢?
311软件测试的复杂性 如图3-1所示的最优测试量示意图可以观察到,当软件缺陷降低到某一数值 后,随着测试从量的不断上升软件缺陷并没有明显地下降。这是软件测试 工作中需要注意的重要问题。如何把测试数据量巨大的软件测试减少到可 以控制的范围,如何针对风险做岀最明智的选择是软件测试人员必须能够 把握的关键问题 图3-1的最优测试量示意图说明了发现软件缺陷数量和测试量之间的关系, 随着测试量的增加,测试成本将呈几何数级上升,而软件缺陷降低到某 数值之后将没有明显的变化,最优测量值就是这两条曲线的交点。 第三章软件测试流程
3.1.1 软件测试的复杂性 第三章 软件测试流程 如图3-1所示的最优测试量示意图可以观察到,当软件缺陷降低到某一数值 后,随着测试从量的不断上升软件缺陷并没有明显地下降。这是软件测试 工作中需要注意的重要问题。如何把测试数据量巨大的软件测试减少到可 以控制的范围,如何针对风险做出最明智的选择是软件测试人员必须能够 把握的关键问题。 图3-1的最优测试量示意图说明了发现软件缺陷数量和测试量之间的关系, 随着测试量的增加,测试成本将呈几何数级上升,而软件缺陷降低到某一 数值之后将没有明显的变化,最优测量值就是这两条曲线的交点
311软件测试的复杂性 软件缺陷数量 软件缺陷 最忧测试量 测试成本 测试量 图31最优测试量示意图 第三章软件测试流程
3.1.1 软件测试的复杂性 第三章 软件测试流程 图3-1 最优测试量示意图
311软件测试的复杂性 (3)杀虫剂现象 1990年, Boris beizer在其编著的《 Software Testing Techniques》 (第二版)中提到了“杀虫剂怪事”一词,同一种测试工具或方法 用于测试同一类软件越多,则被测试软件对测试的免疫力就越强 这与农药杀虫是一样的,老用一种农药,则害虫就有了免疫力,农 药就失去了作用 由于软件开发人员在开发过程中可能碰见各种各样的主客观因素, 再加上不可预见的突发性事件,所以再优秀的软件测试员采用一种 测试方法或者工具也不可能检测出所有的缺陷。为了克服被测试软 件的免疫力,软件测试员必须不断编写新的测试程序,对程序的各 个部分进行不断地测试,以避免被测试软件对单一的测试程序具有 免疫力而使软件缺陷不被发现。这就对软件测试人员的素质提岀了 很高的要求 第三章软件测试流程
3.1.1 软件测试的复杂性 第三章 软件测试流程 (3) 杀虫剂现象 1990年,Boris Beizer在其编著的《Software Testing Techniques》 (第二版)中提到了“杀虫剂怪事”一词,同一种测试工具或方法 用于测试同一类软件越多,则被测试软件对测试的免疫力就越强。 这与农药杀虫是一样的,老用一种农药,则害虫就有了免疫力,农 药就失去了作用。 由于软件开发人员在开发过程中可能碰见各种各样的主客观因素, 再加上不可预见的突发性事件,所以再优秀的软件测试员采用一种 测试方法或者工具也不可能检测出所有的缺陷。为了克服被测试软 件的免疫力,软件测试员必须不断编写新的测试程序,对程序的各 个部分进行不断地测试,以避免被测试软件对单一的测试程序具有 免疫力而使软件缺陷不被发现。这就对软件测试人员的素质提出了 很高的要求