> 文章列表 > 全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)

前言

接口关联

接口关联是将前面接口的动态数据信息提取出来,作为后面接口的传入参数。
但请注意,如果使用cookie来管理信息时,要使用cookie管理器,而不是使用提取器!

而且在不了解cookie的内容时,不要修改cookie管理器信息任何内容。
保守起见,建议只要使用了登录接口,最好都附带上cookie,不管实际上是否有使用cookie都加上。

JSON提取器

在查看结果树里,可以更改响应内容的格式

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

这里选择json格式之后,响应内容就会显示为json格式

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

在这个的下面有一个输入框,在里面可以输入json的提取式,这里可以测试json的提取式

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

那么回到正题,要把这些数据提取出来给到脚本中使用就需要用到Json提取器。
在线程组右键,添加后置处理器->json提取器

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

使用方法如上图,很简单,在Names of created variables中输入变量名,这个变量名是放到脚本上使用的。然后在JSON Path expressions中填写JSON提取式即可。

另外,由于JSON如果提出多个值,那么它会返回一个列表,此时Match No填与不填会产生不一样的结果。

不填或者为0时,随机从列表中取一个值;
为-1时,会输出列表中的每个值,从1开始,如goods_1、goods_2、goods_3…

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

0时则是取对应下标的值(下标从1开始)

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

最后如果要在一个JSON提取器中填写多个提取式,那必须要填写default Values,每个变量和提取式之间需要用";"区分。

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

正则提取器

正则表达式的测试可以在这里测试:https://c.runoob.com/front-end/854
有个万能正则表达式: 左边界(.*?)右边界,但这个表达式不能匹配换行符。

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

如果要提取多个值,可以参考下面这种方式:

正则表达式:“gqid”:“(.?)"(.?)“token”:”(.?)"
这里的正则有3个(.
?)意味着提取的时候会提取到3个值,但实际需要的其实就只有gqid和token,2个值,因此就需要用到模板。

模板:111333
由于正则有3个(.?),,因此模板这里写111333意味着是提取第1和第3个(.?)的值

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

而提取结果要使用的话,就不是单纯使用re1,而是要使用re1_g1和re1_g2

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

在Jmeter写java脚本

Beansehll

首先Beanshell是一个小型的、免费的、可嵌入java源解释器。它可以执行java语法和表达式

在Jmeter中,Beanshell能做:
引入自己的jar包,实现增强功能;
写java代码,实现自己的逻辑功能;
跨线程组传值;

在性能测试过程中,请不要使用Beanshell的任何原件,因为它的性能并不好。如果需要些额外的脚本,推荐使用JSR223替代Beanshell。

JSR223

JSR223的使用和Beanshell是一样的,就不多做介绍了,就简单介绍一些示例
另外提一句,JSR223和Beanshell都一样可以直接引用jmeter上的变量,引用方法也是${}

从Redis上获取验证码:

import redis.clients.jedis.Jedis;Jedis jedis = new Jedis("redis地址", 6379); // redis默认端口是6379
jedis.auth("密码");
String key = String.format("redis上的key")   
String value = jedis.get(key);
vars.put("ver",value)
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

二、接口自动化项目实战

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

三、Web自动化项目实战

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

四、App自动化项目实战

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

五、一线大厂简历

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

六、测试开发DevOps体系

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

七、常用自动化测试工具

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

八、JMeter性能测试

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

九、总结(尾部小惊喜)

生活中总会有风雨,但是我们不能退缩。只要我们心怀希望,坚持不懈地努力奋斗,就一定能够超越自我,创造属于自己的美好未来!

不要轻言放弃,因为你永远不知道明天会给你什么惊喜。坚持梦想的人最终都会成功,只是时间长短而已。珍惜时间,抓住机遇,让自己成为不断进步的人!

只要心中有梦想,就不要停止奋斗的脚步。困难只是暂时的,成功却是永恒的。人生路上或许会跌倒,但只要坚持起身,才能走向辉煌。