前段时间接触了一下loadrunner的接口性能测试,然后尝试了一下手动编写脚本,毕竟录制这种东西,不是每次都能通的,而且录制下来的脚本,通常是有很多其他杂七杂八的请求夹杂在中间,没有达到真正的压测接口的目的;

  loadrunner默认的脚本是C语言的,百度之后发现其实它支持目前所有主流的语言,如:Java User、VB User、VB script User 、Javascript User等。

  下面是尝试过的几种post接口的请求方式:

  • Post接口,通过JSON方式请求:
int i;
game()
{
//赛事列表接口开始时间,时间戳
lr_save_string("","gameHoldBeginTime");
//赛事列表接口结束时间,时间戳
lr_save_string("","gameHoldEndTime");
//gameCode
//lr_save_string("1532122","gameCode");
//以下接口循环请求两次
for (i=0;i<2;i++)
{
/*胜负盘赛事列表接口*/
web_reg_save_param ("S_respond","LB=","RB=",LAST); 
//获取赛事编码gameCode,提供给后续接口调用
web_reg_save_param("gameCode","LB=gameCode\":\"","RB=\"",LAST);
web_add_header("Content-Type","application/json; charset=UTF-8");
lr_start_transaction("listGames");
web_custom_request("listGames", 
"URL={url}/common/listGames", 
"Method=POST", 
"Resource=0", 
"RecContentType=application/json", 
"Referer=", 
"Snapshot=t3.inf", 
"Mode=HTML", 
"EncType=application/json; charset=UTF-8", 
"Body={\"requestId\":\"{requestId}\",\"timestamp\":\"1523503209424\",\"version\":\"1.0.0\",\"clientId\":\"{clientId}\",\"accessToken\":\"{token}\",\"data\":{\"gameHoldEndTime\":\"{gameHoldEndTime}\",\"gameHoldBeginTime\":\"{gameHoldBeginTime}\",\"gameType\":\"ALL\"},\"sign\":\"{sign}\"}", 
LAST); lr_end_transaction("listGames", LR_AUTO);
//打印返回信息 
lr_convert_string_encoding ( lr_eval_string ("{S_respond}"),LR_ENC_UTF8 ,NULL,"respond"); 
//打印转码后的响应报文 
lr_output_message ( "\nlistGames :%s",lr_eval_string ("{respond}"));
//循环结束
}
}
  • Post请求,使用from-data方式进行请求的时候,脚本的写法:
    lr_start_transaction("saishiPost");

    web_submit_data("saishiPost",
"Action={url}/higame/saishiPost",
"Method=POST",
"TargetFrame=",
"EncType=multipart/form-data",//使用的编码类型
"Referer=https://yqcqtest.100bei.com/higame/gamelist",
"RecContentType=application/josn",
"Mode=HTML",
ITEMDATA, //下面编辑post请求的数据
"Name=gameState", "Value=WAITING", ENDITEM, //数据的name、value及结束符
"Name=riqi", "Value=2018-06-08", ENDITEM, //第二条数据的name、value及结束符
"Name=leagueCode", "Value=", ENDITEM,
LAST); //结束事件
lr_end_transaction("saishiPost", LR_AUTO); //打印返回信息
lr_convert_string_encoding( lr_eval_string("{S_respond}"),LR_ENC_UTF8,NULL,"respond" );
//打印转码后的响应报文
lr_output_message("\nappInfo :%s", lr_eval_string("{respond}"));
  • Get请求脚本编写方法,get请求还是比较简单的,只需要套用更改url,基本就能调通了;
    /*情报接口*/
web_reg_save_param ("S_respond","LB=","RB=",LAST);
//检查点
//web_reg_find("Search=Body","Text=200",LAST);
web_add_header("Content-Type","application/json; charset=UTF-8");
lr_start_transaction("intelligences"); web_custom_request("intelligences",
"URL={url}/guess-api-gateway/portal/admin/common/intelligences?pageSize=5",
"Method=GET",
"Resource=0",
"Referer=",
"Mode=HTTP",
"EncType=application/json;charset=UTF-8",
"Body=",
LAST); lr_end_transaction("intelligences", LR_PASS); //打印返回信息
lr_convert_string_encoding( lr_eval_string("{S_respond}"),LR_ENC_UTF8,NULL,"respond" );
//打印转码后的响应报文
lr_output_message("\nintelligences :%s", lr_eval_string("{respond}"));

另外:使用lr_save_string方法,配置静态变量以及接口请求的字段参数。还可以使用判断语句,来区分读取不同的配置,达到更高的易维护性;

loadrunner 接口性能脚本编写(Get请求和Post请求)的更多相关文章

  1. Loadrunner Webservice接口性能测试脚本编写优化总结

    本文主要介绍使用Loadrunner Webservice接口性能测试脚本编写及优化总结. 1.Webservice协议脚本编写流程 下面介绍使用Loadrunner 11调用Webservice接口 ...

  2. loadrunner录制脚本如何选择使用get请求和post请求的方式

    在loadrunner工具里录制脚本时常常会用到get请求和post请求,有关loadrunner常用的这两类的请求主要有: get请求: web_url 和 web_link post请求: web ...

  3. Loadrunner之HTTP脚本编写

    Loadrunner之HTTP脚本编写 刚学习性能测试的时候还是建议以录制脚本为好,从录制的脚本中去了解脚本结构,各个函数的用法,慢慢再去尝试自己去编写脚本,如果想往技术方向发展,建议最好学习一门编程 ...

  4. loadrunner学习系列---脚本编写(2)

    loadrunner学习系列---脚本编写(2) 今天接着翻译http://www.wilsonmar.com/1lrscrīpt.htm上面关于LR脚本编写部分. VUser_Init部分 这里是V ...

  5. 使用SoapUI工具做get请求和post请求接口测试

    祝大家节日快乐啦. 之前写过的一篇帖子已经介绍了SoapUI工具的基本使用,所以在此不再重复讲解关于建工程.建测试套件.添加用例等操作,可查看该篇文章详解:http://www.cnblogs.com ...

  6. SoapUI工具做get请求和post请求接口测试

    转载自:https://www.cnblogs.com/hong-fithing/p/7617366.html 此篇主要介绍SoapUI工具做常用的两种请求接口测试,分别是get请求和post请求. ...

  7. 浅说Get请求和Post请求

    Web 上最常用的两种 Http 请求就是 Get 请求和 Post 请求了.我们在做 java web 开发时,也总会在 servlet 中通过 doGet 和 doPost 方法来处理请求:更经常 ...

  8. axios中出现两次请求,OPTIONS请求和GET请求

    在项目中发现ajax中出现两次请求,OPTIONS请求和GET请求 查看到浏览器NetWork有两次请求,请求url一样: 查找原因是浏览器对简单跨域请求和复杂跨域请求的处理区别. XMLHttpRe ...

  9. HttpClient之Get请求和Post请求示例

    HttpClient之Get请求和Post请求示例 博客分类: Java综合   HttpClient的支持在HTTP/1.1规范中定义的所有的HTTP方法:GET, HEAD, POST, PUT, ...

随机推荐

  1. Python Tkinter Entry(文本框)

    Python学习记录--关于Tkinter Entry(文本框)的选项.方法说明,以及一些示例. 属性(Options) background(bg) borderwidth(bd) cursor e ...

  2. 使用TELNET手工操作 IMAP 查看邮件

    http://www.cnblogs.com/CrazyWill/archive/2006/08/12/474884.html IMAP 协议收信与POP收信有很大的不同,最明显的一点就是发送的每条命 ...

  3. IMAP命令与分析

    https://www.cnblogs.com/crystalray/p/3304688.html Internet Mail Access Protocol(缩写为IMAP,以前称作交互邮件访问协议 ...

  4. oAuth 认证和授权原理

    什么是OAuth授权?   一.什么是OAuth协议 OAuth(开放授权)是一个开放标准. 允许第三方网站在用户授权的前提下访问在用户在服务商那里存储的各种信息. 而这种授权无需将用户提供用户名和密 ...

  5. 被C语言操作符优先级坑了

    今天有一个枚举的题目的代码是这样的: 重点在于maxXor这个函数的实现,枚举两个数字,其中maxr保存了最大值的 i 异或 j , 可是这个程序执行结果大大出乎意外-_-. 然后就把 i 异或 j ...

  6. 23种设计模式之策略模式(Strategy)

    策略模式是一种对象的行为型模式,定义一系列算法,并将每一个算法封装起来,并让它们可以相互替换.策略模式比算法独立于使用它的客户而变化,其目的是将行为和环境分隔,当出现新的行为时,只需要实现新的策略类. ...

  7. 无线路由器无线AP模式的配置

    环境介绍>>>>>>>>>>>>>>>>>>>交换机类型:三层交换机无线路由器品牌:T ...

  8. mysql概要(二)类型(数值型,字符型,时间类型

    1.mysql数值型范围 tinyint可选属性 tinyint(N) unsigned zerofill N:表示显示长度,与zerofill配合使用,即长度不够用0填充,并且自动变成无符号的数,N ...

  9. 转sklearn保存模型

    训练好了一个Model 以后总需要保存和再次预测, 所以保存和读取我们的sklearn model也是同样重要的一步. 比如,我们根据房源样本数据训练了一下房价模型,当用户输入自己的房子后,我们就需要 ...

  10. 利用 :first-child 和 :nth-last-child 确定子元素数目

    读<css揭秘>时,发现选择器的神奇作用,可以确定子元素数目,比如: li:first-child:nth-last-child(2),li:first-child:nth-last-ch ...