• 14
  • 14
分享
  • 白盒测试的基本路径测试法——软件测试圈
  • 饭团🍙 2021-10-29 13:53:18 字数 2018 阅读 937 收藏 14

一、白盒测试的主要测试方法

1、代码检查法;

2、静态结构分析法;

3、静态质量度量法;

4、逻辑覆盖法;

5、基本路径测试法(应用最广泛);

6、域测试7、符号测试;

8、Z路径覆盖;

9、程序变异。

二、基本路径测试法

1、定义:基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。

设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。

2、基本路径测试法的基本步骤

  • 程序的控制流图:描述程序控制流的一种图示方法。

  • 程序圈复杂度:McCabe复杂性度量。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。

  • 导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果。

  • 准备测试用例:确保基本路径集中的每一条路径的执行。

3、基本路径测试法的工具方法

  • 图形矩阵:是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个基本路径集。

三、程序的控制流图

控制流程图是描述程序控制流的一种图示方法。圆圈称为控制流图的一个结点,表示一个或多个无分支的语句或源程序语句流图只有二种图形符号:图中的每一个圆称为流图的结点,代表一条或多条语句。流图中的箭头称为边或连接,代表控制流。任何过程设计都要被翻译成控制流图。

1.png

1、根据程序流程图化成控制流图,在将程序流程图简化成控制流图时,应注意:

  • 在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。

  • 边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。

如下页图所示:

2.png

如果判断中的条件表达式是由一个或多个逻辑运算符 (OR, AND, NAND, NOR) 连接的复

合条件表达式,则需要改为一系列只有单条件的嵌套的判断。
例如:

 1 if a or b
 2 x
 3 else
 4 y

对应的逻辑为:

3.png

独立路径:至少沿一条新的边移动的路径

4.png

2、实例说明基本路径测试法的步骤:

第一步:画出控制流图

流程图用来描述程序控制结构。可将流程图映射到一个相应的流图(假设流程图的菱形决定框中不包含复合条件)。在流图中,每一个圆,称为流图的结点,代表一个或多个语句。一个处理方框序列和一个菱形决测框可被映射为一个结点,流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。一条边必须终止于 一个结点,即使该结点并不代表任何语句(例如:if-else-then结构)。由边和结点限定的范围称为区域。计算区域时应包括图外部的范围。

例如:用如下基本路径测试法进行测试

Void Sort(int iRecordNum, int iType)
{                                                      
int x=0;
Int y=0;    
while ( iRecordNum-->0)
{
    If(0==iType)
{x=y+2;break;} 
else 
if(1==iType) 
x=y+10;
else
x=y+20;
}
}

画出其程序流程图和对应的控制流图如下:

5.png

第二步:计算圈复杂度

圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。独立路径必须包含一条在定义之前不曾用到的边。

有以下三种方法计算圈复杂度:
A、流图中区域的数量对应于环型的复杂性;
B、给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;

C、给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。

第三步:导出测试用例  

根据上面的计算方法,可得出四个独立的路径。(一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。V(G)值正好等于该程序的独立路径的条数。

路径1:4-14

路径2:4-6-7-14

路径3:4-6-8-10-13-4-14

路径4:4-6-8-11-13-4-14

根据上面的独立路径,去设计输入数据,使程序分别执行到上面四条路径。

第四步:准备测试用例

为了确保基本路径集中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到,满足上面例子基本路径集的测试用例是:

路径1:  4-14

输入数据:iRecordNum=0,或者取iRecordNum<0的某一个值

预期结果:x=0

路径2:  4-6-7-14

输入数据:iRecordNum=1,iType=0

预期结果:x=2

路径3 :  4-6-8-10-13-4-14

输入数据:iRecordNum=1,iType=1

预期结果:x=10

路径2:  4-6-8-11-13-4-14

输入数据:iRecordNum=1,iType=2

预期结果:x=20

 

作者:佚名

来源:百度文库

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   前言  应用系统性能测试过程中,性能优化是绕不开的话题,对测试人员而言,性能优化的第一站就是SQL语句的优化与分析。因此本文主要以MySQL数据库为例,介绍常见的慢查询SQL语句执行效率分析与优化方法和简单示例,为致力于应用系统性能优化的从业人员提供一定参考和借鉴。  1 慢查询定位  (1)慢查询  慢查询SQL语句,即在数据库执行耗时超过一定阈值的SQL语句,常见阈值为500~2000ms,可根据业务需求适当调整。如存在大量慢查询语句会直接导致系统响应时间变长,降低用户体验感,因此慢查询的定位与优化是SQL语句优化的主要内容。  慢查询调优的第一步是准确定位慢查询语句,需要数据库开启慢...
            0 0 2031
            分享
          • fiddler抓包原理注意:Fiddler是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。当Fiddler退出的时候它会自动注销,这样就不会影响别的程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler。配置打开FiddlerTool->FiddlerOptions->HTTPS。(配置完后记得要重启Fiddler)。选中"DecrptHTTPStraffic",Fiddler就可以截获HTTPS请求,第一次会弹出证书安装提示,若没有弹出提示,勾...
            10 11 5057
            分享
          •   “为什么入软件这行?”很多人问我,“一个女孩子做这个不太好,做不长久,特别年龄大了更不好做。”  我只是很随意的说专业对口,我能说是看上这个行业的高工资和技术范么,这样太俗了,然而就是这个俗气的理由让我走上这一条路,且想一直走下去。为什么呢?  一是因为做了这么久的软件测试,已经爱上它了,这大概就是日久生情吧(偷笑),现在这个对我来说不仅仅是一份工作,还是一份兴趣爱好。  二是性格使然,只有这份默默劳作不需要太多交流的工作比较符合我的性格。  三这也是我在这么多年的工作生涯中不断摸索出来的一条路,一条生活之路吧。  回想刚毕业那会懵懵懂懂的,啥也不懂,还记得刚入公司很幸运进了公司的实验室,...
            0 0 997
            分享
          •   大多数的性能测试工作人员分为以下三个阶段:  1、出了问题看资源,资源占用如果很高,报以窃喜的心态,恩,发现了,原理是资源瓶颈。  2、资源没有出现瓶颈,通过一些技术手段分析,发现是组件的配置文件有问题,例如:server的并发策略有问题,带宽有问题,找到了线路短板性能中的短板,到了这个阶段在我看来是比较牛的测试。  3、以上均无问题的情况下,考虑数据结构和算法我个人接触到的来说,现在大多数的人员都是在仰望第二阶段,摸索第三阶段,希望从代码级发现出性能的问题,进行问题的发现和解决,也符合我们的bug越早发现修复的成本越低的理论。同时,也是一名性能测试工程师高薪的象征。  性能测试调优哪些方...
            0 0 805
            分享
          • 软件测试概念:一、什么是软件测试?1、软件测试是指使用人工或者自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。二、一般的软件测试的应用场景有:APP、代码、WEB和小程序。三、软件测试的发展历程:软件测试从开始到现在,已经经历了三个阶段的发展,到现在正式第三阶段到第四阶段的过渡期;第一阶段:定义的软件测试,是去证明软件是正确的。在这种情况下,导致了很多异常的情况根本无法被发现,软件的质量都比较差,不稳定,很容易出问题;第二阶段:软件测试是去证明软件是错误的。软件测试就是去找软件存在的问题,虽然现在软件测试已经发展到第三阶段很久了,但是...
            0 0 752
            分享
      • 51testing软件测试圈微信