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

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信息技术竞赛辅导课件-程序的测试

第六章、程序的测试 程序设计强调的是过程的实现。如何评价一个程序,首要的是看这个程序能否得出正确的结果。在保证正确性的前提下,看它执行程序的计算工作量(时间效率)和所占用的内存(空间效率)。 在联赛的评分测试中,评分者一般采用的是黑箱测试,即不看你的程序编得如何,而是看你的程序是否完成了试题给出的任务。评分者不仅在编程者最有可能失误的环节上设置了测试数据,以考核程序的正确性,而且对编程者可能采用的各种算法也作了效率分析,通过设定时间槛值来判定算法的优劣。由此可见,选手测试程序和优化效率的能力是联赛考核的重要内容。 正确性是考察程序质量永恒的准则,谁也不想设计一个得不出正确结果的程序,这是显而易见的事。然而错误的程序比比皆是,甚至被多数人认为是正确的题解,还在不断地发现小的程序错误。这是因为: (1)正确性是指程序本身具备且仅具备问题所列举的全部功能。至于验证这些功能的背景条件(例如试题描述)是否正确,不是正确性考核的范畴。 (2)检验程序正确性的基本手段是测试,但测试只能指出程序的错误,而不能证明程序完全没有错误。因为要想把一个不太复杂的程序所有可能发生的值验算一遍,即便是频率为每秒千万次的计算机几十年也做不完,然而舍此又无法验证它的完全正确性。 由上可知,测试是检验程序是否具备问题所列举的全部功能的途径。通过测试发现的错误越多,则程序的隐患越少,正确率越高,因而价值也就越大。 第一节 系统的测试工具 程序设计是一项容易出现差错的工作。一般来说,程序的错误有两种: 语法错误。这类错误可由编译程序查出。避免这类错误发生的办法:认真学习和切实掌握语言的功能和规范。 语义错误。它是源程序经编译通过之后,在运行中出现的各种错误。通常有以下几种: ① 书写错误的计算公式; ② 忽视很少出现的极端情况,如溢出、越界、死锁、死循环等; ③ 程序结构或逻辑出错。 如果程序被证明语义有错,就转入调试,确定程序中可疑错误的确切性质,改正错误。 调试程序的方法一般有两种: (1)静态查错。不用执行程序,仅根据程序和框图对求解过程的描述来发现错误。 (2)动态查错。在程序执行的过程中寻找错误的确切位置。 这就要求选手必须熟悉所用语言(如Turbo Pascal)的集成环境,这些环境中含大量的动态调试工具。主要有: 单步跟踪;执行到光标所在行;设置断点;状态检查等。 第二节 测试用例的选取方法 选取测试用例的方法一般有两种: (1)逻辑覆盖测试的白箱法; (2)根据程序功能导出测试用例的黑箱法。 一、白箱法 白箱测试是根据对程序内部逻辑结构的分析来选取测试用例。由于测试用例对程序逻辑覆盖的程度决定了测试完全性的程度,因此,白箱测试也称为逻辑覆盖测试。白箱测试用例的设计准则有: (1)语句覆盖 (2)分支覆盖 (3)条件覆盖 (4)组合条件覆盖 1.语句覆盖 语句覆盖准则是用足够多的测试用例,使程序中的每个语句都执行一遍,以尽可能多地发现程序中的错误。 例如,某程序段为: if(a1)(b==0) x=x/a; if(a==2)||(x1) x=x+1; 下图为这个程序段的流程图。 从流程图可以看出,只要能经过路径 ACBE ,便可以将所有语句都执行一遍。显然,若取a=2与b=0(x任意)为测试数据,就可以完成这一测试任务。 但是,这个测试用例不能检查出下列错误:第一个语句中的“and”误写为“or”;第二个语句中的“x1”误写为“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(a1为true,b==0为false,a==2

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档