软件技术基础第5章

软件技术基础第5章

ID:37976632

大小:252.25 KB

页数:14页

时间:2019-06-04

软件技术基础第5章_第1页
软件技术基础第5章_第2页
软件技术基础第5章_第3页
软件技术基础第5章_第4页
软件技术基础第5章_第5页
资源描述:

《软件技术基础第5章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、5.1动态检验5.2静态检验5.3正确性证明5.4测试步骤第5章软件检验返回主目录第5章软件检验5.1动态检验动态检验就是指传统的测试,这种方法是使程序有控制地运行,并从不同角度观察程序运行的行为,以发现其中的错误。测试的关键是如何设计测试用例。测试方法不同,所使用的测试用例也不同。常用的测试方法有黑盒法和白盒法。黑盒法是指测试人员将程序看成一个“黑盒”,也就是说,他不关心程序内部是怎样做的,而只想检查程序是否符合它的“功能说明”。所以黑盒法测试时,测试用例都是完全根据程序的功能说明来设计的。如果想用黑盒法发现程序中的所有错误,则必须用输入数据的所有可能值来检查程序是否都能产生正确的结果

2、。图5.1程序的输入变量与输出变量白盒法是指测试人员必须了解程序的内部结构,此时,测试用例是根据程序的内部逻辑结构来设计的。如果想用白盒法发现程序中的所有错误,则至少必须使程序中每种可能的执行路径都执行一次。例如,图5.1是一个很简单的程序,它有两个输入变量x、y,一个输出变量z。假定程序是在字长为32位的计算机上运行,且x、y都是整数,则输入数据的可能值有232×232=264种。如果这个程序执行一次需0.5ms,则执行264次运算将需2.9亿年!图5.2是一个小程序控制流程图。这个程序由一个循环语句组成,循环次数达20次,循环体内是一组嵌套的IF语句,其可能的路径有多条,所以从A到B

3、的路径多达520条。图5.2程序控制流程图如果用这么多情况测试它,并假设执行一条路径需0.5ms,则完成测试需1512年!这两种测试方法在设计测试用例上是不可取的,也是不可行的。为此,设计人员提出了以下几种设计测试用例的方法:随机抽取测试用例、抽取典型测试用例、抽取边界测试用例、抽取混合测试用例。这些设计测试用例的方法各有特点,至于使用哪种,可根据测试对象的不同分别选用一种,或联合使用。5.2静态检验静态检验是指用人工阅读文档和程序,从中发现错误,或用一些辅助工具来完成这种工作,这种技术也称为评审。实践证明它是一种很有效的技术。评审的种类很多,包括需求复查、概要设计(总体设计)复查、详细

4、设计复查、程序复查和走查等,其正规化的程度、方式和参加的人员有所不同。本节就此概括讨论评审过程和评审条款等问题。1.评审过程为了尽早发现并纠正错误,应将评审工作与开发过程结合起来,使评审成为前一阶段之后必须进行的步骤,这样的模式可用图5.3来说明。图5.3评审模式由于评审的目的是发现错误,为了获得较好的效果,评审应由开发人员之外的人来主持,开发人员与评审人员相互独立是保证评审质量的重要措施之一。评审人员应在软件开发技术和检验技术方面受过良好的训练,有丰富的软件开发经验。程序走查(CodeWalkthrough)是另一种有效的评审活动。走查的关键在于:以人工运行作为媒介,通过这种方式启发与

5、会者向程序员提出种种问题,从而发现程序中的错误。2.评审条款评审的目的是尽量快、尽量多地发现错误,所以一般的做法是将软件中常见的各类错误列成清单作为评审条款。评审过程中按评审条款有针对性地进行检查,就可达到多、快、好、省的目的。评审条款随系统的不同可有所不同,可根据软件系统的性质和复查专家的经验来设定。5.3正 确 性 证 明动态检验和静态检验的基本问题在于不可能说明软件中不存在错误,人们所能做到的最好的结果是发现错误,因此自然希望能找到某种方法能确切地证明程序是没有错误的,这就出现了程序正确性证明的研究领域。程序证明最常用的方法是归纳断言法,它对程序提出一组命题,如能用数学方法证明这些

6、命题成立,就可以保证程序中不存在错误,即它对所有的输入都会产生预期的正确输出。但是程序证明存在两个问题:其一是如何设置命题和证明命题,其二是在证明中如何定义“错误”。总之,程序正确性证明是一个鼓舞人心的想法,但距离实用还有一段路要科学技术人员去走。5.4测试步骤软件开发过程经历了分析、设计、编程等阶段,每个阶段都可能产生各种各样的错误。据统计,开发早期犯下的错误(如误解了用户的要求、模块界面之间有冲突等)比编程阶段犯的错误要多。为了发现各阶段产生的错误,测试过程应该与分析、设计、编程的过程具有类似的结构,以便针对每一阶段可能产生的错误,采用某些特殊的测试技术,所以测试过程通常可以分三步进

7、行:(1)模块测试(ModuleTesting);(2)联合测试(IntegrationTesting);(3)系统测试(SystemTesting)。模块测试是对一个模块进行测试,其目的是根据该模块的功能说明检验模块是否存在错误。模块测试主要可发现详细设计和编程时犯下的错误,如某个变量未赋值、数组的上下界不正确等。程序员在完成某个模块的编程之后,一般总是要先对该模块进行私下的测试,此时,可以先用白盒法选择一些例子检验程序的内部逻辑

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。