最近做了一个接口测试的项目,json格式,https协议,使用postman调试这个接口,在postman中写好三个表头Authorization、sessionIndex、Content-Type和body的内容,接口调通。用loadrunner11写脚本,脚本如下:
开启全部日志,并开启print SSL information,运行后,查看日志,服务器返回503 Service Unavailable。
猜测是脚本的问题,增加了其他表头,body的内容使用json工具转义,回放,服务器依然返回503,勾选winlnet replay instead of sockets(Windows only),回放出现
"HttpSendRequest" failed, Windows error code=12029 (cannot connect) and retry limit (0) exceeded for URL="https://192.168.11.11/getCashierJson.htm?的错误,尝试使用网上的做法,没有成功。继续查看详细日志,发现了两条信息,服务器提前关闭连接如下
t=1091ms: Server sg.eservice-sim.sipac.gov.cn has shut down the connection [0] [MsgId: MMSG-26000]
Action.c(20): t=1095ms: Closed connection [0] to 192.168.11.11:443 after completing 0 requests [MsgId: MMSG-26000]
感觉恍然大悟,服务器提前关闭了连接,猜测是我的请求被阻挡了,查看应用程序的日志,应用程序无该条请求的日志,查看服务器的日志,服务器日志为空,OMG,心好累,后来找到运维工程师,询问是不是网络方面的问题,,但是既然postman可以调通,脚本请求自然可以调通。
回去继续修改我的脚本,万分灰心之时,想到我的虚拟机中有loadrunner12.02,就用12调试一下看看。
使用12回放脚本,返回结果任然是503,勾选winlnet replay instead of sockets(Windows only),再次回放,查看日志,what,日志中返回了正确的数据,为什么lr11出错,lr12可以调通,然后翻阅loadrunner手册,发现,loadrunner12增强了SSL,增加了TLS1.1/TLS1.2和NPN的支持。
总结:loadrunner11处理https真的很弱鸡,对于采用https的系统只能使用录制的方式,要不然11处理不了手写的使用https的脚本。同时,建议以后都使用loadrunner12。避免耽误项目进度。
补充,loadrunner12运行脚本的时侯也会出现Attempting "HttpSendRequest" retry due to Windows error code=12057 (certificate revoked) for URL="https://192.168.11.11/resource_access_orm/privilege/create/v1.0"和Attempting "HttpSendRequest" retry due to Windows error code=12045 (invalid Certification Authority) for URL="https://192.168.11.11/resource_access_orm/privilege/create/v1.0" ,根据网上的设置了,问题的不到解决,目前待解决。