当前位置: 首页 > 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测试,还有各种测试相关工作模板,简历模板、大厂面试真题等。

 

 

相关文章:

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

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

cpp之十大排序算法

十大排序算法 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-riZ9z3wf-1678258189998)(null)] 排序算法的稳定性&#xff1a;在具有多个相同关键字的记录中&#xff0c;若经过排序这些记录的次序保持不变&#xff0c;说排序算法是稳定的。 插入排序…...

java-正装照换底色小demo-技术分享

文章目录前言java-正装照换底色小demo-技术分享01 实现思路02 效果02::01 原图:02::02 执行单元测试:02::03 效果:03 编码实现前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞…...

(枚举)(模拟)(二位前缀和)99. 激光炸弹

目录 题目链接 一些话 切入点 流程 套路 ac代码 题目链接 99. 激光炸弹 - AcWing题库 数&#xff5e;啦&#xff01;我草&#xff0c;又~在&#xff5e;水&#xff5e;字&#xff5e;数&#xff5e;啦&#xff01;我草&#xff0c;又~在&#xff5e;水&#xff5e;字&am…...

vue3+vite项目移动端适配:postcss-pxtorem和amfe-flexible

一&#xff0c;定义 postcss-pxtorem PostCSS 的一个插件&#xff0c;可以从像素单位生成 rem 单位。 amfe-flexible amfe-flexible是配置可伸缩布局方案&#xff0c;主要是将1rem设为viewWidth/10。 二&#xff0c;使用 1. 设置 viewport 在 index.html 中&#xff1a; &l…...

sin x和cos x的导数

我们都知道(sin⁡x)′cos⁡x(\sin x)\cos x(sinx)′cosx&#xff0c;(cos⁡x)′−sin⁡x(\cos x)-\sin x(cosx)′−sinx&#xff0c;但是为什么呢&#xff1f; sin⁡x\sin xsinx的导数 (sin⁡x)′lim⁡Δx→0sin⁡(xΔx)−sin⁡xΔx(\sin x)\lim\limits_{\Delta x\rightarrow 0…...

html下自动消失的提示框jQuery实现

引言 最近在找一个可以自动消失的提示框&#xff0c;找来找去&#xff0c;找到了这个&#xff1a;提示框设置_html页面提示框等待一定时间消失博主写得很好&#xff0c;可以直接复制运行出来&#xff0c;我也从中得以受益。本篇文章对这篇博客的代码做了一些小的更新&#xff…...

第27篇:Java日期处理总结(一)

目录 1、Date类 1.1 如何实例化Date对象 1.2 Date相关操作方法 1.3 如何获取当前日期...

Linux入门教程——VI/VIM 编辑器

前言 本文小新为大家带来 Linux入门教程——VI/VIM 编辑器 相关知识&#xff0c;具体内容包括VI/VIM是什么&#xff0c;VIM的三种工作模式介绍&#xff0c;包括&#xff1a;一般模式&#xff0c;编辑模式&#xff0c;指令模式&#xff0c;以及模式间转换等进行详尽介绍~ 不积跬…...

第十四届蓝桥杯三月真题刷题训练——第 10 天

目录 第 1 题&#xff1a;裁纸刀 问题描述 运行限制 代码&#xff1a; 第 2 题&#xff1a;刷题统计 问题描述 输入格式 输出格式 样例输入 样例输出 评测用例规模与约定 运行限制 代码&#xff1a; 第 3 题&#xff1a;修建灌木 问题描述 输入格式 输出格式 …...

软件测试之jira

Jira 1. Jira 概述 JIRA 是澳大利亚 Atlassian 公司开发的一款优秀的问题跟踪管理软件工具&#xff0c;可以对各种类型的问题进行跟踪管理&#xff0c;包括缺陷、任务、需求、改进等。JIRA采用J2EE技术&#xff0c;能够跨平台部署。它正被广泛的开源软件组织&#xff0c;以及…...

传统方式实现SpringMVC

一、初次尝试SpringMVC 1.1、在pom.xml中添加依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.2.6.RELEASE</version></dependency><dependency><grou…...

RS232/RS485信号接口转12路模拟信号 隔离D/A转换器LED智能调光控制

特点&#xff1a;● RS-485/232接口&#xff0c;隔离转换成12路标准模拟信号输出● 可选型输出4-20mA或0-10V控制其他设备● 模拟信号输出精度优于 0.2%● 可以程控校准模块输出精度● 信号输出 / 通讯接口之间隔离耐压3000VDC ● 宽电源供电范围&#xff1a;10 ~ 30VDC● 可靠…...

聊一聊代码重构——封装集合和替换算法的代码实践

代码重构相关内容 聊一聊代码重构——我们为什么要代码重构 聊一聊代码重构——代码中究竟存在哪些坏代码 聊一聊代码重构——关于变量的代码实践 聊一聊代码重构——关于循环逻辑的代码实践 聊一聊代码重构——关于条件表达式的代码实践 聊一聊代码重构——程序方法上的…...

FPGA解码4K分辨率4line MIPI视频 OV13850采集 提供工程源码和技术支持

目录1、前言2、Xilinx官方主推的MIPI解码方案3、纯Vhdl方案解码MIPI4、vivado工程介绍5、上板调试验证6、福利&#xff1a;工程代码的获取1、前言 FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了&#xff0c;MIPI解码难度之高&#xff0c;令无数英雄竞折腰…...

Map接口及遍历方式

1、Map接口实现类的特点1)Map与Collection并列存在。用于保存具有映射关系的数据:Key-Value&#xff08;无序&#xff09;2) Map中的key和value可以是任何引用类型的数据&#xff0c;会封装到HashMap$Node对象中3) Map 中的key不允许重复import java.util.HashMap; import java…...

一步步构建自己的前端项目

一、我们先把webpack走通 1、先安装相关依赖&#xff0c;webpack是用来处理命令行参数的&#xff0c;但是我不准备使用webpack-cli&#xff0c;但是还是要求必须安装webpack-cli npm install webapck webpack-cli --save-dev2、npm init -y 3、创建项目结构 build.js cons…...

VMware搭建Mac OS环境

推荐阅读 Proxifier逆向分析(Mac) MacOS Burp2021安装配置 突破iOS App双向认证抓包 App绕过iOS手机的越狱检测 iOS系统抓包入门实践之短链 各种学习环境更新MacOS虚拟机 Android和iOS静态代码扫描工具 iOS系统抓包之短链-破解双向证书 Android和iOS应用源码的静态分析…...

【Maven】什么是Maven?Maven有什么用?

目录 一、什么是 Maven 二、Maven 能解决什么问题 三、Maven 的优势举例 四、Maven 的两个经典作用 4.1 Maven 的依赖管理 4. 2 项目的一键构建 &#x1f49f; 创作不易&#xff0c;不妨点赞&#x1f49a;评论❤️收藏&#x1f499;一下 一、什么是 Maven Maven 的正确发…...

【JavaSE】类和对象的详解

前言&#xff1a; 大家好&#xff0c;我还是那个不会打拳的程序猿。今天我给大家讲解的是类和对象&#xff0c;相信大家在之前的学习中都是面向过程的思想&#xff0c;那么今天就让我们走向面向对象的世界吧。 目录 1.面向过程VS面向对象 1.1什么是面向过程 1.2什么是面向对…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...

aardio 自动识别验证码输入

技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”&#xff0c;于是尝试整合图像识别与网页自动化技术&#xff0c;完成了这套模拟登录流程。核心思路是&#xff1a;截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...