LoadRunner脚本 《第二篇》

一、基础函数简介

  在VU左边导航栏中,有三个LoadRunner框架函数,分别是vuser_init()、Action()、vuser_end()。这三个函数存在于任何Vuser类型的脚本中。

  

  • vuser_init:虚拟用户的初始化函数,一般将用户初始化的操作放在这里,如登录操作、分配内存等。在做uvser_init的时候,Controller的Vuser状态区域会显示initialize状态(只运行一次)。
  • Action:虚拟用户要做的业务,用户的业务操作,也就是测试内容的主体。在VU里设置迭代循环选项时,只针对Action有效,Action会被重复运行,而init和end部分则在脚本的运行过程中只会运行一次。
  • vuser_end:与vuser_init相对应,uvser_end做收尾工作。在vuser_init中如果是登录,vuser_end里面就是退出登录;在vuser_init中如果是申请内存,比如使用了malloc函数,在vuser_end中应该就是释放内存,使用free函数。

  在VU右侧脚本编辑框中,我们看到的是Action的实现主体,在运行时,Action内的web_url函数会被调用执行。

  在LoadRunner的脚本中,我们可以调用三种函数:

  1. VU通用函数,一般以lr开头,就如上面的lr_start_transaction函数。
  2. 协议相关函数,不通类型的Vuser的函数一般以本协议类型开头。如果上面的脚本时Web(HTTP/HTML)类型的,web_url就是一个协议函数,web前缀说明它是属于Web HTTP协议的,HTTP协议函数还包括web_list、web_link。
  3. 语言相关函数。上面的VU脚本时用C语言写的,那么C语言的标准函数或dll都可以在这里被加载和使用。

二、通用VU函数

  通用VU函数是构建在C语言基础之上的脚本框架函数,起支持作用。通用VU函数有一个特征,就是以LR开头,以标明它们属于LR,而不专属于任何协议,只要是C脚本,都可以使用。

  通用VU函数可分为:

  • 事务控制函数;
  • 命令行分析函数;
  • 系统信息函数;
  • 字符串函数;
  • 日志函数;
  • 运行时函数;

  1、事务与事务控制函数

  软件系统的性能就是开一个个事务来度量的。LoadRunner中事务的定义就是靠事务函数来进行的,在执行性能测试时,LoadRunner会采集完成其定义的每个事务所花费的时间,并在性能测试后再Ayslysis中进行统计分析。

  • lr_end_sub_transaction:标记子事务的结束以便进行性能分析。
  • lr_end_transaction:标记LoadRunner事务的结束。
  • lr_end_transaction_instance:标记事务实例的结束以便进行性能分析。
  • lr_fail_trans_with_error:将打开事务的状态设置为LR_FAIL并发送错误消息。
  • lr_get_trans_instance_duration:获取事务实例的持续时间。
  • lr_get_trans_instance_wasted_time:获取事务实例浪费的时间。
  • lr_resume_transaction:继续收集事务数据以便进行性能分析。
  • lr_resume_transaction_instance:继续收集事务实例数据以便进行性能分析。
  • lr_set_transaction_instance_status:设置事务实例的状态。
  • lr_set_transaction_status:设置打开事务的状态。
  • lr_set_transaction_status_by_name:设置事务的状态。
  • lr_start_sub_transaction:标记子事务的开始。
  • lr_start_transaction:标记事务的开始。
  • lr_start_transaction_instance:启动嵌套事务。
  • lr_stop_transaction:停止事务数据的收集。
  • lr_stop_transaction_instance:停止事务数据的收集。
  • lr_wasted_time:消除所有打开事务浪费的时间。

  2、命令行分析函数

  当LoadRunner用命令行方式启动和运行时,以下函数用来分析命令行,以得到命令行中的参数信息。

  • lr_get_attrib_double:检索脚本命令行中使用的double类型变量。
  • lr_get_attrib_long:检索脚本命令行中使用的long类型变量。
  • lr_get_attrib_string:检索脚本命令行中使用的字符串。

  3、系统信息函数

  用来得到VU系统信息:

  • lr_user_data_point:记录用户定义的数据采集点。
  • lr_whoami:将有关Vuser的信息返回给Vuser脚本。
  • lr_get_host_name:返回执行Vuser脚本的主机名。
  • lr_get_master_host_name:返回运行LoadRunner Controller的计算机名。

  4、字符串函数

  主要是对参数进行操作,包括对不通类型参数的读取、存储和移动。

  • lr_eval_string:返回参数的当前值。
  • lr_save_string:将以NULL结尾的字符串保存到参数中。
  • lr_save_var:将变长字符串保存到参数中。
  • lr_save_datetime:将当前日期和时间保存到参数中。
  • lr_advance_param:前进到下一个可用参数。
  • lr_decrypt:解密已编码的字符串。
  • lr_eval_string_ext:lr_eval_string的扩展,为指向包含参数数据的缓冲区的指针。
  • lr_eval_string_ext_free:释放由lr_eval_string_ext分配的指针。
  • lv_save_searched_string:在缓冲区中搜索字符串实例,并将改字符串实例保存到参数中。

  5、消息函数

  是VU发送和记录log的函数

  • lr_debug_message:将调试消息发送到输出窗口。
  • lr_error_message:将错误消息发送到输出窗口。
  • lr_get_debug_message:得到当前的消息类。
  • lr_log_message:将输出消息直接发送到output.txt文件,此文件位于Vuser脚本目录中。
  • lr_output_message:将消息发送到输出窗口。
  • lr_set_debug_message:为输出消息设置消息类。
  • lr_vuser_status_message:生成格式化输出并将其打印到Controller Vuser状态区域。
  • lr_message:将消息发送到Vuser日志和输出窗口。

  6、运行时函数

  运行时(run-time)多数是通过VU的runtime来设置的。

  • lr_load_dll,加载外部dll。
  • lr_think_time:暂停脚本的执行,以模拟思考时间。
  • lr_continue_on_error,指定脚本如何处理错误场景,是继续还是退出。
  • lr_rendezvous:在Vuser脚本中设置集合点。

三、协议相关函数

  除了通用Vuser函数以外,Vugen还会在录制时生成特定于协议的函数,并将它们插入到Vuser脚本中。

  1、Http协议

  Header设置函数:

  • Web_add_header
  • Web_clean_header

  点击链接:

  • Web_link
  • Web_image

  提交表单:

  • Web_submit_data
  • Web_submit_form

  2、Web系统设置

  Cache设置:

  • Web_cache_leanup
  • Web_load_cache

  Cookie设置:

  • Web_add_cookie
  • Web_cleanup_cookies

  Proxy设置:

  • Web_set_proxy
  • Web_set_secure_proxy

  3、LoadRunner框架支持

  检查点:

  • Web_find
  • Web_image_check

  关联:

  • Web_create_html_param
  • Web_create_html_param_ex
  • Web_reg_save_param
  • Web_set_max_html_param_len

  控制:

  • Lr_start_transaction
  • Lr_rendzvous
  • Lr_think_time
Action()
{
    Web_add_cookie("nav = 140, Domain = Dogbert");
    lr_think_time(7);
    Web_url("Login",
        "URL=http://127.0.0.1:9090/Account/Login",
        "Resource=0",
        "RecContentType=text/html",
        "Referer=",
        "Snapshot=t1.inf",
        "Mode=HTTP",
        LAST);
}
  • 第一条语句Web_add_cookie的作用是保存Server传过来的cookie,以后的访问都会基于此cookie,直到脚本的结束。
  • 第二条语句lr_think_time,模拟用户思考时间,暂停7秒。
  • 第三条语句Web_url显示用户在IE地址栏输入http://127.0.0.1:9090/Account/Login,然后回车,IE发起一个访问的请求。
时间: 2024-07-29 19:53:35

LoadRunner脚本 《第二篇》的相关文章

shell脚本第二篇——将指定目录下大于200K的文件移动到/tmp下

shell脚本第二篇--将指定目录下大于200K的文件移动到/tmp下 # vim  /tmp/files.sh #!/bin/bash #将指定目录下大于200K的文件移动到/tmp下 read  -p  "请输入您要将目录下大于200K文件移动的目录路径:" $1 for FILE in `ls  $1` do if [ -f  $FILE ] ; then if [ `ls -l $FILE | awk `{print $5}` -gt 204800 ] ; then mv  $

LoadRunner脚本编写(转)

性能测试工程师要懂代码么?答案是必须的.好多测试员认为在loadrunner中编写脚本很难很牛X ,主要是大多测试人员并未做过开发工作,大学的那点程序基础也忘记的差不多了.还有非计算机专业出身的测试员,所以对代码望都比较望而生畏. 好多人认为loadrunner只支持C语言(包括我之前也一直这么认为),因为loadrunner默认的脚本是C语言的,其实它支持目前所有主流的语言,如:Java User.VB User.VB script User .Javascript User.Mmicroso

Loadrunner脚本编程(4)-数据类型操作和字符串操作

http://www.360doc.com/content/10/0806/13/1698198_44078277.shtml 一,数据类型转换 没有使用过C编程的LoadRunner脚本编写者会发现在数据类型转化方面比较困难.下面介绍这方面的知识. 1.  相似函数的输出在不同的位置 象很多C函数一样,使用atoi函数的结果即为返回值 如intResult = atoi( charY ); 而:itoa的返回结果为第二个参数. itoa( intX, charY, 10); 第一个参数是需要转

第二篇 SQL Server代理作业步骤和子系统

本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文. SQL Server代理作业由一系列的一个或多个作业步骤组成.一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作).每个作业步骤运行于一个单独的安全上下文,尽管每个作业有一个所有者来决定谁可以修改作业.本篇主要关注组成SQL Server代理的作业步骤和子系统.快速回顾作业理解SQL Server代理作业的最佳方式是把相关联的 需要完成给定任务 的组件放在一个容器中.作业最主要的组件有作业步骤.计划.警告和通知.

第二篇 Replication:分发服务器的作用

本篇文章是SQL Server Replication系列的第二篇,详细内容请参考原文. 分发服务器是SQL Server复制的核心组件.分发服务器控制并执行数据从一个服务器移动到另一个服务器的进程.它将发布和订阅的信息存储在分发数据库.几个代理促进真实数据的移动.术语在这一系列你会看到"分发服务器","发布服务器","订阅服务器".They always refer to a SQL Server instance together with

Loadrunner脚本录制常见问题整理

1.LoadRunner录制脚本时为什么不弹出IE浏览器? 当一台主机上安装多个浏览器时,LoadRunner录制脚本经常遇到不能打开浏览器的情况,可以用下面的方法来解决. 启动浏览器,打开Internet选项对话框,切换到高级标签,去掉"启用第三方浏览器扩展(需要重启动)"的勾选,然后再次运行VuGen即可解决问题 提示:通常安装Firefox等浏览器后,都会勾选上面得选项,导致不能正常录制.因此建议运行LoadRunner得主机上保持一个干净的测试环境. 2.录制Web脚本时,生成

转载:eclipse 搭建SSH项目(第二篇,有具体的项目例子)

原文地址:http://blog.csdn.net/yeohcooller/article/details/9316923 读博文前应该注意: 本文提纲:本文通过一个用户注册的实例讲解SSH的整合.创建Struts项目,整合Hibernate,整合Spring.最后总结如何熟练创建SSH项目. 仅是创建SSH项目,对于其他的扩展例如Struts的国际化,Hibernate的缓存优化,Spring的AOP等,本博文涉及不到.想学习更多的东西请搜索其他博文. 本项目的环境:Windows 8-64位

【转】Cache Buffer Chain 第二篇

文章转自:http://m.bianceng.cn/database/Oracle/201407/42884.htm 测试环境:版本11gR2 SQL> select * from v$version where rownum=1; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Releas

【第二篇】ASP.NET MVC快速入门之数据注解(MVC5+EF6)

目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策略(MVC5+EF6) [第四篇]ASP.NET MVC快速入门之完整示例(MVC5+EF6) [番外篇]ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6) 请关注三石的博客:http://cnblogs.com/sanshi 数据库连接字符串 上一篇文章中,我们使用MVC的

LoadRunner脚本实例来验证参数化的取值

LoadRunner脚本实例来验证参数化的取值 SINM {3]!G0问题提出:  主要想试验下,在Controller中,多个用户,多次迭代中参数的取值.51Testing软件测试网(['H5f,d)[jUh :o$F$kY+sO/y"Yr5S0方法:51Testing软件测试网$_v.sR$tS*T)} TJS]#v3u%bi"?!}0脚本:  我把取到的参数值和对应的VuserID记录下来保存到一个文件中,下面是例子的脚本 X-n)SI:J#t:v:YM'v#X0 long fi