软件工程第7章软件测试课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件工程第7章软件测试课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 软件 测试 课件
- 资源描述:
-
1、第第7章章 软件测试软件测试 由于软件开发的各个阶段均包含了大量的人的创造性由于软件开发的各个阶段均包含了大量的人的创造性劳动,不可避免地会引入错误,尤其是大型、复杂的软劳动,不可避免地会引入错误,尤其是大型、复杂的软件系统。件系统。软件测试是在软件投入运行之前软件测试是在软件投入运行之前,对软件的需求分析、对软件的需求分析、设计规格说明和编码的最后复审。设计规格说明和编码的最后复审。软件测试目标和任务软件测试目标和任务软件测试的方法软件测试的方法软件测试方法之白盒测试软件测试方法之白盒测试软件测试方法之黑盒测试软件测试方法之黑盒测试软件测试的步骤软件测试的步骤调试调试实例实例第第6章章 软件
2、测试软件测试软件测试的任务和目标软件测试的任务和目标 1、软件测试的目的:软件测试的目的:1963年,没过飞往火星的火年,没过飞往火星的火箭爆炸,损失¥箭爆炸,损失¥10million美元。原因:美元。原因:FORTRAN循环:循环:DO 5 I=1,3 误写为误写为DO 5 I=1.3 软件测试的任务和目标软件测试的任务和目标 目前软件开发结构,将研制力量的目前软件开发结构,将研制力量的40%以上投入到以上投入到软件测试之中。软件测试之中。微软微软Exchange 2000和和Windows 2000中的人员结构中的人员结构 Exchange Windows 2000 项目经理项目经理 25
3、人人 约约250人人 开发人员开发人员 140人人 约约1700人人 测试人员测试人员 350人人 约约3200人人 测试人员测试人员/开发人员开发人员 2.5 1.9软件测试的任务和目标软件测试的任务和目标 目前软件开发结构,将研制力量的目前软件开发结构,将研制力量的40%以上投入到以上投入到软件测试之中。软件测试之中。几个典型系统中软件测试的费用几个典型系统中软件测试的费用 系统名称系统名称 测试费用占软件开发预算的比例测试费用占软件开发预算的比例 SAGE 47%NAVAL TACTICAL 50%DATA SYSTEM GENINI 47%S ATURN V 44%软件测试的任务和目标
4、软件测试的任务和目标软件测试的目的:软件测试的目的:为什么需要这么多人、花这么多代价进行测试?目的何为什么需要这么多人、花这么多代价进行测试?目的何在?在?“证明程序正确!证明程序正确!”对吗?对吗?Myers对软件测试目的提出以下观点:对软件测试目的提出以下观点:1、软件测试是为了发现错误而运行程序的过程。、软件测试是为了发现错误而运行程序的过程。2、一个好的测试用例能够发现至今尚未发现的错误。、一个好的测试用例能够发现至今尚未发现的错误。3、一个成功的测试是发现了至今尚未发现的错误的测、一个成功的测试是发现了至今尚未发现的错误的测试。试。软件测试的任务和目标软件测试的任务和目标什么是软件测
5、试:什么是软件测试:软件测试的定义:软件测试是为了发现错误而运行软件测试的定义:软件测试是为了发现错误而运行程序的过程。是根据软件开发各阶段的规格说明和程序程序的过程。是根据软件开发各阶段的规格说明和程序内部结构精心设计一批测试用例,并利用这些用例去运内部结构精心设计一批测试用例,并利用这些用例去运行程序,以发现程序中的错误。行程序,以发现程序中的错误。软件测试的任务和目标软件测试的任务和目标软件测试的原则:软件测试的原则:(1)应当把)应当把“尽早地和不断地测试尽早地和不断地测试”作为开发者的座右铭作为开发者的座右铭(2)软件测试工作应该由独立的专业的软件测试机构来完成)软件测试工作应该由独
6、立的专业的软件测试机构来完成(3)测试工作要全面,但不可能实现)测试工作要全面,但不可能实现“穷举穷举”。(4)把)把Pareto原理应用到软件测试中。即对发现错误较多的程序段,原理应用到软件测试中。即对发现错误较多的程序段,应进行更深入的测试。应进行更深入的测试。(5)妥善保存一切测试过程文档,作用是不言而喻的,测试的重现性)妥善保存一切测试过程文档,作用是不言而喻的,测试的重现性往往要靠测试文档。往往要靠测试文档。(6)不要希望在极短的时间内完成一个高水平的测试。)不要希望在极短的时间内完成一个高水平的测试。(7)错误经过修改后,相关的测试必不可少。)错误经过修改后,相关的测试必不可少。软
7、件测试的任务和目标软件测试的任务和目标软件测试信息流:软件测试信息流:测试测试结果结果分析分析可靠性可靠性分析分析排错排错软件配置软件配置测试配置测试配置测试工具测试工具测试结果测试结果预期结果预期结果错误错误出错率出错率数据数据改正的软件改正的软件预测的可靠性预测的可靠性软件测试过程中的信息:软件测试过程中的信息:测试过程需要三类信息:测试过程需要三类信息:1、软件配置:包括需求规格说明、软件设计规格说明、源程序、软件配置:包括需求规格说明、软件设计规格说明、源程序等;等;2、测试配置:包括测试方案、测试用例、测试驱动程序等;、测试配置:包括测试方案、测试用例、测试驱动程序等;3、测试工具:
8、计算机辅助测试的有关工具。如测试数据自动生、测试工具:计算机辅助测试的有关工具。如测试数据自动生成工具、静态分析程序、动态分析程序、测试结果分析程序、驱动成工具、静态分析程序、动态分析程序、测试结果分析程序、驱动测试的测试数据库。测试的测试数据库。软件测试的任务和目标软件测试的任务和目标软件测试的范围软件测试的范围软件测试的对象软件测试的对象:软件测试不等于程序测试,对软件定义与开发的整个期软件测试不等于程序测试,对软件定义与开发的整个期间所得到的各种文档资料,都是测试对象,包括需求规格间所得到的各种文档资料,都是测试对象,包括需求规格说明、概要设计规格说明、详细设计规格说明、源程序等。说明、
9、概要设计规格说明、详细设计规格说明、源程序等。软件测试方法软件测试方法软件测试分类:软件测试分类:静态测试静态测试分为两大类:分为两大类:动态测试动态测试黑盒测试黑盒测试白盒测试白盒测试软件测试的工作软件测试的工作静态:静态:静态测试指被测程序不在机器上运行,而采用人工检静态测试指被测程序不在机器上运行,而采用人工检测和计算机辅助静态检测的手段对程序进行测试。测和计算机辅助静态检测的手段对程序进行测试。1、人工检测:人工审查程序或评审软件。人工审查程、人工检测:人工审查程序或评审软件。人工审查程序偏重于编码质量的检验,而人工评审软件除了审查编码序偏重于编码质量的检验,而人工评审软件除了审查编码
10、还要对各阶段的软件产品进行检验。人工检测可以发现计还要对各阶段的软件产品进行检验。人工检测可以发现计算机不易发现的错误,据统计人工检测可发现算机不易发现的错误,据统计人工检测可发现30%70%的逻辑设计和编码错误,从而减少系统测试的逻辑设计和编码错误,从而减少系统测试的总工作量。的总工作量。2、计算机辅助静态检测:利用静态检测工具对程序进行、计算机辅助静态检测:利用静态检测工具对程序进行测试。测试。软件测试的工作软件测试的工作动态:动态:动态测试是通过运行程序发现错误。动态测试是通过运行程序发现错误。一般意义上的测试都是动态测试。为使测试发现尽可能多的一般意义上的测试都是动态测试。为使测试发现
11、尽可能多的错误错误,动态测试时需采用一些有效的方法。一般有两种方法:一动态测试时需采用一些有效的方法。一般有两种方法:一是测试产品的功能,二是测试产品的内部结构和处理程。分别称是测试产品的功能,二是测试产品的内部结构和处理程。分别称为黑盒测试和白盒测试。为黑盒测试和白盒测试。软件测试方法之白盒测试软件测试方法之白盒测试白盒测试:白盒测试:白盒测试也称为结构测试或逻辑驱动测试,所以被测对象基本上是源白盒测试也称为结构测试或逻辑驱动测试,所以被测对象基本上是源程序,以程序的内部结构为基础,设计测试用例。程序,以程序的内部结构为基础,设计测试用例。1、逻辑覆盖:、逻辑覆盖:追求程序内部的逻辑覆盖程度
12、,当程序中有循环时,覆盖每条路径是追求程序内部的逻辑覆盖程度,当程序中有循环时,覆盖每条路径是不可能的,要设计使覆盖程度较高的或覆盖有代表性的路径的测试用例。不可能的,要设计使覆盖程度较高的或覆盖有代表性的路径的测试用例。(A1)AND(B=0)(A=2)OR(X1)语句段语句段语句段语句段TFFT12345如右图:一个被测如右图:一个被测程序的流程图。程序的流程图。软件测试方法软件测试方法常用的覆盖技术有:常用的覆盖技术有:(1)语句覆盖:)语句覆盖:为了提高发现错误的可能性,在测试时应该执行到程序中的每一个语为了提高发现错误的可能性,在测试时应该执行到程序中的每一个语句。语句覆盖是指设计足
13、够的测试用例,使被测程序的每个语句至少执行一句。语句覆盖是指设计足够的测试用例,使被测程序的每个语句至少执行一次。次。(A1)AND(B=0)(A=2)OR(X1)语句段语句段TFFT12345 测试路径为测试路径为1-2-4,即可保证每,即可保证每个语句至少执行一次。所以测试用例个语句至少执行一次。所以测试用例为:为:A=2、B=0、X=3。程序每个程序每个语句都能执行,语句覆盖似乎全面地语句都能执行,语句覆盖似乎全面地检查了每个语句,但该测试用例只检检查了每个语句,但该测试用例只检查了逻辑表达式为查了逻辑表达式为“真真”的情况,如的情况,如将将“AND”错写为错写为“OR”、X1错错写为写
14、为X1)AND(B=0)(A=2)OR(X1)语句段语句段TFFT12345 测试路径只要测试路径只要1-2-4,1-3-5或或1-2-5,1-3-4即可达到覆盖标准。所以测试即可达到覆盖标准。所以测试用例为:用例为:A=3、B=0、X=1(1-2-5),),A=2、B=1、X=2(1-3-4)。)。对于多对于多分支的判定,判定覆盖要使得每一个判定分支的判定,判定覆盖要使得每一个判定表达式获得每一个可能的值。判定覆盖比表达式获得每一个可能的值。判定覆盖比语句覆盖严格,若通过各个分支,各个语语句覆盖严格,若通过各个分支,各个语句也执行了。但该测试仍不充分,上述数句也执行了。但该测试仍不充分,上述
15、数据只覆盖了全部路径的一半,如将据只覆盖了全部路径的一半,如将X1错写为错写为X1 B=o A=2,X1 要选择足够的测试用例,使得:要选择足够的测试用例,使得:判定表达式判定表达式1出现:出现:A1,B=0;A1,B0 判定表达式判定表达式2出现:出现:A=2,X1;A2,X1达到条件覆盖标准。达到条件覆盖标准。为满足上述要求,选择以下两组数据:为满足上述要求,选择以下两组数据:A=2,B=0,X=3(满足满足A1,B=0,A=2,X1 通过路径通过路径124)A=1,B=1,X=1(满足满足A1,B0,X 1,A2通过路径通过路径135)软件测试方法软件测试方法常用的覆盖技术有:常用的覆盖
16、技术有:(3)条件覆盖:)条件覆盖:以上两组数据不仅覆盖了判定表达式中的所有条件的可能取值,而且覆以上两组数据不仅覆盖了判定表达式中的所有条件的可能取值,而且覆盖了盖了 所有判定的取所有判定的取“真真”分支和取分支和取“假假”分支,在这种情况下条件覆盖强分支,在这种情况下条件覆盖强于判定覆盖。但也有例外,如选择以下两组数据:于判定覆盖。但也有例外,如选择以下两组数据:A=1,B=0,X=3(满足满足A 1,B=0,A 2,X1)A=2,B=1,X=1(满足满足A1,B0,X 1,A=2)以上两组数据覆盖了判定表达式中的所有条件的可能取值,但只覆盖了以上两组数据覆盖了判定表达式中的所有条件的可能
17、取值,但只覆盖了 第一个判定表达式的取第一个判定表达式的取“假假”分支和第二个判定表达式的取分支和第二个判定表达式的取“真真”分支,此分支,此例不满足判定覆盖。所以满足条件覆盖不一定满足判定覆盖。为了解决此问例不满足判定覆盖。所以满足条件覆盖不一定满足判定覆盖。为了解决此问题,需要对条件和分支兼顾。题,需要对条件和分支兼顾。软件测试方法软件测试方法常用的覆盖技术有:常用的覆盖技术有:(4)判定)判定/条件覆盖:条件覆盖:该覆盖标准是指设计足够的测试用例,使被测程序的每个判定表达式中该覆盖标准是指设计足够的测试用例,使被测程序的每个判定表达式中每个条件的各种可能的值至少出现一次。并使每个判定表达
18、式所有可能的结每个条件的各种可能的值至少出现一次。并使每个判定表达式所有可能的结果也至少出现一次。对该例程序,可选择以下两组数据达到判定果也至少出现一次。对该例程序,可选择以下两组数据达到判定/条件覆盖条件覆盖标准:标准:A=2,B=0,X=3 A=1,B=1,X=1 从表面上看,判定从表面上看,判定/条件覆盖测试了所有条件的取值,但实际上条件条件覆盖测试了所有条件的取值,但实际上条件组合中的某些条件会抑制其它的条件,如组合中的某些条件会抑制其它的条件,如“与与”运算的判定表达式中,第一运算的判定表达式中,第一个条件为个条件为“假假”,则这个表达式后面的几个条件均不起作用,后面的表达式,则这个
19、表达式后面的几个条件均不起作用,后面的表达式中的错误也就测试不出来。中的错误也就测试不出来。软件测试方法软件测试方法(5)条件组合覆盖:)条件组合覆盖:该覆盖标准是指设计足够的测试用例,使被测程序的每个判定表达式中每该覆盖标准是指设计足够的测试用例,使被测程序的每个判定表达式中每个条件的各种可能的值的组合至少出现一次。条件组合覆盖是较强的覆盖标准。个条件的各种可能的值的组合至少出现一次。条件组合覆盖是较强的覆盖标准。该例中,两个判定表达式共有该例中,两个判定表达式共有4个条件,有个条件,有8种组合:种组合:A1,B=0;A1,B0;A1,B=0;A1,B0;A=2,X1;A=2,X1;A2,X
20、1;A2,X1;测试用例测试用例4组数据:组数据:A=2,B=0,X=2;覆盖条件组合覆盖条件组合,路径,路径124 A=2,B=1,X=1;覆盖条件组合覆盖条件组合,路径,路径134 A=1,B=1,X=1;覆盖条件组合覆盖条件组合,路径,路径135 A=1,B=0,X=2;覆盖条件组合覆盖条件组合 ,路径,路径134 显然,满足条件组合覆盖的测试,一定满足判定覆盖、条件覆盖、判定显然,满足条件组合覆盖的测试,一定满足判定覆盖、条件覆盖、判定/条件条件覆盖,但该测试没有覆盖程序所有可能的执行路径,覆盖,但该测试没有覆盖程序所有可能的执行路径,125路径没有覆盖。路径没有覆盖。软件测试方法软件
21、测试方法(6)路径覆盖:)路径覆盖:该覆盖标准是指设计足够的测试用例,覆盖被测程序中所有可能路径:该覆盖标准是指设计足够的测试用例,覆盖被测程序中所有可能路径:该例可选择以下测试用例,覆盖程序中的该例可选择以下测试用例,覆盖程序中的4条路径:条路径:A=2,B=0,X=2;覆盖路径覆盖路径124,条件组合,条件组合;A=2,B=1,X=1;覆盖路径覆盖路径134,条件组合,条件组合;A=1,B=1,X=1;覆盖路径覆盖路径135,条件组合,条件组合;A=3,B=0,X=1;覆盖路径覆盖路径125,条件组合,条件组合;显然,该测试满足路径覆盖,但没有满足条件组合覆盖。显然,该测试满足路径覆盖,但
22、没有满足条件组合覆盖。软件测试方法软件测试方法六种覆盖的比较:六种覆盖的比较:语句覆盖语句覆盖 每条语句至少执行一次每条语句至少执行一次 判定覆盖判定覆盖 每个判定的每个分支至少执行一次每个判定的每个分支至少执行一次条件覆盖条件覆盖 每个判定的每个条件应取到各种可能的值每个判定的每个条件应取到各种可能的值判定判定/条件覆盖条件覆盖 同时满足判定覆盖和条件覆盖同时满足判定覆盖和条件覆盖条件组合覆盖条件组合覆盖 每个判定中各条件的每一种组合至少出现一次每个判定中各条件的每一种组合至少出现一次路径覆盖路径覆盖 使程序中每一条可能的路径至少执行一次使程序中每一条可能的路径至少执行一次发现错误能力发现错
23、误能力弱弱强强软件测试方法软件测试方法2、控制结构测试、控制结构测试(1)基本路径测试基本思想)基本路径测试基本思想 在给出程序控制流图的基础之上,分析控制结构的环路在给出程序控制流图的基础之上,分析控制结构的环路复杂度,导出基本可执行路径集合,并把覆盖路径数压复杂度,导出基本可执行路径集合,并把覆盖路径数压缩到一定限度内,保证程序中的循环体最多执行一次,缩到一定限度内,保证程序中的循环体最多执行一次,设计出的测试用例保证在测试中,程序的每条可执行语设计出的测试用例保证在测试中,程序的每条可执行语句至少执行一次,并且每个条件在执行时都将分别取真、句至少执行一次,并且每个条件在执行时都将分别取真
24、、假两种值。假两种值。软件测试方法软件测试方法2、控制结构测试、控制结构测试(1)基本路径测试)基本路径测试 画出程序的控制流图画出程序的控制流图 计算程序环路复杂度计算程序环路复杂度 确定独立路径的基本集合确定独立路径的基本集合 设计测试用例设计测试用例软件测试方法软件测试方法2、控制结构测试示例、控制结构测试示例流程图流图软件测试方法软件测试方法2、控制结构测试、控制结构测试(2)条件测试)条件测试 条件测试重点测试程序中的每个条件,通过检测程序条件中的错条件测试重点测试程序中的每个条件,通过检测程序条件中的错误,来发现程序中的其它错误误,来发现程序中的其它错误.主要是测试组成条件的各个成
25、分的正确性,条件可能是一个布尔主要是测试组成条件的各个成分的正确性,条件可能是一个布尔变量、一个关系表达式或是由两个或多个简单条件、布尔运算符和括变量、一个关系表达式或是由两个或多个简单条件、布尔运算符和括弧组成的复杂条件弧组成的复杂条件,最简单的条件测试策略应该是分支测试,分支测最简单的条件测试策略应该是分支测试,分支测试主要是保证条件中的每个简单条件,以及取真、取假的分支都至少试主要是保证条件中的每个简单条件,以及取真、取假的分支都至少执行一次。执行一次。软件测试方法软件测试方法2、控制结构测试、控制结构测试(3)循环测试)循环测试 根据循环的复杂性,可分为简单循环、嵌套循环和串接循环三根
展开阅读全文