衡量一个软件系统常见的性能指标:
响应时间:服务器端响应时间、客户端响应时间、网络响应时间
吞吐量:单位时间内处理的事物/请求/数据
资源使用率:cpu、内存、磁盘、网络
点击数:客户端向服务器发起了多少次http请求
并发用户数:在客户端指一批用户同时执行一个操作
对哪些模块做性能测试:
l 基本且常用
l 对响应时间要求苛刻的。
性能测试开始的必要条件是软件系统已经处于一个比较稳定的状态
常见的性能测试方法:
负载测试:考察软件系统在既定负载下的性能表现
压力测试:考察系统在极端条件下的表现(系统出问题时,系统处理问题的方
式,在极限负载下系统如何运行)
并发测试:验证系统的并发能力
基准测试:系统增加一个新的模块时要做基准测试
稳定性测试:系统在一定负载运行长时间是否会发生问题。
恢复性测试:测试系统能否快速从错误状态恢复到正常状态
同一进程内的多个线程会有共享的内存空间,引起多个线程的同步问题调度不好就会出现问题。
在loadrunner中只有线程安全协议才能作为线程运行,以下协议不是线程安全协议:Sysbase-Ctlib、Sysbase-Dblib、Informix、Tuxedo等
Vuser通过录制客户端和后台服务器之间的通信报文,分析其中的协议,自动产生脚本。
协议不同体现在数据包的结构不同上
vu通用函数一般以lr开头
协议相关函数一般以本协议类型开头,如web_link
Loadrunner中三种函数:vu通用函数、协议相关函数、语言相关函数
Loadrunner支持的语言C、Java、VB、VBScript、JavaScript
lr_output_message():对话框
web_reg_find()
lr_whoami():用来得到运行时的虚拟用户的信息包括虚拟用户ID、group值和场景ID。
vuser_init()
lr_load_dll("my.dll"),lr_load_dll()loadrunner提供的一个加载动态链接库的函数
清除浏览器缓存
Action()
事务开始
globals.h()中定义全局变量
全局加载dll文件,向mdrv.bat文件的相应部分添加要加载的dll列表。
通用vu函数可分为事务控制函数、命令行分析函数、系统信息函数、字符串函数、日志函数和运行时函数
lr_eval_string:返回参数的当前值
lr_save_string:将以null结尾的字符串保存到参数中
lr_think_time:暂停脚本执行以模拟思考时间
lr_rendezvous:在vuser脚本中设置集合点
http协议是模拟浏览器和web server的交互过程。
协议函数;
内容 | 应用 | http vu函数 |
http协议 | Header设置 | Web_add_header |
Web_clean_header |
点击链接 | Web_link函数(点击文字链接) |
Web_inage(点击图片链接) |
提交表单 | Web_submit_data |
Web_submit_form |
Web系统设置 | Cache设置 | Web_cache_leanup |
Web_load_cache |
Cookie设置 | Web_add_cookie |
Web_cleanup_cookies |
Proxy设置 | Web_ser_proxy |
Web_set_secure_proxy |
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_rendezvous |
Lr_think_time |
VU是基于网络协议的
Loadrunner录制脚本的两种模式:URL mode和HTML mode两种,在默认情况下,选择“HTML-base script”说明脚本中采用HTML页面的形式来表示,这种方式的Script脚本容易维护,容易理解。
URL-based script.说明脚本中的表示采用基于URL的方式,所有的HTTP请求都会被录制下来,单独生成函数
1. 基于浏览器的应用程序推荐使用HTML-based script
2. 不是基于浏览器的应用程序推荐使用URL-based script
3. 如果基于浏览器的应用程序中包含了JavaScript并且该脚本向服务器产生了请求,比如DataGrid的分页按钮等,也要使用URL-based script方式录制。
4. 基于浏览器的应用程序中使用了HTTPS安全协议,使用URL-based script方式录制。
日志:
执行日志
黑色:标准输出消息
红色:标准错误消息
绿色:用引号括起来的文字字符串(例如URL)
蓝色:事务信息(开始、结束、状态和持续时间)
录制日志:记录了客户端与服务器之间的对话
产生日志:脚本能正常运行后应禁用日志,因为产生及写入日志需要一定的资源。
Vu提供运行时查看浏览器活动的功能,Tools>General Option >Display选项卡,勾选show browser during replay
运行时开启的run time viewer是loadrunner自带的html解释器,并不完全是ie,因此有些Java script和applet可能会不能正常显示
三种关联方法:
录制前关联:
关联的规则主要是制定两个边界,被关联变量的走边界和右边界,当vu在server的repsonse中找到符合条件的字符串时,它就意识到这是一张小票赶紧把它保存下来,作为参数。
录制后关联:录制后关联会尝试找出录制时与执行时,服务器响应内容的差别部分,藉以找出需要关联的数据,并建立关联
手动关联:使用web_reg_sava_param来实现关联
1) 使用相同的业务流程录制两份脚本
2) 使用windiff工具协助找出需要关联的数据(tools——compare with Vuser)
3) 确定被关联数据的左右边界
4) 使用web_reg_save_param 函数手动建立关联
5) 将脚本中有用到关联的数据,以参数取代。
注意Response body字样的数据段,这表明它后面的内容是从server返回的。
web_reg_sava_param是一个重要的函数,它的功能是在下载的网页内容中,通过设定的边界字符串,找出特定的数据并将其存储在一个参数中,以供后续脚本使用。
web_reg_sava_param是一个service function。Service function主要用来完成一些特殊的工作,如关联、设定proxy、提供认证信息,当其作用是不会对网页的内容做任何修改。
web_reg_sava_param同时也是一个registration type function(注册函数),只要函数名称中包含_reg_字眼就表示其为registration type function)。registration type function意味着其真正的作用是在下一个Action function完成时执行,使用registration type function时,要注意其放置的位置必须在要做有的Action function之前。
关联的用途和意义:
(1) 简化和优化代码
(2) 动态产生数据
(3) 支持唯一数据
修改Script. View的代码后若有语法错误,Script. View将不能转化为Tree View或缩略图