UnitTesting单元测试详解课件.pptx

上传人(卖家):三亚风情 文档编号:2477920 上传时间:2022-04-23 格式:PPTX 页数:50 大小:552.79KB
下载 相关 举报
UnitTesting单元测试详解课件.pptx_第1页
第1页 / 共50页
UnitTesting单元测试详解课件.pptx_第2页
第2页 / 共50页
UnitTesting单元测试详解课件.pptx_第3页
第3页 / 共50页
UnitTesting单元测试详解课件.pptx_第4页
第4页 / 共50页
UnitTesting单元测试详解课件.pptx_第5页
第5页 / 共50页
点击查看更多>>
资源描述

1、思路5W1H1D: What Why When Who Ways How Demo?(二期)什么是单元测试概念: 单元测试是对最小的可测试软件元素(单元)实施的测试,它所测试的 内容包括内部结构(如逻辑和数据流)以及单元的功能和可观测的行为。 什么是单元(1)可测试的、最小的、不可再分的程序模块。(2)有明确的功能、规格定义。(3)有明确的接口定义,清晰地与同一程序的其他单元划分开来。举例:如C语言中单元可以是一个函数,C+这样的面向对象的语言中,基本单元是类,Java里单元也指一个类,图形化的软件中可以指一个窗口或一个菜单等。进行单元测试的重要性时间方面:如果认真的做好了单元测试,在系统集成

2、联调时非常顺利,会节约很多时间,反之不做单元测试或简单随便做,在集成时总会遇到一些简单问题就花了很长时间去查找,时间成本更大!1:3:12时间单位!测试效果:单元测试的效果是非常明显的。首先,单元测试做好,集成测试和系统测试时就很顺利。其次,单元测试易发现一些深层次的问题,同时还会发现一些很容易发现而在集成测试和系统测试很难发现的问题。再次,单元测试证明代码做了什么,如何做的,是否做了不该做的事情。测试成本:不同阶段(单元,集成,系统测试)发现问题,定位问题和解决问题成本。”半年开发,三年维护,终生改BUG。”虫虫和天上的星星一样多。”产品质量:单元测试的好与坏直接影响到产品的质量,代码中的一

3、个小错误就导致了整个产品的质量降低一个指标或者导致更严重的后果,做好单元测试这种情况是可以完全避免的。(理由有些牵强。)单元测试的优点(了解)它是一种验证行为测试,为以后的开发提供支缓。为后期开发中增加功能或更改程序结构,甚至为代码的重构提供了保障,可以自由的对程序进行改进。它是一种设计行为编写单元测试,从调用者角度观察、思考,特别是先写测试(test-first),把程序设计成易于调用和可测试的,即迫使我们解除软件中的耦合。另外还可以使编码人员在编码时产生预测试,将程序的缺陷降低到最小。它是一种编写文档的行为单元测试是一种无价的文档,它是展示函数或类如何使用的最佳文档。这份文档是可编译、可运

4、行的,并且它保持最新,永远与代码同步。它具有回归性自动化的单元测试避免了代码出现回归,编写完成之后,可以随时随地的快速运行测试。何时开始单元测试什么时候测试?单元测试越早越好,早到什么程度?极限编程(Extreme Programming,或简称XP)讲究TDD,即测试驱动开发,先编写测试代码,再进行开发。在实际的工作中,可以不必过分强调先什么后什么,重要的是高效和感觉舒适。从经验来看,先编写产品函数的框架,然后编写测试函数,针对产品函数的功能编写测试用例,然后编写产品函数的代码,每写一个功能点都运行测试,随时补充测试用例。所谓先编写产品函数的框架,是指先编写函数空的实现,有返回值的直接返回一

5、个合适值,编译通过后再编写测试代码,这时,函数名、参数表、返回类型都应该确定下来了,所编写的测试代码以后需修改的可能性比较小。谁来做单元测试谁来做单元测试执行者:开发人员或者白盒测试人员维护一个专门单元测试的测试团队成本太高,或者是有某些专门白盒测试人员,让其去熟悉开发架构和业务实现方式进行测试开发,设计测试用例和编写测试代码进行单元测试也得不偿失。无论由哪个部门做单元测试,都要面对一些问题,但开发部门所面对的问题可以借助工具来解决,而由测试部门进行单元测试,要么无法真正实施,要么代价昂贵。业内选择:更多的是由开发人员来完成单元测试的内容单元测试又称模块测试,属于白盒测试(不局限于白盒测试方法

6、),是最小单位的测试。单元测试既可以是白盒测试也可以是黑盒测试。白盒测试主要是检查程序的内部结构、逻辑、循环和路径。黑盒测试注重对程序功能方面的要求,它只用到程序的规格说明,没有用到程序的内部结构。单元测试针对程序单元非一个独立可运行的程序,因此,在考虑测试模块时,同时要考虑到它和外界其他模块的联系,用一些辅助模块去模拟与被测模块关联。这些模块分为两种:驱动模块和桩模块。桩和驱动模块由来 单元测试针对程序单元非一个独立可运行的程序,因此,在考虑测试模块时,同时要考虑到它和外界其他模块的联系,用一些辅助模块去模拟与被测模块关联。这些模块分为两种:驱动模块和桩模块。驱动模块:相当于所测模块的主程序

7、。它接收测试数据,把这些测试数据传送给被测模块,最后再输出实测结果。桩模块:由被测模块调用,用以代替由被测单元所调用的模块的功能,返回适当的数据或进行适当的操作使被测单元能继续运行下去,同时还要进行一定的数据处理,如打印入口和返回等,以便检验被测模块与其下级模块的接口。假设把任务分给了7个人,每个人负责实现一个模块。小张负责B模块,他完成了B编码,现在需要开阵单元测试工作,先分析结构图: 1、由于B模块不是最顶层模块,所以它不包含main函数(A模块包含main函数),也就不能独立运行。2、B模块调用了D模块和E模块,而目前D模块和E模块都还没有开发好,那么想让B模块通过编译器的编译也是不可能

8、的。那么怎样才能测试B模块呢?需要做:1、写两个模块Sd和Se分别代替D模块和E模块(函数名、返回值、传递的参数相同),这样B模块就可以通过编译了。Sd模块和Se模块就是桩模块。2、写一个模块Da用来代替A模块,里面包含main函数,可以在main函数中调用B模块,让B模块运行起来。Da模块就是驱动模块。实例单元测试-测试方法和用例设计方法单元测试的方法可以是白盒测试也可以是黑盒测试:1,什么是白盒,什么是黑盒?2,白盒测试用例设计方法?3,黑盒测试用例设计方法?(规范(规格)导出、等价类划分、边界值分析法、错误推测法和因果图分析方法。)不做详细介绍,可以参阅网上资料了解。白盒测试&黑盒测试黑

9、盒:什么进去,出来什么?白盒:什么进去,如何演变生成,出来什么?白盒测试用例设计方法白盒测试主要是检查程序的内部结构、逻辑、循环和路径。其常用测试用例设计方法有:逻辑覆盖和基本路径测试。(白盒测试的测试方法很多:有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法逻辑覆盖法、基本路径测试法基本路径测试法、域测试、符号测试、Z路径覆盖、程序变异。)语句覆盖:原理:如果语句中有错误,仅靠观察不执行可能发现不了。在测试时,首先设计足够多的测试用例,然后运行被测程序,使程序中的每个可执行语句至少执行一次!语句覆盖率:已执行的可执行语句/程序中可执行语句总数*100%。复杂的程序不可能达到语句的完全

10、覆盖!语句覆盖率越高越好!SampleDim a, b as IntegerDim c As DoubleIf (a0 and b0) Then c=c/aEnd ifIf (a1 or c1) Then c=c+1End ifc=b+c语句覆盖测试用例达到语句覆盖100%的测试用例 a = 2 b = 1 c = 6此用例即达到了语句覆盖。*思考:a = 2 b = 1 c = 0语句覆盖优点 检查所有语句 结构简单的代码的测试效果较好 容易实现自动测试 代码覆盖率高 语句覆盖缺点语句覆盖不能检查出的错误:1,逻辑运算(&、|)错误 如判定运算符“&”错写成“|”或将运算符“|”错写成“&”

11、,这时测试用例仍然可以达到100%的语句覆盖。2,循环语句错误循环次数错误跳出循环条件错误缺点:语句覆盖仅仅针对程序逻辑中显示存在的语句,对于隐藏的条件是无法测试。如,在多分支的逻辑运算中无法全面的考虑。语句覆盖是最弱的逻辑覆盖。课后研究1:语句覆盖不能检测的问题for(i=0;i3) statement;课后研究2:语句覆盖的覆盖率的问题 能达到很高的语句覆盖率语句覆盖率看似很高,却有严重缺陷 if(x!=1) statements; ; else statement; 99句1句测试用例:x = 2语句有覆盖率99%50%的分支没达到!判定覆盖(又称分支覆盖)指设计若干测试用例,运行被测程

12、序,使得每个判定的取真分支和取假分支至少经历一次。比语句覆盖稍强的覆盖标准是判定覆盖。SampleDim a, b as IntegerDim c As DoubleIf (a0 and b0) Then c=c/aEnd ifIf (a1 or c1) Then c=c+1End ifc=b+c用例设定1 Case1:a=2 b=1 c=6可以覆盖判断A的Y分支和判断B 的Y分支 Case2:a=-2 b=-1 c=-3可以覆盖判断A 的N分支和判断B的N分支评价:这两组测试用例可覆盖所有的判定的真假分支。用例设定2 Case3:a=1 b=1 c=-3可以覆盖判断A的Y分支和判断B 的N分

13、支 Case4:a=1 b=-2 c=3可以覆盖判断A 的N分支和判断B的Y分支评价:这两组测试用例也可覆盖所有的判定的真假分支。判定覆盖优缺点 优点:判定覆盖比语句覆盖有更强的测试能力。同样判定覆盖也具有语句覆盖的简单性,无需细分每一个判定就可以得到测试用例。 缺点:很多时候大部分的判定语句由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖依旧是较弱的逻辑覆盖。条件覆盖简而言之,设计足够多的测试用例,运行被测程序,使得每一判定语句中每个逻辑条件的可能取值至少满足一次。条件覆盖率的公式:条件覆盖率=被评价到的条件取值的数量/条件取值的总

14、数X100%SampleDim a, b as IntegerDim c As DoubleIf (a0 and b0) Then c=c/aEnd ifIf (a1 or c1) Then c=c+1End ifc=b+c条件设定第一个判定中,考虑到各种条件取值:a0为真,记为T1a0为假,记为F1b0为真,记为T2b0为假,记为F2第二种判定考虑情况:a=1为真,记为T3a=1为假,记为F3c1为真,记为T4c1为假,记为F4用例设定条件覆盖的优缺点 优点:增加了对条件判定情况的测试,增加了测试路径。 缺点:条件覆盖不一定包含判定覆盖。以上的设计用例中没有覆盖判断A的Y分支和判断B 的N

15、分支。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。判定-条件覆盖 设计足够多的测试用例,使得判定中的每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果也至少出现一次。 判定条件覆盖率: 条件判定覆盖率=被评价到的条件取值和判定分支的数量/(条件取值总数+判定分支总数)用例设定 判定-条件用例设计思路:1,所有条件可能至少执行一次;2,所有判断的可能结果至少执行一次。要满足T1 T2 T3 T4 F1 F2 F3 F4;要覆盖判断A的Y分支和N分支;判断B的Y分支和N分支。判定-条件覆盖优缺点 优点:同时满足判定,条件两种覆盖。 缺点:未考虑条件的组合也没有

16、覆盖所有的判定组合情况。条件组合覆盖 设计足够多的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。这种方法包含了“分支覆盖”和“条件覆盖”的各种要求。 满足条件组合覆盖一定满足判定覆盖、条件覆盖、判定条件覆盖。用例设定 思路:把每一个判断中的所欲条件进行组合,所设计的用例应该包含所有的组合条件。 组合条件:用例设定条件组合覆盖优缺点 优点:条件组合覆盖满足判定覆盖、条件覆盖和判定-条件覆盖。 缺点:大大的增加了测试用例的数量和单元测试设计执行时间。路径覆盖 设计所有的测试用例,来覆盖程序所有可能的执行路径。 路径覆盖率的公式:路径覆盖率=被执行到的路径数/程序中总的路径数。 路径覆盖

17、是覆盖率最高的一种覆盖技术。用例设定路径覆盖优缺点 优点:可以对程序进行彻底的测试,比其他的覆盖都广泛。 缺点:需要设计大量,负责的测试用例,工作量增大,但是不一定覆盖所有的条件组合。综合比较用例设计和覆盖程度比较结 论采用任何一种覆盖方法都不能满足测试要求,所以实际的测试用例设计时,需要将不同的覆盖方法组合起来使用,实现最佳的测试用例设计。回溯例子:条件组合覆盖+路径覆盖先路径覆盖,然后查看条件覆盖缺失。基本路径测试 详细文档见下期讲解单元测试步骤1,首先要构造测试用例的运行环境,即确定用例运行的前提条件,明确被测模块/单元所需的程序环境(全局变量赋值或初始化实体),启动测试驱动,设置桩,调用被测模块,设置预期输出条件判断,最后恢复环境 (包括清除桩)。2,设计黑盒测试用例,即接口测试用例。第一步设计基本功能测试用例,证明被测单元至少在某种正常情况下能够运行了;第二步设计功能正面测试用例,找出被测单元对于设计要求的正确输入可能做出的不正确处理;第三步设计功能反面测试用例,找出被测单元对于设计要求的错误输入可能做出的不正确处理;最后一步设计性能测试用例,找出单元对于设计要求的性能可能做不到的错误。3,设计白盒测试用例,即覆盖测试用例,找出单元内部控制结构和数据使用可能存在的问题。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(UnitTesting单元测试详解课件.pptx)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|