实验二. 使用LoadRunner进行压力测试
一. LoadRunner 概要介绍
1.1简介
LoadRunner 是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner , 企业能最大限度地缩短测试时间, 优化性能和加速应用系统的发布周期。目前企业的网络应用环境都必须支持大量用户,网络体系架构中含各类应用环境且由不同供应商提供软件和硬件产品。难以预知的用户负载和愈来愈复杂的应用环境使公司时时担心会发生用户响应速度过慢, 系统崩溃等问题。这些都不可避免地导致公司收益的损失。Mercury Interactive 的 LoadRunner 能让企业保护自己的收入来源, 无需购置额外硬件而最大限度地利用现有的IT 资源, 并确保终端用户在应用系统的各个环节中对其测试应用的质量, 可靠性和可扩展性都有良好的评价。LoadRunner 是一种适用于各种体系架构的自动负载测试工具, 它能预测系统行为并优化系统性能。LoadRunner 的测试对象是整个企业的系统, 它通过模拟实际用户的操作行为和实行实时性能监测, 来帮助您更快的查找和发现问题。此外,LoadRunner 能支持广范的协议和技术, 为您的特殊环境提供特殊的解决方案。
1.2基本步骤
使用LoadRunner 完成测试一般分为四个步骤:
1)Vvitrual User Generator 创建脚本
² 创建脚本,选择协议
² 录制脚本
² 编辑脚本
² 检查修改脚本是否有误
2)中央控制器(Controller)来调度虚拟用户
² 创建Scenario,选择脚本
² 设置机器虚拟用户数
² 设置Schedule
² 如果模拟多机测试,设置Ip Spoofer
3)运行脚本
² 分析scenario
4)分析测试结果
二.项目背景介绍
2.1 背景概述
“LMS网校考试平台”是一个典型的三层B/S架构的MIS系统(客户端/应用服务器/数据库管),中间层是业务逻辑层,应用服务器处理所有的业务逻辑,但应用服务器本身不提供负载均衡的能力,而是利用开发工具提供的ORB(对象请求代理)软件保证多个应用服务器间的负载均衡。本次测试的目的是:进行应用服务器的压力测试,找出应用服务器能够支持的最大客户端数。方法是:按照正常业务压力估算值的1~10倍进行测试,考察应用服务器的运行情况。
2.2压力测试用例
场景描述一: |
1. 用户登录的lmm模块,总共登陆24个用户,所有用户都同时并发操作。
2. 用户点击“登记的教程”
3. 用户点击“启动”,进行课程学习,进入DS模块
4. 在DS模块中进行学习,过程包括:首先,点击一次课程结构树;然后,进行课程内容的学习。
5. 点击“返回LMS” 按钮,返回到lmm模块,点击“退出”按钮,退出系统
场景描述二: |
- 用户登陆lmm模块,总共登录48个用户,每1秒登录1个用户
- 用户点击“已登记教程”
- 用户点击“启动”,进行课程学习,进入DS模块
- 在DS模块中进行学习,过程包括:首先,点击一次课程结构树;然后,进行课程内容的学习;
- 点击“返回LMS” 按钮,返回到lmm模块,点击“退出”按钮,退出系统
场景描述三: |
1. 用户登录的lmm模块,总共登陆48个用户,所有用户都同时并发操作。
2. 用户点击“登记的教程”
3. 用户点击“启动”,进行课程学习,进入DS模块
4. 在DS模块中进行学习,过程包括:首先,点击一次课程结构树;然后,进行课程内容的学习。
5. 点击“返回LMS” 按钮,返回到lmm模块
点击“退出”按钮,退出系统
场景描述四: |
1. 用户登录的lmm模块,总共登陆48个用户,每秒同时登录10个用户。
2. 用户点击“登记的教程”
3. 用户点击“启动”,进行课程学习,进入DS模块
4. 在DS模块中进行学习,过程包括:首先,点击一次课程结构树;然后,进行课程内容的学习。
5. 点击“返回LMS” 按钮,返回到lmm模块,点击“退出”按钮,退出系统
场景描述五: |
1. 用户登录的lmm模块,总共登陆100个用户,所有用户同时并发操作。
2. 用户点击“登记的教程”
3. 用户点击“启动”,进行课程学习,进入DS模块
4. 在DS模块中进行学习,过程包括:首先,点击一次课程结构树;然后,进行课程内容的学习。
5. 点击“返回LMS” 按钮,返回到lmm模块
场景描述六: |
1. 用户登录的lmm模块,总共登陆200个用户,所有用户同时并发操作
2. 用户点击“登记的教程”
3. 用户点击“启动”,进行课程学习,进入DS模块
4. 在DS模块中进行学习,过程包括:首先,点击一次课程结构树;然后,进行课程内容的学习。
5. 点击“返回LMS” 按钮,返回到lmm模块,点击“退出”按钮,退出系统
场景描述七: |
1. 户登录的lmm模块,总共登陆24个用户。所有用户都同时并发操作
2. 所有用户都同时并发操作,户点击“登记的教程”中“test”课件
使用自发测试工具,目的测试24个用户同时打开课件时服务器性能
场景描述八: |
1. 登录的lmm模块,总共登陆60个用户。所有用户都同时并发操作
2. 有用户都同时并发操作,户点击“登记的教程”中“test”课件
使用自发测试工具,目的测试60个用户同时打开课件时服务器性能
三.使用LoadRunner进行负载/压力测试
3.1录制基本的用户脚本
创建用户脚本需要用到VuGen。启动Visual User Generator 后, 通过菜单新建一个用户脚本, 选择系统通讯的协议。测试Web 应用,选择Web(HTTP/HTML)协议+SQL SERVER协议,确定后, 进入主窗体。通过菜单来启动录制脚本的命令。
在URL 中添入要测试的Web 站点地址..。
测试http://lms.ah.sp.com.cn/lms-lmm/loginForm.do选择要把录制的脚本放到默认情况下的“Action”。
点“ 选项 ”按钮, 进入录制的设置窗体。
然后点“OK” 后,VuGen 开始录制脚本。录制过程中, 在屏幕上会有一个工具条出现。录制的过程和WinRunner 有些类似。录制完成后, 按下“ 结束录制” 按钮退出录制过程。
3.2 完善测试脚本
当录制完一个基本的用户脚本后, 在正式使用前需要完善测试脚本, 增强脚本的灵活性。我们通过以下几种方法来完善测试脚本。插入事务、插入结合点、插入注解、参数化输入。
3.2.1 插入事务
事务(Transaction): 为了衡量服务器的性能, 我们需要定义事务。
插入事务操作可以在录制过程中进行, 也可以在录制结束后进行。LoadRunner 运行在
脚本中插入不限数量的事务。
具体的操作方法如下: 在需要定义事务的操作前面, 通过菜单或者工具栏插入。输入该事务的名称。插入事务的开始点后, 下面需要在需要定义事务的操作后面插入事务的“ 结束点”。同样可以通过菜单或者工具栏插入。默认情况下, 事务的名称列出最近的一个事务名称。一般情况下, 事务名称不用修改。事务的状态默认情况下是LR_AUTO。一般情况下, 我们也不需要修改, 除非在手工编写代码时, 有可能需要手动设置事务的状态。
3.2.2 插入集合点
插入集合点是为了衡量在加重负载的情况下服务器的性能情况。在测试计划中, 可能会
要求系统能够承受1000 人同时提交数据,在LoadRunner 中可以通过在提交数据操作前面加入集合点, 这样当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待, 当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据, 从而达到测试计划中的需求。集合点只能插入到Action 部分,vuser_init 和vuser_end 中不能插入集合点。具体的操作方法如下: 在需要插入集合点的前面, 通过菜单或者工具栏操作输入该集合点的名称。
3.2.3 插入注释
在需要插入注释的前面, 通过菜单或者工具栏操作
3.2.4 参数化输入
在录制脚本过程中, 填写提交了一些数据。这些操作都被记录到了脚本中。当多个虚拟用户运行脚本时, 都会提交相同的记录, 这样不符合实际的运行情况, 而且有可能引起冲突。为了更加真实的模拟实际环境, 需要各种各样的输入。
参数化用户的登陆名:
通过脚本录制找到用户登陆部分,如图
框选住登陆名,点鼠标右键,弹出对话框,选择“替换为新参数”弹出对话框
在“属性” 中有以下几
个选项:
Each Occurrence:在运行时, 每遇到一次该参数, 便会取一个新的值
Each iteration:运行时, 在每一次循环中都取相同的值
Once:运行时, 在每次循环中, 该参数只取一次值
选择Each Occurrence
框选住登陆名,点鼠标右键,弹出对话框,选择“替换为新参数”弹出对话框,此时参数名输入:name,参数类型选择File,如图
点“属性”按钮, 出现以下窗口
[徐涛1] [徐涛2]
连接数据库, 从数据表中选择用户名。点“数据向导” 按钮,显示如图
[徐涛3] 使用第2 项, 选择“使用手动指定SQL语句”点下一步,出现如图窗口
添入连接字符串, 点“创建” 按钮,选择事先配置好的ODBC连接。在SQL语句里输入select查询语句,出现如图窗口
Controller 中设定20 个虚拟用户进行5 次循环, 那么编号为1 的虚拟用户取前5 个数, 编号为2 的虚拟用户取6-10 的数, 依次类推, 这样数据表中至少要有100 个数据, 否则Controller 运行过程中会返回一个错误。
“按编号”指选择列表中的那一列数据,从左到右分别是1、2、3依次
取值Sequential完成设置关闭即可。
3.3 单机运行测试脚本
脚本就可以运行。运行脚本可以通过菜单或者工具栏来操作。
四.实施测试
4.1 选择脚本,创建虚拟用户
启用“controller”弹出如图窗口
选择刚才录制并保存好的脚本,添加到方案中,点“确定”出现如图
根据需要修改虚拟用户数量,这里我们取“100”根据实现场景设计,取不同数字
点“编辑计划”细化方案,计划名里选择计划种类:加压,缓慢加压、默认计划或新建立计划。
同时加载所有vuser,直到完成
加压:每15秒启动2个vuser 持续时间5分种
缓慢加压::每2分种启动2个vuser 持续时间10分种
点“加压”标签设置加压方法,点“持续时间”标签选择完成时间,点“加压”标签选择退出方法,点“方案开始时间”可以定义时间后自动到点执行,并在一个限定的时间范围内结束,所有设置完毕后,点“ok”返回上一级窗口,点“开始方案”启动运行,出现如图窗口
4.2 添加windows资源监视窗口
选择系统资源,找到windows资源双击,则windows资源监视窗口便自动替换原窗口如上图。
4.3 添加windows性能计数器
鼠标选择windows资源监视窗口,点击右键弹出菜单中选择“ADD Measurements..”弹出如图窗口
点“添加”把监视的服务器ip地址输入,点确定,如图
如果可以正常联机到服务器,则在资源度量中会显示全部计数器,此时如果点“确定”则系统默认全部选中,在监视窗口中会显示所有性能曲线,无法单独过滤显示某条曲线,如果选中某个计数器后点“添加”则弹出该项目下的其它性能指标,选择需要的计数器后点“添加”如图
4.4 执行脚本
点击“开始方案”
5.4.1 分析结果
脚本执行完毕后,loadrunner会自动分析结果,生成分析结果图或表,点导航栏“结果”选现,在弹出窗口中选择“分析结果”
六.结果分析
根据不同的场景设计,配置脚本后进行测试得到如下结果
测试环境
LMM:
CPU:4x2.7G RAM:4G
Websphere 5.0 + IBM Http Server
线程池:100
JDBC连接池:100
会话超时:30分钟
DS:
CPU:4x2.2 RAM:4G
Websphere 5.0 + IBM Http Server
线程池:100
JDBC连接池:100
会话超时:30分钟
DB&LDAP:
CPU:2x2.2G RAM:4G
Oralce 8.1.7 + LDAP
测试工具:Load Runner 7.8
用户数据:用户名test1 – test100; 口令与用户名相同。
测试用例1
测试场景描述
用户登录的lmm模块,总共登陆24个用户,所有用户都同时并发操作。
用户点击“登记的教程”
用户点击“启动”,进行课程学习,进入DS模块
在DS模块中进行学习,过程包括:首先,点击一次课程结构树;然后,进行课程内容的学习。
点击“返回LMS” 按钮,返回到lmm模块
点击“退出”按钮,退出系统
测试结果
LMM与DS模块CPU平均利用率在10%以下。LMM服务器CPU利用率峰值为20%,其阶段为LMM处理多个用户同时的登录请求与点击“已登记教程”的学习课程查询。DS服务器CPU利用率峰值为100%(持续时间为7秒),其阶段为DS处理多个用户单一登录验证和同时对课程结构树查询。用户平均操作响应时间不超过5秒,所有交易成功。
测试用例2
测试场景描述
用户登陆lmm模块,总共登录48个用户,每1秒登录1个用户
用户点击“已登记教程”
用户点击“启动”,进行课程学习,进入DS模块
在DS模块中进行学习,过程包括:首先,点击一次课程结构树;然后,进行课程内容的学习;
点击“返回LMS” 按钮,返回到lmm模块
点击“退出”按钮,退出系统
测试结果
LMM与DS模块CPU平均利用率在5%以下。LMM服务器CPU利用率峰值为10%,其阶段为LMM处理多个用户同时的登录请求与点击“已登记教程”的学习课程查询。DS服务器CPU利用率峰值为8%,其阶段为DS处理多个用户单一登录验证和同时对课程结构树查询。用户操作响应时间不超过3秒,所有交易成功。
测试用例3
测试场景描述
用户登录的lmm模块,总共登陆48个用户,所有用户都同时并发操作。
用户点击“登记的教程”
用户点击“启动”,进行课程学习,进入DS模块
在DS模块中进行学习,过程包括:首先,点击一次课程结构树;然后,进行课程内容的学习。
点击“返回LMS” 按钮,返回到lmm模块
点击“退出”按钮,退出系统
测试结果
LMM与DS模块CPU平均利用率在20%以下。LMM服务器CPU利用率峰值为40%,其阶段为LMM处理多个用户同时的登录请求与点击“已登记教程”的学习课程查询。DS服务器CPU利用率峰值为100%(持续时间为10秒),其阶段为DS处理多个用户单一登录验证和同时对课程结构树查询。用户平均操作响应时间不超过10秒,所有交易成功。
测试用例4
测试场景描述
用户登录的lmm模块,总共登陆48个用户,每秒同时登录10个用户。
用户点击“登记的教程”
用户点击“启动”,进行课程学习,进入DS模块
在DS模块中进行学习,过程包括:首先,点击一次课程结构树;然后,进行课程内容的学习。
点击“返回LMS” 按钮,返回到lmm模块
点击“退出”按钮,退出系统
测试结果
LMM与DS模块CPU平均利用率在10%以下。LMM服务器CPU利用率峰值为10%,其阶段为LMM处理多个用户同时的登录请求与点击“已登记教程”的学习课程查询。DS服务器CPU利用率峰值为100%(持续时间为2秒),其阶段为DS处理多个用户单一登录验证和同时对课程结构树查询。用户平均操作响应时间不超过5秒,所有交易成功。
测试用例5
测试场景描述
用户登录的lmm模块,总共登录100个用户,每1秒登录一个用户。
用户点击“登记的教程”
用户点击“启动”,进行课程学习,进入DS模块
在DS模块中进行学习,过程包括:首先,点击一次课程结构树;然后,进行课程内容的学习。
点击“返回LMS” 按钮,返回到lmm模块
点击“退出”按钮,退出系统
测试结果
LMM与DS模块CPU平均利用率在20%以下。LMM服务器CPU利用率峰值为10%,其阶段为LMM处理多个用户同时的登录请求与点击“已登记教程”的学习课程查询。DS服务器CPU利用率峰值为100%(持续时间为2’20分钟),其阶段为DS处理多个用户单一登录验证和同时对课程结构树查询。用户最大操作响应时间30秒,所有交易成功。
测试用例6
测试场景描述
用户登录的lmm模块,总共登陆100个用户,所有用户同时并发操作。
用户点击“登记的教程”
用户点击“启动”,进行课程学习,进入DS模块
在DS模块中进行学习,过程包括:首先,点击一次课程结构树;然后,进行课程内容的学习。
点击“返回LMS” 按钮,返回到lmm模块
点击“退出”按钮,退出系统
测试结果
LMM与DS模块CPU平均利用率在20%以下。LMM服务器CPU利用率峰值为40%,其阶段为LMM处理多个用户同时的登录请求与点击“已登记教程”的学习课程查询。DS服务器CPU利用率峰值为100%(持续时间为3分钟),其阶段为DS处理多个用户单一登录验证和同时对课程结构树查询。用户超时1个。
测试用例7
测试场景描述
用户登录的lmm模块,总共登陆200个用户,所有用户同时并发操作。
用户点击“登记的教程”
用户点击“启动”,进行课程学习,进入DS模块
在DS模块中进行学习,过程包括:首先,点击一次课程结构树;然后,进行课程内容的学习。
点击“返回LMS” 按钮,返回到lmm模块
点击“退出”按钮,退出系统
测试结果
LMM CPU平均利用率在20%以下。LMM服务器CPU利用率峰值为40%,其阶段为LMM处理多个用户同时的登录请求与点击“已登记教程”的学习课程查询。DS服务器CPU利用率峰值为100%(持续时间为5分钟),其阶段为DS处理多个用户单一登录验证和同时对课程结构树查询。用户超时108个。
10参考文献
LoadRunner中文使用手册(完全版) ---作者:huior
LoadRunner 7.8 联机帮助