最近在测试过程中使用LoadRunner录制Socket协议脚本,在data.ws中,中文参数显示为乱码,直接影响到参数化等操作,导致压力测试无法继续下去。本文对录制脚本的乱码问题进行了相关调研。
使用LoadRunner录制的脚本如下:
通过在网上搜索资源,查询到几种解决方案如下:
■ 方法一:通过字符串编码转换的函数修改脚本中的乱码;
通过一个字符串编码转换的函数lr_convert_string_encoding
在LoadRunner中,为我们提供了一个字符串编码转换的函数lr_convert_string_encoding,它可以把字符编码转换为UTF-8格式。
测试组人员通过对比发现,这个函数是在录制的脚本中出现乱码时使用的,例如:
web_custom_request("CALL-H001I", "EncType=text/xml; charset=UTF-8", "BodyBinary=CALLH001I1040浣忔埧01 鏆傛棤鍙风爜1 11000000 1000000.00A110102641122043#1闇嶈景榫" """x99" "10001鍘﹂棬100 |
但本次遇到的问题是在录制结束后,data.ws文件的中文参数显示为乱码。问题仍然得不到解决。
■ 方法二:录制选项中的Support charset选中UTF-8再重新录制
这种方法是在录制前,将录制选项的Support charset选中UTF-8后进行录制,这种方法主要适用于WEB页面录制时的场景。在录制使用Socket协议时,录制选项中没有Support charset,导致问题也不能解决。
■ 方法三:更改服务器操作系统的语言
将操作系统语言修改为英语,重启机器后,重新录制脚本,乱码问题即可解决。
但实际情况是,将操作系统语言改为英语后,重启机器,重新录制脚本,乱码只是变换了一种形式而已(且文件名称或目录中有中文时会显示成“??”),问题仍然无法解决。
■ 最终解决方法
网上也有资料说这个问题无法解决(汗!!!),因为录制Socket协议是LoadRunner直接监控TCP这一层的数据流,任何数据,虽然在最顶层应用层时是可见数据,但是一旦到了TCP层,均被封包成二进制。
所以呢,看来要用LoadRunner来测试Socket,还是得通过手写脚本的方式来实现。方法呢,其实很简单。看下一篇吧!