收藏 分享(赏)

逻辑覆盖.ppt

上传人:cjc2202537 文档编号:1065339 上传时间:2018-06-09 格式:PPT 页数:40 大小:1.16MB
下载 相关 举报
逻辑覆盖.ppt_第1页
第1页 / 共40页
逻辑覆盖.ppt_第2页
第2页 / 共40页
逻辑覆盖.ppt_第3页
第3页 / 共40页
逻辑覆盖.ppt_第4页
第4页 / 共40页
逻辑覆盖.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、白盒测试-逻辑覆盖测试,复习,从是否需要执行被测软件的角度,可分为?从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为?黑盒测试方法主要有?,1、白盒测试概述,(1)白盒测试也称结构测试或逻辑驱动测试,是针对被测试单元内部是如何进行工作的测试,是以覆盖测试与路径测试为基本策略。(2)使用被测单元内部如何工作的信息,允许测试人员对程序内部逻辑结构及有关信息来设计和选择测试用例,对程序的逻辑路径进行测试。基于一个应用代码的内部逻辑知识,测试是基于覆盖全部代码、分支、路径、条件。,2、白盒测试的方法,程序结构分析;逻辑覆盖测试;基本路径测试; 白盒测试根据程序的控制结构设计导出测试用例,主

2、要用于软件程序的验证。 需要全面了解程序内部的逻辑结构,对所有逻辑路径进行测试,是一种穷举路径的测试方法。,白盒测试的实施步骤,1.测试计划阶段:根据需求说明书,制定测试进度。 2.测试设计阶段:依据程序设计说明书,按照一定规范化的方法进行软件结构划分和设计测试用例。 3.测试执行阶段:输入测试用例,得到测试结果。 4.测试总结阶段:对比测试的结果和代码的预期结果,分析错误原因,找到并解决错误。,白盒测试的方法,总体上分为静态方法和动态方法两大类。 静态分析指按一定步骤直接检查源代码或代码的测试方法,包括代码审查、桌面检查、代码走查。动态分析是指按一定的步骤生成测试用例并驱动被测试程序运行来发

3、现错误,包括基本路径测试、逻辑覆盖。,3、白盒测试的不足,穷举路径测试法无法检查出程序本身是否违反了设计规范,即程序是否是一个错误的程序。穷举路径测试不可能查出程序因为遗漏路径而出错穷举路径测试发现不了一些与数据相关的错误,4、白盒测试的原则,保证一个模块中的所有独立路径至少被测试一次;所有逻辑值均需测试真(True)和假(False)两种情况;检查程序的内部数据结构,保证其结构的有效性;在取值上、下边界,即可操作范围内运行所有循环.,5、逻辑覆盖测试,主要是测试覆盖率,以程序内在逻辑结构为基础的测试。包括以下6种类型:语句覆盖判定覆盖条件覆盖判定-条件覆盖条件组合覆盖路径测试,5.1语句覆盖

4、(Statement Coverage),原理:如果语句中有错误,仅靠观察不执行可能发现不了在测试时,首先设计足够多的测试用例,然后运行被测程序,使程序中的每个可执行语句至少执行一次,语句覆盖率,语句覆盖率已执行的可执行语句/程序中可执行语句总数*100%复杂的程序不可能达到语句的完全覆盖语句覆盖率越高越好,if(a1,a,b,c,d,e,B,A,C,E,F,D,语句覆盖测试用例,达到语句覆盖100%的测试用例 a = 2 b = 0 x = 3,未达到语句覆盖100%的测试用例 a = 2 b = 1 x = 0,语句覆盖的优点,检查所有语句结构简单的代码的测试效果较好容易实现自动测试代码覆

5、盖率高,语句覆盖不能检查出的错误,逻辑运算(&、|)错误 判定的第一个运算符“&”错写成“|”,或第二个运算符“|”错写成“&”,这时使用上述的测试用例仍然可以达到100%的语句覆盖。,循环语句错误循环次数错误跳出循环条件错误,语句覆盖不能检查出的错误,for(i=0;i3) statement;,for(i=0;i3,语句覆盖率的问题,能达到很高的语句覆盖率语句覆盖率看似很高,却有严重缺陷 if(x!=1) statements; ; else statement; ,99句,1句,测试用例x = 2语句有覆盖率99%50%的分支没达到,练习,void DoWork(int x,int y,

6、int z) int k=0,j=0; if(x3) /语句块3,5.2判定覆盖(Decision Coverage)(又称分支覆盖),比语句覆盖稍强的覆盖标准是判定覆盖。判定覆盖的含义是:设计足够多的测试用例,使程序中的每个判定至少都获得一次“真值”或“假值”。,if(a1,a,b,c,d,e,B,A,C,E,F,D,测试用例,除了双值判定语句外,还有多值判定语句,如case语句,因此判定覆盖更一般的含义是:使得每一个判定获得每一种可能的结果至少一次。,不仅满足了判定覆盖还满足了语句覆盖,因此比语句覆盖稍强。但仍然无法发现程序段中存在的逻辑判定错误。,if(a1,if(a1 | b=0) x

7、=x/a;,a=2,b=1,练习,void DoWork(int x,int y,int z) int k=0,j=0; if(x3) /语句块3,5.3条件覆盖(Condition Coverage),在设计程序中,一个判定语句是由多个条件组合而成的复合判定,判定a1&b=0包含了二个条件:a1和b=0。为了更彻底的实现逻辑覆盖,可以采用条件覆盖。条件覆盖的含义是:构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次。,if(a1,a,b,c,d,e,B,A,C,E,F,D,第一个判定中,考虑到各种条件取值:a1为真,记为T1a1为假,记为-T1b=0为真,记为T2b=0为假

8、,记为-T2,第二种判定考虑情况:a=2为真,记为T3a=2为假,记为-T3x1为真,记为T4x1为假,记为-T4,练习,void DoWork(int x,int y,int z) int k=0,j=0; if(x3) /语句块3,2.4 判定/条件覆盖(CDC),含义:设计足够的测试用例,使得判定中每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。,练习,void DoWork(int x,int y,int z) int k=0,j=0; if(x3) /语句块3,2.5组合条件覆盖(MCC),含义:设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。显然满足组合条件覆盖的测试用例是一定满足判定覆盖、条件覆盖和判定/条件覆盖的。,条件组合,2个条件,3个变量,8种组合a1,b=0 T1,T2a1,b0 T1,-T2a0 -T1,-T2a=2,x1 T3,T4a=2,x2,x1 -T3,T4a2,x3) /语句块3,int testCov(int a , int b) int s; s=1; if(a 1 | b 0 ) s = a + b; else if(a 1) and (B=0),(A=2) or (X1),X=X/A,X=X+1,真,T,假,F,d,c,e,

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

当前位置:首页 > 高等教育 > 教育学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报