少年击剑更吹箫,剑气箫心一例消。这篇文章主要讲述性能工具之Jmeter一个脚本的编写与调试案例相关的知识,希望能为你提供帮助。
引言
最近接到一个任务,需要写一个Jmeter脚本,脚本需要“登录”后从返回值获取Cookies,然后从第一个接口的返回参数中提取有用的id,在第二个接口请求的时候使用这个id,从而完成测试。然而这个看似简单的测试用例的编写并不是很容易,还经历了一些有趣的调试。第一个问题开始,完成了登录接口的编写,但是返回非常奇怪,我把JMeter返回的内容存入html中,页面如下:
文章图片
报错的原因是json的字符串没有经过规格化,如:?
?json.loads()?
?,后尝试做了如下操作:文章图片
请求的头部信息如下:
Multipart/form-data
的基础方法是POST,也就是说是由POST方法来组合实现的。Multipart/form-data
与POST方法的不同之处在于请求头和请求体。Multipart/form-data
的请求头必须包含一个特殊的头信息 :Content-Type
, 且其值也必须规定为multipart/form-data
,同时还需要规定一个内容分割符用于分割请求体中的多个POST的内容,如文件内容和文本内容自然需要分割开来,不然接收方就无法正常解析和还原这个文件了。Multipart/form-data
的请求体也是一个字符串 , 不过和post的请求体不同的是它的构造方式 , post是简单的name=value
值连接,而Multipart/form-data
则是添加了分隔符等内容的构造体。
文章图片
这里因为?
?Content-Type?
?已经有要求了,需要把这一项去掉。文章图片
这样登录接口就调试成功了
第二个问题刚松了一口气,结果第二个问题出现了,第二个请求返回报错,如下:这明显是一个长连接的问题。
【性能工具之Jmeter一个脚本的编写与调试案例】
文章图片
正常的客户端访问,不会出现这样的情况,因为正常通信的情况下,服务端主动关闭,客户端连接也会释放掉。但是JMeter中,服务端主动关闭,他根本就不理会。那么有没有JMeter中实时主动关闭的办法那?
去掉勾选?
?Use KeepAlive?
?,连接就不会复用,这样也就不存在空闲超时,被服务端干掉的情况了。但带来的是性能的开销,因为tcp每次都要关闭然后重建。文章图片
推荐阅读
- 达梦数据库使用disql生成html格式的巡检报告
- 使用Patroni构建PostgreSQL HA集群实践
- Debian Linux系统修改apt源,安装SSH服务
- c语言4
- 项管行知13--估算
- java 从零开始手写 RPC (07)-timeout 超时处理
- 交换机原理和基本命令学习
- oeasy教您玩转vim - 54 - # 匹配替换
- 传输层协议的介绍