昨天为了季度压测,写了负责业务所有的脚本,用到了有些之前没用到的地方
今天再把这篇补充一下,方便下次使用
1、添加线程组
在Test Plan上点击鼠标右键-->Add-->Threads(Users)→Thread Group,添加测试场景设置组件:
- Name:线程组名称
- 1)线程数:即用户数,一个虚拟用户占用一个线程,虚拟用户的并发数
- 2)准备时长:设置的虚拟用户数需要多长时间全部启动
- 3)循环次数:每个线程发送请求的次数,总请求数=线程数*循环次数。如果勾选了“永远”,那么所有线程会一直发送请求,直到选择停止运行脚本
2、添加HTTP Request
在Thread Group右键-->Add-->Sampler-->HTTP Request: 输入对应的Name、协议、IP或域名、path以及参数
添加HTTP Request Defaults
有时候一个脚本里的所有接口请求域名是一样的,就可以添加一个请求的默认参数写入域名,避免每个请求接口都写一遍。 在Thread Group右键-->Add-->Config Element-->HTTP Request Defaults: 输入对应的协议、IP或域名
3、添加断言
在HTTP Request上右键-->Add-->Assertions,选择需要的断言。 这个接口是返回眼睛的具体参数,下面举例的断言是判断errorCode返回是否为0。断言可根据接口的实际情况调整。
4、添加监听器
在Thread Group上右键-->Add-->Listener-->View Results Tree 添加完监听器,可以点击运行按钮看其是否可以正常返回,Response data可查看返回参数。
对于我这个接口到这里脚本就算配置完成了,保存后就可以使用这个脚本压测了。如果要跑多个接口或者需要本地使用表格形式传参,可以参考下面两步
5、参数化
5.1 固定参数化
例如:所有的接口请求参数都会使用到uid,但是uid是个固定的值,就可以直接先填写好该参数的默认值。 新建User Defined Variables: 在Thread Group上右键-->Add-->Config Element-->User Defined Variables
5.2 使用本地文档传参
例如:需要使用本地的search.txt文档里的搜索词作为keyword参数进行请求。 新建csv data set config: 在Thread Group上右键-->Add-->Config Element-->CSV Data Set Config
- filename:选择本地准备好的csv文件
- Variable Names:需要参数化的参数名
以上5.1/5.2设置参数后,在HTTP Request下parameters中的Value填写对应的参数名:
5.3 请求参数需要传图或其他媒体类型文件
在HTTP Request下Files Upload中填写对应的文件地址、参数名及媒体类型
5.4 函数使用
参数化可以借助函数实现多项内容,可以在tools-->function Helper Dialog中查找所有函数,下面以Random为例:
6、关联
JMeter中关联可以在需要获取数据的请求上,右键-->Add-->Post Processors-->JSON Extractor,选择需要的关联方式,如下图有很多种方法可以提取动态变化数据:
例:getattribute接口入参beauty_id取得comprehensive返回的值。那么就在comprehensive接口创建JSON Extractor。
使用jsonpath提取某个值,用的都是$.key1.key2.key3这个一个点加节点名称这么找下去。写完jsonpath后可以在结果树选择JSON Path Tester后填写写的path来测试是否可以正确获取需要的变量值。
最后记得把getattribute接口的beauty_id取值改为“${beauty_id}”~