谈谈测试用例中的前置条件

简介: 在简单模块或单元测试中,大家对于前置条件的理解很容达成共识。但在面对一个复杂系统时,则关于前置条件容易困扰,或是因为可操作性,或是因为可界定性。

1.背景

一个测试用例基本要素包括以下 3 点:

  • 前置条件,或者叫被测对象的初始状态
  • 执行步骤
  • 预期结果

在简单模块或单元测试中,大家对于前置条件的理解很容达成共识。但在面对一个复杂系统时,则关于前置条件容易困扰,或是因为可操作性,或是因为可界定性。

2.前置条件的组成

  • 被测对象的程序版本

    • 在测一个库、一个类、一个可执行程序时,版本很容易定义;但面对一个网站时,要说清楚版本不是一件容易的事情。
  • 被测对象的相关数据,包括

    • 数据库里的数据
    • 缓存服务中的数据
    • 队列中的数据
    • 配置文件中的信息
    • ……
  • 测试环境

    • 测试工具与被测对象的网络拓扑情况
    • 测试工具、被测对象、通讯网络等计算、带宽、存储资源的情况

3.关于被测对象相关数据的准备

极简情况:测试一个类的方法

可以通过构造函数、借助 set 接口等来保证方法调用前,类处在一个确定的状态中。

正常情况:测试一个网站的注册功能

空库的情况下,

  • 第一次执行注册 a 用户 时成功
  • 第二次执行注册 a 用户时反馈失败。

此时都代表网站正常,但两次测试属于不同的测试用例,因为其系统的初始情况不一样。

为了可重复验证测试功能,需要在注册 a 用户,清除掉 a 用户的注册信息,以保证可重入性。此时,注册测试用例的前置条件中的数据要求就是,数据库中没有 a 用户的信息。

正常情况:测试列表的翻页功能

因为数据记录条数不同,导致页面显示的情况会不同。比如说:

  • 空数据
  • 不满一页的数据
  • 10 页的数据
  • 100 页的数据

此时,就需要让数据库里的数据处在不同的数据量情况下,才能进行有效测试。可选的方案包括:

  • 每次测试前,人工清理和准备需要的数据
  • 每次测试前,执行专用的数据生成 SQL(含清理数据)
  • 在数据库里提前生成4 种数据,借助一些其他查询条件来区分。即重点测试翻页功能,其他功能就能用来辅助功能测试。
  • 提前创建4 种数据库快照,按需恢复到需要的数据库状态。

4.说明

  • 离开前置条件来谈测试用例执行结果,很难界定是否真是系统的 bug。
  • 并不需要控制所有前置条件的一致性,一是单个测试用例只与有限的数据相关,二是控制绝对一致的成本很高,不划算。
目录
相关文章
|
安全 Shell 网络安全
渗透测试的前置知识00
数据结构的姿势更新了一部分,接下来回到主业的网络安全上
70 0
|
前端开发 测试技术 数据库
|
存储 机器学习/深度学习 自然语言处理
软件测试前置基础知识(基本概念,DOS命令)
软件测试前置基础知识(基本概念,DOS命令)
|
安全 测试技术 定位技术
|
20天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
52 3
|
2月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
69 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
3月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
252 7
Jmeter实现WebSocket协议的接口测试方法
|
3月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
264 3
快速上手|HTTP 接口功能自动化测试
|
3月前
|
JavaScript 前端开发 测试技术
ChatGPT与接口测试
ChatGPT与接口测试,测试通过
52 5