90%测试猿都想学的jmeter技能,你get吗?

软件测试君 软件测试君     2022-12-26     636

关键词:

01. 前言

jmeter 这个工具既可以做接口的功能测试,也可以做自动化测试,还可以做性能测试,其主要用途就是用于性能测试。但是,有些公司和个人,就想用 jmeter 来做接口自动化测试。

你有没有想过呢?

下面我就给大家讲讲,用 jmeter 如何做接口自动化测试。

02. jmeter 与接口自动化测试

如果要你用 jmeter 来做接口自动化测试,你是不是把几乎每一个测试用例,都是用一个取样器来实现?

相信很多人都是这么想的,也是这么干的。

但是,很遗憾,你这种,是初级入门做法。你能实现所有的测试用例都被执行,但是,你写脚本和维护脚本的时间,可能比你用手工执行所有的测试用例时间还要长,而且还可能长很多。

因为,只要开发人员改了接口一个地方,你得从所有取样器中,找出与这个接口相关的所有取样器,然后一一修改,万一有遗漏,哪出现的失败,不是 bug,而是你脚本的问题。所以说,这是入门级人干的事情。

那有没有更好的办法呢?

平时写功能测试用例的时候,习惯用 Excel 的同学,可能就会想,我能把自动化测试用例每个信息都写在 Excel 表格中,然后,使用 jmeter 的 CSV 数据文件读取功能,把它读取出来执行,是不是就可以呢?

这种方法,就比前面的方法好了很多,用例还是用 Excel 来维护,只是使用 jmeter 来读取,执行就可以了。整体的可维护性要好很多很多,工作量也要少很多。

但是,在真正动手去做的时候,我们又会发现,困难重重。

写过自动化测试用例的同学,应该会有这样的经历,就是做接口测试时,我们通常会先对某个接口各种参数进行测试,这样,接口地址相同,但是参数不一样,校验的接口也一样。

在做完单个接口之后,我们还会做由多个接口构成的业务测试,这个时候,每个接口地址都不一样,接口请求的方法也可能不一样,最后的校验点,也可能变化,这样的自动化脚本,应该要怎么写呢?

第一个对单接口,编写自动化测试脚本,可能还好实现,因为接口相同,那么他的请求方法肯定相同,虽然,请求头、请求体、校验信息可能不同,但是,至少还有共同点。

而第二个,对业务编写自动化测试脚本,那就很难了,因为几乎所有的都可能不同,请求的协议、方法、请求头、请求体,全都可能不同,而且请求头和请求体还可能要有动态值,这个怎么做呢?

万事开头难,只怕去实践。只要你想好了,真正去动手做了,这很多问题,就不那么难了。

有很多事情,我们可以加条件判断,和循环控制等逻辑控制器,就可以实现的。

靠我一篇文章,就把它全部写出来,这是不现实的,所以,今天,主要讲一个,被很多同学问到,难倒了一大片好汉的问题。


看到这个问题,你想到什么方法?

03. 实操案例

如果你在 jmeter 中,每个接口写一个取样器,这个问题很好解决,直接使用参数引用就可以解决,但是,这个同学的做法是把测试用例写在 CSV 文件中,然后使用 jmeter 去读取 CSV 文件,执行测试用例,如何来实现动态参数呢?

肯定,有的同学已经想到了,使用变量引用,在 CSV 中,按照 jmeter 的写法,写引用变量。

好了,给大家一个看一个参考:

这个 CSV 文件中,有两个不同的接口,说明是做的业务场景自动化测试,第一个接口,是注册,那么每次注册的账户肯定不能相同,如果相同了,那么第二次肯定失败,所以,就使用了随机函数,让注册的账户自动生成。

第二个接口是登录,当然,可以用固定账户登录,但是,我们前面进行注册,最好还是用前面注册的账户来登录,这样更加真实,body 中使用了变量引用,显然,这是用到了关联。

我们用 jmeter 写个脚本,来运行下,看能否成功。

从脚本来运行情况来看,我们可以取到名称,地址,和请求体,但是,因为请求体在 CSV 中写了 jmeter 函数,结果读取出来运行时,还是原样运行,并没有对请求体中的函数进行执行。

怎么办呢?

很多人,就卡在这了,不知道怎么办了。

其实,我们想一下,现在是内容读取出来了,但是内容是原样进行请求,没有对内容中的函数进行执行,现在的问题,只需要解决 body 中的函数,能被运行就可以了。

我们再想下,在 jmeter 中,有哪些可以运行函数的方法?jexl3 函数可以,groovy 函数可以。

04. Exl3 函数

jexl3 函数,是要运行一段代码,返回代码结果,我们的 body 是 JSON 格式,显然不能直接运行,要想运行,还得写 Java 代码调用 JSON 运行才可以,非常复杂。

groovy 函数,是要运行一个表达式,显然,也不行。

那还有没有其他的函数呢?eval 函数,这个函数,返回的是字符串表达式运行的结果。

此时,我们修改下我们 jmeter 中取样器的请求体。

看,运行结果,函数被执行了,注册的账号动态变化了。

接下来,我们就把第 2 条用例,使用了关联,也写出来。

现在,我们已经实现,在 jmeter 中,使用一个取样器执行 2 个不同接口,并且动态参数值的自动化运行了。

现在,我们再把断言加上。

注意:断言中,如果有中文,就要特别注意文件编码

现在,我们再加大难度,在 CSV 文件中写个 GET 接口。

我们发现,多个接口请求方法不一样,jmeter 肯定不能用 1 个取样器了, get 请求没有 body 参数,但是,请求头要添加一个 Token 参数。

是不是一下楞圈了,不知道怎么动了?看懂下面的图,你就知道怎么做了。

在取样器的前面增加一个条件判断,判断是请求方法,根据请求方法,执行 POST 取样器或 GET 取样器

然后,把循环次数设置为 CSV 文件条数一致,其他的地方,应该就比较容易理解了。

05. END

看最后,多条测试用例,只用 2 个取样器就搞定了。以后,改动 CSV 文件,可能都不用动 jmeter 脚本,增加测试用例,改下循环控制器数量就可以了。

当然,这还不是最完美的,里面还有诸多不足。给想用 jmeter 做接口自动化测试的同学开了个头,更多的,还需要同学们自己动手,也欢迎同学们,在文章后面留言讨论。

注意,这篇文章的技术,只适合在自动化中,不能用这个脚本进行性能测试。

最后: 可以关注公众号:伤心的辣条 ! 进去有许多资料共享!资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

只要20个小时,你就可以学会任何你想学的新语言

大家好,我有许多喜欢做的事情,而学习新事物就是其中一件。学习一个新技能需要多久呢?你知道我的发现吗?1万个小时?no......这样我再也不可能学习到任何新的东西。但事实并非如此。一万小时的法则... 查看详情

想要学测试,你必须掌握的一些技能

作为软件工程专业的很多同学对于测试这一门行业肯定不会陌生的,但是认为测试就是点点点的操作肯定不在少数,至少我当初也是这么认为的。那我们从另一方面想一想,如果测试真的只是点点点的话,那么他的利用价值也太... 查看详情

软件测试技能,jmeter压力测试教程(代码片段)

...言一、安装Java环境二、安装JMeter环境三、启动JMeter脚本测试四、查看报告文件前言使用jmeter做压测的时候,在windows上不太稳定,所有一直在Linux服务器上使用jmeter做压力测试本篇记录下Linux上搭建jmeter环境,以及运行... 查看详情

jmeter可以批量录入数据吗?如果可以怎么操作?

...我的要求,而且可以结合seleniumLibrary,用来做web的自动化测试相当不错。之前我也接触过selenium,不过感觉那个工具更贴近开发人员使用,有了robotFramework之后,感觉这个工具相当强大,而且是贴近测试人员的。之所以说强大,... 查看详情

jmeter测试数据会提交到数据库里面吗?

测试网站录入功能,使用badboy录制了测试插入新记录的脚本。然後在jmeter测试该脚本(100个并发),测试正常,但是数据库并没有增加插入的测试记录,数据库连接池连接数也很少,请问为什麼?参考技术A你测试的数据库跟你... 查看详情

jmeter性能测试

1. Ramp-upPeriod(inseconds)代表多长时间内启动所有线程2.AggregateReportSamples:总共发给服务器的请求数量Average:单个请求的平均响应时间,单位是毫秒Median:50%的请求的响应时间90%Line:90%的请求的响应时间95%Line:95%的请求的响应时间9... 查看详情

如何学习

...尝试修改代码,处理bug; 如何学习:1,想明白你真的想学的是什么?2,很多我们想学的skill, 查看详情

jmeter测试数据会提交到数据库里面吗?

测试网站录入功能,使用badboy录制了测试插入新记录的脚本。然後在jmeter测试该脚本(100个并发),测试正常,但是数据库并没有增加插入的测试记录,数据库连接池连接数也很少,请问为什麼?参考技术A设置好你需要测试的... 查看详情

选择了软件测试,你后悔吗?

...得在求职的时候,面试官经常问我:“为什么要选择软件测试工作?”而我也会经常说一堆自己有的没的优势去应付。工作这么久了,也不再浮躁,静下心来回忆当初选择软件测试工作的历程,也是对自己职业生涯的一次回顾。... 查看详情

转行软件测试,你满足条件吗你适合吗

随着互联网的发展,确实软件测试的缺口越来越大,很多人看到了测试门槛低而且薪资也还不错,都想转行软件测试,但是转之前一定要考虑清楚,不要盲目跟风。转行软件测试有几个很重要的条件,先看... 查看详情

jmeter生成测试报告

JMETER测试报告样例JMETER提供的生成测试报告功能,能够生成漂亮的HTML测试报告。上图是测试统计图20个用户并发,测试时长一分钟,发起流程320次,没有出错,TPS为6.5,平均发起流程事务响应时间为2.9秒,意思是启动20个流程的时... 查看详情

jmeter性能解析

1.90%响应时间和50%响应时间解析:http://www.cnblogs.com/jackei/archive/2006/11/11/557972.html2.注释①90%是响应时间如果是8秒,是说90%的用户的响应时间小于等于8秒; 但如果这时候的平均响应时间为5秒,并且你在曲线图上看到的大部分... 查看详情

性能测试理论2|性能测试技能树&性能测试工具jmeterloadrunner区别

性能测试理论2|性能测试技能树&性能测试工具Jmeter、LR区别1性能测试技能树1.1测试工具1.2测试基础1.3服务器性能诊断1.4优化技能1.5协议1.6自动化1.7持续集成2Jmeter和LoadRunner区别1性能测试技能树1.1测试工具JMeterLoadRunner1.2测试基... 查看详情

16jmeter中的监听器以及测试结果分析

常用监听器断言结果、查看结果树、聚合报告、SummaryReport、用表格查看结果、图形结果、aggregategraph等指标分析-Samples:本次场景中一共完成了多少请求-Average:平均响应时间-Median:响应时间中值,也就是50%用户的响应时长-90%Lin... 查看详情

jmeter深入进阶性能测试进阶案例实战

第1章性能测试整体认知了解性能测试的目的,想做好性能测试都需要掌握哪些方面的技能(开发语言、操作系统、网络、工具等)。性能测试、稳定性、压力、疲劳、容量预估、多并发逻辑。掌握如何开始性能测试,并且掌握在性... 查看详情

jmeter深入进阶性能测试进阶案例实战

第1章性能测试整体认知了解性能测试的目的,想做好性能测试都需要掌握哪些方面的技能(开发语言、操作系统、网络、工具等)。性能测试、稳定性、压力、疲劳、容量预估、多并发逻辑。掌握如何开始性能测试,并且掌握在性... 查看详情

get你想象不到的技能

1、取消选取、防止复制<bodyselectStart="returnfalse"></body>2、不允许粘贴<bodyonpaste="returnfalse"></body>3、防止复制oncopy="returnfalse"4、防止剪切oncut="returnfalse"5、关闭输入法<inputstyle="ime_mode:dis 查看详情

接口测试之jmeter中http请求之get请求

1、打开Jmeter,新建一个测试计划2、选择测试计划,右击-Threads(Users)-线程组3、接下来新建一个http请求,选择线程组,右击-Samper-HTTP请求。4、输入服务器名称或IP;选择get方式;输入请求路径;输入请求参数。5、再添加一个察看... 查看详情