欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《软件白盒测试》PPT课件.ppt

    • 资源ID:4861255       资源大小:1.18MB        全文页数:94页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《软件白盒测试》PPT课件.ppt

    软件白盒测试,概览,在本章中,我们将学习:结构性白盒测试概述 程序结构分析 逻辑覆盖 结构性测试案例,目标,完成此课程之后,学员将具备以下能力:了解结构性测试的含义进行程序结构分析使用逻辑覆盖的方法进行白盒测试 了解Devpartner进行白盒测试,课程目录,结构测试概述 程序结构分析 逻辑覆盖 结构测试案例分析结构测试工具,结构测试定义,把测试对象看做一个透明的盒子白盒测试是根据被测程序的内部结构设计测试用例并完成测试的一种测试方法白盒测试或逻辑驱动测试基于一个应用代码的内部逻辑知识,测试覆盖全部代码、分支、路径和条件,结构测试特点,可以构成测试数据使特定程序部分得到测试有一定的充分性度量手段可获得较多工具支持通常只用于单元测试,结构测试的方法,静态测试方法:程序结构分析代码走查代码审查控制流分析数据流分析信息流分析,动态测试方法:逻辑覆盖语句覆盖分支覆盖条件覆盖分支-条件覆盖路径覆盖,代码覆盖率,采用白盒法进行测试时,考虑的是测试用例对程序内部逻辑的覆盖程度最彻底的白盒法是覆盖程序中的每一条路径,但这往往无法实现采用其它一些标准来量度覆盖的程度,并希望覆盖程度尽可能高些,课程目录,结构测试概述 程序结构分析 逻辑覆盖 结构测试案例分析结构测试工具使用,程序结构分析,代码走查代码审查控制流分析数据流分析信息流分析,代码走查,含义代码走查是由一组程序和错误检查技术组成,并以代码审查组方式进行人员组长(有威信的资深程序员担任):负责分配资料、安排计划、主持会议、记录并保存被发现的错误资深程序员测试人员程序开发员(可做会议主持)重点探讨代码编写思路:比如算法,基于对象的编程,类设计。但是代码走查非常枯燥,现在变成了关注于强制代码标准,代码审查,内容检查代码和设计的一致性检查代码对标准的遵循、可读性检查代码的逻辑表达的正确性检查代码结构的合理性形成公司积累变成容易出错的checklist,代码审查,步骤准备程序阅读审查会跟踪及报告,控制流分析,非结构化程序会给测试、排错、和程序的维护带来许多困难要求写出的程序结构良好检查程序的控制结构成为十分有意义的工作,程序流程图,1,3,2,5,控制流图,1,2,4,3,5,a,b,c,d,e,f,控制流图,节点标有编号的圆圈 程序流程图中矩形框所表示的处理 菱形表示的两个甚至多个出口判断 多条流线相交的汇合点,控制流图,控制流线或弧 箭头 与程序流程图中的流线一致,表明了控制的顺序 控制流线通常标有名字,控制流图矩阵,1,2,3,4,5,1,2,3,4,5,控制流图矩阵,便于机器表示和处理控制流图 连接弧的节点的号码决定了矩阵中元素的位置注意控制流的方向(行-列)两个节点没有弧线,所对应的位置也就没有元素,程序结构的基本要求,写出的程序不应包含:转向并不存在的标号 没有用的语句标号 从程序入口进入后无法达到的语句 不能达到停机语句的语句 目前对这四种情况的检测主要通过编译器和程序分析工具来实现。可以利用控制流图分析出来,是否存在以上情况。例如:1-2-3、4-4-5(结束),数据流分析,查找引用未定义变量等程序错误 查找对以前未曾使用的变量再次赋值等数据流异常的情况 常见的错误表现形式错拼名字名字混淆语句丢失,数据流,如果程序中某一语句执行时能改变某程序变量V的值,则称V被该语句定义如果一语句的执行引用了内存中变量V的值,则称V被该语句引用例如:X=Y+Z;-X被定义,Y和Z被引用if YZ then return;-Y和Z被引用,控制流图与数据流表,1,2,3,4,10,6,7,5,8,9,11,Z的值被送给外部环境,例如:假定某个变量的值在使用以前被错误的改写了(对输出没有任何作用),这个语句就会被发现,信息流分析,通过对输入数据、输出数据、语句之间的关系的分析来检查程序错误信息流分析用来分析,是否存在无用的语句。整除算法例子输入:in_m是被除数,in_n是除数输出:out_q是商,out_r是余数,整除算法例子,out_q=0;out_r=in_m;While(out_r=in_n)out_q+;out_r=out_r in_n;,信息流关系图,in_m,in_n,1,2,3,4,5,out_q,out_r,1,2,3,4,5,out_q,out_r,in_m,In_n,(1)输入变量影响语句,(2)语句影响到输出变量,(3),输入影响到输出,信息流分析,能够列出对输入变量的所有可能的引用在程序的任何指定点检查其执行可能影响某一输出变量值的语句输入输出关系提供一种检查,看每个输出值是否由相关的输入值,而不是其他值导出,课程目录,白盒测试概述 程序结构分析 逻辑覆盖 结构测试案例分析结构测试工具使用,覆盖准则,测试到什么地步可以结束测试?覆盖准则,被测小程序,if(A 1,被测程序段流程图,A 1&B=0,a,A=2|X 1,X=X/A,F,T,b,c,X=X+1,T,e,F,d,逻辑覆盖测试方法,语句覆盖 分支覆盖 条件覆盖 分支-条件覆盖 路径覆盖,语句覆盖,原理:如果语句中有错误,仅靠观察不执行可能发现不了在测试时,首先设计若干个测试用例,然后运行被测程序,使程序中的每个可执行语句至少执行一次 若干个-尽量少 语句覆盖、程序段覆盖、程序块覆盖,语句覆盖率,语句覆盖率已执行的可执行语句占程序中可执行语句总数的百分比复杂的程序不可能达到语句的完全覆盖语句覆盖率越高越好,语句覆盖测试用例,达到语句覆盖100%的测试用例(路径ace)A=2 B=0 X=3,未达到语句覆盖100%的测试用例(路径abe)A=2 B=1 X=3,语句覆盖的优点,检查所有语句结构简单的代码的测试效果较好容易实现自动测试代码覆盖率高 如果是程序块覆盖,则不涉及程序块中的源代码,语句覆盖不能检查出的错误,条件语句错误“A 1&B=0”-“A 0&B=0”逻辑运算(&、|)错误“A 1&B=0”-“A 1|B=0”“U=A2”-“U=A1”,语句覆盖不能检查出的错误,循环语句错误循环次数错误跳出循环条件错误,语句覆盖不能检查出的错误,循环语句例子for(i=0;i3)statement;,for(i=0;i3,语句覆盖率的问题,能达到很高的语句覆盖率语句覆盖率看似很高,却有严重缺陷 if(x!=1)statements;else statement;,99句,1句,测试用例x=2语句覆盖率99%50%的分支没有达到,分支覆盖,设计若干测试用例,运行被测程序,使得程序中每个判断的真假分支至少经历一次又称判定覆盖while语句、switch语句、异常处理、跳转语句等等同样可以使用分支覆盖来测试分支覆盖率已取过“真”和“假”两个值的判定占程序中所有条件判定个数的百分比,分支覆盖测试用例,路径ace A=2 B=0 X=3 路径abd A=1 B=0 X=1,路径acd A=3 B=0 X=3 路径abe A=2 B=1 X=2,或,分支覆盖的利弊,分支覆盖要比语句覆盖查错能力强一些:执行了分支覆盖,实际也就执行了语句覆盖分支覆盖与语句覆盖存在同样的缺点 不能查出条件语句错误不能查出逻辑运算错误不能查出循环次数错误不能查出循环条件错误,条件覆盖,设计若干测试用例,执行被测程序以后,要使每个判断中的每个条件的可能取值至少满足一次,条件覆盖分析,第1个判断应考虑 A 1,记为T1 A 1,记为T4 X=1,记为F4,条件覆盖测试用例,似乎执行了条件覆盖必然实现了分支覆盖?,条件覆盖测试用例,执行条件覆盖并不能实现分支覆盖,条件覆盖的利弊,能够检查所有的条件错误不能实现对每个分支的检查用例数量的增加a&b&(c|(d&e)(a|b)&(c|d)&e,分支-条件覆盖,设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次,分支-条件覆盖分析,(1)A 1,B=0,记为T1,T2(2)A 1,B!=0,记为T1,F2(3)A 1,记为T3,T4(6)A=2,X 1,记为F3,T4(8)A!=2,X=1,记为F3,F4,分支-条件覆盖测试用例,覆盖了3条路径,漏掉了路径acd,分支-条件覆盖的利弊,既考虑了每一个条件,又考虑了每一个分支,发现错误能力强于分支覆盖和条件覆盖并不能全面覆盖所有路径用例数量的增加,路径覆盖,设计足够多的测试用例,要求覆盖程序中所有可能的路径路径ace 记为L1 abd 记为L2abe 记为L3acd 记为L4,路径覆盖测试用例,基本路径测试方法,路径测试就是从一个程序的入口开始,执行所经历的各个语句的完整过程。从广义的角度讲,任何有关路径分析的测试都可以被称为路径测试。完成路径测试的理想情况是做到路径覆盖,但对于复杂性大的程序要做到所有路径覆盖(测试所有可执行路径)是不可能的。在不能做到所有路径覆盖的前提下,如果某一程序的每一个独立路径都被测试过,那么可以认为程序中的每个语句都已经检验过了,即达到了语句覆盖。这种测试方法就是通常所说的基本路径测试方法。,基本路径测试方法(续),基本路径测试方法是在控制流图的基础上,通过分析控制结构的环形复杂度,导出执行路径的基本集,再从该基本集设计测试用例。基本路径测试方法包括以下4个步骤:(1)画出程序的控制流图。(2)计算程序的环形复杂度,导出程序基本路径集中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。(3)导出基本路径集,确定程序的独立路径。(4)根据(3)中的独立路径,设计测试用例的输入数据和预期输出。,环形复杂度,环形复杂度也称为圈复杂度,它是一种为程序逻辑复杂度提供定量尺度的软件度量。环形复杂度的应用可以将环形复杂度用于基本路径方法,它可以提供:程序基本集的独立路径数量;确保所有语句至少执行一次的测试数量的上界。独立路径是指程序中至少引入了一个新的处理语句集合或一个新条件的程序通路。采用流图的术语,即独立路径必须至少包含一条在本次定义路径之前不曾用过的边。测试可以被设计为基本路径集的执行过程,但基本路径集通常并不唯一。,计算环形复杂度的方法,环形复杂度以图论为基础,为我们提供了非常有用的软件度量。可用如下三种方法之一来计算环形复杂度:控制流图中区域的数量对应于环形复杂度。给定控制流图G的环形复杂度V(G),定义为 V(G)=E-N+2 其中,E是控制流图中边的数量,N是控制流图中的节点数量。给定控制流图G的环形复杂度V(G),也可定义为 V(G)=P+1 其中,P是控制流图G中判定节点的数量。判定节点是输出边至少2条以上的节点。,基本路径测试方法(续),void Sort(int iRecordNum,int iType)1 2 int x=0;3 int y=0;4 while(iRecordNum-0)5 6 If(iType=0)7x=y+2;8 else9 If(iType=1)10 x=y+10;11 else12 x=y+20;13 14,基本路径测试方法(续),画出控制流图:如右图所示计算环形复杂度:10(条边)-8(个节点)+2=4导出独立路径(用语句编号表示)路径1:414 路径2:46714 路径3:4691013414 路径4:4691213414,路径覆盖的利弊,实现了所有路径的测试,发现错误能力强某些条件错误可能无法发现路径数庞大,不可能覆盖所有路径用例数量的增加,循环测试路径覆盖,0次循环检查跳出循环 1次循环检查循环初始值 2次循环检查多次循环 m次循环检查某次循环 最大次数循环、比最大次数多一次、少一次循环检查循环次数边界,简化循环路径,循环使路径数量急剧增长简化无论循环的形式和实际执行循环体的次数多少,只考虑循环一次和0次两种情况进入循环体一次跳出循环体,循环程序流程图,C,B,C,B,(1),(2),简化循环路径图,(1)和(2)都可简化为(3),C,B,最少测试用例数计算,对于具体的程序,至少要设计多少测试用例?估算最少测试用例数帮助执行测试有助于估算测试的时间,结构化程序与N-S图,结构化程序是由3种基本控制结构组成顺序型选择型(条件分支)重复型(循环)测试时考虑的结构顺序型选择型(条件分支),程序结构与测试用例数,并行,串行,程序结构与测试用例数,当程序中判定多于一个时,形成的分支结构可以分为两类:嵌套型分支结构和连锁型分支结构对于嵌套型分支结构,若有n个判定语句,需要n+1个测试用例对于连锁型分支结构,若有n个判定语句,需要有2n个测试用例,覆盖它的2n条路径,最少测试用例数计算实例,计算最少测试用例数,最少测试用例数计算实例,最少测试用例数计算实例,测试覆盖准则,Foster的ESTCA覆盖准则错误敏感测试用例分析(Error Sensitive Test Cases Analysis)问题,ESTCA覆盖准则,对于分支A(,=,=,B的情况分别测试一次对于分支A(,C时,选择A=C小正数当AC时,选择A=C小正数对于测试用例取值,在每个测试用例中尽量不同的值或符号,覆盖率要求,对单元测试来说,语句覆盖和分支覆盖是最基本的要求由于程序中错误(异常)处理工作的重要性以及其结构相对简单,要求错误处理要做到路径覆盖对质量要求高的软件单元,可根据情况提出条件覆盖、分支-条件覆盖以及路径覆盖要求,课程目录,结构测试概述 程序结构分析 逻辑覆盖 结构测试案例分析结构测试工具使用,结构测试案例,求最小值 求数组中的最小值 k=i;for(j=i+1;j=n;j+)if(Aj Ak)k=j;,程序流程图,k=i;j=i+1,j=n?,Aj Ak?,k=j,j+,a,c,b,d,e,f,最少测试用例数,3,测试用例(最少),疑问,测试用例是否足够?循环测试是否足够?在结构复杂,测试用例数非常多的情况下,这些测试用例已经可以满足测试,但并不具有充分性如何达到充分性?测试2次循环,测试用例(充分),课程目录,结构测试概述 程序结构分析 逻辑覆盖 结构测试案例分析结构测试工具使用,目前的白盒测试工具,DevPartner(Compuware)(C+、VC+、.net、java)IBM Rational Purify(C,C+)NUnit(.net)JUnit(java)CppUnit(C+),Devpartner的使用,Compuware 的 DevPartner 家族可以帮助您快速提高 Microsoft、Java 及 64 位应用程序的质量和性能。分为(C/VC/.net)和java两个系列 DevPartner 可以精确报告程序使用内存的情况,识别效率低下的慢速代码,并将性能瓶颈确定到问题所在的源代码行。DevPartner 还可以让您跟踪多个服务器之间的事务,让您获得大量的信息,并且对性能问题进行深入的分析。,Devpartner的使用,DevPartner 8.0 Professional Edition,Devpartner的使用,DevPartner 8.0 Professional Edition,NUnit的使用,NUnit是一个单元测试框架,专门针对于.NET来写的.其实在前面有JUnit(Java),CPPUnit(C+),他们都是xUnit的一员.最初,它是从JUnit而来.现在的版本是2.2.NUnit最初是由James W.Newkirk,Alexei A.Vorontsov 和Philip A.Craig,后来开发团队逐渐庞大起来.在开发过程中,Kent Beck 和Erich Gamma2位牛人也提供了许多帮助.NUnit是xUnit家族种的第4个主打产品,完全由C#语言来编写,并且编写时充分利用了许多.NET的特性,比如反射,客户属性等等.,NUnit的使用,本课总结,结构性测试包含程序结构分析和代码覆盖测试衡量结构性测试的优劣的标准是代码覆盖率使用工具将提高结构性测试的质量和加快测试的时间,课后习题,第一题:总结各种白盒测试方法的应用场景及其优缺点。第二题:使用逻辑覆盖测试方法测试以下程序段:Void Do(int X,int A,int B)if(A1),课后习题,第三题:计算下列程序片段的环形复杂度,使用逻辑覆盖测试方法测试。Void DoWork(int x,int y,int z)int k=0,j=0;if(x3),Thanks!,

    注意事项

    本文(《软件白盒测试》PPT课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开