tceic.com
简单学习网 让学习变简单
当前位置:首页 >> 学科竞赛 >>

信息技术竞赛辅导课件-程序的测试


第六章、程序的测试
程序设计强调的是过程的实现。如何评价一个 程序,首要的是看这个程序能否得出正确的结果。

在保证正确性的前提下,看它执行程序的计算工作
量(时间效率)和所占用的内存(空间效率)。

在联赛的评分测试中,评分者一般采用的是黑箱 测试,即不看你的程序编得如何,而是看你的程序是否 完成了试题给出的任务。评

分者不仅在编程者最有可能 失误的环节上设置了测试数据,以考核程序的正确性, 而且对编程者可能采用的各种算法也作了效率分析,通 过设定时间槛值来判定算法的优劣。由此可见,选手测
试程序和优化效率的能力是联赛考核的重要内容。

正确性是考察程序质量永恒的准则,谁也不想设

计一个得不出正确结果的程序,这是显而易见的事。然
而错误的程序比比皆是,甚至被多数人认为是正确的题

解,还在不断地发现小的程序错误。这是因为:
(1)正确性是指程序本身具备且仅具备问题所列举的全部 功能。至于验证这些功能的背景条件(例如试题描述) 是否正确,不是正确性考核的范畴。

(2)检验程序正确性的基本手段是测试,但测试只能指出
程序的错误,而不能证明程序完全没有错误。因为要想 把一个不太复杂的程序所有可能发生的值验算一遍,即 便是频率为每秒千万次的计算机几十年也做不完,然而 舍此又无法验证它的完全正确性。

由上可知,测试是检验程序是否具备问题所列举的
全部功能的途径。通过测试发现的错误越多,则程序的 隐患越少,正确率越高,因而价值也就越大。

第一节 系统的测试工具
?

?

程序设计是一项容易出现差错的工作。一般来说, 程序的错误有两种: 语法错误。这类错误可由编译程序查出。避免这类错误 发生的办法:认真学习和切实掌握语言的功能和规范。 语义错误。它是源程序经编译通过之后,在运行中出现 的各种错误。通常有以下几种: ① 书写错误的计算公式; ② 忽视很少出现的极端情况,如溢出、越界、死锁、 死循环等; ③ 程序结构或逻辑出错。

如果程序被证明语义有错,就转入调试,确定程序中 可疑错误的确切性质,改正错误。

调试程序的方法一般有两种: (1)静态查错。不用执行程序,仅根据程序和框图对求解 过程的描述来发现错误。 (2)动态查错。在程序执行的过程中寻找错误的确切位置。 这就要求选手必须熟悉所用语言(如Turbo Pascal) 的集成环境,这些环境中含大量的动态调试工具。主要 有: 单步跟踪;执行到光标所在行;设置断点;状态检查等。

第二节 测试用例的选取方法
选取测试用例的方法一般有两种: ? (1)逻辑覆盖测试的白箱法; ? (2)根据程序功能导出测试用例的黑箱法。

一、白箱法
白箱测试是根据对程序内部逻辑结构的分析来选取 测试用例。由于测试用例对程序逻辑覆盖的程度决定了 测试完全性的程度,因此,白箱测试也称为逻辑覆盖测 试。白箱测试用例的设计准则有:
? ? ? ?

(1)语句覆盖

(2)分支覆盖
(3)条件覆盖 (4)组合条件覆盖

1.语句覆盖
?

语句覆盖准则是用足够多的测试用例,使程序中的每个
语句都执行一遍,以尽可能多地发现程序中的错误。

?

?

例如,某程序段为: if(a>1)&&(b==0) x=x/a; if(a==2)||(x>1) x=x+1; 下图为这个程序段的流程图。

从流程图可以看出,只要能经过路径 ACBE ,便可
以将所有语句都执行一遍。显然,若取a=2与b=0(x任 意)为测试数据,就可以完成这一测试任务。 但是,这个测试用例不能检查出下列错误:第一个 语句中的“and”误写为“or”;第二个语句中的“x>1”

误写为“x==1”等。因此,语句覆盖准则是很弱的,通
常不宜采用。

2.分支覆盖

分支覆盖准则也称判定覆盖准则。它要求通过足够 多的测试用例,使程序中的每个分支至少通过一次。 如在上图中,需要通过 ACBE 和 ABD 两条路径。为此, 可以选用下列两个测试用例: (1)a=3,b=0,x=4(测试路径 ACBE); (2)a=1,x=1,b任意(测试路径 ABD)。 也就是说,通过两次测试,就可以使程序中的每 个分支都通过一次。分支覆盖准则比语句覆盖准则严 密了一些,但还是不够充分。这是因为在一个判定中 往往包含有多个条件,而用分支覆盖并没有考虑将每 个条件都测试一次。。

3.条件覆盖

?

?

条件覆盖准则是通过执行足够的测试用例,使每 个判定中的每个条件都能得到两种不同的结果(true与 false)。例如,上述例子中共有四个条件,有以下两个 测试用例可使每个条件都能得到true值和false值。 (1)a=2,b=1,x=1(a>1为true,b==0为false,a==2为true, x>1为false); (2)a=1,b=0,x=3(a>1为false,b==0为true,a==2为false, x>1为true);

4.组合条件覆盖
通常,条件覆盖要比分支覆盖优越。但是条件覆 盖并不能完全满足分支覆盖。例如,上述条件覆盖所使 用的两个测试用例不能使第一个判定框为true ,也不 能使第二个判定框为false。于是,人们便提出一种更 强的准则-组合条件覆盖准则。组合条件覆盖准则要求 通过足够多的测试用例,使每个判定中各条件的各种可 能组合至少出现一次。

例如,对于上述例子来说,第一个判定框中的两个条件有 以下四种组合: ? (1)条件组合1:a>1,b==0 ; ? (2)条件组合2:a>1,b不等于0 ; ? (3)条件组合3:a<=1,b==0 ; ? (4)条件组合4:a<=1,b不等于0 。 而第二个判定框中的两个条件也有以下四种组合: ? (1)条件组合5:a==2,x>1; ? (2)条件组合6:a==2,x<=1; ? (3)条件组合7:a不等于2,x>1; ? (4)条件组合8:a不等于2,x<=1。

下面的四个测试用例就可以覆盖上述八种可能的条件组合:
? ? ?

(1) a=2,b=0,x=4(覆盖条件组合1和5) (2) a=2,b=1,x=1(覆盖条件组合2和6) (3) a=1,b=0,x=2(覆盖条件组合3和7)

?

(4) a=1,b=1,x=1(覆盖条件组合4和8)
组合条件覆盖准则既能满足分支覆盖准则,也能

满足条件覆盖准则,但是,它也不是完全测试。如果仔

细检查上述四个测试用例,就会发现漏掉了路径 ACBD。

白箱法经常被编程者用来测试程序内部的逻辑错 误。但问题是,在联赛中不管选手自以为测试后的程 序如何“完美”,但评委们却全然不顾这一切,而是 完全根据程序的功能要求设计测试用例,由测试结果 衡量其正确程度的。“知己知彼,百战不殆”,对于 以程序的功能要求为根据和准绳的黑箱测试方法,选 手更应该掌握。

二、黑箱法
黑箱测试方法完全不考虑程序的内部结构和内部 特征,而只是根据程序功能导出测试用例。常用的黑 箱测试有: ( 1 )等价分类法 ( 2 )边值分析法 ( 3 )因果图法 ( 4 )错误推测法

? ? ?

?

1.等价分类法
穷尽的黑箱测试是不现实的,通常只能选取少量最 有代表性的输入数据,以期用较小的代价暴露出较多的 程序错误。 等价分类是把所有可能的输入数据(有效的和无效的) 划分成若干等价类,使每一类中的一个典型数据在测试 中的作用与这一类中所有其他数据的作用相同。因此, 在实际进行测试时,可以从每个等价类中只取一组数据 作为测试用例。由此可知,等价分类法分为两步: (1)划分等价类(包括有效等价类和无效等价类); (2)从每个等价类中选取测试用例。 划分等价类的基本方法是:根据程序的功能说明,找出 所有的输入条件,然后为每一个输入条件划分等价类。

?

? ? ?

?

例如,对计算

?

的程序划分等价类。由程序的功能可以得到输入 条件为合理的x,其中包括分母不为零和根号内 分于式的值大于等于0,即

?

可以得到等价类的划分如表所示。然后选取若干 测试用例,使它们能够覆盖表。

在给出了输入条件后,确定等价类大体上是一个 启发的过程,取决于测试人员对问题的理解力和创造力, 带有很大的试探性。通常,以下划分等价类的原则可以 作为参考:
?

(1)如果输入数据通过文件进行且明确不须判错,则可 以确定一个有效等价类; (2)如果输入条件规定了值的个数或每个值的范围,则 可以确定一个有效等价类和两个无效等价类;

?

?

(3)如果输入条件规定了一个输入值的有限集,且确信 程序对每个输入值单独处理,则可以对集合中的每一个 输入值确定一个有效等价类,同时可以确定一个无效等 价类;
(4)如果输入条件规定了“必须如何”的条件,则可以 确定一个有效等价类和一个无效等价类; (5)如果确信某一等价类中的各元素在程序中的处理方 式是有区别的,则应把这个等价类分成更小的等价类。

?

?

2 .边值分析法
经验表明,程序错误往往发生于边缘情况。因此, 考虑边界条件的测试比没有考虑边界条件的测试效果 要好得多。
特别要指出的是,边值分析不是从等价类中随便 选一个例子作为代表,而是着眼于使该等价类的边界 情况成为测试的主要目标来选取测试用例;并且边值 分析不仅要考虑输入条件,还要考虑输出条件。

采用边值分析法设计测试用例,通常要考虑以下几条原则:
?

(1)如果输入条件规定了值的范围,则要对这个范围的 边界情况以及稍超出范围的无效情况进行测试; (2)如果输入条件规定了值的个数,则要分别对值的最 大个数、最小个数、稍多于最大个数及稍少于最小个数 的情况进行测试; (3)对于输出条件使用上述(1)和(2) ;

?

?

?

(4)如果输入和输出是有序集,则应把注意力集中在第 一个和最后一个元素上。

3.因果图法

上述的等价分类法与边值分析法的缺点是:只独立 地检查了各个输入条件,而没有检查各种输入条件的组 合。但要对各条件的组合进行检查并非易事。一般来说, 没有一种系统的方法是不行的。 因果图法是设计测试用例的一种系统方法,有助于 测试人员系统地选择高效的测试用例。其基本思想是把 输入条件视为“因”,输出条件视为“果”,把黑箱视 为从因到果的逻辑网络图。通过因果图可以得到一张判 定表,然后为判定表的每一列设计测试用例。

4.错误推测法
也称猜错法。它无固定的规律可循,在很大程度上是凭经验 或直觉推测程序中可能存在的各种错误,从而有针对性地编写测 试用例。 例如,要测试一个排序程序,特别需要检查的情况有:
? ?

(1)输入表为空; (2)输入表只含有一个元素;

?
?

(3)输入表中所有元素值相同;
(4)输入表实际有序。

三、综合策略
?

前面叙述的各种方法都提供了部分实用的测试情况, 但是没有一种方法能够单独地产生一套“完整”的测 试用例。在实际进行测试时,可以将各种方法联合使 用。
下面的综合策略可供参考。测试从黑箱法开始,突破 那种“自以为是”的思维定势,全面客观地按照程序 的功能要求设计测试用例:

?

(1)如果程序功能说明中有输入条件的组合,便从因果图 开始,以减少组合情况; (2)在任何情况下都要用边值分析法,通过分析输入和输 出条件的边界值,补充一些测试用例; (3)判别输入/输出的有效和无效等价类,进一步补充测试 用例;

(4)利用错误推测法补充一些测试用例:

(5)查看上述测试用例的覆盖程序,对未满足的覆盖标准, 增加一些测试用例。

通过黑箱法找出程序中不具备功能要求的地方后, 应使用白箱法检测程序内部是哪些子程序段导致其错 误。修改后再使用黑箱法测试结果。这样循环往复, 提高程序的正确率。
最后需强调的是,无论使用什么测试策略,都需 要付出大量艰辛的劳动,而且还不一定能发现所有的 错误。因此,测试工作是非常困难的事。

本章作业
1.程序测试的主要准则是:正确性和时空效率。 2.程序的错误有两种:语法错误和语义错误 。 3.调试程序的方法一般有两种:静态查错、动态查错 4.选取测试用例的方法一般哪几种? 5.白箱测试用例的设计准则有哪些?它们是如何定义的? 相互有什么联系? 6.常用的黑箱测试方法有哪些? 7.什么是等价分类法,通常有哪些步骤?通常划分等价 类的参考原则有哪些? 8.可供参考的综合策略有哪些?


推荐相关:

信息技术竞赛辅导

搜 试试 7 帮助 全部 DOC PPT TXT PDF XLS ...信息技术竞赛辅导_学科竞赛_高中教育_教育专区。信息...*程序设计能力 序 *设计测试数据的能力 设 *运行...


信息技术竞赛培训教程

信息技术竞赛培训教程_其它技巧_PPT制作技巧_PPT专区...练习题: 1、读入一英文句子,单词之间用空格或逗号...源程序如下: program ex11_9; var n,j,i:...


信息技术竞赛辅导计划

信息技术竞赛辅导计划赖素琴 一、指导思想 信息技术学科竞赛是一项益智性的竞赛活动, 核心是考查选手的 智力和使用计算机解题的能力。同时也是提高学生信息素养,检验...


信息技术竞赛知识点条目

信息技术竞赛辅导资料【七上】 1、从计算机的外观看...特点:能“寄生”在别的程序和数据文件中, 具有复制...执行“测试影片”命令后,在源文件的同一目录位置将...


信息学竞赛辅导资料

信息学竞赛辅导资料_学科竞赛_高中教育_教育专区。信息...中国计算机学会举办的信息技术普及活动, 其宗旨 就是...设计测试数据的基本能力 4.程序的时间复杂度和空间...


信息技术竞赛培训教程_算法和数据结构综合应用

信息技术竞赛培训教程_算法和数据结构综合应用_IT/计算机...{for s} end; 三、练习题 [ 二分检索 ] 假定...程序不能严格地产生[a· · b]上的随机序列,但...


信息学奥林匹克竞赛辅导Pascal语言

信息学奥林匹克竞赛辅导 Pascal 语言秦护矿 信息技术组 安徽省淮北市第一中学 ...*链表 *树 *图# 程序设计 *程序设计能力 *设计测试数据的能力 *运行时间和占...


信息技术辅导学生计划

信息技术辅导学生计划_学科竞赛_初中教育_教育专区。...最主要的是期末检测的成绩参考, 仅看到学生打字这一项...ppt简历精美模板带范文1/2 相关文档推荐 ...


2015初中信息技术基本功竞赛试卷20151012试题(含参考答案)

中国教育技术协会信息技术教育专业委员会机密★考试结束前 第四届全国初中信息技术优质课展评基本功竞赛 上机测试试卷(总分 40 分,测试时间:100 分钟) 一、单选题...


利用信息技术的项目教学在技能竞赛培训中的应用实践

搜试试 3 帮助 全部 DOC PPT TXT PDF XLS ...利用信息技术的项目教学在技能竞赛培训中的应用实践_...的活动由教师全程指导, 有利于学生集中精力练习技能...

网站首页 | 网站地图
All rights reserved Powered by 简单学习网 www.tceic.com
copyright ©right 2010-2021。
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@126.com