《LR性能测试.ppt》由会员分享,可在线阅读,更多相关《LR性能测试.ppt(74页珍藏版)》请在一课资料网上搜索。
1、LoadRunner性能测试 商春晖2014 7 29 性能测试介绍LoadRunner工具的使用测试结果分析 性能测试介绍 性能测试 通过自动化的测试工具模拟多种正常 峰值以及异常负载条件来对系统的各项性能指标进行测试 负载测试和压力测试都属于性能测试 两者可以结合进行 负载测试 确定在各种工作负载下系统的性能 目标是测试当负载逐渐增加时 系统各项性能指标的变化情况 压力测试是通过确定一个系统的瓶颈或者不能接受的性能点 来获得系统能提供的最大服务级别的测试 例如 测试一个Web站点在大量的负荷下 何时系统的响应会退化或失败 衡量一个软件系统性能的常见指标有 1 响应时间 Responseti
2、me 用户感受软件系统为其服务所耗费的时间 对网站系统来说 响应时间就是从点击一个页面计时开始 到这个页面完全在浏览器里展现计时结束的这一段时间间隔响应时间 客户端响应时间 服务器端响应时间 网络响应时间 1 客户端响应时间 构建请求和展现交易结果所耗费的时间 2 服务器端响应时间 完成交易请求执行的时间 3 网络响应时间 网络硬件传输交易请求和交易结果所耗费的时间 性能测试介绍 性能测试介绍 2 吞吐量 Throughput 对软件系统来说 吞 进去的是请求 吐 出来的是结果 而吞吐量反应的就是软件系统的 饭量 也就是系统的处理能力 具体来说 就是软件系统在每单位时间内能处理多少个事务 请求
3、 单位数据等 3 资源使用率 Resourceutilization 常用的资源有 CPU占用率 内存使用率 性能测试介绍 4 点击数 Hitspersecond 衡量WebServer处理能力的一个很有用的指标 需要明确的是 点击数不是我们通常理解的用户鼠标点击数 而是按照客户端向WebServer发起了多少Http请求计算的 一次鼠标可能触发多个http请求 这需要结合具体的Web系统实现来计算 性能测试介绍 5 并发用户数 Concurrentusers 并发用户数用来度量服务器并发容量和同步协调能力 凡是用户有关资源和时间的要求都可以被视作性能指标 都可以作为软件的度量 而性能测试就是
4、为了验证这些性能指标是否被满足 性能测试介绍 例如 系统登陆功能支持五百用户并发 登陆响应时间不超过30秒 我们就可以确定性能测试指标 并发用户数 500响应时间 30秒 LoadRunner工具的使用 LoadRunner包含的组件LoadRunner术语负载测试的流程规划创建脚本 创建Vuser脚本 脚本优化定义场景执行场景分析结果 LoadRunner工具的使用 1 LoadRunner工具的使用 2 LoadRunner工具的使用 3 LoadRunner工具的使用 创建负载测试Controller是中央控制台 用来创建 管理和监控测试 使用Controller来运行模拟实际用户操作的
5、示例脚本 并通过让一定数量的Vuser同时执行这些操作 在系统上产生负载 以并发访问详情页为例 创建Vuser脚本 1 打开HPLoadRunner窗口 选择开始 所有程序 HPLoadRunner LoadRunner 这时将打开HPLoadRunner11 00 创建Vuser脚本 2 点击 Create EditScripts 进入 VirtualUserGenerator 点击新增脚本按钮 创建Vuser脚本 3 在NewVirtualUser窗口中 选择协议 我们用到的 Web HTTP HTML 协议 点击 Create 进入下一步操作 创建Vuser脚本 2 点击 Options
6、 选择录制方式 创建Vuser脚本 LR录制脚本时录制方式的选择 要注意以下几点 1 基于浏览器的应用 推荐用HTML basedscript方式录制 2 不是基于浏览器的应用 推荐用URL based方式录制 3 如果基于浏览器的应用程序中包含Javascript 并且该脚本向服务器产生了请求 比如DataGrid分页按钮等 就要使用URL based方式录制 4 基于浏览器的应用程序中使用了HTTPS安全协议 也要使用URL based方式录制 创建Vuser脚本 4 开始录制脚本 1 在 URLAddress 处输入要访问的网站地址 创建Vuser脚本 3 选择将脚本录制到哪个函数中 v
7、user init 一般存放打开测试网站的首页 登录系统的操作 Action 一些操作事务 vuser end 注销登录 创建Vuser脚本 以并发访问详情页为例 将打开自由行页签的操作放到vuser init中 将访问详情页的操作放到Action中 在Action中 访问详情页之前添加事务 在事务之前添加集合点 LR脚本优化 设置事务设置集合点设置检查点参数化 设置事务 一 设置事务 1 事务的作用 LoadRunner运行到该事务的开始点时 LoadRunner就会开始计时 直到运行到该事务的结束点 计时结束 这个事务的运行时间在LoadRunner的运行结果中会有反映 通俗的讲LoadR
8、unner中的事务就是一个计时标识 LoadRunner在运行过程中一旦发现事务的开始标识 就开始计时 一旦发现事务的结束表示 则计时结束 这个过程中得到的时间即为一个事务时间 通常事务时间所反映的是一个操作过程的响应时间 设置事务 2 为什么使用事务 1 事务是LoadRunner度量系统性能指标的唯一手段 也可以通过LoadRunner编程实现 但不如LoadRunner中的事务用的简单而且方便 2 事务能够用于度量高风险业务流程的性能指标 3 事务能够度量在一组操作中每一步的性能指标 4 通过事务计时实现了不同压力负载下的性能指标对比 5 通过事务计时可以帮助定位性能瓶颈 设置事务 3
9、如何使用事务 方法一 脚本生成后 手动插入事务 方法 在LoadRunner脚本中点击鼠标 右键 选择 Insert StartTransaction 弹出一个对话框 输入一个事务名字 注 事务名字可以为中文 可以为英文 也可以中英文混合 但推荐的做法是起一个容易理解的名称 例如想知道登录所花费的时间 则插入事务可以命名为login或登录 StartTransaction 插入完成后 还需要插入一个 EndTransaction 用以标识事务结束 注 StartTransaction和EndTransaction需要成对出现 如果仅插入StartTransaction则脚本编译会提示错误 此外
10、 还可以通过LoadRunnervugen中的 Insert 菜单插入StartTransaction和EndTransaction 设置事务 方法二 在脚本录制过程中插入StartTransaction和EndTransaction 在脚本录制过程中 通过录制工具条上的StartTransaction和EndTransaction图标插入事务 如下图所示 设置事务 4 方法三 通过Run timeSettings中的AutomaticTransactions自动生成事务 如下图所示 设置事务 注意 事务之间可以嵌套使用 相互之间没有影响 事务计时仅仅以事务名称为标识 开始事务 和 结束事务
11、标记是成对出现的 事务名必须以字母或数字开始 可以包含字母 数字或者下列字符 或 请勿使用句号 设置集合点 二 设置集合点 1 集合点的含义 当通过controller虚拟多个用户执行该脚本时 用户的启动或运行步骤不一定都是同步的 集合点是在脚本的某处设置一个标记 当有虚拟用户运行到这个标记处时 停下等待 直到所有的用户都达到这个标记处时 再一同进行下面的步骤 这样能够用最大的用户并发去做下面的操作 就像集合再前进一样 集合点之名由此而得 集合点主要用于对关键步骤的加压 设置集合点 2 插入集合点的目的通过设置多个虚拟用户等待到一个点 同时触发一个事务 以达到模拟真实环境下同时多个用户操作 同
12、时模拟负载 实现性能测试的最终目的 插入集合点主要是为了衡量在加重负载的情况下服务器的性能情况 从而找到性能瓶颈 设置集合点 以自由行提交订单为例 假如客户的需求中 要求系统能够承受2000人同时提交订单 在LoudRunner中通过在提交订单操作前添加集合点 当虚拟用户运行到提交订单的集合点时 LoudRunner就会检查同时有多少用户运行到集合点 如果我们设定脚本运行的虚拟用户数为2000 等这2000虚拟用户都运行到集合点后 触发同时进行提交订单的操作 从而能够测试系统对于这2000个用户提交订单的响应情况 依此来看系统是否满足客户的该点需求 设置集合点 3 集合点的插入位置集合点一般是
13、跟事务结合使用的 不要把集合点设置到事务里面 因为那样的话脚本等待的时间都计算在事务的时间内 进行压力测试的时候查看响应时间就会有一定的偏差 设置集合点 4 集合点插入方法方法一 录制时 在需要并发操作的事务前直接点击插入集合的按钮 设置集合点 方法二 在录制的脚本中 在并发操作的事务前插入集合点 步骤 点击右键 Insert Rendezvous 输入集合名称 脚本中出现此集合点 即添加集合点成功 菜单栏的Insert中也可以添加集合点 设置集合点 注意1 lr rendezvous 并发访问详情页 集合点函数 2 集合点只能插入到Action部分 vuser init和vuser end中
14、不能插入集合点 3 集合设置策略在后续的场景中会详细的介绍 设置检查点 举例 登录操作 判断登录是否成功 因为登录成功的页面和失败的页面会有不同的内容 当并发用户多的时候 可能会导致一些用户登录不成功 设置检查点 LR中检查点有两种 图片和文字 这两种检查点可用以下三个函数实现 web find web reg find 和web image check 设置检查点 1 web find 函数函数作用 在页面中查找相应的内容参数举例 web find web find RighOf a LeftOf b What name LAST 参数解释 web find 定义该查找函数的名称 LeftO
15、f 和 RighOf 用来定义查找字符的左右边界 What 定义查找内容 设置检查点 例如 上述参数举例中的意思就是在页面中查找左边界为b 右边界为a 内容为name的信息函数用法 该函数是在查找页面中的内容 所以要放在要查找的内容的后面 注意事项 要在Vuser Run TmeSettings Preferences中更改下设置 勾选EnableImageandtextcheck 系统默认是不勾选该选项的 该函数只能在基于HTML模式录制的脚本中进行查找 设置检查点 2 web reg find 函数函数作用 在缓存或代码中查找相应的内容参数举例 web reg find Search Bo
16、dy SaveCount ddd Test aaa LAST 参数解释 Search用来定义查找范围 SaveCount定义查找计数变量名称 该参数可以记录在缓存中查找内容出现的次数 可以使用该值来判断要查找的内容是否被找到 设置检查点 例如上述参数举例中的意思就是Body中查找内容为aaa的信息 并将出现次数记录在变量ddd中 函数用法 该函数是在缓存中查找相应的内容 所以要放在查找内容之前 注 在录制过程中添加的检查点 用到的函数是web reg find 且参数只有 Text 设置检查点 3 web image check 函数函数作用 在页面中查找一个具体的图片 参数说明 web im
17、age check web image check Alt Src LAST 参数解释 Alt 和 Src 的值直接取该图片在网页源代码中相应参数的值 设置检查点 函数用法 该函数是在缓存中查找相应的内容 所以要放在查找内容之前 注意事项 使用该函数时 要在Vuser Run TmeSettings中勾选EnableImageandtextcheck 具体操作请看web find 中的注意事项 设置检查点 例如 Action的功能是在登录页面输入用户名和密码点击登录 web reg find方法 在缓存中查找文本 欢迎您 将出现次数记录在变量 欢迎您 Count 中 web image che
18、ck在缓存中查找图片 设置检查点 设置检查点 1 atoi 函数的作用是将一个ASCII字符串转换为整型2 lr eval string 函数作用是取得参数值 参数化 例如 以LR自带实例WebTours的登陆为例 截取一小段代码 如下 红框内容是用户名 绿框内容是密码 参数化 参数化的方法 方法一 选中要参数化的内容 右键 Replacewithaparameter 方法二 菜单 insert newParameter 方法三 菜单 Vuser Parameterlist 参数化 参数化的方式 1 编辑数据点击CreateTable会出现表格 在表格 再次点击EditwithNotepad
19、然后会打开一个记事本 我们可以对记事本进行添加数据 参数化 参数化 2 添加txt数据文件点击File输入框后面的 Browse 按钮 找到本地的txt数据文件 进行添加就可以了 需要将txt文件的扩展名改为dat需要注意的是 文件里面的数据不要乱写 每条数据一行 不然会读取有误 参数化 参数化 3 数据库添加数据点击DateWizard打开连接数据库向导 参数化 4 参数化之间的关联用户名和密码需要一一对应 才能保证脚本正常运行 假设 我们已经对用户名已经进行了参数化 参数名为 username 下面设置密码参数化与用户名关联 参数化 点击 Properites 会打开编辑密码参数化窗口 在
20、File列表框中 选择刚才保存用户名信息的文件 username dat 参数化 点击 AddColumn 添加列 用于放置密码 参数化 点击 EditwithNotepad 再次编辑参数化数据文件 使用户名密码建立一一对应关系 参数化 调试脚本 看看参数化的用户名是否被使用 在用户登录结束后 使用下面的语句输出lr log message 用户名是 s lr eval string username 5 数据分配Selectnextrow 选择下一行 顺序 Sequential 按照参数化的数据顺序 一个一个的来取 随机 Random 参数化中的数据 每次随机的从中抽取数据 唯一 Uniqu
21、e 为每个虚拟用户分配一条唯一的数据 定义场景 创建场景 进入Tools CreateControllerScenario1 选择虚拟用户数量 定义场景 2 设计场景的执行策略GlobalSchedule 定义场景 设置集合点 菜单Scenario Rendezvous 定义场景 集合策略 第一项 表示当所有用户数的X 到达集合点时 开始释放等待的用户并继续执行场景 第二项 表示当前正在运行用户数的X 到达集合点时 开始释放等待的用户并继续执行场景 第三项 表示当X个用户到达集合点时 开始释放等待的用户并继续执行场景 其中还有一项TimeoutbetweenVusers 就30秒来说 当第一个
22、用户到达集合点后 再等待30秒 如果在30秒内到达的用户数达到指定的数量 就开始继续执行场景 如果在30秒内还没有达到指定的用户数量 就不再等待 开始释放等待的用户并继续执行场景 定义场景 执行场景 执行场景之前需要配置服务器的监听参数 以Windows服务器为例 1 点击WindowsResources框 右键 选择AddMeasurements 执行场景 2 点击Add按钮 在Name框中 输入服务器的IP地址 选择服务器的系统类型后 点击OK按钮 在ResourceMeasurements框中点击Add添加按钮 选择监听参数 之后点击ok 就可以运行场景 执行场景 3 配置服务器端1 开
23、启服务器端如下两个服务 以win7为例 控制面板 管理工具 服务 执行场景 2 本地安全策略 以Win7为例 在运行中输入secpol msc 执行场景 3 在客户端进行测试 在 运行 栏中输入服务器的ip地址 后面跟上C 表示服务器C盘下的系统资源目录 如 192 168 96 135 C 看看是否可以访问服务器C盘目录 通常情况下可能需要输入用户名和密码 填充服务器端的账户和密码就可以访问4 配置成功后 LR的WindowsResources框中显示服务器端的资源使用情况 测试结果分析 2 5 10原则 简单说 就是当用户能够在2秒以内得到响应时 会感觉系统的响应很快 当用户在2 5秒之间
24、得到响应时 会感觉系统的响应速度还可以 当用户在5 10秒以内得到响应时 会感觉系统的响应速度很慢 但是还可以接受 而当用户在超过10秒后仍然无法得到响应时 会感觉系统糟透了 或者认为系统已经失去响应 而选择离开这个Web站点 或者发起第二次请求 测试结果分析 服务器资源监控指标 1 CPU利用率 ProcessorTime 指处理器执行非闲置线程时间的百分比 根据应用系统情况 在80 5 范围内波动为宜 过低 则服务器CPU利用率不高 过高 则CPU可能成为系统的处理瓶颈 2 AvailableBytes 显示出当前空闲的物理内存总量 它等于分配给待机 缓存的 空闲和零分页列表内存的总和 当
25、这个数值变小时 Windows开始频繁地调用磁盘页面文件 如果这个数值很小 例如小于5MB 系统会将大部分时间消耗在操作页面文件上 一般要保留10 的可用内存 最低不能 4M 此值过小可能是内存不足或内存泄漏 3 DiskTime 指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比 正常值 10 此值过大表示耗费太多时间来访问磁盘 可考虑增加内存 更换更快的硬盘 优化读写数据的算法 若数值持续超过80 此时处理器及网络连接并没有饱和 则可能是内存泄漏 测试结果分析 分析实例 1 Action c 16 Error 27492 HttpSendRequest failed Windowserrorcode 12030 connectionaborted andretrylimit 0 exceededforURL http 80 66 40 125 detail 188703 html 分析原因 A 可能每次都新建连接 超出了db链接数 测试结果分析 2 Error Pagedownloadtimeout 120seconds hasexpired分析 可能是以下原因造成A 应用服务参数设置太大导致服务器的瓶颈B 页面中图片太多C 在程序处理表的时候检查字段太大多 Q A Thanks