当前位置:文档之家› loadrunner中十六进制报文参数化方法

loadrunner中十六进制报文参数化方法

loadrunner中十六进制报文参数化方法2012年7月5日10:10 熊瑞在做tuxedo和socket脚本的过程中,经常会碰到发送的报文是十六进制字符串。

而往往我们又需要针对十六进制报文中的某些数据进行参数化。

当然,直接针对十六进制报文,选中后右键参数化是不会被识别的。

需要经过相应的转化后才能参数化成功。

首先,针对一串发送报文,需要了解报文体的结构,具体要了解的是:发送报文长度多少、十六进制报文对应的可通俗识别的十进制或者字符串显示、每一个可识别字符串在报文中的偏移位置。

当然熟悉报文体中字段的内容是需要参考接口文档。

具体例子如下,下面是一段原始报文:0: 00 D1 35 44 41 31 46 35 35 36 43 33 42 32 44 30 __________*?DA1F556C3B2D010: 33 39 30 30 30 30 30 30 30 30 30 30 30 30 30 30 __________390000000000000020: 31 31 31 31 31 31 31 31 30 31 31 30 30 30 30 63 __________111111*********c30: 6F 70 00 00 00 00 00 00 30 00 00 30 00 00 00 00 __________op******0**0****40: 31 31 30 00 00 00 00 00 00 00 00 00 00 00 00 00 __________110*************50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 __________****************60: 00 00 00 00 00 00 00 00 00 00 00 31 30 30 31 37 __________***********1001770: 00 00 00 00 37 37 39 31 37 32 35 36 39 32 00 00 __________****7791725692**80: 39 37 37 34 00 00 00 00 00 00 00 00 00 00 00 00 __________9774************90: 00 00 00 00 00 00 00 00 00 00 00 00 00 32 30 31 __________*************201a0: 32 30 36 32 30 00 00 00 00 00 00 00 00 00 00 00 __________20620***********b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 __________****************c0: 10 31 30 32 39 36 66 30 00 32 30 31 30 30 34 30 __________*10296f0*2010040d0: 32 __________2如上所示,十六进制报文一般是每16位是一行,最左边的用黄色标注的0: 10:其实就是16的累加,也可以理解是一个偏移量,当然,和我们具体要参数化的报文中的字段的偏移量是不同的,那个是需要自己进行计算;用绿色标注的__________只是开发人员在log输出中为了标识而打印出来的,可不用关注。

用红色标注的地方,如*?DA1F556C3B2D0,这是我们看到的第一行十六进制串对应的字符串,这一段也是开发人员在log输出中伴随打印出来,也就是我们要了解的地方,还有一点需要说明的是,中间这段十六进制码是右边红色标记的字符串的ASC码的十六进制。

(这段只是对上述报文做一个详述,各位看官在自己实际开发的报文的过程中,可能与此不同,具体问题具体对待)当然,我们在实际报文发送的过程中,仅仅只是需要16进制串而已,即一下一段:00 D1 35 44 41 31 46 35 35 36 43 33 42 32 44 3033 39 30 30 30 30 30 30 30 30 30 30 30 30 30 3031 31 31 31 31 31 31 31 30 31 31 30 30 30 30 636F 70 00 00 00 00 00 00 30 00 00 30 00 00 00 0031 31 30 00 00 00 00 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 31 30 30 31 3700 00 00 00 37 37 39 31 37 32 35 36 39 32 00 0039 37 37 34 00 00 00 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 32 30 3132 30 36 32 30 00 00 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0010 31 30 32 39 36 66 30 00 32 30 31 30 30 34 3032针对这一段报文,我们需要使用编辑工具进行相应处理,因为loadrunner中使用相关函数时,都是在处理字符串,所以,我们需要把这段报文转化成十六进制串,转换后如下:\x00\xD1\x35\x44\x41\x31\x46\x35\x35\x36\x43\x33\x42\x32\x44\x30\x33\x39\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x31\x31\x31\x31\x31\x31\x31\x31\x30\x31\x31\x30\x30\x30\x30\x63\x6F\x70\x00\x00\x00\x00\x00\x00\x30\x00\x00\x30\x00\x00\x00\x00\x31\x31\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x30\x30\x31\x37\x00\x00\x00\x00\x37\x37\x39\x31\x37\x32\x35\x36\x39\x32\x00\x00\x39\x37\x37\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x30\x31\x32\x30\x36\x32\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x31\x30\x32\x39\x36\x66\x30\x00\x32\x30\x31\x30\x30\x34\x30\x32根据与开发了解的报文结构,这段报文的长度,是参考第一位和第二位,及\x00\xD1,因此长度为13*16+1=209。

这样,我们就可以使用loadrunner自带的C函数memcpy进行处理,处理后如下:memcpy(sendBuf,"\x00\xD1\x35\x44\x41\x31\x46\x35\x35\x36\x43\x33\x42\x32\x44\x30""\x33\x39\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30""\x31\x31\x31\x31\x31\x31\x31\x31\x30\x31\x31\x30\x30\x30\x30\x63""\x6F\x70\x00\x00\x00\x00\x00\x00\x30\x00\x00\x30\x00\x00\x00\x00""\x31\x31\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00""\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00""\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x30\x30\x31\x37""\x00\x00\x00\x00\x37\x37\x39\x31\x37\x32\x35\x36\x39\x32\x00\x00""\x39\x37\x37\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00""\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x30\x31""\x32\x30\x36\x32\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00""\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00""\x10""\x36\x32\x31\x34\x39\x32\x31\x32\x30\x31\x30\x30\x34\x30\x32\x31",209);这样子,一段原始十六进制码在就转成了loadrunner能识别的报文了。

下面,就说参数化的问题。

在上面这段报文中,可以看到,最后一行,我单独拿了出来,因为,这一段是需要我参数化处理的地方。

相关主题