聊一聊Jmeter的参数化

背景

购物优惠券 www.cqfenfa.com

前面一篇讲了 JMeter 的一个最简单的例子,这篇聊一下 JMeter 的参数化。

在开始之前先来一个单元测试的例子,感受一下参数化。

上面是一个用 xUnit 写的单元测试,这个单元测试就是一个参数化的例子:

模拟了不同的输入,调用同一个方法,得到了不同的输出。

对某一个场景,要验证不同的输入得到不同的输出是非常有用的。

在 JMeter 里面就可以通过参数化来实现这个效果。

JMeter 的参数化有很多种方法,本文主要是介绍基于 CSV Data Set Config 的参数化。

在这篇文章里面,会通过一个简单的场景来了解 JMeter 参数化的使用,以及自定义 jar 包的使用。

场景

这里用一个大家最熟悉的登录场景做为例子。

登录最重要的就是用户名和密码这两个内容,这里会有两种结果,登录成功和登录失败。

在这个场景下,假设我们的接口定义是这样的

POST http://localhost:8532/run?sign=sssss&appkey=aaaaa
Content-Type: application/json

{
   "userName":"catcherwong",
   "password":"xxxxx"
}
  • sign 的值是签名,用来验证参数是否被修改,这里是不校验的,所以随便生成一个随机数就可以了。
  • appKey 是定义的另一个参数,这里也不做校验的,也是随机定义即可。

这个接口,会有两种返回

登录失败的, code 会是 1, msg就是错误信息。

{"code":1,"msg":"用户名或密码错误"}

登录成功的, code 会是 0。

{"code":0,"msg":"ok","data":{"token":"626b97f78d794f4da927bc09ae6be245"}}

针对这个场景,简单起见,只考虑 code 的值来判断登录是否成功。

准备数据

场景有了,接口也有了,再下一步就是准备要用的数据了。

这里是用 CSV 文件来做为数据源,所以我们把接口要用到的参数放进去。

准备了20条数据,第一列是用户名,第二列是密码,第三列是appkey,第四列是结果,表明用前面三列数据去调用登录接口,应该成功还是失败。

然后在线程组里面添加一个 CSV 的配置原件。

在里面最主要的配置是 文件路径变量名

文件路径没什么好说的,就是 csv 文件所在的具体路径。

可以看到上面的 csv 文件,我们是没有定义头部的,放的直接是数据,所以每一列数据代表什么需要有一个标识。

这里的变量名可以认为就是给准备的每一列数据起个别名,便于后面的使用,示例这里是有4个的,每一个都是用英文逗号隔开。

配置HTTP请求

其中 name, pwd 和 appKey 这三个变量是前面已经定义好了的,所以这里可以直接用 ${xx} 的方式去使用。

sign 这个参数是没有定义的,所以要加一个 BeanShell PreProcessor 来处理一下。

到这里,请求已经配置好了,下面就是要判断登录是不是成功的了。

断言

断言这里是要判断返回的 JSON 结构里面的 code 值是不是和 csv 文件里面定义的一样。

所以这里选择的还是 JSON Assertion

要把期望值调整成变量名,这样它才会根据不同的入参判断不同的结果,上图的例子是 ${login_res}

添加结果树,调整线程组的循环次数为20,再运行这个线程组,就可以看到对应的结果了。

可以看到的是,20条数据都跑了一次,所有的用例都是可以过的。

但是这里有一个问题,密码是明文传输的!!!

这个是大忌,绝对不允许的,正常都会加密或哈希之后再传输。所以这里要做一个优化。

也就引入了,自定义 jar 包的使用。

自定义jar包调整

首先我们需要写一些 JAVA 代码来编译成一个 jar 包。

这里老黄是直接写好了,直接用就可以了。

调整一下 BeanShell PreProcessor ,如下图所示:

首先是先引入自定义 jar 包,其次是从 vars 里面拿到明文密码,然后是调用 jar 包里面的 getPwd 的方法对密码进行处理,最后再把处理好之后的密码放到一个新变量 ePwd 里面。

由于之前的 sign 参数是写死的123,这里也改成调用 jar 包里面的 getSign 方法来生成。

由于密码参数换了一个变量,所以要调整一下 HTTP 请求。

最后再次运行,可以看到 密码不再是明文了,sign值也不再是固定的了。

自定义的 jar 包,记得要在测试计划里面添加一下!

写在最后

参数化是一个很有用的功能,可以让我们的参数动起来。

原文地址:https://blog.csdn.net/weixin_48967543/article/details/116375865

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Jmeter:Authenticationcredentialswerenotprovided上次在使用Jmeter对手机app进行录制后,使用查看结果树对脚本进行回放,出现了{“detail”:“Authenticationcredentialswerenotprovided.”}的问题上次的链接地址:https://blog.csdn.net/Test20201990/article/details/
初次使用jmeter时,结果树中返回的数据为未转码内容,如下:  1、在后置处理器中增加beanshellpreprocessor,如下:  Strings=newString(prev.getResponseData(),"UTF-8");charaChar;intlen=s.length();StringBufferoutBuffer=newString
jmeter默认语言设置: 1、临时设置:进入options--ChooseLanguage-- 选择中文简体,设置后语言 切换成中文,重启失效 2、永久设置:进入jmeter目录下的bin目录,用文本编辑工具ue或notepad++等 打开jmeter.properties文件,进行编辑: 找到行: #language=en 修改为: language=
第一步:打开jmeter工具。 第二步:点击鼠标右击,点击添加_线程_线程组,新增线程组。 第三步:添加HTTP请求 第四步:点击页面调试器(以谷歌浏览器为例F12)填写协议,IP,请求,路径 第五步:1.填写参数2.若页面里面没有token可以拿authorization替代,则需要创建HTTP信息头管理器,并进行
在之前的博文中,Jmeter二次开发——基于Java请求,已介绍了Jmeter二次开发的基础情况,上次分享的是java请求开发,今天来分享下Jmeter中的函数开发。聊到Jmeter的函数,知道Jmeter使用的博友肯定很熟悉。Jmeter自带一个函数库,有很多的函数,比如:__P,__Random,函数助手给我们提供了很多的方便
打开虚拟机然后用远程连接工具SSH连接到数据库将serveragent.zip放到Linux环境中在虚拟机中复制路径进入到/opt/目录解压serveragent.zip修改端口为4444永久保存到防火墙中运行startAgent.sh连接虚拟环境里面的数据库更改地址切换路径修改SQL语句点击
jmeter断言之Beanshell断言(判断数据库结果是否符合预期)该篇文章主要讲一下beanshell断言处理数据库结果。(一)首先需要添加配置原件JDBCConnectionConfiguration连接数据库信息,然后发送jdbc请求获取预期结果。我现在使用得是result_variable_name获取得是响应结果集。接下来对数
《jmeter连接MSQL数据库指导》**一、**首先安装msql服务器。在桌面安装,过程中选择认证方式为之前的认证方式,新的认证可能会导致后面连接失败,报错认证问题。其次:打开安装好的数据库,新建一个database----例如:lhd然后再这个database里面新建一个表,例如:table01,然后表中可以自
前言本章主要讲述Windows环境下实现Jmeter+Ant+Jenkins自动化持续集成注:Jmeter+Ant+Jenkins实现集成的前提是这三者环境都已安装部署好关于Jmeter及Jenkins的下载安装我已在其他篇blog已讲述,这里主要讲一下Ant的部署配置传送门1)Jmeter:https://blog.csdn.net/Makasa/art
接口类型rest接口:通过http的get和post方式得到数据,返回报文为json格式soap接口:通过soap协议得到数据,相比httpservice更能处理复杂的数据,请求和返回报文都为xml格式接口测试作用1.在后端程序完成后,可尽早进行系统测试,发现bug2.解决系统测试复杂度,测试脚本运行速度快,节省
目录 一、Jmeter简介二、Jmeter安装三、设置Jmeter语言为中文环境四、Jmeter主要元件五、Jmeter元件的作用域和执行顺序六、Jmeter进行接口测试流程七、Jmeter进行接口测试流程步骤详解 八、总结如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、
在使用cookie管理器时,没有选择对应的策略会导致cookie传递不了下面来讲一讲这些用法 作用:用于管理Testplan运行时的所有的cookie。可以手动存储,也可以自动存储;每次反复清除cookie?:勾选后将每次请求结束后都会将本次请求产生的cookie进行清除,下次请求时重新获取。CookieP
接口测试及常用接口测试工具解析一、常见接口:二、前端和后端:三、什么是接口测试:四、接口组成五、为什么要做接口测试:六、接口测试怎么测:七、用什么工具测那些关于接口测试的二三事,首先大家要搞清楚,什么是接口,其次是前后端,之后逐一抽丝剥茧让它明朗起来,没有一蹴而就的事
jmeter接口java二次开发五步走第一步:了解jmeter处理java请求的流程​ Jmeter处理请求的流程:Jmeter会读取用户传入的数据,把数据初始化到Jmeter中。调用Java请求时,jmeter会运行内部的runTest函数,调用封装的JAVA接口,获取到返回数据获取到返回数据后,Jmeter可以把返回数据
1、添加断言1)先根据“结果树”中的“HTML”中的“响应数据”,找到需要检查的网页中的文本   2)复制上述内容,根据“结果树”中的“Text”中的“响应数据”,确定最终确定要检查的文本(可能含有标签)3)在线程组下找到需要检查的url,右击“添加”→断言→响应断言    
了解需求:1、性能测试过程中,我们经常需要对流程化的业务进行性能测试,其中涉及到很多接口,这时候问开发拿接口和参数就会降低工作效率,直接用jmeter的录制功能就能提高工作效率2、开发接口案例中,我们也经常会碰到一些上传、下载、导入等等一些接口功能,这些脚本如果直接问开发
 随机数https://blog.csdn.net/qq19970496/article/details/101027184随机日期https://blog.csdn.net/qq19970496/article/details/101027813随机字符串https://blog.csdn.net/qq19970496/article/details/101027925随机变量https://blog.csdn.net/qq19970496/article/details/1
JmeterP1性能测试关键指标1,这些指标大家看到后有什么感觉呢?对于功能测试,一般结果就两种,成功的或者是不通过的,有问题的和没问题的,有毛病的和没毛病的,比如打开网页,能打开就打开,打不开就打不开2,性能测试要更复杂一点,不能直接说行还是不行,要有一个参数,一个多维度的指标,来衡量他,比
  jmeter录制脚本示例  jmeter手工脚本编写与调试  业务逻辑实现之逻辑控制器  业务脚本参数化实现  jmeter处理cookie  beanshell脚本  jmeter脚本录制badboy:        
压力测试压力测试是考察当前软硬件环境下系统所能承受的最大负荷并帮助找出系统瓶颈所在使用压力测试,我们希望找出其他测试方法更难发现的错误,其中有主要有两种错误类型:内存泄漏,并发和同步1.性能指标响应时间:响应时间是指客户端发起请求开始到客户端接收到从服务器返回的响应