当前位置: 首页 > news >正文

自动化测试必会的数据驱动测试你真的学会了吗?

数据驱动测试

在实际的测试过程中,我们会发现好几组用例都是相同的操作步骤,只是测试数据的不同,而我们往往需要编写多次用例来进行测试,此时我们可以利用数据驱动测试来简化该种操作。

参数化:

输入数据的不同从而产生不同的测试结果(简单来说就是将输入的数据作为变量传入)。

比如搜索商品,不同的搜索关键字和搜索条件作为入参,就会得到不同的搜索结果。

数据驱动:

测试数据的改变驱动自动化测试的执行,产生不同的测试结果,数据驱动本质上是高级的参数化。

对于测试数据,我们可以将其存放在代码的数据结构中(比如数组、集合),也可以存放在外部文件(比如json、csv、yaml、Excel)或数据库中,通过相应的读取技术拿到测试数据实现数据驱动测试。

各大语言测试框架都有对应的功能,比如Python的Unitest,Java的TestNG/Junit

如TestNG有提供DataProvider注解实现数据驱动测试

                 

 

方式一:将测试数据保存到代码中(数组)

//指定数据提供者,注入测试数据到测试方法中实现数据驱动测试
@Test(dataProvider="getDatasFromArray")
public void test(String name,String phone,String pwd) {//TODO
}//从二维数组中获取数据驱动测试所需的测试数据(包含入参和期望值)
@DataProvider
public Object [][] getDatasFromArray(){Object [][] datas = {{"13323234545","123456","登录成功"},{"133232345451","123456","手机号码格式不正确"},{"13323234545","","密码不能位空"}};return datas;
}复制代码

方式二:将数据保存到外部的文件中(Excel)

//指定数据提供者,注入测试数据到测试方法中实现数据驱动测试
//需要注意的是:此时数据提供者返回的是一维数组,数组里元素类型是ExcelData对象,所以方法这里需要通过ExcelData类型接收
@Test(dataProvider="getDatasFromExcel")
public void test(ExcelData excelData) {//TODO
}//从外部文件(Excel)中获取数据驱动测试所需的测试数据
@DataProvider
public Object [] getDatasFromExcel(){//读取指定Sheet List<ExcelData> list = EasyExcel.read("filePath").head(ExcelData.class).sheet("Sheet1").doReadSync();//将集合转换为数组return list.toArray;}
复制代码

数据驱动测试的优点:

1、相似的测试步骤只需要编写一条用例,可以直接通过多条测试数据驱动执行,提高了测试脚本的复用性

2、测试数据和测试脚本分离,提高后期脚本可维护性

                           

 

无论是将测试数据保存在代码或者文件,又或者数据库中都可以。至于保存在哪里取决于测试数据量大小和使用场景

  • 少量的数据,比如账号相关的信息,可以直接写入代码中进行维护
  • 数据的量级在几十~几千之间,可以通过外部的文件进行管理,比如Excel
  • 当数据量级特别大的情况下,通过数据库这样方式的管理数据相对比较高效

ps:小编个人收集啦许多软测资料,希望能够帮到学软件测试的朋友们软件资料分享包括但不限于:软件测试、Python自动化测试、性能测试、web测试、APP测试,还有各种测试相关工作模板,简历模板、大厂面试真题等。

 

 

http://www.lryc.cn/news/39182.html

相关文章:

  • cpp之十大排序算法
  • java-正装照换底色小demo-技术分享
  • (枚举)(模拟)(二位前缀和)99. 激光炸弹
  • vue3+vite项目移动端适配:postcss-pxtorem和amfe-flexible
  • sin x和cos x的导数
  • html下自动消失的提示框jQuery实现
  • 第27篇:Java日期处理总结(一)
  • Linux入门教程——VI/VIM 编辑器
  • 第十四届蓝桥杯三月真题刷题训练——第 10 天
  • 软件测试之jira
  • 传统方式实现SpringMVC
  • RS232/RS485信号接口转12路模拟信号 隔离D/A转换器LED智能调光控制
  • 聊一聊代码重构——封装集合和替换算法的代码实践
  • FPGA解码4K分辨率4line MIPI视频 OV13850采集 提供工程源码和技术支持
  • Map接口及遍历方式
  • 一步步构建自己的前端项目
  • VMware搭建Mac OS环境
  • 【Maven】什么是Maven?Maven有什么用?
  • 【JavaSE】类和对象的详解
  • 2023年中职组“网络安全”赛项广西自治区竞赛任务书
  • 简单的自定义录屏工具
  • 数据结构与算法基础(王卓)(17):KMP算法详解(精讲(最简单、直接、有效的思路方法,答案以及代码原理)
  • 【java基础】HashMap源码解析
  • 实现异步的8种方式,你知道几个?
  • 二叉树的三种遍历
  • 我,30岁程序员被裁了,千万别干全栈
  • 【linux】:进程地址空间
  • 【保姆级】JMeter Mqtt 压测配置
  • C语言数据结构初阶(4)----带头双向循环链表
  • 原生javascript手写一个丝滑的轮播图