LoadRunner中的常用函数(二)
来源:互联网 发布:淘宝直播的东西可靠吗 编辑:程序博客网 时间:2024/05/21 18:32
参考资料:
LoadRunner函数大全之中文解释.pdf
在使用Loadrunner做性能测试的过程中,发现Loadrunner的函数库真的很强大,很多时候遇到的问题,只需要通过某一个Loadrunner自带的函数就可以解决。就跟很多编程语言自带的库一样,Loadrunner也有这么一个庞大的库,而且在Loadrunner中可以直接调用,不需事先加载。
这里就对一些常用的函数进行了整理,部分函数也是C语言自带的函数,但用处和Loadrunner的函数一样广泛。熟练使用这些函数,既能简化脚本代码,同时也可以有效地监控脚本运行的过程和结果。
与操作有关的函数
1.
web_url函数是一个操作函数,它可以加载指定的网页(GET 请求)。函数web_url
可以加载 URL 属性指定的 URL。函数web_url不需要上下文。
该函数是应用最广泛的一个函数,一般不需要手写,通过LR使用浏览器录制HTTP协议的脚本基本上都是使用该函数与http服务器进行交互。
定义:
intweb_url (const char *Name, const char * url, , [EXTRARES,
Resource Attributes>,] LAST );
例子:
2.
web_custom_request函数是一个操作函数,通过它可以使用任意方法创建自定义 HTTP 请求或创建正文。默认情况下,VuGen只为无法用其他 Web 函数解释的请求生成该函数。
定义:
intweb_custom_request (const char *RequestName, , [EXTRARES,
Resource Attributes>,] LAST );
例子:
基于xml格式的消息交互:
web_custom_request("services4",
""
"",
基于json格式的消息交互:
使用web_custom_request发送一个空消息:
soap_request()
soap_request函数执行一个 SOAP请求。它向指定的 URL 发送 SOAP 包,并接收服务器响应。
除了上面可以使用web_custom_request函数模拟soap消息发送以外,通过soap_request函数也可以模拟soap消息发送。该函数只有在协议选择Web Services的脚本里面才可以使用,它区别于Web(HTTP/HTML)协议, 如果选择Web(HTTP/HTML)协议,则需要使用web_custom_request函数。使用Web Services协议的一个好处是可以直接将xml文件导入到脚本当中,而Web(HTTP/HTML)协议不支持导入xml格式文件。但坏处是使用Web Services协议的Vuser属于Global的Vuser,默认的Global Vuser的license只有100,而使用Web(HTTP/HTML)的Web User, 则可以达到10000。因此对于soap协议消息交互,还是建议使用Web(HTTP/HTML)协议,手工编写脚本。
定义:
intsoap_request (const char *StepName, URL, , LAST]);
例子:
3.
web_link函数是一个操作函数,它模拟鼠标单击由属性定义的链接。web_link只能在上一个操作的上下文中执行。
该函数可以通过脚本录制自动生成,对于web页面链接性质的页面元素,就可以使用该函数。比如一个下载链接。
定义:
intweb_link (const char *StepName, , [EXTRARES,
Attributes>,] LAST );
例子:
4.
web_cleanup_cookies函数删除脚本使用的所有当前存储的Cookie。
定义:
intweb_cleanup_cookies ( );
与日志有关的函数
5.
lr_message函数将消息发送到日志文件和输出窗口。在VuGen中运行时,输出文件为 output.txt。
定义:
intlr_message (const char * format, exp1, exp2,...expn.);
例子:
lr_message("The begin time is %s",begin_time);
6.
lr_output_message函数将带有脚本部分和行号的消息发送到输出窗口和日志文件。
定义:
intlr_output_message (const char * format, exp1, exp2,...expn.);
例子:
lr_output_message("The begin time is %s",begin_time);
7.
lr_error_message函数将错误消息发送到输出窗口和Vuser日志文件。要发送不是特定错误消息的特殊通知,请使用lr_output_message。
定义:
intlr_error_message (const char * format, exp1, exp2,...expn. );
例子:
lr_error_message("Error 2:The response is not null before updating");
8.
lr_log_message函数将消息发送到Vuser或代理日志文件(取决于应用程序)。通过向日志文件发送错误消息或其他信息性消息,可以将该函数用于调试。
定义:
intlr_log_message (const char * format, exp1, exp2,...expn.);
例子:
lr_log_message("The begin time is %s",begin_time);
四者的关系和区别:
四个日志函数都会记录日志到mdrv.log和output.txt文件当中,所不同的是,lr_log_message由日志开关控制,其他三个不由日志开关控制。只有在Run-time Setting中选中”enable logging”才会日志lr_log_message的日志。lr_error_log除了日志错误日志以外,还会在controller中生成响应的error记录,因此,当需要记录某个异常的时候,建议使用lr_error_message。lr_message与lr_output_message的区别在于后者会显示脚本信息和行数,前者则不会显示。
如:
The begin time is 09:44:12
before_update.c(19): The begin time is 09:44:12
与事务有关的函数
9.
lr_start_transaction 函数标记事务的开始。要指明要分析的事务,请使用函数 lr_start_transaction 和lr_end_transaction。应紧接事务前后插入这些函数。
定义:
intlr_start_transaction ( const char * transaction_name );
例子:
lr_start_transaction("download");
10.
lr_end_transaction函数标记事务的结束,并录制执行事务所用的时间量。要指明希望分析的事务,请在事务之前放置lr_start_transaction函数,并在事务之后放置lr_end_transaction函数。
定义:
intlr_end_transaction (const char * transaction_name, int status ) ;
例子:
lr_end_transaction("download", LR_PASS);
lr_end_transaction("download", LR_FAIL);
lr_end_transaction("download", LR_AUTO);
自动录制的脚本是不会生成该函数的,如果不添加该函数,可以在Run-time Setting中的miscellaneous中选择”define each action as a transaction”,但不建议这样做。添加事务函数可以更加精确的定义某个事务的起始结束时间点,这个时间点不一定是某个action的起始结束时间。还可以配合if条件语句有效控制该事务是成功还是失败。
与返回消息有关的函数
11.
web_reg_save_param是一个注册类型的函数。它注册一个请求,以在检索到的响应消息中查找并保存一个文本字符串。只有在执行了下一个操作函数(如web_url)后才会执行该操作。
其主要作用是将返回消息中的某个字符串存入一个参数,用来做后续使用。比如发送下一条消息必须携带上一条消息中返回的session id,这个函数就能派上用场。或者对返回的消息的某个字段进行校验
定义:
intweb_reg_save_param (const char *ParamName, , LAST);
例子:
web_reg_save_param("return_length2",
其中LR为左边界,RB为右边界,Ord为查找到匹配值的顺序,默认为1。如果Ord=ALL表示会将所有查找到的匹配值保存到一个list当中。
比如返回消息如下:
HTTP/1.1 200 OK\r\n
Server: Apache-Coyote/1.1\r\n
X-Powered-By: Servlet/3.0; JBossAS-6\r\n
Content-Length: 0\r\n
Date: Fri, 18 Jul 2014 02:35:47 GMT\r\n
\r\n
则上述函数会将Content-Length的长度0存到return_length2这个参数当中。
12.
web_get_int_property函数返回关于最后一个 HTTP 请求的指定信息。如果一个操作函数返回所条响应消息,则只取最后一个响应详细的结果。
该函数可以指定的返回消息类型:
HTTP_INFO_RETURN_CODE
HTTP_INFO_DOWNLOAD_SIZE
HTTP_INFO_DOWNLOAD_TIME
定义:
intweb_get_int_property (constintHttpInfoType);
例子:
intflen;
flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);
13.
web_reg_find函数注册一个请求,以在下一个操作函数(如web_url)检索到的网页上搜索一个文本字符串。
这个与web_reg_save_param有些类似,也是从下一个操作函数中从返回中取出一个文本字符串,所不同的是从返回的消息当中查找某个字符串,而并不需要该字符串位于某个特定位置,也就是存在固定的左右边界。而且可以将查找到的次数保存在相应的参数当中。需要注意的是,如果查询的字符为中文字符,在录制前,需要在option中选择编码格式为UTF-8。
定义:
intweb_reg_find (const char *attribute_list, LAST);
例子:
web_reg_find("Text=知道","SaveCount=para_count",LAST);
与参数有关的函数
14.
lr_eval_string函数在评估任何嵌入的参数之后返回输入字符串。如果字符串实参 (argument) 只包含一个形参(parameter),该函数返回形参的当前值。
这个函数主要用来取出某个参数的值。在Loadrunner中,对于参数替换,是无法在除了操作函数以外直接使用参数的,必须将参数放入这个函数才能表示该参数的值。
定义:
char * lr_eval_string (const char * instring );
例子:
begin_time= lr_eval_string("{TIME}");
lr_vuser_status_message("beforeiteration%s,MAC is %s",lr_eval_string("{iteration}"),lr_eval_string("{MAC}"));
15.
lr_save_string函数将指定的以 null 终止的字符串赋给参数。该函数可用于关联查询。要确定参数值,请使用函数lr_eval_string。
这个参数跟lr_eval_string正好相反,是将某个值存入参数当中,以在消息中使用该参数。
定义:
intlr_save_string (const char *param_value, const char *param_name);
例子:
begin_time= lr_eval_string("{TIME}");
lr_save_string(begin_time,"begin_time1");
这里需要解释下,这样用的原因。因为TIME参数设置的是每次出现都做一次更新,每次调用TIME参数都会返回不同的值,为了使用最初的TIME值,则必须将TIME参数值取出来以后保存在另一个参数当中。
16.
lr_save_int函数将指定的数值型变量赋给字符串参数。
定义:
intlr_save_int( intvalue, const char *param_name);
例子:
上述函数的意义是将当前时间距离1970-01-01的秒数存入times参数当中。
与时间有关的函数
17.
lr_save_datetime函数将当前日期和时间,或具有指定偏移的日期和时间保存在参数中。如果达到MAX_DATETIME_LEN 个字符,结果字符串将截断。
定义:
voidlr_save_datetime(const char *format, int offset, const char *name);
例子:
lr_save_datetime ("%Y-%m-%d %H:%M:%S",DATE_NOW+TIME_NOW,"times");
上述例子中的函数将当前时间以固定格式存储在字符串变量times中。
18.
为C语言自带函数。根据系统时钟,time 函数返回从世界标准时间1970 年1 月1 日子夜(00:00:00)作为开始所经过的秒数。返回值存储在timeptr所给出的位置。如果timeptr为NULL,则该值不会被存储。
定义:
time_t time ( time_t *timeptr );
例子:
typedef long time_t;
19.
为C语言自带函数。在 Unix 下,ctime 不是线程级安全函数。所以,请使用 ctime_r。有关详细信息,请参阅平台相关文档。
定义:
char *ctime ( consttime_t *time );
例子:
typedef long time_t;
lr_message ("Formatted time and date: %s", ctime(&t));
20.
lr_think_time可以在运行期间暂停测试执行。这对于模拟思考时间非常有用,思考时间是真实用户在操作之间停下来思考的时间。单位为秒
定义:
voidlr_think_time (double time);
例子:
lr_think_time(60);
其他Loadrunner函数
21.
lr_vuser_status_message函数向控制器或优化模块控制台的Vuser窗口的“状态”区域发送字符串。它还将该字符串发送到Vuser日志。从VuGen运行时,消息被发送到 output.txt。该函数在场景运行时非常实用,可以直接在Controller里面的Vuser窗口当中查看到当前Vuser运行的各种状态,比如已经迭代的次数,所使用的参数值等等。
定义:
intlr_vuser_status_message (const char * format);
例子:
lr_vuser_status_message("before iteration
其他C语言函数
22.
atoi函数将数值字符串转换成数值。
定义:
intatoi ( const char *string );
例子:
if (atoi(lr_eval_string("{return_length2}")) == 0)
23.
比较string1 和string2 以确定字母排序的次序。字符串比较只能使用该函数,而不能直接用“==”进行比较。
定义:
intstrcmp ( const char *string1, const char *string2 );
例子:
if (strcmp(lr_eval_string("{is_update}"),"Download")==0)
如果上述语句改成if (lr_eval_string("{is_update}")=="Download"),则该条件永远为假。- LoadRunner中的常用函数(二)
- LoadRunner常用函数二
- LoadRunner常用函数二
- Loadrunner常用函数详解(二)
- LoadRunner中的七个常用函数
- loadrunner常用函数(2)
- loadrunner常用函数(3)
- loadrunner之常用函数()
- LoadRunner脚本函数(二)
- LoadRunner常用函数一
- 常用loadrunner函数
- loadrunner常用函数
- loadrunner 常用函数
- loadrunner常用函数汇总
- LoadRunner常用函数一
- LoadRunner常用函数
- LoadRunner常用函数列表
- LoadRunner常用函数
- 2017海峡(福州)渔业周·中国(福州)国际渔业博览会 会刊(参展商名录)
- c++中实现多线程的简单实例
- Kafka监控软件之kafkaoffsetmonitor
- 第9章 基于水色图像的水质评价
- Java 集合深入理解(14):Map 概述
- LoadRunner中的常用函数(二)
- css浏览器兼容性的写法
- Java中输出流out.flush()方法理解
- Maven下安装jar到本地仓库
- 3.0Activity创建错误
- 码云
- 【web前端性能优化】css sprite(图片精灵)-雪碧图实现原理
- 贝叶斯(朴素贝叶斯,正太贝叶斯)及OpenCV源码分析
- 大数据测试新手问答随笔