白盒测试复习重点
创始人
2024-05-28 10:30:51
0

白盒测试

    • 白盒测试之逻辑覆盖法
      • 逻辑覆盖用例设计方法
        • 1.语句覆盖
        • 2.判定覆盖(分支覆盖)
        • 3.条件覆盖
        • 4.判定条件覆盖
        • 5.条件组合覆盖
        • 6.路径覆盖
    • 白盒测试之基本路径测试法
      • 基本路径测试方法的步骤
        • 1.根据程序流程图画控制流图
        • 2.计算圈复杂度
        • 3.导出测试用例
        • 4.准备测试用例
        • 5.例题
    • 白盒测试总结

按照测试方法,测试可以分为白盒测试黑盒测试两种。

白盒测试也称结构测试或逻辑驱动测试,是把测试对象看作一个透明白色的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
所以白盒测试是一种基于代码的测试,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
白盒测试一般是开发做单元测试用,但是也有是测试自己做的,那么对测试能力要求比较高。

白盒测试之逻辑覆盖法

逻辑覆盖用例设计方法

白盒测试的逻辑覆盖基本方法主要有以下6种,接下来我们就来分析一下每种方法的原理,以及他们之间的区别:

  • 语句覆盖
  • 分支覆盖
  • 条件覆盖
  • 判定条件覆盖
  • 路径覆盖
  • 组合覆盖

强度由低到高:语句覆盖、分支覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。

接来下的学习我们使用如下案例

if A and B then Action1;
if C or D then Action2;

1.语句覆盖

语句覆盖,顾明思意就是针对代码语句,我们设计出来的测试用例要保证程序中的每一个语句至少被执行一次。

通常语句覆盖被认为是“最弱的覆盖”,因为它仅仅考虑对代码中的执行语句进行覆盖而没有考虑各种条件和分支,比较难以发现代码中的问题。

案例

if A and B then Action1;
if C or D then Action2;

语句覆盖需使得每个语句(本案例中有两个判断语句)都被执行一次,即 A and B = true, C or D = true

上例中,设计一条测试用例即可:A=true B=true C=true

2.判定覆盖(分支覆盖)

判定覆盖(分支覆盖)︰使得程序中每个判断的取真和取假至少经历一次,即判断的真假均被满足。

案例

if A and B then Action1;
if C or D then Action2;

分支覆盖需使得程序中的每个判断(本案例中有两个判断)的取真和取假至少经历一次
A and B == True , Flase
C or D == True , Flase

A and B == True : A = true B = true
A and B == Flase :A = true B = flase
C or D == True : C = true D= flase
C or D == Flase : C = flase D= flase

上例中,两条测试用例即可:
testcase1: A=true,B=true,C= true,D=false
testcase2: A=true,B=false,C = false,D=false.

3.条件覆盖

条件覆盖:条件覆盖要求所设计的测试用例能使每个判定中的每一个条件都获得可能的取值,即每个条件至少有一次真值和假值。(不考虑组合情况)

第一个判断应考虑到 A=true,A=false,B=true,B=false
第二个判断应考虑到 C= true,C= false,D=true,D=false,

所以上例中可以设计测试用例满足下列条件,两条用例:
testcase1 : A=true,B=true,C= true, D=true
testcase2 : A=false,B=false,,C= false,D=false

4.判定条件覆盖

判定条件覆盖,就是我们设计的测试用例可以使得判断中每个条件所有的可能取值至少执行一次(条件覆盖)。同时每个判断本身所有的结果也要至少执行一次(判定覆盖)。
不难发现判定条件覆盖同时满足判定覆盖和条件覆盖,弥补了两者各自的不足,但是判定条件覆盖并未考虑条件的组合情况。
条件覆盖:
A=true,A=false,B=true,B=false
C=true,C = false,D=true,D=false,
判断覆盖:
A and B =True, A and B =False
C or D =True , C or D =False
所以满足条件覆盖和判断覆盖。我们可以设计两条用例:
TestCase1 : A=true,B=true,C=true,D=true(条件都为True,A and B=True,C or D =True)
TestCase2: A=false,B=false,C=false,D=false (条件都为False,A and B=False,C or D =False)

5.条件组合覆盖

组合覆盖也叫做条件组合覆盖,意思是说我们设计的测试用例应该使得每个判定中的各个条件的各种可能组合都至少出现一次。显然,满足条件组合覆盖的测试用例一定是满足判定覆盖、条件覆盖和判定条件覆盖的。

每个判定中的各个条件的各种可能组合都至少出现一次,即:
A - true,flase B - true,flase
C - true,flase D - true,flase

针对这个案例,做条件组合覆盖时我们可以设计如下用例:

TestCase1: A=True,B=True,C=True,D=True
TestCase2: A=True,B=False, C=True,D=False
TestCase3: A=False,B=True,C=False,D=True
TestCase4: A=False,B=False,C=False,D=False

条件组合覆盖能够同时满足判定、条件和判定条件覆盖,覆盖度较高,但是组合覆盖的测试用例数量相对来说也是比较多的。

6.路径覆盖

路径覆盖:要求覆盖程序中所有可能的路径。意思是说我们设计的测试用例可以覆盖程序中所有可能的执行路径。可以对程序进行彻底的测试用例覆盖,但是用例数量会增多很多。所以路径覆盖是最彻底的测试用例覆盖,但实际上可操作性不强。

所以可以设计测试用例满足下列条件:

  1. A=true,B=true,C= true,D=true,
  1. A=false,B=false,C= false。D=false
  2. A=true,B=true,C= false,D=false
  3. A=false,B=false,C= true。D=true
  4. A=true,B=true,C = false,D=false

白盒测试之基本路径测试法

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

基本路径测试方法的步骤

第一步:画出控制流图

第二步:计算圈复杂度

第三步:导出测试用例

第四步:准备测试用例

1.根据程序流程图画控制流图

image-20230216004600484

根据程序流程图画控制流图的步骤

  • 开始结束不要,先把每一 个节点画成圆圈
  • 将节点上的出入关系补全
image-20230216004622458 image-20230216004856158

2.计算圈复杂度

圈的复杂度:流图中区域的数量对应于环型的复杂度;有以下两种方式计算圈复杂度:

  • 给定流图G的圈复杂度V(G),定义为V(G) = E - N + 2,E是流图中边的数量,N是流图中结点的数量。
  • 给定流图G的圈复杂度V(G),定义为V(G) = P + 1,P是流图G中判定结点的数量。

圈的复杂度就是设计测试用例的个数

3.导出测试用例

4.准备测试用例

5.例题

img

5.1 画控制流图

img

5.2 计算圈复杂度

img

5.3 导出测试用例

根据上面的计算方法,可得出四个独立的路径。(一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。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

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

5.4 准备测试用例

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

img

白盒测试总结

以上简单描述了几种不用的白盒测试方法的原则和优劣。在实际的操作中,要正确使用白盒测试的代码覆盖方法,就要从代码分析和代码调研入手,根据调研的结果,可以选择上述方法中的某一种,或者好几种方法的结合,设计出高效的测试用例,尽可能全面地覆盖到代码中的每一个逻辑路径,只有适当的测试方法,才能帮助我们从代码的角度对产品做到最好的测试。
白盒测试的优点:

  • 迫使测试人员去仔细思考软件的实现。
  • 帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题。

白盒测试的缺点:

  • 昂贵:系统庞大时,测试开销会非常大; 测试人员要求比较高,人才昂贵。
  • 测试基于代码,只能测试开发人员做的对不对,而不能知道设计是否正确,可能会漏掉一些功能需求。

适当的测试方法,才能帮助我们从代码的角度对产品做到最好的测试。
白盒测试的优点:

  • 迫使测试人员去仔细思考软件的实现。
  • 帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题。

白盒测试的缺点:

  • 昂贵:系统庞大时,测试开销会非常大; 测试人员要求比较高,人才昂贵。
  • 测试基于代码,只能测试开发人员做的对不对,而不能知道设计是否正确,可能会漏掉一些功能需求。

相关内容

热门资讯

苹果系统安卓爱思助手,系统兼容... 你有没有发现,手机的世界里,苹果系统和安卓系统就像是一对欢喜冤家,总是各有各的粉丝,各有各的拥趸。而...
安卓系统占用很大内存,揭秘内存... 手机里的安卓系统是不是让你感觉内存不够用,就像你的房间堆满了杂物,总是找不到地方放新东西?别急,今天...
安卓系统p30,安卓系统下的摄... 你有没有发现,最近安卓系统P30在手机圈里可是火得一塌糊涂呢!这不,我就来给你好好扒一扒这款手机的那...
siri被安卓系统进入了,智能... 你知道吗?最近科技圈可是炸开了锅,因为一个大家伙——Siri,竟然悄悄地溜进了安卓系统!这可不是什么...
最强挂机系统和安卓区别,揭秘安... 亲爱的读者,你是否曾在游戏中遇到过这样的困扰:一边想要享受游戏带来的乐趣,一边又不想放弃手中的零食或...
安卓系统为什么设系统盘,保障稳... 你有没有想过,为什么安卓系统里会有一个叫做“系统盘”的东西呢?这可不是随便设置的,背后可是有大学问的...
王者怎么加安卓系统的,轻松提升... 你有没有想过,你的手机里那款超酷的王者荣耀,怎么才能让它更好地在你的安卓系统上运行呢?别急,今天就来...
安卓手机系统怎么开热点,共享网... 你有没有想过,当你身处一个没有Wi-Fi信号的地方,而你的安卓手机里却存满了精彩视频和游戏时,是不是...
安卓系统11的平板电脑,性能升... 你有没有发现,最近平板电脑市场又热闹起来了?没错,安卓系统11的新一代平板电脑正在悄悄地走进我们的生...
安卓手机系统创始人,安卓手机系... 你有没有想过,那些陪伴我们每天生活的安卓手机,它们的灵魂是谁赋予的呢?没错,就是那位神秘而又传奇的安...
安卓11系统速度提升,体验再升... 你知道吗?最近安卓系统又升级啦!这次可是直接跳到了安卓11,听说速度提升了不少呢!是不是很心动?那就...
安卓5.1原生系统设置apk,... 你有没有想过,你的安卓手机里那些看似普通的设置,其实隐藏着不少小秘密呢?今天,就让我带你一探究竟,揭...
手机安卓系统玩音游,畅享指尖音... 你有没有发现,现在手机上的游戏种类越来越丰富,尤其是音游,简直让人爱不释手!今天,就让我来给你详细介...
安卓系统与win10,系统融合... 你有没有想过,为什么你的手机里装的是安卓系统,而电脑上却是Windows 10呢?这两种操作系统,就...
苹果系统王者安卓系统可以登吗,... 你有没有想过,为什么苹果系统的手机那么受欢迎,而安卓系统的手机却也能在市场上占有一席之地呢?今天,咱...
安卓系统怎么重制系统还原,安卓... 手机用久了是不是感觉卡得要命,想给它来个大变身?别急,今天就来教你怎么给安卓手机重置系统,让它焕然一...
安卓9系统怎样应用分身,轻松实... 你有没有发现,手机里的APP越来越多,有时候一个APP里还要处理好多任务,分身功能简直就是救星啊!今...
获取安卓系统的ip地址,轻松获... 你有没有想过,你的安卓手机里隐藏着一个神秘的IP地址?没错,就是那个能让你在网络世界里找到自己的小秘...
LG彩电安卓系统升级,畅享智能... 你家的LG彩电是不是最近有点儿“闹别扭”,屏幕上时不时地跳出个升级提示?别急,今天就来给你详细说说这...
阴阳师安卓苹果系统,安卓与苹果... 亲爱的玩家们,你是否曾在深夜里,手握手机,沉浸在阴阳师的神秘世界?今天,就让我带你一起探索这款风靡全...