说到Jmeter,大家都知道是做接口测试和性能测试的一个工具。很多人脑中会浮现参数化、集合点、检查点等名词,前两篇已经介绍了Jmeter的入门操作,那今天我们就来看如何修改我们的脚本来实现参数化。
举例是我一贯的风格,之前举例截图中,Jmeter都是中文版的操作界面,但是小白根据我的文章进行搭建环境后,发现是英文版的。其实Jmeter自带语言转换功能。操作如下:
点击"Options"->"Choose Language"->"Chinese(Simplified)"
还有一种方法,在Jmeter的bin目录下,找到jmeter.properties文件,右键编辑如下图:
其中#language=en,#代表注释,language=en代表语言设置为英文。其实此时这个配置是不生效的,只不过Jmeter默认使用英文。我们可以把前面的#删除,使这项配置生效。把en改成zh_CN,就是把语言改成了中文。
推荐大家使用第二种方法,就是在配置文件jmeter.properties中修改。因为第一种方法是临时的,关闭Jmeter后再次打开,又变成了英文。而第二种方式是永久的。
言归正传,接下来我们就来谈谈参数化。参数化的方法有很多种,比如CSV Data Set Config、函数、计数器、用户定义变量等。我们就一个一个来练练手吧。
一、CSV Data Set Config
说到参数化,可能网上的一些教程只会告诉你CSV Data Set Config,但是我认为参数化一共有4类,这4类中常用的有7种。那么我们就先聊聊烂大街的方法CSV Data Set Config。还是以中信银行的基金搜索接口为例,在线程组鼠标右键选择"添加"->"配置元件"->"CSV Data Set Config"
1.文件名:可以输入参数文件的绝对路径或相对路径,参数文件可以保存在txt或csv文件里,比如D:\apache-jmeter-5.3\project\data.txt。若脚本文件和参数化的文件在同一个目录下,如下图:
那么CSV Data Set Config的文件名还可以输入相对路径,例如"data.txt"和"./data/data.csv"都是可以的。Jmeter5.3版本,我测试过,路径名输入正斜杠或反斜杠,都可以找到参数文件,大家再也不用担心斜杠输错了。
2.文件编码:大部分情况下都是UTF-8,如果出现中文乱码可以尝试下GBK。
3.变量名:接口请求时,引用这个参数化的变量名称,多个变量用英文逗号隔开
4.忽略首行:若参数文件的数据量较小,可以设置成FALSE。若较多建议设置成TRUE(实际上就是表头)
5.分隔符:参数文件里多个参数之间用分隔符隔开,默认情况下是英文逗号,但是如果你的参数带逗号比如第一个参数是"hello,we go",第二个参数是"你好,我们走",此时若使用默认分隔符,系统会认为有4个参数,第一个是hello第二个是we go,第三个是你好,第四个是我们走;这时要修改CSV Data Set Config里的分隔符,观察发现两个参数中都不含"==",所以我们可以把分隔符改成== ,分隔符如何设置全凭个人喜好,只要参数中没有这个符号即可。
后面4个不常用,使用默认配置就行了。
可以看到第三次请求调用的就是第三组的参数A和3。
二、用户定义变量
这次我们加一个接口,产品搜索接口,产品搜索界面如下。
用户定义变量有两个地方可以设置,第一个是测试计划、第二个是配置元件。首先看一下测试计划,点击测试计划节点,点击添加,输入变量名称和变量值,接口应用变量的方式和CSV一样,${key}
第二个配置元件,线程组鼠标右键"添加"->"配置元件"->"用户定义变量"
两者区别在于测试计划中设置的变量,是针对所有线程,所有请求的。而配置元件添加的用户定义变量,是根据他的上级节点决定的。若上级节点是线程,则只对这个线程起作用,若上级节点是请求,则只对这个请求起作用,若上级节点是测试计划,则对所有线程的所有请求都起作用。比如图中的配置元件,就只对"搜索有关的接口"这个线程组起作用。
这两个接口,都有一个搜索框,功能完全相同,所以这2个接口的文本框搜索字段,都输入${key},测试时,只要修改用户定义变量里的值,就可以了,不用去逐一修改每个接口。当接口多的时候,很方便。
……
※※因原作者要求,文章仅显示其中一部分,完整文章下载阅读,可以直接:关注+私信“文章”即可
Jmeter除了做接口测试,也是性能测试的常用工具。
性能测试可以说是所有自动化测试技术中涉及技术面最广、难度也最大的一个领域。
1、之所以说其涉及的知识面最广,是指性能测试不只是涉及到测试环节、同时还涉及到数据库、代码、网络、硬件、架构设计等多个领域。所谓难度最大是因为性能测试关注的测试类型非常多,除了我们常听说的压力测试、负载测试之外,还有容量测试、基准测试、可靠性测试、配置测试等等。
2、性能测试的指标也比普通的功能测试关注的验证点要多很多,有用户最关心的响应时间、错误率,还有企业最关心的服务器硬件资源利用率,以及工程师们关心的网络吞吐量、上传下载速率、TPS、HPS等等。而且性能故障的定位和调优不能只是依赖于性能测试工程师,必须要有团队的协作和配合才能够完成复杂的整体调优工作。
因为后台留言问性能测试的朋友很多,所以我们特地为大家开展了一次训练营:
此次训练营通过具体的性能测试项目实战,让大家快速体验到性能测试工作的基本工作流程,性能测试工具的使用以及性能测试工作过程中常见问题的解决思路及实践。通过训练营达到以下实践目标:
- 如何进行性能测试的准确规划?很多人对性能测试都有很多的误区理解,如果我们最初关于性能测试的目的理解有偏差或不准确的话,那么即使有很高深的技术也会造成工作的南辕北辙。
- 性能测试工作总体流程如何把控?在前期如何进行性能测试点的分析?如何落实到性能测试用例中进行明确?通过具体的性能测试任务进行前期准备工作的实践。
- 使用Jmeter工具快速开展性能测试执行。很多同学对于工具的掌握和学习往往需要很长时间才能上手,如何快速高效的掌握工具,快速地应用于具体工作中,这方面有很多的技巧和方法,与大家进行分享交流。
- 性能测试工作问题分析和解决。所有的工作都不会是一蹴而就的,在工作中会遇到各种各样的问题。如何进行动态验证码的验证,如何进行关联处理?这些都是性能测试中常见的技术问题,此次训练营和大家一同来快速分析解决这几个方面的技术问题,让大家在分析问题,思考问题的过程中,提升解决问题的能力。
- 性能测试工作需要具备哪些方面的能力,应该如何提升我们这方面的能力呢?帮助大家了解性能测试的工作全局,对性能测试有一个初步全局的认识。
为了保证课程训练营的内容质量,本次课程我们只限量开放200个名额,目前已报名100人。
参与方式:请关注+私信回复:“训练营”,获取本次Python接口自动化具体项目实战课程,参与人数众多,名额有限。