LoadRunner HTTP+Json 接口性能测试
接口的请求参数和返回结果均是JSON字符串,请求可以用POST或者GET方法。先说GET方法:
一、GET方法测试
- Insert - New step -选择Custom Request - web_url
- 填写参数;
- 生成脚本,进行脚本相应修改;
Action()
{
//添加集合点
lr_rendezvous("jihedian");
lr_start_transaction("getTop10");
//插入检查点,检查返回值是否包含testName
web_reg_find(
"Search=Body",
"Text=testName",
LAST );
//发送get请求
web_url("www.xxx.com",
"URL=http://192.168.3.33:9200/_search?{\"query\":{\"bool\":{\"must\":[{\"term\":{\"plateNumNond\":\"<NewParam>\"}}]}",
"TargetFrame=",
"Resource=0",
"RecContentType=application/json",
"Snapshot=t1.inf",
"Mode=HTML",
LAST );
lr_end_transaction("getTop10", LR_AUTO);
//打印本次参数
lr_output_message( "the platenum is #%s", lr_eval_string( "{NewParam}" ) );
return 0;
}
说明:查看服务器返回的结果需在Vuser-Runtime-settings的log选项下,勾选Enable-logging、Extended log、Data returned by server ;
二、POST方法测试
post方法有两种:web_submit_date和web_custom_request函数,web_submit_date不支持json串:
脚本可以自行编码,也可以:
- Insert - New step -选择Custom Request - web_custom_request
- 填入相应参数
- 生成脚本,并修改如下(参数中的引号"前需要加斜杠\转译)
Action()
{
web_submit_data("login",
"Action=http://xxx/login?",
"Method=POST",
"TargetFrame=",
"RecContentType=application/json",
"Snapshot=t5.inf",
"Mode=HTTP",
ITEMDATA,
"Name=params","Value={\"param\":{\"userAccount\":\"{UserName}\",\"passWord\":\"e10adc3\",\"device\":\"IOS\"},\"version\":\"v1.0\",\"loginLog\":\"{testTimeParam}\"}",ENDITEM,
LAST );
或者:lr_start_transaction("querybypost");
//插入检查点,检查返回值是否包含t_query_data
web_reg_find(
"Text=max_score",
LAST );
web_custom_request("querybypost", //VuGen中树形视图中显示的名称
"Url=http://192.168.3.33:9200/_search", //请求url
"Method=POST",
"Resource=0",
"Mode=HTTP", //请求方式
"Referer=",
"EncType=application/json", //指定响应头的Content-Type,这里是JSON
"RecContentType=application/json;charset=UTF-8", //指定请求头的Content-Type,这里是JSON
"Body={\"query\":{\"bool\":{\"must\":[{\"term\":{\"plateNumNond\":\"<PlateNumNond>\"}}],\"must_not\":[],\"should\":[]}},\"from\":0}", //body的内容
LAST);
lr_end_transaction("querybypost", LR_AUTO);
lr_output_message( "PlateNumNond on iteration #%s", lr_eval_string( "<PlateNumNond>" ) );//响应中文乱码转换
lr_convert_string_encoding(lr_eval_string("{PlateNumNond
}"), “utf-8”,LR_ENC_SYSTEM_LOCALE,"BM");
lr_error_message(lr_eval_string("{BM}"));}
说明:在LR中参数化标志是{},接口参数body里面也是{},所以在body里面参数化的时候用<>代替,
设置方法:Tool - General Options - Parameterization 中将Parameter Braces 改为<>即可
post请求参数有三种格式:1.application/x-www-form-urlencoded 键值对;2.multipart/form-data 表单;
3、application/json Json串,根据自己的需要修改就EncType值可以;
键值对和表单写法一致:- ITEMDATA,
- "Name=Name1", "Value=Value1", ENDITEM,
- "Name=Name2", "Value=Value2", ENDITEM,
- LAST);
再来认识下lr_convert_string_encoding
//响应中文乱码解决
int lr_convert_string_encoding( const char *sourceString, const char *fromEncoding,const char *toEncoding, const char *paramName);参数解释:
sourceString:被转换的源字符串。
fromEncoding:转换前的字符编码。
toEncoding:要转换成为的字符编码。
paramName:转换后的目标字符串。
常量和值得关系:
Constant
Value
LR_ENC_SYSTEM_LOCALE
NULL
LR_ENC_UTF8
"utf-8"
LR_ENC_UNICODE
"ucs-2"
三、web_custom_request和web_submit_data区别
- web_custom_request方法可以发送POST和GET类型的请求;
- web_submit_data只能发送POST类型的请求;
- 所有web_submit_data方法发送的请求都可以使用web_custom_request来实现
- web_custom_request可以实现web_submit_data无法实现的请求,比如“查询所有邮件并删除”这个案例中,查询时我们使用关联把所有邮件对应的标识抓取成一个数组,如果使用web_submit_data来完成这个删除的请求,需要很多个web_submit_data请求才能完成,但使用web_custom_request就可以通过一个请求完成,方法是自己写代码拼一个eb_custom_request
- 方法POST请求的Body值。
这两种实现请求的方法还有一个需要注意的地方就是web_custom_request中body中的属性值如果包含一些特殊字符,必须通过URL编码,否则Web服务器会返回500错误,一个典型的例子是如果Body中包含ViewState,ViewState中常常有“=”之类的特殊字符,此时必须通过URL编码,LoadRuner中提供了一个这样的编码转换函数:web_convert_param(“vs1″,“SourceEncoding=HTML”,“TargetEncoding=URL”, LAST);3.web_custom_request函数详解A.语法:intweb_custom_request( const char*RequestName, ,[EXTRARES, ,] LAST );B.返回值:返回LR_PASS(0)代表成功,LR_FAIL(1)代表失败。C.参数:(1)RequestName:步骤的名称,VuGen中树形视图中显示的名称。(2)List of Attribute:属性列表,支持的属性有以下几种:a.URL:页面地址。b.Method:页面的提交方式,POST或GET。c.EncType:编码类型。d.TargetFrame:当前链接或资源所在Frame的名称。除了Frame的名字,还可以指定下面的参数:_BLANK:打开一个空窗口。_PARENT:把最新更改过的的Frame替换为它的上级。_SELF:替换最新更改过的的Frame。_TOP:替换整个页面。
LoadRunner HTTP+Json 接口性能测试的更多相关文章
- Loadrunner模拟JSON接口请求进行测试
Loadrunner模拟JSON接口请求进行测试 一.loadrunner脚本创建 1.Insert - New step -选择Custom Request - web_custom_re ...
- Loadrunner测试json接口
1. loadrunner + json说明 使用lr测试json接口,向服务端发送json格式请求,接收处理返回响应数据. 主要用到函数: 1)web_custon_request 2)web_re ...
- Loadrunner Http Json接口压力测试
前天接到了一个测试任务,要求测试一下ES(elsticsearch)在不同并发下的查询效率.如图: 业务场景是在客户端根据具体车牌查询相关车辆信息,结果返回前10条记录. 从图中可以看到,接口的请求参 ...
- LoadRunner模拟REST接口的json请求
LoadRunner模拟REST接口的json请求 现在很多手机应用的性能测试,REST接口调用通过json格式,在用loadrunner模拟这些json请求时,需要开发提供 1.供接口地址 2.提交 ...
- Loadrunner Webservice接口性能测试脚本编写优化总结
本文主要介绍使用Loadrunner Webservice接口性能测试脚本编写及优化总结. 1.Webservice协议脚本编写流程 下面介绍使用Loadrunner 11调用Webservice接口 ...
- 使用Loadrunner进行http接口压力测试
业务描述: 在业务系统里进行查询操作,查询的结果是通过请求http接口,从系统中处理并将结果以json字符串返回. 本文就讲述使用Loadrunner对此类接口进行压力测试并记录相关的性能指标数据: ...
- LoadRunner调用Java程序—性能测试-转载
LoadRunner调用Java程序—性能测试 为了充分利用LoadRunner的场景控制和分析器,帮助我们更好地控制脚本加载过程,从而展现更直观有效的场景分析图表.本次将重点讨论LoadRunn ...
- 如何高效的进行WebService接口性能测试
版权声明:本文为原创文章,转载请先联系并标明出处 关于接口测试的理解,主要有两类,一类是模块与模块间的调用,此类接口测试应该归属于单元测试的范畴,主要测试模块与模块之间联动调用与返回.此类测试大多关注 ...
- JMeter之Http协议接口性能测试
一.不同角色眼中的接口 1.1,开发人员眼中的接口 1.2,测试人员眼中的接口 二.Http协议基本介绍 2.1,常见的接口协议 1.:2. :3. :4.:5.: 6. 2.2,Http协议栈 ...
随机推荐
- jsonp 实现前端跨域
1.基于ajax 发起jsonp 请求. 前端代码: let url = 'http://localhost:8001/'; $.ajax({ type: 'get', dataType: 'json ...
- MDK 编译错误和警告 使用时遇到的小问题
main.c(32): warning: #1-D: last line of file ends without a newline 这个是由于在main函数的“}”后,没有加回车. 只要在mai ...
- JPA javax.persistence.TransactionRequiredException
直接说一下解决方案 Dao层,一定要是Dao层. 1 增加Transactional,必须要事务! 2 增加Modifying,告诉jpa这是修改! @Transactional @Modifying ...
- tcpdump常用参数说明及常见操作
tcpdump常用参数说明及常见操作 -a 将网络地址和广播地址转变成名字 -c 指定抓包的数量 -d 将匹配信息包的代码以人们能够理解的汇编格式给出 -dd 将匹配信息包的代码以c语言程序段的格式给 ...
- vue stylus 格式化问题
IDE是vscode 安装了.vetur插件 由于stylus可以仅用缩进不用写大括号之类的,所以十分方便, 但有个问题,按alt shift F 格式化时,vetur这个插件会默认添加上正常css的 ...
- Cucumber启动类配置
@CucumberOptions ( features = "src/test/resources", glue = {"Steps"}, tags = {&q ...
- 【实用Windows双系统一键备份还原工具】Winclone Pro for Mac
[简介] 今天和大家分享最新的 Winclone Pro 7.3.3 Mac 版本,这是一款Mac上强大易用的Windows分区备份还原工具,类似于Windows上的一键Ghost,能够将 PC 上的 ...
- 深悉正则(pcre)最大回溯/递归限制
对于如下的正则 /<script>.*?<\/script>/is 当要匹配的字符串长度大于100014的时候, 就不会得出正确结果: $reg = "/<sc ...
- 基于jeesite的cms系统(四):使用Beetl模版引擎在后端渲染数据
一.Beetl简介 1. 什么是Beetl Beetl目前版本是2.9.3,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点.使得开发和维护模板有很好的体验. ...
- webpack打包懒加载
lazyload https://webpack.js.org/guides/lazy-loading/ 懒加载 -- 按需加载. Lazy, or "on demand", lo ...