聊一聊Jmeter的参数化

背景

前面一篇聊了一下 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 包,记得要在测试计划里面添加一下!

写在最后

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302800.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android VNC Server New

Android VNC Server New 关于VNC请参见维基百科:http://zh.wikipedia.org/wiki/VNC关于执行Android VNC Server,请参见前一篇文章:点击链接 一、VNC下载1)fastdroid-vncAndroid VNC Server开源项目 http://code.google.com/p/fast…

EPPlus导出Excel感觉很不错~~~

前言导出成为很多系统的必备功能,之前分享过导出PDF的功能,这里来分享一下Excel的导出;提到Excel导出,NPOI肯定是很多小伙伴的首选,在以往的项目中也用其完成了很多导出需求;对于NPOI,个人感觉使…

[文摘]标准的软件开发过程

为什么80%的码农都做不了架构师?>>> 软件开发的标准过程包括六个阶段,而六个阶段需要编写的各类文件达 14 种之多,在每个阶段需要编写哪些文件,以及这些文件的主要内容见下: 1.可行性与计划研究阶段 可行性…

走进乔布斯的大脑

全世界有3.14 % 的人已经关注了数据与算法之美你永远也无法走进苹果教父乔布斯神秘的大脑,但下面的图可以让你多靠近了解他一点。人们都想走进乔帮主的大脑里看看他的想法,可惜他太难以捉摸了。但是,有个有趣的方法,至少可以让人们…

硬货 | 一片小小的薄膜,却可以粘住全世界!

延续“设计激发积极生活”的理念,在这个中秋,GYMLIVING特别推出月亮概念新产品,在便利生活的同时,为你带来一份浪漫和惊喜!说起月亮,除了阴晴圆缺,月球漫步更让它成了浪漫的代名词。有公司正计划…

使用域超级管理员打开Exchange 2010发现没有权限

1.使用administrator管理员打开EMC却报没有权限。 2.发现此问题,系邮件服务器本身上安装了outlook软件,并配置了使用非administrator账户收信。并有做了Windows保存了用户凭据,造成帐号使用上的混乱,导致连接Exchange服务器时使用…

C# 将多个图片合并成TIFF文件的两种方法

最近需要用到TIF格式的文件,研究了一段时间,终于有点结果了,发现两种方式,第一种是使用BitMiracle.LibTiff.NET,直接在Nuget上安装即可,第二种是使用RasterEdge.DocImageSDK,要从官网下载dll包第…

高等数学、线性代数、概率论与数理统计、几何学这些知识可以用来干什么?主要应用有哪些?...

全世界有3.14 % 的人已经关注了数据与算法之美知乎谢漠烟其他三项,不研究少数工科确实没用,但概率统计真乃应用数学之王。鄙人学业从数学院开始,以经济学院结束,现在在证券公司做苦逼行业研究,深有体会。概率统计抛开了…

HDU 2896 病毒侵袭【AC自动机】

Problem Description当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻。。。。在这样的时刻,人们却异常兴奋——我们能在有生之年看到500年一遇的世界奇观,那是多么幸福的事儿啊~~但网路上总有那么些网站&#xf…

风靡全球的人工智能,如何赶上这班车?

目前,机器学习的使用日渐成为趋势。作为人工智能的核心,机器学习是一门多领域的交叉学科,专门研究计算机模拟或实现人类学习行为的方法,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。简单来说…

java spark读写hdfs_Spark读取HDFS数据输出到不同的文件

最近有一个需求是这样的:原来的数据是存储在MySQL,然后通过Sqoop将MySQL的数据抽取到了HDFS集群上,抽取到HDFS上的数据都是纯数据,字段值之间以\t分隔,现在需要将这部分数据还原为json格式的,因为这样做的原…

15个创意的电梯广告

如果你走进任何一个城市,几乎每一个地方有电梯,但是你发现具有创意的广告电梯了吗,分享给大家15个不同城市的创意的电梯广告,作为设计师可以帮助你 Accor Air Asia Becel Body World Coke Zero Consol Energy Fiat Punto Forklift…

揭秘全球开发最新趋势!JS开发者达1380万,C#超越PHP,Rust增长最快

文 | 白开水出品 | OSC开源社区(ID:oschina2013)研究公司 SlashData 最新发布的”State of the Developer Nation“第 20 版报告指出,全球开发者社区在过去六个月中的经历了巨大的增长。据估计,截至 2021 年第一季度&a…

怎样判断漂亮女孩是不是单身的?

全世界有3.14 % 的人已经关注了数据与算法之美不解风情的死理性派们在情感生活中不免会遇到这样悲催的一幕:偶然间遇到一位心仪的漂亮女孩,从此日思夜想,废寝忘食,开始了漫长的暗恋之旅。等到一日,在无尽的纠结中&…

java开源cad_寻找 AutoCAD 替代品,5款免费开源 CAD 软件推荐

FreeCADFreeCAD 是一种通用的3D CAD建模。完全开源(LGPL许可证)FreeCAD 直接的目的是在机械工程和产品设计,也适合在更广泛的用途,如建筑行业或其他工程专业,工程相关领域。FreeCAD 全平台通用,能完美工作在 Windows、Linux 和 ma…

快速弄懂陌生领域是一项“赚钱”的能力

大家好,我是Z哥。有时候,我们被动的需要去了解一个新行业或者领域。比如,工作需要、投资需要等等。在这个时候,你能不能快速弄懂一个行业的80%,成为一个内行就很关键了。毕竟时机可是很重要的。比如,你想了…

java弹窗 触发事件_关于ElementUI中MessageBox弹框的取消键盘触发事件(enter,esc)关闭弹窗(执行事件)的解决方法...

好久没见了在项目中遇到一个小小的需求,总结了一下!详细我就不介绍了,相信大家用过的话,很了解。详见文档----------->http://element-cn.eleme.io/#/zh-CN/component/message-box#messagebox-dan-kuang项目需求——关于Elemen…

6年后再一次Hello World!这本书让你久等了!

移动互联网和手机智能化浪潮带来了全新的手机游戏模式。而随着手机游戏开发逐渐成熟,手机游戏开发门槛的降低,越来越多的开发者希望加入到这一行业中。Unity作为一款优秀的游戏引擎,为广大游戏开发者提供了高效、简洁的开发流程,使…

MATLAB图像处理与数字信号处理资料分享来袭

小天从大学开始接触数学建模,便开启资料收集功能。经过近几年的积累和沉淀,再加上对数学建模领域的深入研究,收集整理了丰富的数学建模资料,内容涵盖“MATLAB图像处理”,“数字信号处理与MATLAB实现”等。截止到今天&a…

java换水_java-交流灌水之谁是水王?

设计思想:水王是发帖和回帖最多的那个,总数会超过总贴数的一半还要多,我的思想是,当两个挨着的人发帖的id不同就进行抵消,最后剩下来的就是总数超过一半的“水王”的id;代码实现:package demo;public class text1 {sta…