使用LoadRunner对Web应用程序进行负载/压力测试
一、制定负载测试计划
1、分析应用程序
确定系统的组成
描述系统配置
分析最普遍的使用方法
2、确定测试目标
3、计划怎样执行LoadRunner
确定使用LoadRunner度量哪些性能参数
根据测试结果计算这些参数确定用户的活动
得出系统存在哪些瓶颈
二、开发测试脚本
1、录制基本的用户脚本
(1)新建一个用户脚本
(2)选择通信协议
(3)启动录制命令
添加测试的URL,选择脚本位置
录制脚本组成:vuser_init[1]、vuser_end[1]、Action[*]
选择录制方式:基于浏览器的推荐 HTML-based Script
基于浏览器且存在javascript脚本向服务器发出请求的推荐 URL-based Script
基于浏览器且使用了HTTPS协议的推荐 URL-based Script
非基于浏览器的推荐 URL-based Script
在录制过程中LoadRunner不支持浏览器后退功能
2、完善测试脚本
(1)插入事务
衡量服务器性能.
事务执行中将记录事务执行时间。
不限制事务数量。
事务状态:LR_OUT LR_PASS LR_FAIL LR_STOP
(2)插入集合点
衡量在加重负载的情况下服务器的性能状况。
集合点经常与事务一起使用.
集合点只能放到Action部分.
(3)插入注释
(4)参数化输入
优点:脚本变短;使用不同值测试脚本.
任务:在脚本中用参数取代常量;设置参数的属性及数据源.
约束:仅用于函数中的参量;不是所有的函数参量都可以进行参数化.
参数类型:DateTime
Group Name
Load Generator Name 该虚拟用户所在的Load Generator 机器名
Iteration Number 测试脚本当前循环次数
Random Number
Unique Number
Vuser ID 当前虚拟用户ID
File 从属性设置中添加内容或者从数据库中取数据
User Defined Function 从用户开发的dll文件中取数据
参数更新类型[Update value on]:
Each Occurrence 运行时每遇到一次该参数就更新一次值
Each iteration 运行时每次循环都取相同值
Once 运行时每次循环都取一次值
从数据库取值:配置的sql语句可能会查处多条记录,如何从多条记录中取值方式如下
Sequential 每个虚拟用户都会按照顺序按行读取
Random 每次循环里随机读取一个,在循环中保持不变.
Unique
Same Line As
(5)插入函数
(6)插入Text/Image检查点
验证网页上是否存在指定的Text或Image
在较大的压力测试环境中网站功能能否保持正确.
3、Run-Time Setting
General:Handling、Multithreading、Automatic Transactions
NetWork:NetWork Speed
Preferences:Checks、Generate Web Performances graphs、Advanced
ContentCheck:Enable ContentCheck during replay
Think Time
4、单机运行测试脚本