前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >性能工具之Jmeter一个脚本的编写与调试案例

性能工具之Jmeter一个脚本的编写与调试案例

作者头像
高楼Zee
发布2019-07-17 18:04:14
7780
发布2019-07-17 18:04:14
举报
文章被收录于专栏:7DGroup7DGroup

引言

最近接到一个任务,需要写一个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中实时主动关闭的办法那?

去掉勾选Use KeepAlive,连接就不会复用,这样也就不存在空闲超时,被服务端干掉的情况了。但带来的是性能的开销,因为tcp每次都要关闭然后重建。

到此为止,这个Jmeter脚本就调通了,从中学习到了不少的知识,感谢左泽位同学提供的在线帮助。

性能工具之Jmeter系列:

性能工具之Jmeter扩展配置元件插件

性能工具之Jmeter压测Hprose RPC服务

性能工具之Jmeter扩展函数及压测ActiveMQ实践

性能工具之Jmeter压测Thrift RPC服务

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 7DGroup 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 第一个问题
  • 第二个问题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档