【测试基础】八、创建测试数据的时机

简介: 【测试基础】八、创建测试数据的时机

关于测试数据,除了创建的方法之外,另一个重点就是应该在什么时机创建这些测试数据


比如,是在测试用例中实时创建测试数据,还是在准备测试环境时一下子准备好所有的测试数据呢?


哦对了,处理测试数据问题还高频出现在面试当中


1268169-20210712003738913-324305723.png


一、准备测试数据的痛点


  • 某些场景下,创建所需的数据往往会耗时较长,从而使得测试用例执行的时间变长。
  • 对于事先批量生成的数据,就有可能出现在测试用例执行时,这些数据因为被修改而无法正常使用的情况。
  • 在微服务架构下,测试环境本身的不稳定,也会阻碍测试数据的顺利创建。

选择在不同的时机创建测试数据,就是为了解决准备测试数据的不同痛点。


二、数据实时创建


指的是在测试用例的代码中实时创建要使用到的测试数据。


这也是我最常用的方法。比如,我有个商品列表要测试查询,我会在测试用例之前去插入对应的数据。


采用实时创建方式,都是由测试用例自己维护的,不会依赖于测试用例外的任何数据,从而保证了数据的准确性和可控性,最大程度地避免了出现“脏”数据的可能


这里的“脏”数据是指,数据在被实际使用前,已经被进行了非预期的修改。


但是,随着软件架构的发展,以及软件发布频率的快速增长,这种方式的弊端越来越明显


1. 实时创建测试数据比较耗时


在测试用例执行的过程中实时创建测试数据,将直接导致测试用例的整体执行时间变长。


2. 测试数据本身存在复杂的关联性


很多时候你为了创建一个你需要使用的业务数据,往往需要先创建一堆其他相关联的数据,越是业务链后期的数据,这个问题就越严重。


比如,创建订单数据。由于创建订单的数据准备函数需要提供诸如卖家、买家、商品ID 等一系列的前置数据,所以就不得不先创建出这些前置数据。这样做,一方面测试数据准备的复杂性直线上升,另一方面创建测试数据所需要的时间也会变得更长


3. 微服务依赖


现在大量的互联网产品都采用了微服务架构,很多时候测试环境并不是 100% 全部可用的状态。


比如,注册用户和用户登录隶属于两个不同的微服务,此时注册用户的微服务恰好因为某种原因不可用,那么这时就无法成功创建这个用户,也就无法创建测试数据。因此,整个测试用例都无法顺利执行。


为了解决上面的3个问题,就要考虑事先创建测试数据了。


三、事先创建测试数据


在准备测试环境时就预先将测试需要用到的数据全部准备好,而不是在测试用例中实时创建。


优点


  • 节省不少测试用例的执行时间。
  • 不会存在由于环境问题无法创建测试数据而阻碍测试用例执行的情况。


虽然克服了数据实时创建的问题,但是也带来了新的问题:脏数据


我之前创建好的数据,可能被其他人修改了,导致我不能继续用了。比如,事先创建好的用户进行登录测试,但这个用户的密码被其他人无意中修改了,导致测试用例执行时登录失败。


这些非预期的修改主要来自于以下三个方面:


  • 其他测试用例使用这些测试数据,并修改了这些数据的状态。
  • 执行手工测试时,看到现成的测试数据就直接用了,导致状态的修改。
  • 自动化测试用例的调试过程中,修改了事先创建的测试数据。


四、综合使用


既然各种方法仍然有着自己的缺点,那么综合起来使用,用优点互相弥补对方的缺点。

可以结合项目的特性,给测试数据分为两大类死水数据活水数据


1. 死水数据


指那些相对稳定,不会在使用过程中改变状态,并且可以被多次使用的数据。比如,商品分类、商品品牌、场馆信息等,这种适合使用事先创建。


但是,哪些数据属于“死水数据”并不是绝对的,由测试目的决定,不能一概而论。


2. 活水数据


指那些只能被一次性使用,或者经常会被修改的测试数据。比如,优惠券、商品本身、订单等类似的数据,这种适合使用实时创建。


二者相结合,实时创建的数据因为有了事先创建的数据支持,往往不需要从源头开始造起,可以基于现有的生成。比如,使用实时创建方式创建订单数据,可以直接使用事先创建的用户数据作为买家数据。

相关文章
|
4天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
26 11
|
6天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
34 10
|
2月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
37 6
|
2月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段。本文介绍了 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,强调了样本量、随机性和时间因素的重要性,并展示了 Python 在 A/B 测试中的具体应用实例。
31 1
|
3月前
|
存储 测试技术 数据库
数据驱动测试和关键词驱动测试的区别
数据驱动测试 数据驱动测试或 DDT 也被称为参数化测试。
38 1
|
3月前
|
机器学习/深度学习 监控 计算机视觉
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
本文介绍了如何使用YOLOv7进行目标检测,包括环境搭建、数据集准备、模型训练、验证、测试以及常见错误的解决方法。YOLOv7以其高效性能和准确率在目标检测领域受到关注,适用于自动驾驶、安防监控等场景。文中提供了源码和论文链接,以及详细的步骤说明,适合深度学习实践者参考。
660 0
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
3月前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
185 0
|
3月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
71 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
3月前
|
机器学习/深度学习 XML 并行计算
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用YOLOX完成图像目标检测任务的完整流程,包括数据准备、模型训练、验证和测试。
267 0
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
3月前
|
SQL 分布式计算 Hadoop
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
58 4