实现(第六版)(张海潘编著)摘要.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
通常把编码和测试统称为实现。 所谓编码就是把软件设计结果翻译成用某种程序设计语言书写的程序。 作为软件工程过程的一个阶段,编码是对设计的进一步具体化,因此,程序的质量主要取决于软件设计的质量。 在开发大型软件系统的漫长过程中,面对着极其错综复杂的问题,人的主观认识不可能完全符合客观现实,与工程密切相关的各类人员之间的通信和配合也不可能完美无缺, 我们力求在每个阶段结束之前通过严格的技术审查,尽可能早地发现并纠正差错;但是,经验表明审查并不能发现所有差错,此外在编码过程中还不可避免地会引入新的错误。 如果在软件投入生产性运行之前,没有发现并纠正软件中的大部分差错,则这些差错迟早会在生产过程中暴露出来。 测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。 软件测试在软件生命周期中横跨两个阶段。 (1)通常在编写出每个模块之后就对它做必要的测试(称为单元测试)。 (2)在这个阶段结束之后,对软件系统还应该进行各种综合测试。 大量统计资料表明,软件测试的工作量往往占软件开发总工作量的40%以上。 因此,必须高度重视软件测试工作,绝不要以为写出程序之后软件开发工作就接近完成了,实际上,大约还有同样多的开发工作量需要完成。 防不胜防的软件错误 —— 例:1963年, 美国, 飞往火星的火箭爆炸, 损失1千万美元. 原因: FORTRAN循环 DO 5 I = 1, 3 误写为 DO 5 I = 1.3 把证明程序无错当作测试目的不仅是不正确的, 完全做不到的,而且对做好测试没有任何益处 ,甚至是十分有害的. 软件测试要设法使软件发生故障,暴露软件错误。 测试的“成功”与“失败” “测试的目的是说明程序正确地执行它应有的功能” 这种说法正确吗? 例:程序Triangle,输入三个整数,表示一个三角形的三个边长,该程序产生一个结果,指出该三角形是等边三角形、等腰三角形还是不等边三角形。 为说明其能正确执行它的功能,可使用“测试用例”(3,4,5),(5,5,6),(6,6,6), 程序都能给出正确结果,是否就可认为程序是正确的? 仅就测试而言,它的目标是发现软件中的错误。 软件工程的根本目标是开发出高质量的完全符合用户需要的软件,因此,通过测试发现错误之后还必须诊断并改正错误,这就是调试的目的。 在对测试结果进行收集和评价的时候,软件所达到的可靠性也开始明朗了。 程序设计语言的划代: 例1:注释 例2:视觉组织——空格 例3:视觉组织——移行 例4:数据说明标准化 例5:一行一条语句 例6:强调清晰性 例7:简单直接 例8:避免不必要的转移 例9:避免使用空ELSE和IF…THEN IF…语句 例10:少用否定条件 7.2.3 测试方法 黑盒测试(功能测试): 把程序看作一个黑盒子; 完全不考虑程序的内部结构和处理过程; 是在程序接口进行的测试。 白盒测试(结构测试): 把程序看成装在一个透明的盒子里; 测试者完全知道程序的结构和处理算法; 按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。 黑盒测试不可能实现穷尽测试: 假设有程序P,输入量A和B,输出量为C。 如果计算机的字长为32位,A和B的数据类型都是整数类型。将A和B的可能取值进行排列组合,输入数据的可能性有:232×232=264种。 假设这个程序执行一次需要1毫秒,要完成所有的测试,计算机需要连续工作5亿年。 黑盒测试与白盒测试优缺点比较: 7.2.4 测试步骤 1. 模块测试(单元测试) 保证每个模块作为一个单元能正确运行; 发现的往往是编码和详细设计的错误。 2. 子系统测试 把经过单元测试的模块放在一起形成一个子系统来测试; 着重测试模块的接口。 7.2.5 测试阶段的信息流 输入信息有两类: 软件配置,包括需求说明书、设计说明书和源程序清单等; 测试配置,包括测试计划和测试方案。 7.3.3 计算机测试 必须为每个单元测试开发驱动程序和(或)存根程序。 驱动程序是一个“主程序”,它接收测试数据,传送给被测试的模块,并且输出有关的结果。 存根程序代替被测试的模块所调用的模块。它使用被它代替的模块的接口,可能做最少量的数据操作,输出对入口的检验或操作结果,并且把控制归还给调用它的模块。 驱动程序和存根程序代表开销,通常并不把它们作为软件产品的一部分交给用户。 图7.2是一个正文加工系统的部分层次图,假定要测试其中编号为3.0的关键模块——正文编辑模块。 Ⅱ. TEST DRIVER (*测试正文编辑模块用的驱动程序*) 说明长度为2500个字符的一个缓冲区; 把CFUNCT置为希望测试的状态; 输入字符串; 调用正文编辑模块; 停

文档评论(0)

奇缘之旅 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档