用LoadRunner,这个问题99.82%的人都遇到过

2017-12-05   出处:搜狗测试  作/译者: zqzq  

上周有一个小伙伴发了这样一篇文章:用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中没有报错,但是返回的数据为空。去服务器上看log之后发现报了一条errorLog,说是请求格式错误。之前数据是英文的时候没事儿,变成汉字就有问题,首先考虑是编码的问题:由于客户端的汉字是GBK编码,发送到服务端之后无法被服务端识别,因此没有数据返回。 
在LoadRunner中,改变编码有特定的函数:lr_convert_string_encoding ,该函数的定义如下:

LoadRunner的函数说明文档中也给出了一些参数可以取的值:

Values for fromEncoding and toEncoding


web_custom_request( ) 函数之前,我们先将要发送的汉字进行转码:

脚本中的body相应地也变成了这样(由于之前把参数化的标记符号改成了“< >”,因此这儿的str参数需要用 “< >” 包起来):

改完之后,发请求,服务端log正常,返回的数据当然也是excited!

以上就是小编在项目中遇到的两个小坑,在此总结并分享给大家,小编相信所有踩过的坑总结后都会变成宝贵的经验,希望可以帮到大家。也欢迎小伙伴们留言分享自己遇到的问题,小编和其他的小编们一定尽力帮大家解决。

看都看完了,点个赞呗~



欢迎给测试窝投稿或参与内容翻译工作,请邮件至editors@testwo.com。也欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,并与我们的编辑和其他窝友交流。
146°|1463 人阅读|0 条评论

登录 后发表评论