软件工程第六章 测试ppt课件.ppt
《软件工程第六章 测试ppt课件.ppt》由会员分享,可在线阅读,更多相关《软件工程第六章 测试ppt课件.ppt(96页珍藏版)》请在三一办公上搜索。
1、软 件 工 程,第六章 测试,通常把编码和测试统称为实现。所谓编码就是把软件设计结果翻译成用某种程序设计语言书写的程序。所选用的程序设计语言的特点及编码风格将对程序的可靠性、可读性、可测试性和可维护性产生深远的影响。,无论怎样强调软件测试的重要性和它对软件可靠性的影响都不过分。在软件生命周期的每个阶段都不可避免地会产生差错。在每个阶段结束之前通过严格的技术审查,尽可能早地发现并纠正差错.经验表明审查并不能发现所有差错,此外在编码过程中还不可避免地会引入新的错误。,Error: 人的错误Fault: 人错误的结果,体现在开发和维护的产品中 Failure: (系统故障)错误(fault)(内在)
2、、故障(failure)(外在),人的错误如何产生故障,测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审。,软件测试在软件生命周期中横跨两个阶段。编码和测试阶段在编写出每个模块之后就对它做必要的测试(称为单元测试),模块的编写者和测试者是同一个人,编码和单元测试属于软件生命周期的同一个阶段。在这个阶段结束之后,对软件系统还应该进行各种综合测试,这是软件生命周期中的另一个独立的阶段,通常由专门的测试人员承担这项工作。,大量统计资料表明,软件测试的工作量往往占软件开发总工作量的40%以上,在极端情况,
3、测试那种关系人的生命安全的软件所花费的成本,可能相当于软件工程其他开发步骤总成本的3倍到5倍。必须高度重视软件测试工作,绝不要以为写出程序之后软件开发工作就接近完成了,实际上,大约还有同样多的开发工作量需要完成。,通过测试发现错误之后还必须诊断并改正错误,这就是调试的目的。调试是测试阶段最困难的工作。在对测试结果进行收集和评价的时候,软件所达到的可靠性也开始明朗了。软件可靠性模型使用故障率数据,估计软件将来出现故障的情况并预测软件的可靠性。,1、定义:测试是为了发现程序中的错误而执行程序的过程。注意: 只能尽可能查错,不能证明程序中 没有错; 测试员与程序员不应是同一个人。,测 试基础,G.M
4、yers给出了关于测试的一些规则,这些规则也可以看作是测试的目标或定义。(1) 测试是为了发现程序中的错误而执行程序的过程;(2) 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;(3) 成功的测试是发现了至今为止尚未发现的错误的测试。,软件测试的目标,由于测试的目标是暴露程序中的错误,从心理学角度看,由程序的编写者自己进行测试是不恰当的。因此,在综合测试阶段通常由其他人员组成测试小组来完成测试工作。应该认识到测试决不能证明程序是正确的。即使经过了最严格的测试之后,仍然可能还有没被发现的错误潜藏在程序中。测试只能查找出程序中的错误,不能证明程序中没有错误。,为了能设计出有效的测试方案
5、,软件工程师必须深入理解并正确运用指导软件测试的基本准则。下面讲述主要的测试准则。(1) 所有测试都应该能追溯到用户需求。软件测试的目标是发现错误。从用户的角度看,最严重的错误是导致程序不能满足用户需求的那些错误。,软件测试准则,(2) 应该远在测试开始之前就制定出测试计划。实际上,一旦完成了需求模型就可以着手制定测试计划,在建立了设计模型之后就可以立即开始设计详细的测试方案。因此,在编码之前就可以对所有测试工作进行计划和设计。(3) 把Pareto原理应用到软件测试中。Pareto原理说明,测试发现的错误中的80%很可能是由程序中20%的模块造成的。当然,问题是怎样找出这些可疑的模块并彻底地
6、测试它们。,(4) 应该从“小规模”测试开始,并逐步进行“大规模”测试。通常,首先重点测试单个程序模块,然后把测试重点转向在集成的模块簇中寻找错误,最后在整个系统中寻找错误。(5) 穷举测试是不可能的。所谓穷举测试就是把程序所有可能的执行路径都检查一遍的测试。测试只能证明程序中有错误,不能证明程序中没有错误。但是,精心地设计测试方案,有可能充分覆盖程序逻辑并使程序达到所要求的可靠性。,(6) 为了达到最佳的测试效果,应该由独立的第三方从事测试工作。所谓“最佳效果”是指有最大可能性发现错误的测试。开发软件的软件工程师并不是完成全部测试工作的最佳人选(通常他们主要承担模块测试工作)。, 黑盒测试(
7、black-box , or closed-box testing): 确信对每个输入,观察到输出与期望的输入出是否匹配. 对功能测试,2、测试方法, 白盒测试(white-box , or open-box, clear-box testing): 利用程序的结构进行测试. 结构测试,若程序执行需10-3秒,则对于所有合法输入的测试大约需用一万年,而且还应测试输入非法数据的情况。,主要问题:穷尽测试(complete test)通常是不可能的。例:(Black-box) 程序要求输入3个整型数据。若字长16位,则各种可能输入的排列组合共有 (种),例:(White-box) 下图所示的程序中
8、共有 5201014条可能的执行通路,显然,每条通路都执行一遍是不现实的。,1. 基本概念,3、测试步骤:,测试阶段的信息流:,单元测试(白盒),主要测试以下五个方面:1、模块接口: 内部检查:传输参数的数目、属性、单位、次序是否匹配;全程变量的定义是否一致;只做输入的变元有无被修改,等等。 外部检查:打开、结束、关闭文件的操作;文件和属性;IO错误处理;输出拼写,等等。2、局部数据结构: 数据说明(declaration);初始化与缺省值的设置;变量名拼写;数据类型的相容性;上下溢出及地址异常,等等。,3.单元测试,3、重要的执行通路: 由于穷尽测试不可能,故通常针对最常见的错误设计测试方案
9、。较常见的错误有:计算次序问题(例:运算的优先级)不同类型混合运算(例:比较类型不同的量)初值设置错误精度问题(例:精度不够导致两变量不可能相等,而程序中等待相等条件的出现)表达式错误循环终止条件错误(例:次数差1,或陷入死循环),4、出错处理通路:预见出现错误的条件,设置处理。较常见的问题有: 输出的错误信息难以理解,不能确定错误位置 描述的错误与实际错误不符 处理之前系统已经干预 处理不正确,3.单元测试,5、边界条件 单元测试中最后,也可能是最重要的任务,因为软件常在其边界失效。,1、代码审查(code inspection) 代码会审 以小组会的方式进行,会审小组一般由3-4人组成,包
10、括组长1人,程序作者1人,其他程序员(或测试人员)1-2人。 作者讲解程序,其他人员,捕捉程序结构、功能与编码风格等方面存在问题,发现的错误会后交由作者修改。 预排:由人扮演computer,模拟执行情况。,3.单元测试,优点: 一次审查可发现多个错误,不必改一个测一个。,单元测试的主要手段 :,模块不是独立的程序,不易单独测试,为了解决这个问题,可以在单元测试时为被测试模块编一些测试模块,作为它上级模块或下级模块的替身。代替上级模块的称为驱动模块,代替下级模块的称为桩模块。,2、制做测试软件:Stub (存根,桩)和 Driver(驱动),2.单元测试,替身模块是真实模块的简化,只需要模拟与
11、被测模块直接有关的一部分功能,测试结束完后完成历史使命。满足被测模块需要的前提下,驱动模块和桩模块的内容应尽量简单。,模块不是独立的程序,不易单独测试,为了解决这个问题,可以在单元测试时为被测试模块编一些测试模块,作为它上级模块或下级模块的替身。代替上级模块的称为驱动模块,代替下级模块的称为桩模块。,2.单元测试,替身模块是真实模块的简化,只需要模拟与被测模块直接有关的一部分功能,测试结束完后完成历史使命。满足被测模块需要的前提下,驱动模块和桩模块的内容应尽量简单。,2、计算机测试,制做测试软件:Stub (存根,桩)和 Driver(驱动),软件的编写,属额外开支。模块高内聚可简化这一过程。
12、,2.单元测试,模块通过单元测试后,要组装为程序,在组装中进行的测试,就称为集成测试。 即使所有模块通过了单元测试,组装中仍不免出现新问题,根源在于模块接口和全局数据协调不好。例如:数据会在穿过接口时丢失;一个模块可能会对另一模块造成有害的影响;把子功能组合起来可能不产生所要求的主功能;有些单独看来可以允许的误差,组装后可能达到不能容忍的地方。,集成测试 (Integration Testing),又称为综合测试,1、非渐增式测试,先测试每个模块,再把模块组合程序,1、非渐增式测试 2、渐增式测试,4.集成测试,渐增式:从一个模块开始,测一次添一个新模块,滚雪球一样越滚越大,直到把所有模块组装
13、完毕。,2、渐增式测试,4.集成测试,4.集成测试,两种方式的比较: 渐增式测试可以较早发现模块间的接口错误;非渐增式测试最后才组装,因此错误发现得晚。 非渐增式测试中发现错误后难以诊断定位;渐增式测试中,出现的错误往往跟最新加入的模块有关。渐增式测试在不断集成的过程中使模块不断在新的条件下受到新的检测,测试更彻底。渐增式测试较非渐增式测试费时。非渐增式测试可以同时并行测试所有模块,能充分利用人力。, 自顶向下测试第1步:测试顶端模块,用桩程序(stub)代替直接附属的下层模块,4.集成测试,3、渐增式测试 的几种策略,第2步:根据深度优先或宽度优先的策略,每次用一个实际模块代换一个stub。
14、,3.集成测试,第3步:在结合进一个模块的同时进行测试。,M,第4步:回归测试(regression testing)全部或部分地重复以前做过的测试。, 由底向上测试第1步:把低层模块组合成族,每族实现一个子功能。第2步:用驱动程序(Driver)协调测试数据的IO,测试子功能族。,3.集成测试,优点:在早期即对主要控制及关键的抉择进行检验。问题:Stub只是对低层模块的模拟,测试时没有重要的数据自下往上流,许多重要的测试须推迟进行,而且在早期不能充分展开人力。,第3步:去掉Driver,自下而上把子功能族合成更大的子功能族。,M,M,M,3.集成测试,注意:两种策略的优、缺点刚好互补,但单用
15、其中任一种都不实际,通常根据软件的特点将二者混用。, 混合策略,3.集成测试,Target layer,Top-down,Bottom-up,5.确认测试(Acceptance testing),任务:验收软件的有效性(功能和性能达标)。手段:黑盒测试;用户参与;主要用实际数据进行测试。内容:按合同规定审查软件配置; 设计测试计划,使通过测试保证软件能满足所有功能、性能要求; 文档与程序一致,具有维护阶段所必须的细节; 严格按用户手册操作,以检查手册的完整性和正确性。,确认测试也称为验收测试,确认测试必须有用户积极参与,或者以用户为主进行。用户应该参与设计测试方案,使用用户界面输入测试数据并且
16、分析评价测试的输出结果。为了使得用户能够积极主动地参与确认测试,特别是为了使用户能有效地使用这个系统,通常在验收之前由开发单位对用户进行培训。,确认测试的范围,应该仔细设计测试计划和测试过程,测试计划包括要进行的测试的种类及进度安排,测试过程规定了用来检测软件是否与需求一致的测试方案。通过测试和调试要保证软件能满足所有功能要求,能达到每个性能要求,文档资料是准确而完整的,此外,还应该保证软件能满足其他预定的要求(例如,安全性、可移植性、兼容性和可维护性等)。,确认测试有下述两种可能的结果:(1) 功能和性能与用户要求一致,软件是可以接受的;(2) 功能和性能与用户要求有差距。在这个阶段发现的问
17、题往往和需求分析阶段的差错有关,涉及的面通常比较广,因此解决起来也比较困难。为了制定解决确认测试过程中发现的软件缺陷或错误的策略,通常需要和用户充分协商。,确认测试的一个重要内容是复查软件配置。保证软件配置的所有成分都齐全,质量符合要求,文档与程序完全一致,具有完成软件维护所必须的细节,而且已经编好目录。在确认测试过程中还应该严格遵循用户指南及其他操作程序,以便检验这些使用手册的完整性和正确性。必须仔细记录发现的遗漏或错误,并且适当地补充和改正。,软件配置复查,如果软件是专为某个客户开发的,可以进行一系列验收测试,以便用户确认所有需求都得到满足了。验收测试是由最终用户而不是系统的开发者进行的。
18、事实上,验收测试可以持续几个星期甚至几个月,因此能够发现随着时间流逝可能会降低系统质量的累积错误。,Alpha和Beta测试,如果一个软件是为许多客户开发的(例如,向大众公开出售的盒装软件产品),那么,让每个客户都进行正式的验收测试是不现实的。在这种情况下,绝大多数软件开发商都使用被称为Alpha测试和Beta测试的过程,来发现那些看起来只有最终用户才能发现的错误。,Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。开发者负责记录发现的错误和使用中遇到的问题。总之,Alpha测试是在受控的环境中进行的。,Beta测试由软件的最终用户们在一个或多个客户场所进行。与A
19、lpha测试不同,开发者通常不在Beta测试的现场,因此,Beta测试是软件在开发者不能控制的环境中的“真实”应用。用户记录在Beta测试过程中遇到的一切问题(真实的或想像的),并且定期把这些问题报告给开发者。接收到在Beta测试期间报告的问题之后,开发者对软件产品进行必要的修改,并准备向全体客户发布最终的软件产品。,白盒测试技术,主要技术:1、逻辑覆盖(Logical coverage) 适用于白盒测试 覆盖程度由弱到强顺次为: 语句覆盖(Statement coverage):每个语句至少执行一次。,任务:预定要测试的功能 设计输入的测试数据(test cases) 列出预期结果(expe
20、cted output),设计测试方案,白盒测试技术,例:P.153 图7.5,问题:若AND错写为OR,或X1错写为X1,则错误无法由上例测出。,Test case : A=2 , B=0 , X=4.,6 白盒测试技术,判定覆盖(Branch coverage):在的基础上,每个判定的每个分支至少执行一次。,Test cases:A=3 , B=0 , X=3A=2 , B=1 , X=1,问题:若X1错写为X1,仍然无法被测出。,6 白盒测试技术, 条件覆盖(Condition coverage):在的基础上,使每个判定表达式的每个条件都取到各种可能的结果。,Test cases:A=2
21、 , B=0 , X=4(满足A1, B=0; A=2, X1)A=1, B=1, X=1(满足A1, B0; A 2, X1),问:条件覆盖 ? 判定覆盖,答: 不一定。 反例: A=2, B=0, X=1 ( 满足A1, B=0; A=2, X 1) A=1, B=1, X=2 (满足A1, B0; A 2, X 1),满足条件覆盖 不满足判定覆盖,6.白盒测试技术,判定/条件覆盖:即判定覆盖条件覆盖,判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖,判定/条件覆盖的含义是,选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也取到各种可能的结果。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程第六章 测试ppt课件 软件工程 第六 测试 ppt 课件
链接地址:https://www.31ppt.com/p-1444600.html