白盒测试案例设计(我爷爷都能看懂)

目录

一、白盒测试的概念及特点

1、什么是白盒测试

2、白盒测试的特点

二、白盒测试设计方法

1、静态设计方法

2、动态设计方法

三、逻辑覆盖法

1、语句覆盖

2、判定覆盖

3、条件覆盖

4、判定条件覆盖

5、条件组合覆盖

6、路径覆盖

四、基本路径测试法

五、总结


今年早些时候在B站上学习了一下白盒设计这个理论知识,在这里做一下笔记。感谢黑马程序员的视频支持,不得不感慨,好老师都在企业啊。哈哈哈

白盒测试,又称结构测试、逻辑驱动测试或者基于程序代码内部构成的测试。所以,专业的测试,应该清楚的知道这几种说法都指的是一个意思。

问题:

  1. 白盒测试方法的概念及应用场景
  2. 白盒测试方法
  3. 用各种逻辑覆盖法来和设计白盒测试用例
  4. 使用基本路径法来设计白盒测试用例

内容:

  1. 白盒测试的基本介绍
  2. 白盒测试用例设计方法
    1. 1静态设计方法
    2. 2动态设计方法

一、白盒测试的概念及特点

1、什么是白盒测试

代码逻辑的测试

  • 白盒测试,又称结构测试、逻辑驱动测试或基于程序代码内部构成的测试。此时,测试工程师需深入考察程序代码的内部结构、逻辑设计等。
  • 对于白盒测试工程师来说,软件产品内部构成是透明的。

下列代码是”图书添加“功能页面对象检查功能函数。从白盒测试角度而言,测试工程师仅需关注此段函数所能实现的功能,无须关注该函数的外部功能特性

(代码来源书籍《软件测试技术基础教程-理论、方法、面试》) 

2、白盒测试的特点

  1. 优点:代码覆盖率高
  2. 缺点:
    1. 覆盖所有代码路径难度大
    2. 业务功能可能覆盖不全
    3. 测试开销大

二、白盒测试设计方法

1、静态设计方法

  1. 桌面检查
  2. 代码审查
  3. 代码走查
  4. 代码扫描工具

2、动态设计方法

  1. 逻辑覆盖法
    1. 语句覆盖
    2. 判定覆盖
    3. 条件覆盖
    4. 判断条件覆盖
    5. 条件组合覆盖
    6. 路径覆盖
  2. 基本路径测试法

三、逻辑覆盖法

  • 逻辑覆盖法:是通过程序逻辑结构的便利实现程序的覆盖。
  • 覆盖率:是用来度量测试完整性的一个手段

1、语句覆盖

1、语句覆盖设计用例

  • 语句覆盖:设计测试用例,是对程序中每条语句至少被执行一次。

例如:

  • 案例代码中共有4条可执行语句
  • 设计测试用例执行了3条,语句覆盖率为3/4=75%

2、语句覆盖法的局限性

2、判定覆盖

1、判定覆盖法设计用例

  • 判定覆盖:也叫分支覆盖,设计测试用例,使得程序中的每个判断的”真“和”假“都至少被执行一次。即:程序中的每个分支至少执行一次。

例如:

  • 案例代码中有判定2个,判定结果4个
  • 设计测试用例执行了3个分支,分支覆盖率为3/4=75%

2、判定覆盖法的局限性

  • 只要满足了判定覆盖标准就一定满足语句覆盖标准。

3、条件覆盖

1、条件覆盖法设计测试用例

  • 条件覆盖:设计测试用例,使得判定中的每个条件至少有一次取真值,有一次取假值。

例如:

  • 案例代码中有判定2个,条件3个,条件结果6个
  • 设计测试用例执行了5个条件结果,条件覆盖率为5/6=83%

2、条件覆盖法的局限性

 

4、判定条件覆盖

1、判定条件覆盖法设计测试用例

  • 判定条件覆盖:设计测试用例,使得被测试程序中的每个判断本身的判定结果(真假)至少满足一次,同时,每个逻辑条件的可能值(真假)也至少被满足一次。即同时满足100%判定覆盖和100%条件覆盖的标准。

例如:

  • 案例代码中有判定2个,条件3个,判定结果4个,条件结果6个
  • 设计测试用例执行了3个判定结果,5个条件结果,判定条件覆盖率为:(3+5)/(4+6)=80%

2、判定条件覆盖法的局限性

5、条件组合覆盖

1、条件组合覆盖法设计用例

  • 条件组合覆盖:设计测试用例,使得被测试程序中的每个判定中条件结果的所有可能组合至少执行一次。

例如:

  • 案例代码中有判定2个,条件3个(判定1有2个条件,判定2有1一个条件),判定1的条件组合为4个,判定2的条件组合为2个
  • 设计测试用例执行了5个条件组合,条件组合覆盖率为:5/(4+2)=83%

2、条件组合覆盖法的局限性

6、路径覆盖

1、路径覆盖法设计测试用例

  • 路径覆盖:设计测试用例,覆盖程序中所有可能的路径。

例如:

  • 案例代码中共有4条路径
  • 设计测试用例执行了3条路径,路径覆盖率为3/4=75%

2、路径覆盖法的局限性

 

四、基本路径测试法

  • 基本路径测试法:在程序控制流程图的基础上,通过分析程序的环路复杂性,导出基本可执行路径集合,从而设计测试用例
  • 基本路径测试法步骤:

 

五、总结

提问:基本路径和路径覆盖区别是什么?

路径覆盖的路经数是所有路径条数,基本路径覆盖的路经数是环路复杂度的值

本篇文章只是讲了一下理论,距离实际工作单元测试还存在很大的差距,有兴趣的同学可以先学习下spring boot 单元测试。当然,做这个测试需要准备一些基础知识,比如java、spring boot 、一些测试注解

  • 13
    点赞
  • 175
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
假设我们有一个简单的 Java 类,它的作用是将两个整数相加并返回结果。我们可以编写一些 JUnit 白盒测试测试这个类的不同方面。下面是一个可能的测试案例: ```java import org.junit.*; import static org.junit.Assert.*; public class AdderTest { private Adder adder; @Before public void setUp() { adder = new Adder(); } @Test public void testAddPositiveNumbers() { int result = adder.add(2, 3); assertEquals(5, result); } @Test public void testAddNegativeNumbers() { int result = adder.add(-2, -3); assertEquals(-5, result); } @Test public void testAddZero() { int result = adder.add(0, 0); assertEquals(0, result); } @Test(expected = IllegalArgumentException.class) public void testAddMaxValue() { int result = adder.add(Integer.MAX_VALUE, 1); } } ``` 这个测试案例包括四个测试方法和一个 `setUp()` 方法。在 `setUp()` 方法中,我们创建了 `Adder` 类的一个实例,这样在测试方法中就可以使用它。 第一个测试方法 `testAddPositiveNumbers()` 测试了当给定两个正数时,`add()` 方法是否正确地返回它们的和。第二个测试方法 `testAddNegativeNumbers()` 测试了当给定两个负数时,`add()` 方法是否正确地返回它们的和。第三个测试方法 `testAddZero()` 测试了当给定两个零时,`add()` 方法是否正确地返回零。最后一个测试方法 `testAddMaxValue()` 测试了当给定的两个数中有一个是 `Integer.MAX_VALUE` 时,`add()` 方法是否会抛出 `IllegalArgumentException` 异常。 这些测试案例覆盖了 `Adder` 类的不同方面,包括正数、负数、零和边界情况。它们可以帮助我们确保 `Adder` 类的 `add()` 方法能够正确地工作。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件测试李同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值