- 1、本文档共109页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 软件测试 5.1 软件测试概述 5.1.1 软件测试的目的 统计资料表明,测试的工作量约占整个项目开发工作量的40%左右,对于关系到人的生命安全的软件(如飞机飞行自动控制系统),测试的工作量还要成倍增加。那么,为什么要花这么多代价进行测试? 其目的何在?它是“说明程序能正确地执行它应有的功能”,还是“表明程序没有错误”。如果是这样一个目的,就要朝着“证明程序正确”这个目标靠拢,无意识地选择一些不易暴露错误的例子。因此G.J.Myers对软件测试的目的提出了以下观点: (1) 软件测试是为了发现错误而执行程序的过程。 (2) 一个好的测试用例能够发现至今尚未发现的错误。 (3) 一个成功的测试是发现了至今尚未发现的错误的测试。 因此,测试阶段的基本任务应该是根据软件开发各阶段的文档资料和程序的内部结构,精心设计一组“高产”的测试用例,利用这些用例执行程序,找出软件中潜在的各种错误和缺陷。 5.1.2 软件测试的原则 在软件测试中,应注意以下指导原则: (1) 测试用例应由输入数据和预期的输出数据两部分组成。这样便于对照检查,做到“有的放矢”。 (2) 测试用例不仅选用合理的输入数据,还要选择不合理的输入数据。这样能更多地发现错误,提高程序的可靠性。对于不合理的输入数据,程序应拒绝接受,并给出相应提示。 (3) 除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的事。例如程序正确打印出用户所需信息的同时还打印出用户并不需要的多余信息。 (4) 应制定测试计划并严格执行,排除随意性。 (5) 长期保留测试用例。测试用例的设计耗费了很大的工作量,必须将其作为文档保存。因为修改后的程序可能有新的错误,需要进行回归测试。同时,为以后的维护提供方便。 (6) 对发现错误较多的程序段,应进行更深入的测试。有统计数字表明,一段程序中已发现的错误越多,其中存在的错误概率也越大。因为发现错误多的程序段,其质量较差。同时在修改错误过程中又容易引入新的错误。 (7) 程序员避免测试自己的程序。测试是一种“挑剔性”的行为,心理状态是测试自己程序的障碍。另外,对需求说明的理解而引入的错误则更难发现。因此应由别的人或另外的机构来测试程序员编写的程序会更客观、更有效。 5.2 测试方法 5.2.1 静态测试与动态测试 1. 静态测试 静态测试是指被测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测,方法如下: (1) 人工测试:是指不依靠计算机而靠人工审查程序或评审软件。人工审查程序偏重于编码质量的检验,而软件审查除了审查编码还要对各阶段的软件产品进行检验。人工检测可以发现计算机不易发现的错误,据统计,能有效地发现30%~70%的逻辑设计和编码错误,可以减少系统测试的总工作量。 (2) 计算机辅助静态分析:指利用静态分析工具对被测试程序进行特性分析,从程序中提取一些信息,以便检查程序逻辑的各种缺陷和可疑的程序构造。如用错的局部量和全程量、不匹配参数、不适当的循环嵌套和分支嵌套、潜在的死循环及不会执行到的代码等。还可能提供一些间接涉及程序欠缺的信息、各种类型的语句出现的次数、变量和常量的引用表、标识符的使用方式、过程的调用层次及违背编码规则等。静态分析中还可以用符号代替数值求得程序结果,以便对程序进行运算规律的检验。 2. 动态测试 动态测试指通过运行程序发现错误。一般意义上的测试大多是指动态测试。为使测试发现更多的错误,需要运用一些有效的方法。测试任何产品,一般有两种方法:一是测试产品的功能,二是测试产品内部结构及处理过程。对软件产品进行动态测试时,也用这两种方法,分别称为黑盒测试法和白盒测试法。 5.2.2 黑盒测试法与白盒测试法 1. 黑盒法 该方法把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求说明书,检查程序是否满足功能要求。因此,黑盒测试又称为功能测试或数据驱动测试。 通过黑盒测试主要发现以下错误: (1) 是否有不正确或遗漏了的功能。 (2) 在接口上,能否正确地接受输入数据,能否产生正确的输出信息。 (3) 访问外部信息是否有错。 (4) 性能上是否满足要求等。 用黑盒法测试时,必须在所有可能的输入条件和输出条件中确定测试数据。是否要对每个数据都进行穷举测试呢? 例如测试一个程序,需输入 3 个整数值。微机上,每个整数可能取值有216个,3个整数值的排列组合数为216×216×216=248≈3×1014。假设此程序执行一次为1毫秒,用这些所有的数据去测试要用1万年!但这还不能算穷举测试
文档评论(0)