《实用软件工程入门》——6 软件测试.docVIP

《实用软件工程入门》——6 软件测试.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《实用软件工程入门》——6 软件测试

6 软件测试 编码工作完成后,并不意味着整个程序开发的结束,接下来还要面临对软件的测试和维护两个阶段,本章主要讨论软件测试问题。 软件测试是一项“任重而道远”的工作,统计表明,开发一个较大规模的软件,测试阶段将花费40%以上的精力。众所周知,即使是经验丰富的程序员,也难免在编码中出现错误,更何况,开发较大规模的软件需要的是一个开发团队,产生错误在所难免。而且,有时在设计甚至是分析阶段就已经埋下了错误的种子。可见,无论是前期设计中潜伏的错误,还是后期开发中引入的编码错误,都应该及时的排出。否则,这些遗留在软件中的错误,轻则破坏软件的可靠性,重则造成整个系统的开发失败。因此,为了避免不必要的损失,必须严格把守“软件测试”这一重要关口。 本章首先介绍软件测试的目的和原则,然后讨论了软件测试的策略和方法,最后在测试用例设计中介绍了几种用例设计方法。 6.1 软件测试的目的和原则 前面的章节中我们已经学习了如何划分软件生命周期,即软件的生命周期包括问题定义、可行性研究、需求分析、总体设计、详细设计、编写代码、软件测试和软件维护等不同阶段。在这些阶段中,不难看出软件测试阶段与其它阶段的目的不同。除测试阶段外,其它阶段的工作,从分析、设计到编码,都是直接从正面出发,力图完成软件的开发,而唯独软件测试阶段,从相反的角度“故意找茬儿”,即假设软件中存在错误,并试图找到错误。 测试有助于提高软件的质量,但是提高软件的质量不能依赖于测试。软件的高质量是设计出来的,而不是靠测试修补出来的。 6.1.1 测试的目的 关于软件测试的目的众说纷纭,曾经有许多似是而非的说法。 G. J. Myers在他的经典著作《软件测试技巧》一书中,给出测试的定义,他认为,“程序测试是为了发现错误而执行程序的过程。” E. W. Dijkstra指出“程序测试能证明错误的存在,但不能证明错误不存在。” R. S. Pressman则认为,测试可视为分析、设计和编码3个阶段的“最终复审(ultimate review)”。 从上述关于测试的说明可以看出,测试的定义是“为了发现错误而执行程序的过程”,测试的目的是发现程序中的错误,即为了证明程序有错误,而不是证明程序没有错误。 进一步可以看出,在软件测试中,“无情”的态度非常重要,如果为了证明程序没有错误而进行测试,那么,错误就可能从你眼皮底下漏掉;相反地,只要抱着证明程序有错误的目的去测试,你就会找到大部分存在的错误。 另外,还应该认识到,测试的目的是发现程序中的错误,而不是为了证明程序是正确的。也就是说,即使经过非常严格的测试,在程序中仍旧可能隐藏着未发现的错误,测试只能发现程序中存在错误,而不能证明程序中没有错误。 6.1.2 测试的原则 测试原则是软件工程师必须理解软件测试的基本原则测试应从小规模开始,逐步转向大规模穷举测试是不可能的为了达到最佳效果,应该由独立的第三方来构造测试,系统的软件工程师并不是测试的最佳人选 6.2.1 单元测试 单元测试是针对软件组成的单元而言的测试。 (1)单元测试的前提 单元测试开始之前必须通过编译器的自动检查,确定没有基本语法的错误。同时,具备系统的详细设计文档与单元的功能互相参照。 (2)单元测试的执行者 在现代软件产业中,单元测试的工作一般是由单元设计者自己完成。因此,单元测试属于自测的一种方法。 (3)单元测试的测试点 表 6-1 单元测试的测试点 单元外部接口测试点 内部数据结构测试点 执行通路测试点 错误处理机制测试点 调用的参数的数量与数据类型是否正确 变量参数调用的返回值问题 数组参数的维数转换问题 全局变量与局部变量的相互隐藏问题 每个内部函数的调用都相当于一个外部接口 外部文件操作的检查和容错 输出信息的拼写是否正确 打开的文件和外设是否关闭 隐含数据转换的潜在的不相容和数据丢失问题 使用了未初始化的变量 变量使用了错误的初值 数据溢出和地址越界问题 精度不足的问题 内存空间申请后不能及时释放的问题 静态变量正确的使用 内存越界访问的问题 运算优先顺序错误 判断条件的检查 由判断条件永远不可能达到的部分 “逻辑等于”和“算术等于”的区别问题 循环次数的判断错误问题 不可能的判断条件导致“死循环”的问题 在循环体中修改循环变量 没有处理的错误 准备捕获的错误与实际发生的错误并不相同 操作系统先于错误处理程序捕获错误 错误处理过程中又发生错误 报错的信息不能反映错误的位置和性质 (4)单元测试的过程 单元测试在本单元的程序通过了编译器的语法检查没有问题后就可以展开了,单元测试的过程可分为设计→实现→运行→评估四步。 首先,在设计单元测试的阶段,主要是根据系统的需求制定测试的策略和测试具体方案。在这个阶段还要确定测试过程中使用的各种资源和具体的测试时间表。 实现

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档