软件性能测试Ⅳ

LoadRunner脚本语言基础

在用LoadRunner做性能测试的过程中规,编写脚本是一项非常重要的工作,一个脚本的好坏关系到性能测试的成败

vuser_init:是虚拟用户初始化函数,一般将用户初始化的操作放在这里,如登录操作、分配内存等,而且在做vuser_init的时候,Controllerller的Vuser状态区域会显示Intialize状态

Action:是虚拟用户要做的业务。用户的业务操作,也就是测试内容的主体。在VU里设置迭代循环选项时,只有Action会生效,被重复运行,而init和end部分,则在脚本的运行过程中,只会运行一次。

vuser_end:与vuser_init相对应,vuser_end做收尾工作。

如果在vuser_init中是登录,vuser_end里就要做退出登录

如果在vuser_init中是申请内存(使用malloc函数),vuser_end中就应该是释放内存(使用free函数)


软件性能测试Ⅳ_第1张图片
VU三个函数的运行顺序

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

(1)VU通用函数,一般以lr开头,如lr_start_transaction函数

(2)协议相关函数,不同类型的Vuser的函数一般以本协议类型开头,如web_url就是一个协议函数,web前缀说明它是属于Web HTTP协议的,HTTP协议函数还包括web_list、web_link

(3)语言相关函数,VU脚本是用C语言写的,那么C语言的标准函数或dll都可以在这里被加载和使用


软件性能测试Ⅳ_第2张图片
LoadRunner API结构图

通用VU函数是构建在C语言基础之上的脚本框架函数,起支持作用,因此学习通过VU函数,有助于我们了解LoadRunner脚本机制

通用VU函数有一个特征,就是以LR开头,以标明它们属于LR,而不专属于任何协议,只要是C脚本,就都可以使用

通用VU函数可以分为事务控制函数、命令行分析函数、系统信息函数、字符串函数、日志函数和运行时函数

事务和事务控制函数

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


软件性能测试Ⅳ_第3张图片
事务控制函数

命令行分析函数

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

lr_get_attrib_double,检索脚本命令行中使用的double类型变量

lr_get_attrib_long,检索脚本命令行中使用的long类型变量

lr_get_attrib_string,检索脚本命令行中使用的字符串

系统信息函数

用来得到VU的系统信息

lr_user_data_point,记录用户定义的数据采集点

lr_whoami,将有关Vuser的信息返回给Vuser脚本

lr_get_host_name,返回执行Vuser脚本的主机名

lr_get_master_host_name,返回运行LoadRunner Controller的计算机名

字符串函数

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

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 分配的指针

lr_save_searched_string,在缓冲区中搜索字符串实例,并将该字符串实例保存到参数中

消息函数

是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日志和输出窗口

运行时(run-time)函数

多数是通过VU的runtime来设置的,有以下函数放在脚本中来实现,使LoadRunner的控制更加细致,对外更加灵敏

lr_load_dll,加载外部DLL

lr_think_time,暂停脚本的执行,以模拟思考时间(实际用户在操作之间暂停以进行思考的时间)

lr_continue_on_error,指定脚本如何处理错误场景,是继续还是退出

lr_rendezvous,在Vuser脚本中设置集合点

协议相关函数

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

特定于协议的函数是专门针对要录制的Vuser的类型而生成的。如:Vugen会将LRD函数插入到数据库脚本中,将LRT函数插入到Tuxedo脚本中,将LRS函数插入到Windows套接字脚本中

在通用VU函数的基础上,不同协议类型的Vuser有自己一套协议相关的函数。一般协议相关的函数以本协议名字开头。如HTTP协议以web开头,MMS协议以mms开头,Database协议以lrd开头。

HTTP协议原理

HTTP协议的Vuser是模拟浏览器和Web Server的交互过程

浏览器与Web Server的一个简单的交互过程如图

软件性能测试Ⅳ_第4张图片

HTTP协议交互原理

当浏览器想要得到一个网页时,用户在浏览器的地址栏里输入网页的URL,然后回车,浏览器首先就会发送一个HTTP的命令到Server,Server就会把页面的数据传送给浏览器,浏览器把数据解析成我们看到的HTML页面。但是HTTP协议有一个特点,它是无状态的,也就是说,浏览器和Server的每个交互都是独立无关的,Server不知道来自Browser的任何两个请求是否出自同一页面,或者是否有次序的规定。Web系统在HTTP协议上层进行了控制,通过Cookie、Session等机制来保证请求的状态

HTTP在LoadRunner的实现

以上过程,完全可以由LoadRunner的HTTP Vuser的函数来实现。以下图例是所有要用到的LoadRunner函数

软件性能测试Ⅳ_第5张图片
软件性能测试Ⅳ_第6张图片

LoadRunner HTTP函数

可见LoadRunner提供的HTTP协议API是比较细致的,不仅覆盖了浏览器与Server的交互,而且还有设置

软件性能测试Ⅳ_第7张图片

HTTP Vuser录制生成的脚本

Web_add_cookie 的作用是保存 Server 传过来的 cookie,以后的访问都会基于此cookie,直到脚本的结束

Web_url 显示用户在IE地址栏中输入www.test.com 然后回车,IE发起一个访问的请求

用户进入www.test.com页面后,点击一个alt属性为library的图片,此操作被LoadRunner记录为Web_image函数

最后用户做了一个搜索的操作,退出

如果想生成功能强大一些的脚本,就需要了解VU的机制和原理

你可能感兴趣的:(软件性能测试Ⅳ)