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=http://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。注意调用形式。

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

最新内容请见作者的GitHub页:http://qaseven.github.io/

   

时间: 2024-12-10 13:05:29

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

LoadRunner关联的例子

1.关联是获取服务器返回给客户端的动态数据(字符串),把该字符串保存在参数中,在后面的函数中调用 2.注意关联函数的位置 例子 Action() { web_reg_save_param("UserSession", "LB=name=userSession value=", "RB=>", "Ord=1", "Search=NoResource", LAST); web_url("WebT

《HttpClient官方文档》1.1 执行请求(二)

1.1.4. HTTP 实体 HTTP 消息可以携带与其相关联的请求或响应的内容实体.实体可以在一些请求和响应中找到,因为它们也是可选的.使用了实体的请求被称为封闭实体请求.HTTP规范定义了两种封闭实体的方法: POST 和PUT.响应通常期望包含一个内容实体. 这个规则也有特例,就像HEAD 方法和 204 No Content,304 Not Modified, 205 Reset Content 响应. HttpClient根据其内容来源以此区分三种类型的实体: streamed(流式)

《UNIX网络编程 卷1:套接字联网API(第3版)》——2.8 SCTP关联的建立和终止

2.8 SCTP关联的建立和终止 与TCP一样,SCTP也是面向连接的,因而也有关联的建立与终止的握手过程.不过SCTP的握手过程不同于TCP,我们在此加以说明. 2.8.1 四路握手建立一个SCTP关联的时候会发生下述情形(类似于TCP). (1)服务器必须准备好接受外来的关联.这通常通过调用socket.bind和listen这3个函数来完成,称为被动打开. (2)客户通过调用connect或者发送一个隐式打开该关联的消息进行主动打开.这使得客户SCTP发送一个INIT消息(初始化),该消息

Loadrunner视频教程汇总

小布老师视频:测试工具概述,兼LoadRunner介绍 -1-4http://www.boobooke.com/v/bbk1046http://www.boobooke.com/v/bbk1046.ziphttp://www.boobooke.com/v/bbk1047http://www.boobooke.com/v/bbk1047.ziphttp://www.boobooke.com/v/bbk1048http://www.boobooke.com/v/bbk1048.ziphttp://w

ASP.NET创建Web服务之XML基础结构

asp.net|web|web服务|xml|创建 为了在网络多样性方面取得成功,XML Web服务必须不关心所选择的操作系统.对象模型和程序语言.而且,XML Web服务为了和其他基于Web的技术一样被广泛接受,它们必须: 松散耦联:如果两个系统中,只有使用的命令能理解前面提到过的自我描述基于文本的消息,那么这两个系统就被认为是松散耦联的.而另一方面,紧密耦联的系统使用大量的定制的软件来增强系统间的通讯,并且需要对系统之间了解的更多. 无所不在的通信:现在个人不太可能能够构造一个操作系统,或者在

十、会话状态

  10.1 会话状态概述 HTTP协议的"无状态"(Stateless)特点带来了一系列的问题.特别是通过在线商店购物时,服务器不能顺利地记住以前的事务就成了严重的问题.它使得"购物篮"之类的应用很难实现:当我们把商品加入购物篮时,服务器如何才能知道篮子里原先有些什么?即使服务器保存了上下文信息,我们仍旧会在电子商务应用中遇到问题.例如,当用户从选择商品的页面(由普通的服务器提供)转到输入信用卡号和送达地址的页面(由支持SSL的安全服务器提供),服务器如何才能记住

jsp Servlet基础入门学习:会话状态

js|servlet     10.1 会话状态概述 HTTP协议的"无状态"(Stateless)特点带来了一系列的问题.特别是通过在线商店购物时,服务器不能顺利地记住以前的事务就成了严重的问题.它使得"购物篮"之类的应用很难实现:当我们把商品加入购物篮时,服务器如何才能知道篮子里原先有些什么?即使服务器保存了上下文信息,我们仍旧会在电子商务应用中遇到问题.例如,当用户从选择商品的页面(由普通的服务器提供)转到输入信用卡号和送达地址的页面(由支持SSL的安全服务器

并发基础

1: 并发的简短历史 程序在各自的进程中运行.互相分离,各自独立执行,由操作系统来分配资源.比如:内存 文件句柄 安全证书 ,如果需要相互通信的话, socket signal handlers shared memory semaphores 文件 线程安全: 一个类是线程安全的,是指在被多个线程访问时,类可以持续进行正确的行为.,对于线程安全类的实例进行顺序或者并发的一些列操作都不会导致实例处于无效状态. synchronized (1)锁对象的引用 (2)锁保护的代码块. 每一个Java对

从责任界定和问题预警角度 解读全栈溯源对DevOps的价值

在2000年及更早的时候,应用大都是简单的3层架构,即界面层.业务逻辑层和数据访问层.而随着云技术和移动互联网的发展,时代对IT技术提出了更高的要求,它需要适应更迅捷的变化.同时,产品的迭代速度和效率变得更快,应用的复杂性也发生了爆炸式的增长,新时代的应用也变得更加难于管理. Gartner在2016年,对APM重新规划了标准,即需要满足数字化体验监控,应用发现.深入追踪与诊断(ADTD) ,应用分析(AA) 这三个条件才能称作真正的APM.在这组概念中,Gartner认为APM的核心功能则是能