LoadRunner录制Socket协议脚本乱码调研

2012年07月16日 测试工具, 测试技术, 软件测试 ⁄ 共 977字 ⁄ 字号 暂无评论 ⁄ 阅读 8,245 次

最近在测试过程中使用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,还是得通过手写脚本的方式来实现。方法呢,其实很简单。看下一篇吧!