这篇笔记主要是针对一个具体的loadrunner脚本里面出现的方法进行解释,具体脚本如下:

`

Action()

{

char *transactionName = "Test";

char *response;

char *request;

int respLen = 0;

web_reg_save_param("result",
"LB=",
"RB=",
LAST);
lr_convert_string_encoding("",LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"result"); web_add_header("Content-Type", "application/json");
web_add_header("Accept", "application/json");
lr_start_transaction(transactionName);
web_custom_request("web_custom_request",
"URL=http://192.168.4.17:10010/employee/query_user_info",
"Method=POST",
"TargetFrame=",
"Resource=0",
"Referer=",
"Mode=HTTP",
"Body={\"countSql\":false,\"pageNum\":0,\"pageSize\":0,\"userName\":\"\"}",
LAST);
if (strstr(lr_eval_string("{result}"), "000000") != NULL)
{
lr_end_transaction(transactionName, LR_PASS);
}
else
{
lr_end_transaction(transactionName, LR_FAIL);
lr_log_message(lr_eval_string("{result}"));
}
lr_log_message(lr_eval_string("{result}"));
return 0;
}

`

下面针对上面脚本中出现的函数进行解释:

1. web_reg_save_param:

  • 作用:从响应结果里面获取指定的内容;
  • 用法:web_reg_save_param("outFlightVal",

    "LB=", "RB=", LAST );
  • 参数说明:

    a:LB表示左边界,RB表示右边界;

    b:这个是预注册函数,顾名思义。如果你要查找指定的字符内容,那么请放在你的请求之前。因为他是从http请求的响应结果里面去查找内容;

    c:请自行补充什么是HTTP请求 以及HTTP响应,有助于自己理解第2点内容;

    d:什么是左右边界,我们通过如下代码来进行演示:
    比如说我们要获取‘nnMfhFk2-jzizMjXGdiGWSZu8j2sDj5TmDSw’这段内容,
    左边界是:meta content="
    右边界是:“name=
    e:左右边界一定要是唯一的,这样才能帮我们唯一的找到这个值,否则返回的就是数组类型。

2. lr_convert_string_encoding:

  • 作用:字符串编码转换;
  • 用法:lr_convert_string_encoding ( const char *sourceString, const char *fromEncoding, const char *toEncoding, const char *paramName);
  • 该函数有4个参数,含义如下:

    sourceString:被转换的源字符串

    fromEncoding:转换前的字符编码

    toEncoding:要转换成为的字符编码

    paramName:转换后的目标字符串

    常量和值的对应关系如下:

    Constant Value
    LR_ENC_SYSTEM_LOCALE NULL
    LR_ENC_UTF8 NULL
    LR_ENC_UNICODE "ucs-2"

3. web_add_header:

作用:用于添加指定的报文头到下一次HTTP请求;

* 用法:web_add_header( const char *Header, const char *Content ),如:web_add_header("name", "xx")。

4. lr_start_transaction与lr_end_transaction:

* 作用:为使用最多的事物创造组合函数,lr_start_transaction为事物开始函数,lr_end_transaction为事物结束函数,并负责记录事物的运行时间;

* 用法:

int lr_start_transaction (const char * transaction_name);

int lr_end_transaction (const char * transaction_name,int status);

* 说明:transacton为事物名称,status为事物的结束状态,共有LR_PASS(通过)、LR_FAIL(失败)、LR_AUTO(自动)、 LR_STOP(暂停),其中LR_PASS默认的是LR_PASS,可以在事物结束前通过 lr_set_transaction_status进行修 改。如果在lr_end_transaction中没有指定结束事物状态是LR_AUTO,而是明确制定为LR_PASS、LR_FAIL、 LR_STOP其中的其中,则事物将以最后制定状态来结束。需 要注意,事物开始没有lr_end_transaction没有结束的时候,不能用相同的事 物名称,除非这个事物已经通过lr_end_transaction结束。

5. web_custom_request:

* 详细说明查看这个说明:https://www.cnblogs.com/yezhaohui/p/3280239.html

* 语法:web_custom_request (const char *RequestName, ,[EXTRARES, ,] LAST );

* 返回值:

LR_PASS(0)代表成功

LR_FAIL(1)代表失败。

  • 针对上面脚本中出现的参数进行解释:

    RequestName:步骤的名称,VuGen中树形视图中显示的名称。

    URL:请求地址

    Method:请求方法 POST or GET

    TargetFrame:当前链接或资源所在Frame的名称。 除了Frame的名字,还可以指定下面的参数:

    BLANK:打开一个空窗口。

    PARENT:把最新更改过的的Frame替换为它的上级。

    SELF:替换最新更改过的的Frame。

    TOP:替换整个页面。

    Resource:指示URL是否属于资源。1 是;0 不是。设置了这个参数后,RecContentType参数被忽略

    "Resource=1":意味着当前操作与所在脚本的成功与否关系不大。在下载资源时如果发生错误,是当作警告而不是错误来处理的;URL是否被下载受“Run-Time Setting—Browser Emulation-- Download non-HTML resources” 这个选项的影响。此操作的响应信息是不做为HTML来解析的。

    "Resource=0" :表明此URL是重要的,不受发送请求(RTS)的影响,在需要时也会解析它。

    Mode:录制级别: HTML or HTTP.

6. strstr:

* 定义:strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。

* 定义说的有点羞涩难懂。举个例子就知道了,比如:

char str2 = “cdef”;

char str1 = “abcdefgh”;

则通过函数,将返回

strstr(str1,str2) = cdefgh;

  如果str1不包含有str2。
char str2 = “cxef”;
char str1 = “abcdefgh”;
则通过函数,将返回
strstr(str1,str2) = NULL;

7. lr_eval_string:

* 函数的主要作用:返回脚本中的一个参数当前的值(从参数中取得对应的值,并且转换为一个字符串);

* 格式:lr_eval_string("{参数名}");

* 例如:lr_eval_string("{count}");

8. lr_log_message:

* 作用:向应用程序管理代理日志文件或LoadRunner Vuser日志发送消息;

* 用法:lr_log_message(const char * format,exp1,exp2,... expn。)。

loadrunner学习笔记一的更多相关文章

  1. 软件测试之loadrunner学习笔记-02集合点

    loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...

  2. 软件测试之loadrunner学习笔记-01事务

    loadrunner学习笔记-01事务<转载至网络> 事务又称为Transaction,事务是一个点为了衡量某个action的性能,需要在开始和结束位置插入一个范围,定义这样一个事务. 作 ...

  3. loadrunner学习笔记之参数设置

    一.关于参数的定义 在你录制程序运行的过程中,脚本生成器自动生成由函数组成的用户脚本.函数中参数的值就是在录制过程中输入的实际值. 例如,你录制了一个Web应用程序的脚本.脚本生成器生成了一个声明,该 ...

  4. loadrunner 学习笔记--AJAX(转)

    用loadrunner测试WEB程序的时候总是会碰到AJAX或者ActiveX实现的功能,而通常这些功能会包含很多客户端函数(一般为JavaScript).我们该如何处理?如果从功能实现的角度去考虑这 ...

  5. LoadRunner 学习笔记(3)基础

    LoadRunner包含的组件: Virtual User Generator 录制最终用户业务流程并创建自动化性能测试脚本,即 Vuser 脚本 Controller 组织.驱动.管理并监控负载测试 ...

  6. LoadRunner 学习笔记(2)VuGen运行时设置Run-Time Setting

    定义:在Vugen中Run-Time Setting是用来设置脚本运行时所需要的相关选项

  7. LoadRunner学习笔记(二)

    LoadRunner Controller简介: 当虚拟用户脚本开发完成后,使用controller将这个执行脚本的用户从单用户转化为多用户,从而,模拟大量用户操作, 进而形成负债(多用户单循环,多用 ...

  8. LoadRunner学习笔记

    什么是性能测试: 简单说,功能测试是软件是否能用,性能测试是看软件好不好用: 性能测试的含义,大体来讲就是通过自动化的手段,模拟生产运行的业务压力或者相应的场景,来测试协同系统是否满足生产需要. 性能 ...

  9. loadrunner 学习笔记--AJAX

    用loadrunner测试WEB程序的时候总是会碰到AJAX或者ActiveX实现的功能,而通常这些功能会包含很多客户端函数(一般为JavaScript).我们该如何处理?如果从功能实现的角度去考虑这 ...

随机推荐

  1. 【bzoj 1190】梦幻岛宝珠(DP)

    这题是在01背包问题的基础上,扩充了重量,需要用时间换空间. 思路: 1.仔细看题,注意到重量wi为a*2^b(a<=10,b<=30),很容易想到要按 b 分开做背包的DP.接下来的重点 ...

  2. CodeForces - 1140C

    题意: 给你n首歌,每首歌有一个长度ti和一个愉悦度bi,你最多可以从中挑选出来k首歌.那么你挑选出来这首歌会为你增加sum歌愉悦度,sum的求法就是:挑选出来所有歌的长度之和,乘与挑选出来所有歌中愉 ...

  3. K8S(05)核心插件-ingress(服务暴露)控制器-traefik

    K8S核心插件-ingress(服务暴露)控制器-traefik 1 K8S两种服务暴露方法 前面通过coredns在k8s集群内部做了serviceNAME和serviceIP之间的自动映射,使得不 ...

  4. 2019牛客多校第二场F Partition problem(暴搜)题解

    题意:把2n个人分成相同两组,分完之后的价值是val(i, j),其中i属于组1, j属于组2,已知val表,n <= 14 思路:直接dfs暴力分组,新加的价值为当前新加的人与不同组所有人的价 ...

  5. 使用MCSManager搭建Minecraft服务器

    目录 一.准备工作 1.MCSManager Windows环境下安装 Linux安装 2.Minecraft服务端 3.Java 二.配置 1.登录面板 2.上传服务端 3.服务端的配置 三.开启服 ...

  6. 免费在线 Linux Desktop 环境

    免费在线 Linux Desktop 环境 Run Linux OS Distributions online https://www.onworks.net/os-distributions 免费测 ...

  7. DLL & Dynamic-link library

    DLL & Dynamic-link library 动态链接库 .dll 动态链接库(英语:Dynamic-link library,缩写为 DLL)是微软公司在微软视窗操作系统中实现共享函 ...

  8. Publish/Subscribe Pattern & Vanilla JavaScript

    Publish/Subscribe Pattern & Vanilla JavaScript https://en.wikipedia.org/wiki/Publish–subscribe_p ...

  9. Redux Middleware All in One

    Redux Middleware All in One https://redux.js.org/advanced/middleware https://redux.js.org/api/applym ...

  10. websockets & auto close & bug & solution

    websockets & auto close & bug & solution WS 连接总是被关闭 ??? refs https://wdd.js.org/websocke ...