接口关联
接口关联是将前面接口的动态数据信息提取出来,作为后面接口的传入参数。
但请注意,如果使用cookie来管理信息时,要使用cookie管理器,而不是使用提取器!
而且在不了解cookie的内容时,不要修改cookie管理器信息任何内容。
保守起见,建议只要使用了登录接口,最好都附带上cookie,不管实际上是否有使用cookie都加上。
JSON提取器
在查看结果树里,可以更改响应内容的格式
这里选择json格式之后,响应内容就会显示为json格式
在这个的下面有一个输入框,在里面可以输入json的提取式,这里可以测试json的提取式
那么回到正题,要把这些数据提取出来给到脚本中使用就需要用到Json提取器。
在线程组右键,添加后置处理器->json提取器
使用方法如上图,很简单,在Names of created variables中输入变量名,这个变量名是放到脚本上使用的。然后在JSON Path expressions中填写JSON提取式即可。
另外,由于JSON如果提出多个值,那么它会返回一个列表,此时Match No填与不填会产生不一样的结果。
不填或者为0时,随机从列表中取一个值;
为-1时,会输出列表中的每个值,从1开始,如goods_1、goods_2、goods_3…
0时则是取对应下标的值(下标从1开始)
最后如果要在一个JSON提取器中填写多个提取式,那必须要填写default Values,每个变量和提取式之间需要用";"区分。
正则提取器
正则表达式的测试可以在这里测试:https://c.runoob.com/front-end/854
有个万能正则表达式: 左边界(.*?)右边界,但这个表达式不能匹配换行符。
如果要提取多个值,可以参考下面这种方式:
正则表达式:“gqid”:“(.?)"(.?)“token”:”(.?)"
这里的正则有3个(.?)意味着提取的时候会提取到3个值,但实际需要的其实就只有gqid和token,2个值,因此就需要用到模板。
模板: 1 1 1 3 3 3
由于正则有3个(.?),,因此模板这里写 1 1 1 3 3 3意味着是提取第1和第3个(.?)的值
而提取结果要使用的话,就不是单纯使用re1,而是要使用re1_g1和re1_g2
在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年最全的软件测试工程师学习知识架构体系图 |
生活中总会有风雨,但是我们不能退缩。只要我们心怀希望,坚持不懈地努力奋斗,就一定能够超越自我,创造属于自己的美好未来!
不要轻言放弃,因为你永远不知道明天会给你什么惊喜。坚持梦想的人最终都会成功,只是时间长短而已。珍惜时间,抓住机遇,让自己成为不断进步的人!
只要心中有梦想,就不要停止奋斗的脚步。困难只是暂时的,成功却是永恒的。人生路上或许会跌倒,但只要坚持起身,才能走向辉煌。