测试理论知识三:测试用例、测试策略

1.测试用例

完全的测试是不可能的,对任何程序的测试必定是不完全的,那么,最显然的测试策略就是努力使测试尽可能完全。

进行测试前,推荐先使用黑盒测试的方法设计测试用例,然后使用白盒测试方法来补充的测试用例。

2. 白盒测试

白盒测试关注的是测试用例执行的程度或覆盖程序逻辑结构的程度。

白盒测试下的用例测试的包括范围:语句覆盖、判断覆盖、条件覆盖、判定/条件覆盖、多重条件覆盖。

语句覆盖:语句覆盖是指测试用例可以被测试的目标程序的每行代码都执行。

3. 黑盒测试

我们知道,黑盒测试的举例用法——穷举法是不可能完成的,因此,我们就需要在所有可能的输入测试中寻找出某个小的子集。

在这里,我们将介绍黑盒测试下的:等价类划分、边界值分析、因果图分析、错误猜测。

3.1. 等价类划分

基于3中描述的“子集”,我们还需要准备两个特性:

  1. 严格控制测试用例的增加,减少为达到“合理测试”的某些既定目标而必须设计的其他测试用力数量。

  2. 它覆盖了大部分其他可能的测试用例。

所以使用等价划分设计测试用例主要有两个步骤:确定等价类、生成测试用例。

3.1.1 确定等价类

确定等价类:我们将测试参数分为两大类,有效等价类、无效等价类。有效等价类是指输入的测试参数对于程序来说是合理的,在该程序的测试范围之内的。无效等效类同理。有效等价类和无效等价类都是确定等价类的子集。

3.1.2 生成测试用例
  1. 为每个等价类设置一个不同的编号。

  2. 编写新的测试用例,尽可能多地覆盖那些尚未被涵盖的有效等价类,直到所有的有效等价类都被测试用例所覆盖(包含进去)。

  3. 编写新的用例,覆盖一个且仅一个尚未被涵盖的无效等价类,直到所有的无效等价类都被测试用例所覆盖。

3.2. 边界值分析

一般来说,考虑边界条件的测试用例与其他没有考虑边界条件的测试用例相比,具有更高的测试回报率

所谓边界条件,是指输入和输出等价类中那些恰好处于边界、或超过边界、或在边界以下的状态。

边界值分析方法与等价划分方法存在两方面的不同:

  1. 与从等价类中挑选出任意一个元素作为代表不同,边界值分析需要选择一个或多个元素,以便等价类的每个边界都经过一次测试。

  2. 与仅仅关注输入条件(输入空间)不同,还需要考虑从结果空间(输出等价类)设计测试用例。

3.3. 因果图分析

边界值分析和等价分析的一个弱点是未对输入条件的组合进行分析。

因果图有助于用一个系统的方法选择出高效的测试用例集,同时可以指出规格说明不完整性和不明确之处。

3.4. 错误猜测

顾名思义,就是靠自己的主观能动性来进行测试,一般常用的猜测如下:

  1. 输入列表为空。

  2. 输入列表仅包含一个条目。

  3. 输入列表所有条目的值都相同。

  4. 输入列表已经排过序。

4. 测试策略

经过对白盒测试、黑盒测试的测试方法介绍,我们总结了以下测试要点:

  1. 如果规格说明中包含输入条件组合的情况,应首先使用因果图分析方法。

  2. 在任何情况下都应使用边界分析方法。

  3. 应为输入和输出确定有效和无效等价类,在必要情况下对上面确认的测试用例进行补充。

  4. 使用错误猜测技术增加更多的测试用例。

  5. 针对上述测试用例集检查程序的逻辑结构。

相关推荐

  1. 测试理论知识测试测试策略

    2023-12-21 13:38:02       49 阅读
  2. 设计测试

    2023-12-21 13:38:02       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-21 13:38:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-21 13:38:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-21 13:38:02       82 阅读
  4. Python语言-面向对象

    2023-12-21 13:38:02       91 阅读

热门阅读

  1. Linux 如何查看架构和系统

    2023-12-21 13:38:02       55 阅读
  2. 基于AES图像加解密算法的MATLAB仿真

    2023-12-21 13:38:02       47 阅读
  3. 一种带缓存DSP28335 CAN程序

    2023-12-21 13:38:02       49 阅读
  4. 安全运营之态势感知与监测

    2023-12-21 13:38:02       71 阅读
  5. Promise.all()和Promise.race()

    2023-12-21 13:38:02       63 阅读
  6. 最小质因子之和

    2023-12-21 13:38:02       57 阅读
  7. 记录 | 源码编译Arm CPU版FFmpeg

    2023-12-21 13:38:02       67 阅读
  8. Python爬虫山东重庆各地区天气预报

    2023-12-21 13:38:02       58 阅读
  9. 在国产GPU寒武纪MLU上快速上手Pytorch使用指南

    2023-12-21 13:38:02       76 阅读
  10. Ubuntu Docker图形界面实现

    2023-12-21 13:38:02       64 阅读
  11. C++高级:深拷贝与浅拷贝在嵌入式系统中的应用

    2023-12-21 13:38:02       64 阅读