性能测试问题解决——消息头缺失引起的400错误(web_add_header)

最近在做性能测试,在开发web脚本的过程中遇到错误:Action.c(15): Error -26631: HTTP Status-Code=400 (Bad Request) for http://xxxxxx/onlinefront/s.do?tl=51&bk=null&optionId=244&p=110

问了很多人没有人知道问题的原因,最后只能自己潜心研究,首先从http status-code400的错误开始分析,这个错误是说请求无法被处理,因为它含有缺失或无效的信息,根据错误信息的描述应该是发送HTTP请求中语法格式不正确导致不被服务器接受,这很可能就是通过LoadRunner 发送HTTP请求是一个不完整。那么首先要确认的就是比较发出的请求和录制的时候请求看是否丢失了http信息来判断错误的原因。

首先选上runtimesettings中extended log的三个选项后运行此脚本,用录制发送相类似请求的日志和选择exection log的http send请求日志进行对比。拷贝这些请求数据包到一个记事本中然后进行比较。在Recording Log(单协议)或Generation Log(多协议)中查找是否存在头数据包,我们发现在执行日志中头域失踪了。

这样解决问题的方法就是用web_add_header("xxxxx","yyyy")添加一个http头,在错误的请求前添加此函数然后回放。

如果你发现所有的HTTP send请求都缺少头数据包,在脚本中的开头添加web_add_auto_header(”XXXXX“,”yyyy“);随着web_add_auto_header的添加,你不需要为每个HTTP send请求都添加web_add_header了。

还有一个解决问题的方法是在Tools -> Recording Options -> Advanced tab中设置,点“headers”按钮,在列表中选择“Record Headers in the List”,然后选择“XXXXX”,因此它可确保在录制过程中录制自己。

 

web_add_auto_header 向所有后面的 HTTP 请求中添加自定义标头(因为有时候一个脚本中不止一个HTTP请求) 
web_add_header 向下一个HTTP 请求中添加自定义标头 
web_cleanup_auto_headers 停止向后面的 HTTP 请求中添加自定义标头 
web_remove_auto_header 停止向后面的 HTTP 请求中添加特定的标头

这里说的‘XXXXX’及‘yyyyy’,分别是http请求头的属性和属性值,是你发送的http请求中本应该带上,却由于录制脚本或直接写的脚本中漏掉的,比如:‘XXXXX’可以是Content-Type,‘yyyyy’是其对应值(比如application/x-www-form-urlencoded,这样就指定了你发送的http请求内容应该是一个url编码后的form表单数据;如果是application/json,给服务端说明了,我发送的请求的消息体是一个json串)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值