为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

白盒测试

2013-10-08 50页 ppt 2MB 49阅读

用户头像

is_048694

暂无简介

举报
白盒测试null第三部分 白盒测试第三部分 白盒测试在本章中,我们将学习: 静态白盒测试 动态白盒测试 结构性测试案例 结构测试定义 结构测试定义 把测试对象看做一个透明的盒子 白盒测试是根据被测程序的内部结构设计测试用例并完成测试的一种测试方法 白盒测试或逻辑驱动测试 基于一个应用代码的内部逻辑知识,测试覆盖全部代码、分支、路径和条件结构测试(白盒测试)特点结构测试(白盒测试)特点可以构成测试数据使特定程序部分得到测试 有一定的充分性度量手段 可获得较多工具支持 通常只用于单元测试结构测试的方法结构测试的方法静态...
白盒测试
null第三部分 白盒测试第三部分 白盒测试在本章中,我们将学习: 静态白盒测试 动态白盒测试 结构性测试案例 结构测试定义 结构测试定义 把测试对象看做一个透明的盒子 白盒测试是根据被测程序的内部结构设计测试用例并完成测试的一种测试方法 白盒测试或逻辑驱动测试 基于一个应用代码的内部逻辑知识,测试覆盖全部代码、分支、路径和条件结构测试(白盒测试)特点结构测试(白盒测试)特点可以构成测试数据使特定程序部分得到测试 有一定的充分性度量手段 可获得较多工具支持 通常只用于单元测试结构测试的方法结构测试的方法静态测试方法: 程序结构分析 正式审查 同事审查 公开陈述 检验动态测试方法: 逻辑覆盖 语句覆盖 分支覆盖 条件覆盖 分支-条件覆盖 路径覆盖通用代码审查清单通用代码审查清单数据引用错误 数据声明错误 计算错误 比较错误 控制流程错误 子程序参数错误 输入、输出错误 其他错误代码覆盖率代码覆盖率采用白盒法进行测试时,考虑的是测试用例对程序内部逻辑的覆盖程度 最彻底的白盒法是覆盖程序中的每一条路径,但这往往无法实现 采用其它一些来量度覆盖的程度,并希望覆盖程度尽可能高些逻辑覆盖法逻辑覆盖法白盒测试中的逻辑覆盖方法有以下6种: 语句覆盖 判定覆盖 条件覆盖 判定-条件覆盖 条件组合覆盖 路径覆盖例:实现一个简单的数学运算例:实现一个简单的数学运算 Dim a,b As Integer Dim c As Double If (a>0 And b>0) Then c=c/a End if If (a>1 or c>1) Then c=c+1 End if c=b+c1.语句覆盖1.语句覆盖基本思想是:设计若干测试用例,运行被测程序,使程序中每个可执行语句至少执行一次。11.语句覆盖……续11.语句覆盖……续1只需设计一个测试用例:a=2,b=1,c=6;即达到了语句覆盖。1.语句覆盖……续21.语句覆盖……续2【优点】 :可以很直观地从源代码得到测试用例,无须细分每条判定表达式。 【缺点】 :由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件是无法测试的。如在多分支的逻辑运算中无法全面的考虑。语句覆盖是最弱的逻辑覆盖。 2.判定覆盖2.判定覆盖基本思想是:设计若干测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。12.判定覆盖……续12.判定覆盖……续1a=2,b=1 ,c=6可覆盖判断M的Y分支和判断Q的Y分支; a=-2,b=-1 ,c=-3可覆盖判断M的N分支和判断Q的N分支 。 这两组测试用例可覆盖所有判定的真假分支。 判断M判断Q2.判定覆盖……续22.判定覆盖……续2a=1,b=1 ,c=-3 可覆盖判断M的Y分支和判断Q的N分支 ; a=1,b=-2 ,c=3可覆盖判断M的N分支和判断Q的Y分支 ; 同样的这两组测试用例也可覆盖所有判定的真假分支。 判断M判断Q2.判定覆盖……续32.判定覆盖……续3【优点】:判定覆盖具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。 【缺点】:往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。 3.条件覆盖3.条件覆盖基本思想是:设计若干测试用例,执行被测程序以后要使每个判断中每个条件的可能取值至少满足一次。13.条件覆盖……续13.条件覆盖……续1判断M表达式: 设条件 a>0 取真 记为 T1 假 F1 条件 b>0 取真 记为 T2 假 F2 判断Q表达式: 设条件 a>1 取真 记为 T3 假 F3 条件 c>1 取真 记为 T4 假 F4 判断M判断Q3.条件覆盖……续23.条件覆盖……续2它覆盖了判定M的N分支和判断Q的Y分支。我们用条件覆盖设计的思想就是让测试用例能覆盖 T1、T2、T3、T4、F1、F2、F3、F4判断M判断Q3.条件覆盖……续33.条件覆盖……续3【优点】:增加了对条件判定情况的测试,增加了测试路径。 【缺点】:条件覆盖不一定包含判定覆盖。例如,我们刚才设计的用例就没有覆盖判断M的Y分支和判断Q的N分支。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。 4.判定-条件覆盖4.判定-条件覆盖基本思想是:设计足够的测试用例,使得判断条件中的所有条件可能至少执行一次取值,同时,所有判断的可能结果至少执行一次。14.判定-条件覆盖……续14.判定-条件覆盖……续1 按照判定-条件覆盖的,我们设计的测试用例要满足如下条件: 所有条件可能至少执行一次取值; 所有判断的可能结果至少执行一次。 要满足T1、T2、 T3 、T4 F1、 F2 、F3、F44.判定-条件覆盖……续24.判定-条件覆盖……续2要满足T1、T2、 T3 、T4 F1、 F2 、F3、F44.判定-条件覆盖……续34.判定-条件覆盖……续3【优点】 :能同时满足判定、条件两种覆盖标准。 【缺点】 :判定/条件覆盖准则的缺点是未考虑条件的组合情况。 5.条件组合覆盖5.条件组合覆盖基本思想是:设计足够的测试用例,使得所有可能的条件取值组合至少执行一次15.条件组合覆盖……续15.条件组合覆盖……续1按照条件组合覆盖的基本思想,对于前面的例子,我们把每个判断中的所有条件进行组合,设计组合条件如表所示,而我们设计的测试用例就要包括所有的组合条件。5.条件组合覆盖……续25.条件组合覆盖……续2要满足1、2、3、4、5、6、7、8条件组合5.条件组合覆盖……续35.条件组合覆盖……续3【优点】 :条件组合覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。 【缺点】 :线性地增加了测试用例的数量。 6.路径覆盖6.路径覆盖基本思想是:设计所有的测试用例,来覆盖程序中的所有可能的执行路径 。16.路径覆盖……续16.路径覆盖……续16.路径覆盖……续26.路径覆盖……续2【优点】 :这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都广。 【缺点】 :需要设计大量、复杂的测试用例,使得工作量呈指数级增长,不见得把所有的条件组合都覆盖。null 从前面的例子我们可以看到,采用任何一种覆盖方法都不能满足我们的要求,所以,在实际的测试用例设计过程中,可以根据需要将不同的覆盖方法组合起来使用,以实现最佳的测试用例设计 。条件组合覆盖结合路径覆盖条件组合覆盖结合路径覆盖基本路径测试方法基本路径测试方法路径测试就是从一个程序的入口开始,执行所经历的各个语句的完整过程。从广义的角度讲,任何有关路径分析的测试都可以被称为路径测试。 完成路径测试的理想情况是做到路径覆盖,但对于复杂性大的程序要做到所有路径覆盖(测试所有可执行路径)是不可能的。 在不能做到所有路径覆盖的前提下,如果某一程序的每一个独立路径都被测试过,那么可以认为程序中的每个语句都已经检验过了,即达到了语句覆盖。这种测试方法就是通常所说的基本路径测试方法。 基本路径测试方法(续)基本路径测试方法(续)基本路径测试方法是在控制流图的基础上,通过分析控制结构的环形复杂度,导出执行路径的基本集,再从该基本集设计测试用例。基本路径测试方法包括以下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 ) 7 x=y+2; 8 else 9 If ( iType==1 ) 10 x=y+10; 11 else 12 x=y+20; 13 } 14 }基本路径测试方法(续)基本路径测试方法(续)画出控制流图: 如右图所示 计算环形复杂度: 10(条边)- 8(个节点)+ 2 = 4 导出独立路径(用语句编号表示) 路径1:4→14 路径2:4→6→7→14 路径3:4→6→9→10→13→4→14 路径4:4→6→9→12→13→4→14路径覆盖的利弊路径覆盖的利弊实现了所有路径的测试,发现错误能力强 某些条件错误可能无法发现 路径数庞大,不可能覆盖所有路径 用例数量的增加循环测试路径覆盖循环测试路径覆盖0次循环 检查跳出循环 1次循环 检查循环初始值 2次循环 检查多次循环 m次循环 检查某次循环 最大次数循环、比最大次数多一次、少一次循环 检查循环次数边界 简化循环路径简化循环路径循环使路径数量急剧增长 简化 无论循环的形式和实际执行循环体的次数多少,只考虑循环一次和0次 两种情况 进入循环体一次 跳出循环体循环程序流程图循环程序流程图CBCB(1)(2)简化循环路径图简化循环路径图(1)和(2)都可简化为(3)CB最少测试用例数计算最少测试用例数计算对于具体的程序,至少要设计多少测试用例? 估算最少测试用例数 帮助执行测试 有助于估算测试的时间结构化程序与N-S图结构化程序与N-S图结构化程序是由3种基本控制结构组成 顺序型 选择型(条件分支) 重复型(循环) 测试时考虑的结构 顺序型 选择型(条件分支)程序结构与测试用例数程序结构与测试用例数并行串行程序结构与测试用例数程序结构与测试用例数当程序中判定多于一个时,形成的分支结构可以分为两类:嵌套型分支结构和连锁型分支结构 对于嵌套型分支结构,若有n个判定语句,需要n+1个测试用例 对于连锁型分支结构,若有n个判定语句,需要有2n个测试用例,覆盖它的2n条路径最少测试用例数计算实例最少测试用例数计算实例计算最少测试用例数最少测试用例数计算实例最少测试用例数计算实例最少测试用例数计算实例最少测试用例数计算实例测试覆盖准则测试覆盖准则Foster的ESTCA覆盖准则 错误敏感测试用例分析(Error Sensitive Test Cases Analysis) 问题ESTCA覆盖准则ESTCA覆盖准则对于分支A(>, = , <, >=, <=)B,测试时应选择AB的情况分别测试一次 对于分支A (>, <)C,A是变量,C是常量 当A>C时,选择A=C+小正数 当A报告
程序使用内存的情况,识别效率低下的慢速代码,并将性能瓶颈确定到问题所在的源代码行。 DevPartner 还可以让您跟踪多个服务器之间的事务,让您获得大量的信息,并且对性能问题进行深入的分析。 Devpartner的使用 Devpartner的使用 DevPartner 8.0 Professional Edition Devpartner的使用 Devpartner的使用 DevPartner 8.0 Professional Edition NUnit的使用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的使用NUnit的使用本课本课总结结构性测试包含程序结构分析和代码覆盖测试 衡量结构性测试的优劣的标准是代码覆盖率 使用工具将提高结构性测试的质量和加快测试的时间课后习题课后习题第一题: 总结各种白盒测试方法的应用场景及其优缺点。 第二题: 使用逻辑覆盖测试方法测试以下程序段: Void Do(int X, int A, int B){ if(A>1)&&(B==0)) X=X/A; if(A==2)||(X>1) X=X+1; } 课后习题课后习题第三题: 计算下列程序片段的环形复杂度,使用逻辑覆盖测试方法测试。 Void DoWork(int x,int y, int z){ int k=0,j=0; if((x>3)&&(z<10)) {k=x*y-1; j=sqrt(k);} if((x==4)||(y>5)) j=x*y+10; j=j%3; }Thanks!Thanks!
/
本文档为【白盒测试】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索