压测篇03:准备JMeter脚本

674 阅读3分钟
昨天为了季度压测,写了负责业务所有的脚本,用到了有些之前没用到的地方
今天再把这篇补充一下,方便下次使用

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}”~