东软软件测试设计培训t6白盒测试_第1页
东软软件测试设计培训t6白盒测试_第2页
东软软件测试设计培训t6白盒测试_第3页
东软软件测试设计培训t6白盒测试_第4页
东软软件测试设计培训t6白盒测试_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、IT Education & TrainingIT Education & IT Education & TrainingTraining 本部分内容是对书上第五章IT Education & IT Education & TrainingTraining 结构性测试基于程序的源代码,因此,通常也称为基于代码测试(code-based testing)或白盒测试技术。 白盒技术的基本思想是把测试对象的美部分代码至少执行一次。设计面向控制流的测试用例,分析程序的逻辑,然后执行测试用例。IT Education & IT Education & TrainingTraining 为了能够明确程序的

2、的执行结果是否会导致失败,测试的期望结果一个是根据需求或规格说明来确定的,而不是代码本身。 白盒测试技术主要是检查测试对象的语句,其基本目标是在测试时实现事先定义的语句覆盖率,比如执行程序中所有可能的语句。IT Education & IT Education & TrainingTraining为什么要进行白盒测试 从一个比喻开始 白盒测试是高效测试 白盒测试能彻底解决编码阶段引入的问题 IT Education & IT Education & TrainingTraining白盒测试主要技术1. 语句覆盖2. 判定覆盖3. 条件覆盖4. 判定/条件覆盖5. 条件组合覆盖6. 路径覆盖IT

3、 Education & IT Education & TrainingTraining白盒测试举例:例例: :PROCEDURE SAMPAL (A,B:REAL; VAR X:REAL); BEGIN IF (A1) AND (B=0) THEN X:=X/A IF (A=2) OR (X1) THEN X:=X+1 END; IT Education & IT Education & TrainingTraining举例:举例:开始开始(A1) AND (B=0)(A1) AND (B=0)(A=2) OR (X1)(A=2) OR (X1)返回返回X=X/AX=X/AX=X+1X=X+

4、1FFTTabdce条条件件判判断断IT Education & IT Education & TrainingTraining(1)(1)语句覆盖语句覆盖 使程序中每个语句至少执行一次开始开始(A1) AND (B=0)(A1) AND (B=0)(A=2) OR (X1)(A=2) OR (X1)返回返回X=X/AX=X/AX=X+1X=X+1F FF FT TT Ta ab bd dc ce e1 12 23 32 2IT Education & IT Education & TrainingTraining(1)语句覆盖只需设计一个测试用例:输入数据:A=2,B=0,X=4即达到了语句

5、覆盖;语句覆盖是最弱的逻辑覆盖用例编号测试用例(A/B/X)覆盖语句预期结果 实际结果TC12,0,41,2,3,4X=3IT Education & IT Education & TrainingTraining(2)判定覆盖(分支覆盖) 使每个判定的真假分支都至少执行一次开始开始(A1) AND (B=0)(A1) AND (B=0)(A=2) OR (X1)(A=2) OR (X1)返回返回X=X/AX=X/AX=X+1X=X+1FFTTabdceIT Education & IT Education & TrainingTraining(2)判定覆盖(分支覆盖)例:可设计两组测试用例:

6、 A=3,B=0 ,X=3 可覆盖c、d分支 A=2,B=1 ,X=1 可覆盖b、e分支 两组测试用例可覆盖所有判定的真假分支判定覆盖仍是弱的逻辑覆盖用例编号测试用例(A/B/X)覆盖分支预期结果实际结果TC13,0,3c,dX=1TC22,1,1b,e X=2IT Education & IT Education & TrainingTraining(2)判定覆盖(分支覆盖)步骤:1. 识别并标识所有输入;2. 识别并标识所有判断;3. 取不同的输入组合构成测试用例,并给出预期结果用例编号测试用例(A/B/X)覆盖分支预期结果实际结果TC13,0,3c,dX=1TC22,1,1b,e X=2

7、IT Education & IT Education & TrainingTraining(3)条件覆盖 使每个判定的每个条件的可能取值至少执行一次第一判定表达式:设条件 A1 取真 记为 T1 假 F1 条件 B=0 取真 记为 T2 假 F2第二判定表达式:设条件 A=2 取真 记为 T3 假 F3 条件 X1 取真 记为 T4 假 F4IT Education & IT Education & TrainingTraining(3)条件覆盖开始开始( (A1A1) AND () AND (B=0B=0) )( (A=2A=2) OR () OR (X1X1) )返回返回X=X/AX=X

8、/AX=X+1X=X+1FFTTabdce条件IT Education & IT Education & TrainingTraining(3)条件覆盖开始开始( (A1A1) AND () AND (B=0B=0) )( (A=2A=2) OR () OR (X1X1) )返回返回X=X/AX=X/AX=X+1X=X+1FFTTabdce条件满足不满足A1T1F1B=0T2F2A=2T3F3X1T4F4IT Education & IT Education & TrainingTraining(3)条件覆盖测试用例ABX 通过路径满足的条件覆盖分支1 0 3abeF1,T2,F3,T4b,e

9、2 1 1abeT1,F2,T3,F4b,e 两个测试用例覆盖了四个条件八种可能取值。未覆盖c、d分支,不满足判定覆盖的要求.条件覆盖不一定包含判定覆盖判定覆盖也不一定包含条件覆盖IT Education & IT Education & TrainingTraining(3)条件覆盖步骤:1. 识别并标识所有输入;2. 识别并标识所有条件;3. 取不同的输入组合构成测试用例,并给出预期结果用例编号用例编号 测试用例测试用例ABXABX 通过路径通过路径满足的条件满足的条件覆盖分支覆盖分支TC1TC11 0 31 0 3abeabeF1,T2,F3,T4F1,T2,F3,T4b b, ,e e

10、TC2TC22 1 12 1 1abeabeT1,F2,T3,F4T1,F2,T3,F4b b, ,e eIT Education & IT Education & TrainingTraining(4)判定/条件覆盖 选取足够多的测试用例,使判断中的每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次.IT Education & IT Education & TrainingTraining(4)判定/条件覆盖开始开始( (A1A1) AND () AND (B=0B=0) )( (A=2A=2) OR () OR (X1X1) )返回返回X=X/AX=X/A

11、X=X+1X=X+1F FF FT TT Ta ab bd dc ce e条件满足不满足A1T1F1B=0T2F2A=2T3F3X1T4F4判断:判断:b. c. d. e.b. c. d. e.IT Education & IT Education & TrainingTraining(4)判定/条件覆盖用例编号用例编号 测试用例测试用例ABXABX 通过路径通过路径满足的条件满足的条件覆盖分支覆盖分支TC1TC12 0 42 0 4aceaceT1,T2,T3,T4T1,T2,T3,T4c c, ,e eTC2TC21 1 11 1 1abdabdF1,F2,F3,F4F1,F2,F3,F

12、4b b, ,d d能同时满足判定、条件两种覆盖标准。IT Education & IT Education & TrainingTraining(5)条件组合覆盖 所有可能的条件取值组合至少执行一次 A1, B=0T1T2 A1, B0T1F2 A1, B=0F1T2 A1, B0F1F2 A=2, X1T3T4 A=2, X1T3F4 A2, X1F3T4 A2, X1F3F4开始( (A1A1) AND () AND (B=0B=0) )( (A=2A=2) OR () OR (X1X1) )返回X=X/AX=X/AX=X+1X=X+1FFTTbdceIT Education & IT

13、Education & TrainingTraining(5)条件组合覆盖用例编号用例编号 测试用例测试用例ABXABX 通过路径通过路径满足的条件满足的条件覆盖分支覆盖分支TC1TC12 0 42 0 4aceaceT1,T2,T3,T4T1,T2,T3,T4c c, ,e eTC2TC22 1 12 1 1abeabeT1,F2,T3,F4T1,F2,T3,F4b b, ,e eTC3TC31 0 21 0 2abdabdF1,T2,F3,T4F1,T2,F3,T4b b, ,d dTC4TC41 1 11 1 1abdabdF1,F2,F3,F4F1,F2,F3,F4b b, ,d dI

14、T Education & IT Education & TrainingTraining课上练习对该程序进行以下白盒测试: 语句覆盖 判断覆盖 条件覆盖 条件判断覆盖 条件组合覆盖结果以电子文档形式提交提交截止时间:4月30日源代码见test1.javaIT Education & IT Education & TrainingTraining开始(A1) AND (B=0)(A=2) OR (X1)返回X=X/AX=X+1FFTTabdce(6)DD路径覆盖1.abd2.ace3.abe4.acdIT Education & IT Education & TrainingTraining(

15、6)DD路径覆盖用例编号用例编号 测试用例测试用例ABXABX 通过路径通过路径满足的条件满足的条件覆盖分支覆盖分支TC1TC12 0 42 0 4aceaceT1,T2,T3,T4T1,T2,T3,T4c c, ,e eTC2TC23 0 13 0 1acdacdT1,T2,F3,F4T1,T2,F3,F4c c, ,d dTC3TC31 1 21 1 2abeabeF1,F2,F3,T4F1,F2,F3,T4b b, ,e eTC4TC41 1 11 1 1abdabdF1,F2,F3,F4F1,F2,F3,F4b b, ,d d开始开始(A1) AND (B=0)(A1) AND (B=

16、0)(A=2) OR (X1)(A=2) OR (X1)返回返回X=X/AX=X/AX=X+1X=X+1FFTTabdceIT Education & IT Education & TrainingTraining控制流图(CFG Control Flow Graph) 对简单的程序流程而言,可通过以上方法确定程序的路径有多少条,但对复杂的程序,必须通过程序的控制流图来确定程序的路径。IT Education & IT Education & TrainingTraining控制流图 控制流图分析是描述程序控制流的一种图示方法。 在控制流图中,每一个圆称为流图的结点,代表一条或多条语句。流图中

17、的箭头称为边或连接,代表控制流。12,34,567891011区域区域节点节点边边控制流图R1R4R2R3IT Education & IT Education & TrainingTraining控制流图的基本符号顺序判断WhileuntilcaseIT Education & IT Education & TrainingTraining 通过控制流图的清楚描述,程序结构顺序很容易理解,同时可以发现一些可能的控制流异常,如跳出循环体,或程序结构有多个出口。IT Education & IT Education & TrainingTraining将流程图映射成控制流图12345687910

18、11程序流程图12,34,567891011区域区域节点节点边边控制流图R1R4R2R3IT Education & IT Education & TrainingTraining3.5 圈复杂度 圈复杂度也称圈数、环路复杂度、回路复杂度 圈复杂度可用来估算程序代码的可测试性和可维护性 圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。独立路径必须包含一条在定义之前不曾用到的边。 圈复杂度计算的基础是程序控制流图IT Education & IT Education & TrainingTraining独立

19、路径 所谓线性独立路径是指这样的路径,该路径至少引入程序的一个新处理语句集合或一个新条件。用控制流图术语描述,独立路径中至少包含一条在定义该路径之前不曾用到的边。IT Education & IT Education & TrainingTraining圈复杂度的计算(1) V(G) = e n + 2其中V(G)为控制流图G的圈复杂度,e为控制流图中的边,n为控制流图的节点数。 V(G) = 11 9 + 2 = 4IT Education & IT Education & TrainingTraining(2) 计算独立路径数,从控制流图来看,一条独立路径就是包含一条在其他独立路径中从没有

20、用过的边的路径。 IT Education & IT Education & TrainingTraining 方法三:计算控制流图中区域的数量,简单来说就是闭合环路+外面的区域。这个题是4+1=5 IT Education & IT Education & TrainingTraining圈复杂度的计算方法 基本上,圈复杂度的计算方法是向以下项加 1: 分支数(如 if、while 和 do) switch 中的 case 语句数摘自- MSDN Visual Studio Team System 2008 Development Developer Center IT Education

21、& IT Education & TrainingTraining基于圈复杂度的风险分析圈复杂度与之联系的风险1 10低风险的简单程序11 20中等的复杂度和风险21 50高复杂度和风险50+非常高的风险/不可测试IT Education & IT Education & TrainingTraining随堂练习 计算以下控制流图的圈复杂度IT Education & IT Education & TrainingTraining基本路径法 绘制程序的控制流图 计算程序的圈复杂度,导出独立路径条数 确定现行独立路径的基本集合 设计可强制执行基本集合中每一条路径的测试用例IT Education

22、 & IT Education & TrainingTraining随堂练习1. 为以下代码画出控制流图,并计算圈复杂度void Method(bool condition) if (condition) Console.WriteLine(Hello World!); IT Education & IT Education & TrainingTraining随堂练习2. 为以下代码画出控制流图,并计算圈复杂度void CycleSampleTwo(int value) if (value != 0) if (value 25 age25 C C2 2: : sex=Msex=MC C3 3

23、:age50 :age50 C C4 4: comm2000.00: comm2000.00C C1 1C C3 3333638C C2 2C C4 4IT Education & IT Education & TrainingTraining 计算圈复杂度 V(G) = 4 + 1由此得出共5条独立路径IT Education & IT Education & TrainingTraining 确定现行独立路径的基本集合P1: c1, c2, c3, 36, 38P2: c1, c2, c3, c4, 38P3: c1, c2, 33, c3, c4, 38P4: c1, c2, c3, c

24、4, 36, 38P5: c1, c3, c4, 38IT Education & IT Education & TrainingTraining 为每条独立路径设计测试用例独立路径集合:P1: c1, c2, c3, 36, 38P2: c1, c2, c3, c4, 38P3: c1, c2, 33, c3, c4, 38P4: c1, c2, c3, c4, 36, 38P5: c1, c3, c4, 38测试用例AgeSexCommP155F1500P230F1500P330M1500P435F2500P520M1500IT Education & IT Education & Tra

25、iningTraining实验6:DD路径测试练习-test3.java分段统计分数,分数段划法: 小于60分段:0 59 60分段:60 69 70分段:70 79 80分段:80 89 90分段:90 100提交截止时间:5月7日 提交形式:电子版各班收齐后打包发我邮箱IT Education & IT Education & TrainingTraining数据流分析(data flow analysis) 数据流分析是指通过在程序代码经过的路径上检查数据的用法而发现缺陷的一种测试方法。 具体而言,就是在不运行程序的情况下,对变量的定义、引用进行分析,以检测数据的赋值与引用之间是否出现了

26、不合理的现象,如引用未赋值的变量,对以前未曾引用变量的再次赋值等数据流异常现象。IT Education & IT Education & TrainingTraining数据流分析方法将程序中变量的出现分为变量的定义和引用。 若语句k执行执行时改变了程序变量v的值,则称k定义了变量v; 输入语句、赋值语句、循环控制语句和函数调用都是变量定义节点语句的例子,如果执行对应这种语句的节点,那么与该变量关联的存储单元的内容就会改变IT Education & IT Education & TrainingTraining 若语句k执行时引用了变量v的值,则称k引用了变量v. 输出语句、赋值语句、条件

27、语句、循环控制语句和过程调用,都是引用节点语句的例子,如果执行对应这种语句的节点,那么与该变量关联的存储单元的内容会保持不变IT Education & IT Education & TrainingTraining例如 语句 V=Y+Z 定义了变量V,引用了变量Y和Z 语句 if (YZ) then 则引用了变量Y和Z 输入语句 input X 定义了变量X 输出语句 output Y 则引用了变量YIT Education & IT Education & TrainingTraining对以上变量的定义及引用做如下定义: 已定义的(d):变量已经赋值 引用的(r):读取或使用变量的值 没

28、有定义的(u):变量没有定义具体的值IT Education & IT Education & TrainingTraining数据异常的三种情况 ur异常:程序路径上读取了没有定义的变量 du异常:变量被赋值,但这个变量已经变成无效的或者未定义的状态,同时未被引用 dd异常:变量接收了第二个值,同时,第一个值未被使用IT Education & IT Education & TrainingTraining例:函数exchange(int& Min, int& Max)void exchange(int& Min, int& Max) Int Help;if (Min Max) Max = Help;Max = Min;Help = Mi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论