这篇笔记主要是针对一个具体的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. Educational Codeforces Round 97 (Rated for Div. 2)【ABCD】

    比赛链接:https://codeforces.com/contest/1437 A. Marketing Scheme 题解 令 \(l = \frac{a}{2}\),那么如果 \(r < ...

  2. hdu 2072 单词数(字符串)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2072 题意 每行输入由小写字母和空格组成,统计每行中不同的单词数. 题解 题解一 比较简洁的解法,读入 ...

  3. hdu5489 Removed Interval

    Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission ...

  4. UVA - 12295 最短路(迪杰斯特拉)——求按对称路线最短路条数

    题意: 给你一个n,然后给你一个n*n的正方形w[i][j],你需要找到一个从(1,1)点走到(n,n)点的最短路径数量.而且这个路径必须按照y=x对称 题解: 我们把左上角的点当作(0,0)点,右下 ...

  5. Array Transformer UVA - 12003

    题目:传送门 题意: 给你n个数,要进行m次操作 对于每次操作(l,r,v,p)代表:在区间[l,r]中有x(这个x是需要你自己找出来的)个数小于v,你需要把序列的第p个位置的值改成u∗k/(r−l ...

  6. Linux虚拟机封装成模板

    对安装在VMware上的CentOS7.X进行封装,是为了后续的实验环境需要,可以批量去生成Linux系统.通过虚拟机模版来创建一台CentOS系统,跟原来机器一样,去掉了唯一性,而通过克隆出来的虚拟 ...

  7. C++ part2

    为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数? references: nowcoder 将可能会被继承的父类的析构函数设置为虚函数,可以保证当我们new一个子类,然后使用基类指针 ...

  8. IDEA 安装常用操作二

    一.IDEA启动慢,因为启动时编译.缓存.创建索引等,如果断电等启动异常,可以让缓存索引失效 迁移IDEAD时,可以找到config.system等文件夹, 随着时间使用越久,空间占用越大,另外觉得浪 ...

  9. ysoserial Commons Collections1反序列化研究

    Apache Commons Collections1反序列化研究 环境准备 Apache Commons Collections 3.1版本 IDEA 需要一些java基础,反射.类对象.Class ...

  10. 无需扫描即可查找和攻击域SQL Server (SPN)

    无扫描SQL Server发现简介 当您没有凭据或正在寻找不在域中的SQL Server时,使用各种扫描技术来查找SQL Server可能非常有用.但是,此过程可能很嘈杂,耗时,并且可能由于子网未知, ...