这篇笔记主要是针对一个具体的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. Codeforces Round #672 (Div. 2)

    比赛链接:https://codeforces.com/contest/1420 A. Cubes Sorting 题意 给出一个大小为 $n$ 的数组 $a$,每次只可以交换相邻的两个元素,最多交换 ...

  2. Codeforces Round #655 (Div. 2) D. Omkar and Circle

    题目链接:https://codeforces.com/contest/1372/problem/D 题意 给出奇数个数围成的环,每次可以将一个数替换为相邻两个数的和并删除相邻的两个数,问最后余下的数 ...

  3. 2020牛客暑期多校训练营(第一场)Easy Integration

    传送门:J. Easy Integration 题意:给你n,求这个积分,最后的结果分子是记为p,分母记为q. 求(p*q-1)mod 998244353. 题解:比赛完看到巨巨说这是贝塔函数,我一搜 ...

  4. uestc 1221 Ancient Go

    Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit  Status Y ...

  5. streamlink 安装使用

    CentOS 安装: pip install streamlink 使用: #查看视频信息 streamlink $URL #下载视频 streamlink $URL best streamlink ...

  6. 一篇文章图文并茂地带你轻松学完 JavaScript 闭包

    JavaScript 闭包 为了更好地理解 JavaScript 闭包,笔者将先从 JavaScript 执行上下文以及 JavaScript 作用域开始写起,如果读者对这方面已经了解了,可以直接跳过 ...

  7. OpenStack Train版-13.安装块存储服务cinder(控制节点)

    Cinder的核心功能是对卷的管理,允许对卷.卷的类型.卷的快照.卷备份进行处理.它为后端不同的存储设备提供给了统一的接口,不同的块设备服务厂商在Cinder中实现其驱动,可以被Openstack整合 ...

  8. 左神算法第一节课:复杂度、排序(冒泡、选择、插入、归并)、小和问题和逆序对问题、对数器和递归(Master公式)

    第一节课 复杂度 排序(冒泡.选择.插入.归并) 小和问题和逆序对问题 对数器 递归 1.  复杂度 认识时间复杂度常数时间的操作:一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数 ...

  9. Linux 驱动框架---input子系统

    input 子系统也是作为内核的一个字符设备模块存在的,所以他也是字符设备自然也会有字符设备的文件接口.input子系统的注册过程主要分为两步,先注册了一个input class然后再注册一个字符设备 ...

  10. CSS 水平滚动条 bug & width auto increase bug

    CSS 水平滚动条 bug css overflow & width auto increase bug 问题排查方式 删除可疑的模块,一步步找到问题的原因,定位问题所在 寻找可能会导致 wi ...