Loadrunner Http接口Get/Post方法性能测试脚本解析

时间:2021-09-08 09:51:34

最近使用LoadRunner 11进行了一次完整的Http WEB接口性能测试,下面介绍下Http接口Get/Post方法性能测试脚本通用编写方法。

1. Http接口性能测试基本流程

首先定义了一个参数用以保存Http请求返回码,之后调用Get / Post方法,最后通过校验返回码参数来判断事务成功或失败。

2. 常用函数解析

完整的Action脚本见本文下方附录,简单解析如下(具体函数的详细解释可百度或查看LoadRunner帮助文件):

2.1 web_reg_save_param

这个函数注册一个请求,以在检索到的网页中查找并保存一个文本字符串。它只有在执行了下一个操作函数(如web_url)后才会执行。

语法:

int web_reg_save_param(const char *ParamName, <list of Attributes>, LAST);

参数说明:

1) ParamName:存放得到的动态内容的参数名称

2) LB和RB:要抓取文本的左/右边界

注意:

1) web_reg_save_param必须在获取返回值的操作前面注册,在获取返回值的操作后面使用

2) 保存参数最大不能超过256字节,如果超过256字节请使用int web_set_max_html_param_len (const char *length )函数扩大参数保存范围。

如:web_set_max_html_param_len (1024); //扩大参数最大保存范围为1024字节

3) LB和RB:如果不指定一个LB/RB值,它会使用数据开头/结尾的所有字符作为边界,且默认是区分大小写的,若加上"/ic",则大小写不敏感

如:web_reg_save_param("IsRight","LB/ic=cache-control: private\r\n\r\n","RB/ic=|",LAST);

2.2 web_url

发送Http GET请求函数,比较简单,一般只需修改url地址即可

函数形式:web_url( const char *StepName, const char *url, , [EXTRARES, ,] LAST );

示例如下:

web_url("www.baidu.com",
"URL=http://www.baidu.com/",
"TargetFrame=",
"TargetBrowser=Mercury Technologies",
"Resource=0",
"RecContentType=text/html",
"Snapshot=t1.inf",
"Mode=HTML",
LAST );

2.3 web_submit_data

WEB表单提交函数,它用来生成表单的GET或POST请求,一般修改URL地址、请求方式(POST/GET)、参数名称和参数值即可

函数语法:Int web_submit_data ( const char *StepName, , ITEMDATA, , [ EXTRARES, ,] LAST );

参数如下:
1. Action:Form中的ACTION属性,指定了完成Form中的操作用到的URL
2. Method:表单提交方法:POST或GET(默认是POST)
3. EncType:编码方式
4. EncodeAtSign:是否使用ASCII值对符号“@”编码。Yes或No
5. TargetFrame:包含当前链接或资源的Frame。参见List of Attributes的同名参数
6. Referer、Mode:参见List of Attributes的同名参数
7. ITEMDATA:数据域和属性的分隔符
8. List of Data:数据域列表定义了表单提交的内容。由于此请求是上下文无关的,因此数据域包含了所有的隐含域。使用Form的编码规则组织数据域
数据域列表可以使用下面任意一种格式:
"name=n1", "value=v1", ENDITEM,
"name=n2", "EncryptedValue=qwerty", ENDITEM,
9. EXTRARES:分隔符,标记下一个参数将是资源属性的列表。
10. List of Resource Attributes:参见List of Resource Attributes。
11. LAST:结束标记符。

示例如下:

web_submit_data("default.aspx",

"Action=http://lazarus/flightnet/default.aspx",

"Method=POST",

"TargetFrame=",

"RecContentType=text/html",

"Referer=http://lazarus/flightnet/",

"Snapshot=t7.inf",

"Mode=HTML",

ITEMDATA,

"Name=grpType", "Value=radRoundtrip", ENDITEM,

"Name=btnAvailableFlights", "Value=Next >", ENDITEM,

LAST );

2.4 参数化及其他常用函数

1. 对于Http接口中调用的参数还可以进行参数化,模拟多种用户场景,方法都是一样的,在此恕不赘述

2. 脚本中还有lr_start_transaction,根据判断返回码来确定lr_end_transaction pass或fail

3. http接口性能测试脚本示例(包括Get及Post方法)

Action()
{
lr_start_transaction("TestGet"); web_reg_save_param("TGCode",
"LB/IC={\"returnCode\":\"",
"RB/IC=\",\"",
LAST); web_url("TestGet",
"URL=http://192.168.1.1:8080/GetPage",
"Resource=0",
"RecContentType=text/html",
"Mode=HTML",
LAST); if((strstr(lr_eval_string("{TGCode}"),""))==NULL)
{
lr_end_transaction("TestGet", LR_FAIL);
lr_error_message("TestGet Failed! ReturnCode:%s",lr_eval_string ("{TGCode}"));
}
else
{
lr_end_transaction("TestGet", LR_PASS);
lr_output_message("TestGet Sucess! ReturnCode:%s",lr_eval_string ("{TGCode}"));
} lr_start_transaction("TestPost"); web_reg_save_param("TPCode",
"LB/IC={\"returnCode\":\"",
"RB/IC=\",\"",
LAST); web_submit_data("TestPost",
"Action=http://192.168.1.1:8080/TestPost",
"Method=POST",
"RecContentType=text/html",
"Mode=HTML",
ITEMDATA,
"Name=param1", "Value=param1", ENDITEM,
"Name=param2", "Value=param2", ENDITEM,
LAST); if((strstr(lr_eval_string("{TPCode}"),""))==NULL)
{
lr_end_transaction("TestPost", LR_FAIL);
lr_error_message("TestPost Failed!ReturnCode: %s",lr_eval_string ("{TPCode}"));
}
else
{
lr_end_transaction("TestPost", LR_PASS);
lr_output_message("TestPost Sucess! ReturnCode: %s",lr_eval_string ("{TPCode}"));
} return ;
}

Loadrunner Http接口Get/Post方法性能测试脚本解析的更多相关文章

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

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

  2. 品味性能之道&lt&semi;九&gt&semi;:利用Loadrunner编写socket性能测试脚本简述

            一.概述         Loadrunner拥有极为丰富的工具箱,供予我们制造出各种奇妙魔法的能力.其中就有此次要讨论的socket套接字操作.     二.socket概述     ...

  3. 【JMeter4&period;0学习(三)】之SoapUI创建WebService接口模拟服务端以及JMeter对SOAP协议性能测试脚本开发

    目录: 创建WebService接口模拟服务端 下载SoapUI 新建MathUtil.wsdl文件 创建一个SOAP项目 接口模拟服务端配置以及启动 JMeter对SOAP协议性能测试脚本开发 [阐 ...

  4. sockt-浅谈接口性能测试脚本编写

    平时我们做的都是http请求的接口测试,初次接触socket接口还是有点不知如何下手,其实他如http接口请求区别并不是很大,也是接口的链接-发送数据-断开连接这三大步骤来实现: 以下文章转载自:ht ...

  5. LR实现http协议性能测试脚本

    1.  GET方式的HTTP请求性能测试脚本 Action() { web_set_max_html_param_len("); web_reg_save_param("retCo ...

  6. Fiddler系列教程3:使用Fiddler录制Jmeter性能测试脚本

    今天继续给大家带来Fiddler工具的教程3:使用Fiddler录制Jmter性能测试脚本. 我们知道Jmeter本身可以录制脚本,也可以通过BadBoy,BlazeMeter等工具进行录制,其实Fi ...

  7. Selenium自动化测试,接口自动化测试开发,性能测试从入门到精通

    Selenium自动化测试,接口自动化测试开发,性能测试从入门到精通Selenium接口性能自动化测试基础部分:分层自动化思想Slenium介绍Selenium1.0/2.0/3.0Slenium R ...

  8. 性能测试脚本开发(LR&period;NET控件)

    性能测试过程中,最耗费经历的就是编写性能测试脚本的过程,在大部分的测试工具中都是采用录制的方式,通过录制产生脚本,然后根据需要进行修改,以及参数化.有些时候为了能够完成某一个功能的脚本,需要将录制下来 ...

  9. Loadrunner不能调用IE解决方法大全

    在使用loadrunner进行性能调试时,录制脚本的时候,发现loadrunner不能调用IE.不能自动启动IE,还有一种情况是可以启动,但是录制不到内容,action的内容为空. 一般遇到这种情况, ...

随机推荐

  1. find out the neighbouring max D&lowbar;value by counting sort in stack

    #include <stdio.h> #include <malloc.h> #define MAX_STACK 10 ; // define the node of stac ...

  2. ZOJ Problem Set - 1216 Deck

    #include <stdio.h> int main() { ]; double t=2.0; table[]=0.5; ;i<;i++) { t+=; table[i]=tabl ...

  3. &lbrack;PGM&rsqb; I-map和D-separation

    之前在概率图模型对概率图模型做了简要的介绍.此处介绍有向图模型中几个常常提到的概念,之前参考的多为英文资料,本文参考的是<概率图模型-原理与技术的>中译版本.很新的书,纸质很好,翻译没有很 ...

  4. 【和我一起学python吧】python 中的函数

    一.函数的定义: Python中使用def关键字定义函数,函数包括函数名称和参数,不需要定义返回类型,Python能返回任何类型: #没有返回值的函数,其实返回的是None def run(name) ...

  5. Mysql数据库的索引原理

    写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录.如果没有索引,查询将 ...

  6. selenuim &plus;python环境配置遇到的诸多问题

    自动化测试入门,总结一下安装selenium.python以及配置webdriver遇到的问题: 准备工作: 1.下载火狐浏览器并安装插件selenium IDE.Firebug~~ 2.下载安装py ...

  7. Delphi 获取当前鼠标下的控件内容

    Delphi 获取当前鼠标下的控件内容 主要函数: GetCursorPos://获取鼠标的位置 WindowFromPoint://获取制定point下的handle GetClassName:// ...

  8. centos7 安装curl-7&period;51&period;0

    curl简介curl是一个广泛使用的用来上传和下载的命令行工具,当然严格来讲,它还可以有别的用途.对于测试来讲,它是Web相关测试非常实用的工具,包括debugging,使用起来非常方便.而且另一方面 ...

  9. android studio相关配置

    启动出现:Unable to access Android SDK add-on list 解决: Android Studio First Run 检测 Android SDK 及更新,由于众所周知 ...

  10. gcc -02引起内存溢出&&num;39&semi;unsigned i&&num;39&semi;应修订为&&num;39&semi;volatile unsigned i&&num;39&semi;

    2017-12-13 10:44:19gcc -02引起内存溢出'unsigned i'应修订为'volatile unsigned i' 1.3.100 driver/char/random.cst ...