上周有一个小伙伴发了这样一篇文章:用LoadRunner,这个问题99%的人都遇到过,这次小编也有LoadRunner相关的问题和大家分享。小编觉得这个问题貌似比上周的问题覆盖面更广,因此掐指一算发现,遇到这个问题的人竟然高达惊人的99.82%,惊不惊喜害不害怕?
好了,说正事儿~最近小编在做服务端压力测试的时候,遇到了两个小问题,虽然是两个比较简单的问题,但是很常见,因此小编总结了一下,分享给需要的小伙伴们。
一、发post请求时,Body中需要填充Json字符串
在小编的项目业务中,服务端跟客户端之间通信的时候约定使用post请求,在post请求的body中发送了一串Json格式的数据。小编在LoadRunner中的代码如下(当然,与小编真正的代码不完全一样):
按部就班写出上面的几行代码,调试的时候发现报错了,机智的小编断定肯定是body里面的Json字符串由于双引号没有转义引起的,于是把上面脚本中body那一行改成了下面这样:
想着这下应该没问题了。再次发请求的时候发现LoadRunner提示返回500,去服务端查log发现服务器根本没有收到这个请求。这是怎么回事儿呢?
查阅了资料之后发现原来是这样:由于我们在body中传了一个json格式的字符串,该字符串中{和 }符号与LoadRunner中参数化时的符号冲突了!对,参数化的时候也是用的这两个符号,因此会报错。
找到了问题,解决方法也很简单:把LoadRunner中参数化的标记符号改一下就行了。在Tools —> General Options选项中,选择Parameterization进行修改即可:
按照网上大神的建议,将参数化标记符号修改为<和>,再次运行脚本,顺利通过,服务端收到了请求,当然返回的数据也是非常的excited!
二、发post请求时,Body中对汉字的处理
在调通上面的问题一之后,小编紧接着又发现了一个问题:在脚本中,有时候需要传一些汉字进去,而传了汉字之后请求就会出现异常,比如当脚本中的body变成这样时:
在LoadRunner中,改变编码有特定的函数:lr_convert_string_encoding ,该函数的定义如下:
LoadRunner的函数说明文档中也给出了一些参数可以取的值:
Values for fromEncoding and toEncoding
脚本中的body相应地也变成了这样(由于之前把参数化的标记符号改成了“< >”,因此这儿的str参数需要用 “< >” 包起来):
改完之后,发请求,服务端log正常,返回的数据当然也是excited!
以上就是小编在项目中遇到的两个小坑,在此总结并分享给大家,小编相信所有踩过的坑总结后都会变成宝贵的经验,希望可以帮到大家。也欢迎小伙伴们留言分享自己遇到的问题,小编和其他的小编们一定尽力帮大家解决。
看都看完了,点个赞呗~