目录
三、jmeter的可视化—— +influxdb+grafana
2、jmeter通过Backend Listener连接influxdb
官网: Apache JMeter - Download Apache JMeter
一、jmeter发送http请求
以后就可以用jmeter来压测接口了,而且是从前端http接口层面的压测。
1、模拟一个前端请求
1.1、背景及诉求
背景很简单就是想用jmeter模拟一个实际业务中用到的http请求,对应功能点如下。
其对应的接口,请求时候所带的cookie、参数、payload等都可以通过开发者工具中看到。
注:网上请求百度的case很多了,没什么可说的。我们贴合实际业务场景,直接去请求saas软件的一个实际业务接口。这种情况需要考虑登录态(cookie)等问题也更贴合实际,为此有必要专门演示一把。
1.2、具体步骤
打开浏览器调试工具,打开jmeter。
(1)利用jmeter的 import from cURL进行导入。
①调试工具中选中目标接口→右键→copy→copy as cURL
注:其copy下来的其实是如下一串结果。按理来说应该是包括所有的必要信息了才是。
curl 'https://testgateway.qidian.qq.com/v1/interface/inner/cloudcc_303213' \
-H 'authority: testgateway.qidian.qq.com' \
-H 'accept: application/json, text/plain, */*' \
-H 'accept-language: zh-CN,zh;q=0.9' \
-H 'content-type: application/json' \
-H 'cookie: login_url=https%3A%2F%2Foaconsole.qidian.qq.com%2Flogin%2F%3Fshow_type%3Dqa%26source%3Dworkbench; d2=Tcxl6Jtcmi8MwUIZvsayrx7yxmoeO0z6CGTBYhD59zvH1JjuFqQBzAzSLoG50Z0W93RXa1giPvYP14sswnxOMGCYLgR0SygSguzlcjr14zu8pEnRkRQ3D3Cna19tOi0ooGy0RZeBvn3mrBjaKGFewVadcAnb2xu6lx18ZBN8Z4YM0l8XeBecL+E1W2NOnNQud44gYmp6nLzJg/nQbq0WGoAZ31YcIF4zkS3XFQ+Ip3OhDsTSJvT78g==; corp_uin=2852199388; aid=3007442117; aid_skey=belsR+0zPsl3noSHqgbQUEcY2xngQtQ+yrunvtMpyDtEhJnCOJ3oVymCaaWPnUvZsJpG42neuoazR48ylhQFwPrerrlH2OoL19oEADpcGL6xGGVXQj1XUvnjlNyjWbovPHqfPXzY+De61sTHYYJTvdl3jVoo2FmIkUc6zriSQ3Q=; login_type=workbench; source=workbench; logout_type=workbench; qd_admin_is_web=yes; qd_aid_encode=bfbf632e80afd3bb63602fe46a812976; qdui_loginaccount=fy@2852199388.qidian; _qddaz=QD.801755194539948; __qidianid=e90872176fae3c53cec8df003802269745d3f01d; XSRF-TOKEN=31215d2f6c088e58e22172ff18efa52a09516396; _bqqcsrf=31215d2f6c088e58e22172ff18efa52a09516396; _bqq_csrf=31215d2f6c088e58e22172ff18efa52a09516396' \
-H 'origin: https://oaadmin.qidian.qq.com' \
-H 'referer: https://oaadmin.qidian.qq.com/' \
-H 'sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
-H 'sec-fetch-dest: empty' \
-H 'sec-fetch-mode: cors' \
-H 'sec-fetch-site: same-site' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36' \
-H 'x-gseq: 1655199907746' \
-H 'x-requested-with: XMLHttpRequest' \
-H 'x-xsrf-token: 31215d2f6c088e58e22172ff18efa52a09516396' \
--data-raw '{"label_data":{"rpt_label_item":[],"bool_is_solved":false,"str_summary":"shuozhuosummery"},"session_head":{"uint32_channel_type":4,"uint64_kfuin":2852199388,"uint64_kfextuin":3007442117,"str_visitid":"894554834464981"},"_bqq_csrf":"31215d2f6c088e58e22172ff18efa52a09516396","_t":"1655199907746"}' \
--compressed
②利用jmeter的导入工具直接导入cURL
将前面复制的结果直接粘贴到方框中→Create Test Plan
注:这个导入后其实就把大部分信息都导入进去了。例如header里面的大部分信息、协议/域名ip、http请求方式、路径等;另外payload参数其实也被导入进去了。如下:
③添加cookie
浏览器中右键copy as value复制cookie至剪切板→ jmeter中 选中HTTP HeaderManager → 点击右侧下方的“从剪贴板添加”→之后就可以在上面的<名称,值>中看到对应的添加项了。
注:之所以有这个问题是因为下图中确实没有cookie,按理来说上面复制的cURL是包括cookie信息的,但是这里确实没有被解析出来,所以我们需要额外添加一把。 感觉应该是jmeter有bug。
值得注意的是:默认的解析可能是有问题的。例如我这里就被解析成如下形式了。注:再一次感觉jmeter有bug。
其实很简单就是开发者工具里面看到的<key,value>保持一致就好了。
④执行
点击如下run按钮→按照提示保存对应的.jmx文件。
⑤查看具体请求的结果
然