51Testing软件测试论坛

标题: LR中怎样取到服务器发回来的流水号? [打印本页]

作者: lsl20032    时间: 2009-2-26 17:42
标题: LR中怎样取到服务器发回来的流水号?
各位大侠,现在我用LoadRunner做性能测试,被测程序是C#写的一个机票预定的C/S程序,我录制的协议是Microsoft.net的,当点击机票预定的按钮时,客户端向服务器端发送了一个请求,服务器端传过来一个流水号,在进入下一个页面时这个流水号和用户名的前四位构成一个订单号。现在的问题是,我的LR录制不下来这个流水号,在测试的时候,虚拟用户订票就全部订到我录制时的用户里面。
(比如,录制时的用户是staff001,订单号是staf0000286,0000286---是流水号,虚拟用户可以是staff002~staff110等,那么订票的结果全部是staf0000286订单号。)
我现在就是想知道用什么方法可以把流水号取出来,在脚本里添加一个函数或者其他方法?请各位有经验的大侠指点指点啊,不胜感激!!!!!!!!!!!


[ 本帖最后由 lsl20032 于 2009-2-27 11:07 编辑 ]
作者: chare    时间: 2009-2-26 21:08
其实流水号就是服务器返回的字符串
1:这个字符串如果没加密,并且可视化(在网页源代码中可以看到),直接用web_reg_save_param 将其抓到,并且搞定
2:如果这个字符串加密了。就需要挂dll或者其他处理,先解密,再web_reg_save_param

总的就是先定位。服务器的这些数据返回到哪里可以看到。(这个实在不知道可以问开发的)
然后用web_reg_save_param处理。
作者: chare    时间: 2009-2-26 21:13
用消息队列   vxworks下   
  接收客户端   服务端线程   
  struct   A{   
      ...   
  }a;//假设都是字节对齐的   
  struct   B{   
        ...   
  }b;   
  char   *buf=NUll;   
  char   *buf1=NULL;   
  //memset(a和b,   0,   sizeof(a和b));   
  recv(socket,   buf,   sizeof(a),   );//假设发送的就是一个A的结构     
  memcpy(&a,   buf,   sizeof(a));   
  //依据不同来源做不同处理完   
  b里   放了处理过的数据   
  memcpy(buf1,   (char*)&b,   sizeof(b));   
   
  msgQSend(queue1,   buf1,   len,   NO_WAIT,   )   
   
  发送数据到服务器客户端线程   
  变量类似于上   
  msgQReceive(queue1,   buf,   len,   WAIT_FOREVER);   
  memcpy(&a,   buf,   len)   
  //分析出服务端   客户端不同处理,

这只是个例子。所以这些数据都是有生成的规则什么的。具体问开发人员。你到时候调下接口,或者就让他处理下页面。让那个流水号显示在页面上面,或者页面源代码中。
作者: mr.bee    时间: 2009-2-27 00:06
为什么你向大家提问还要求大家支付积分?
作者: adiao    时间: 2009-2-27 09:26
标题: 回复 4# 的帖子
就是
作者: lsl20032    时间: 2009-2-27 11:08
标题: 回复 4# 的帖子
哦,实在不好意思,我是新手来这里,我本来是想给大家积分的,不小心弄错了,谢谢提醒!
作者: lsl20032    时间: 2009-2-27 11:19
标题: 回复 3# 的帖子
你好,谢谢你的解答,但是我用的是Microsoft.NET协议,好像不能用Web_reg_save_param函数吧?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2