- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
易禹
2017-5-31
软件测试技术
第四讲:动态测试-白盒测试
最基本的白盒测试 – 插桩法
2
printf
log
System.out.println
在被测程序中插入操作(探测器),实现探查和监控的功能。
功能:检查程序的走向、计数、中间变量、…
基本概念
3
通过运行被测试程序,检查运行结果,分析其性能。
组成部分;
构造测试用例;
运行程序;
分析结果。
动态测试分类
4
单元测试:对软件的各个模块进行测试;
集成测试:检查各单元之间的接口是否正确,非渐增和渐增式测试;
组装测试:单元测试的扩展,若干个单元间数据传输测试;
确认测试:对组装测试结果的检验,用户参与或主导的测试过程;
系统测试:测试系统在真实条件下的运行情况(负载、安全、疲劳等等)。
验收测试:购买者对软件的测试。
手动测试
“白盒”测试
5
与“黑盒”测试对应,在熟悉程序内部逻辑和结构设计的基础上进行的测试。
测试内容:
对程序所有独立执行路径进行一次测试;
对所有逻辑判定的两种情形至少测试一次;
在循环的边界和运行的边界限内执行循环体;
测试内部数据结构的有效性。
“白盒”测试的目标
6
如果要测试下面的函数,需要构造哪些测试用例?
范例程序:
行1 public int func(int a, int b, int x){
行2 if ( (a1) (b==0) )
行3 x = x / a;
行4 if ( (a==2) || (x1) )
行5 x = x + 1;
行6 return x;
行7 }
范例程序的流程图
7
逻辑覆盖的原则
8
是指在熟悉程序内部的逻辑结构基础上的测试方法,又可以细分为:
语句覆盖
保证每一条语句都至少执行一次;
路径为ACE的测试用例(例如:a = 2, b = 0, x = 3);
逻辑覆盖的原则
9
缺点:覆盖不完整,
忽略了IF语句为假的情况;
没有测试IF语句的每一个逻辑表达式。
“白盒”测试之判断覆盖
保证每一个分支至少执行一次;
如两个测试用例(ACD和ABE)
判断覆盖的缺点:覆盖程度不高。
“白盒”测试之条件覆盖
10
每个条件组合获得各种可能的结果;
“白盒”测试之条件覆盖
11
如果选用两个测试用例来覆盖:
a = 2, b = 0, x = 4,路径:ACE;
a = 1, b = 1, x = 1,路径:ABD;
判断覆盖vs. 条件覆盖
12
判断覆盖关心判定表达式的结果,而条件覆盖关心每个表达式的取值,不关心整个判定表达式的最终值;
判断覆盖不能涵盖条件覆盖,反之亦然。
例如,下面的用例仅满足条件覆盖,不满足判断覆盖:
a = 2, b = 0, x = 1,路径:ACE;
a = 1, b = 1, x = 2,路径:ABE;
“白盒”测试之其他覆盖
13
判断/条件覆盖:
判断中每个条件的所有取值至少执行一次,同时每个判断的所有结果至少执行一次。例如:路径:ACE和ABD就满足判断/条件覆盖。
条件组合覆盖:
各种条件组合至少出现一次,如判断(a 1)(b ==0)共有4种组合。
路径覆盖:
所有可能的路径至少执行一次,范例程序共4条路径。
“白盒”测试练习
14
请说出下面的程序最少需要几个测试用例以满足判断覆盖和条件组合覆盖?
行1 public int func(int a, int b, int c){
行2 if ( (ab) (ac) )
行3 a = b + c;
行4 if ( bc )
行5 b = a - c;
行6 return c;
行7 }
参考答案
15
判断覆盖 2
条件组合覆盖 6
动态测试之路径测试
16
是根据程序逻辑所产生的路径设计测试用例的方法,常用的有:
DD(Decision-To-Decision)路径测试:基于路径覆盖的思想,考虑各分支的覆盖情况,压缩串行部分;
DD路径测试压缩图:用来反映程序的分支情况,方便进行测试用例设计;
DD路径据称可以发现约85%的缺陷!
DD路径测试压缩图实例
17
其中:数字表示行号,字母表示压缩合并的节点。
基本路径测试
18
现实程序中可能的路径一般是天文数字!
解决办法:压缩覆盖的路径数到一定限度内,如语句覆盖。
McCabe提出了基本路径测试,保证每条语句至少执行一次,而且判断能取真、假两种值。
McCabe圈复杂度V (G)
V (G) = m − n + 2,其中
m:弧数
n:节点数
McCabe圈复杂度示例
19
右图的圈复杂度是多少?
V (G) = 17 − 13 + 2 = 6,
表示有6条独立的路径。
独立路径与判定节点
20
独立路径:一条完整的路
文档评论(0)