LoadRunner:关联HTTP请求

  本例通过一个使用HTTP/HTML协议发送、获取服务器数据的vuser脚本,分析LoadRunner如何进行HTTP关联。

  下面这个例子包括两个事务:上传数据到服务器、下载服务器数据,通过关联将服务器返回的数据保存下来,方便就行分析。

  1、定义变量

  在Action最前面定义变量,否则会报错。

  代码:

  merc_timer_handle_t timer;

  double wasteTime=0;

  char *ActualBuffer;

  int NumberOfBytes;

  char *tmp;

  char tmpcode[24]={0};

  //iterator

  int i=0;

  int j = 0;

  int m = 0;

  //mobile

  char codearray[100][24]={0}; //存储mobile下载的代码,每个代码暂设为24字节长

  char* code;

  short codelen;        //存储mobile下载的代码的长度

  short codenum;        //总代码个数

  int retUL = -1;  //上传返回值

  //int lenUL = 0;   //上传返回长度

  int retDL = -1;  //下载返回值

  int lenDL = 0;   //下载返回长度

  int flag = 0;    //符合的code总数

  //pc

  //char retcodeUL[10]={0};

  //char retcodeDL[2048]={0};

  char* pcretUL;

  char pccode[24]={0};

  char pccodearray[1024][24]={0};

  short pccodelen=0;

  2、保存服务返回数据

  在定义变量或常量后,开始定义事务、进行关联。

  代码:

  web_set_max_html_param_len("2000000");//设置页面接收最大的字节数,该设置应大于下载文件的大小

  //使用关联函数获取下载文件的内容,在这里不定义左右边界,获得服务器响应的所有内容

  web_reg_save_param("filecontent",

  "LB=",

  "RB=",

  "Search=BODY",

  LAST);

  lr_rendezvous("Re_UL_PC");

  lr_start_transaction("UL_PC");

  //pc上传

  web_url("create",

  "URL=10.15.107.112:9089/sys/userdata/create?userid={userid}&content={'group0':[{'data':'{code1}.stk','time':1376904823299640},{'data':'{code2}.stk','time':1376904823299647},{'data':'{code3}.stk','time':1376904823299651},{'data':'{code4}.stk','time':1376904836969909}]}&fileName=mystock.json&rawtype=true&Accept=json",

  "Resource=0",

  "RecContentType=text/html",

  "Referer=",

  "Snapshot=t1.inf",

  "Mode=HTTP",

  LAST);

  pcretUL = lr_eval_string("{filecontent}");

  if(NULL != strcmp(pcretUL,"{\"state\":1"))

  lr_end_transaction("UL_PC",LR_PASS);

  else

  lr_end_transaction("UL_PC",LR_FAIL);

  在上述代码中,web_reg_save_param函数起到了关联作用,必须在调用web_url之前使用,它的作用类似一个注册机制。调用了语句web_reg_save_param("filecontent",  "LB=",  "RB=",  "Search=BODY",  LAST);之后,LoadRunner自动将服务器返回的HTTP数据的BODY中左右边界(LB左边界,RB右边界)之内的内容保存到变量filecontent中。具体参数说明请参考帮助文档。

  filecontent由系统自动分配,我们只需要给它传个名字,以后可以直接使用该变量。pcretUL = lr_eval_string("{filecontent}");将变量filecontent的内容提取赋值给我们自定义变量pcretUL.注意调用形式。

  获取到服务器数据后,通过添加自己的判断逻辑,来断定事务成功或失败。

LoadRunner:关联HTTP请求的更多相关文章

  1. Loadrunner关联取参及设置检查点

    Loadrunner关联取参及设置检查点: 获取post的响应值当作参数存储,要在此post请求之上添加 web_reg_save_param("sign", "LB=m ...

  2. 品味性能之道<八>:Loadrunner关联技巧与字符处理

    一.概述       Loadrunner作为HP出品的性能测试工具,拥有太多奇妙魔法甜点供予性能测试人员享用,其中吃起来比较有嚼劲的那就是关联了.当然在关联之后我们还需要一些简单的字符处理,用以生成 ...

  3. Loadrunner 关联 web_custom_request综合实例

    Loadrunner 关联 web_custom_request综合实例 Loadrunner 关联web_custom_request,针对自带的订票系统的一个综合实例,相信看了本文大家对学习loa ...

  4. loadrunner 关联匹配多个值

    loadrunner 关联获取从服务器返回相关值,如果需要把所有匹配的值都获取并且把这些值打印出来,怎么做呢? 1.首先要把把所有的匹配值都保存起来,需要在关联函数里面多传递一个参数:"Or ...

  5. LoadRunner关联通用函数的学习

    LoadRunner关联通用函数的学习 写这篇文章的时候,我先声明一下,本BLOG中的文章如果没有写出是转贴的一般就是本人原创. Loadrunner脚本中进行关联的时候,用到了一些函数,作用是把字符 ...

  6. loadrunner关联——对服务器返回的数据选择性提交

    在跟进项目的过程中,才体会到自己之前闷头看书再写小小的测试程序验证的学习方式很没有效率,知道动态关联,却也只是会参数化式的动态关联,这种关联是我们预先知道要提交的数据而进行的关联:更高一级的可能就是使 ...

  7. LoadRunner关联之学习笔记

    去银行办业务,进银行的门,大堂经理给你一张业务号,拿着这张业务号,去柜台办理业务.--录制下来 第二天又去银行,还是拿着这张业务号,去柜台办理业务,柜员就不理你了,因为这张业务号是昨天的.--回放过程 ...

  8. Loadrunner模拟Json请求

    一.loadrunner脚本创建 1.Insert - New step -选择Custom Request - web_custom_request 2.填入相应参数 3.生成脚本,并修改如下(参数 ...

  9. Loadrunner—关联知识点

    一.关联定义 把脚本中某些写死的数据,转变成是撷取自服务器所发送的.动态的.每次都不一样的数据 二.什么时候需要做关联 要想弄清这个问题,我们首先要知道客户端与服务器端的请求与响应的过程 过程说明: ...

随机推荐

  1. squid总结

    squid可以完成的工作: 代理服务器 反向代理服务器 防火墙 缓存功能 透明代理 squid和varnish的对比,以及squid的优缺点说明: 缓存到硬盘,容易遇到I/O瓶颈 V3.2以下不支持多 ...

  2. bug report

    ubuntu 11.10添加eth0:1后重启网卡不显示 eth0:1 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=324306

  3. sshSSH Secure Shell Client root用户无法登录解决办法

    最近使用这个工具,普通用户可以登录root用户不可以登录.将vi /etc/ssh/sshd_config按照下述配置解决问题 修改sshd配置文件:vi /etc/ssh/sshd_config P ...

  4. [Jenkins 新插件] 兼容阿里开发手册 (P3C) 的火线插件安装使用教程

    一.前言 火线(Fireline)的Jenkins官方插件已经上线,目前火线不仅能检查出安卓代码中的安全类问题和内存泄露问题,还兼容了阿里开源的Java开发规约(P3C项目),本文将以教程的形式帮助大 ...

  5. 解决oracle数据库 ora-00054:resource busy and acquire with NOWAIT specified 错误

    解决oracle数据库 ora-00054:resource busy and acquire with NOWAIT specified 错误 本人在使用pl/sql developer 客户端调用 ...

  6. Moq/moq4

    moq The most popular and friendly mocking framework for .NET var mock = new Mock<ILoveThisFramewo ...

  7. [LeetCode] 12. Integer to Roman ☆☆

    Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...

  8. 51Nod 1094 和为k的连续区间 | 水

    Input示例 6 10 1 2 3 4 5 6 Output示例 1 4 #include "cstdio" #include "algorithm" #in ...

  9. [LA3135]node形式的优先队列

    n个触发器,每个触发器每period秒就产生一个编号为qnum的事件,求前k个事件. n<=1000  k<=10000 node形式的优先队列 主要在于重载小于号,确定优先顺序. #in ...

  10. 【poj3522-苗条树】最大边与最小边差值最小的生成树,并查集

    题意:求最大边与最小边差值最小的生成树.n<=100,m<=n*(n-1)/2,没有重边和自环. 题解: m^2的做法就不说了. 时间复杂度O(n*m)的做法: 按边排序,枚举当前最大的边 ...