• 1. 10/20/20181性能测试工具
  • 2. 10/20/20182Outline第一部分创建基于Web应用的自动化压力测试第二部分高级应用: 问题和解决方案脚本录制和回放常见问题及解决方案数据归属关系动态变量制定计划录制脚本定制事务参数化增加检查点设计测试场景
  • 3. 10/20/20183基于Web应用的压力测试概述
  • 4. 10/20/20184理解Web应用的压力测试中所面临的问题 明确一个LoadRunner专家的职责 学习利用LoadRunner进行压力测试 目标
  • 5. 10/20/20185Web应用失败的代价是巨大的 决不仅仅是手指点几下而已 增强应用部署的信心 通过压力测试可以保证应用在真实环境下的性能和功能 为什么要对Web应用 执行压力测试?
  • 6. 10/20/20186功能测试压力测试执行提交后检查业务处理程序是否正确功能性举例目标检查2000个并发的点击是否会导致系统崩溃?系统稳定性事务处理的响应时间是否符合需求规范?系统性能检查系统在大负载情况下业务处理流程是否正确大负载下系统的功能性举例目标Web应用的 功能测试和性能测试
  • 7. 10/20/20187测试人员压力产生被测系统是否有足够的测试资源? 测试人员 客户机如何调度和同步测试用户?如何搜集和分析测试结果?如何完成回归测试?分析?123.20所有人注意:点击按钮Web serverDatabase server调度员 手动测试存在的问题
  • 8. 10/20/20188被测系统Web serverDatabase server压力产生Vuser 主机解决测试资源的限制利用图表工具分析测试结果利用录制的脚本进行回归测试AnalysisController运行大量的“Virtual Users”在不同的机器上利用 “Virtual Users”代替实际测试人员通过“Controller”管理“ Vusers”LoadRunner 的解决方案
  • 9. 10/20/20189 LoadRunner 的解决方案支持多种协议和API
  • 10. 10/20/201810 LoadRunner 的解决方案能够对多种Server和资源进行监控 Web servers Web application servers Database servers System resources
  • 11. 10/20/201811 LoadRunner 的解决方案Virtual User Generator产生压力和搜集测试结果生成用于“Controller”部署的 “ Vusers”通过图表分析工具来编译和显示测试结果LoadRunner ControllerLoadRunner Analysis
  • 12. 10/20/201812系统性能调优LoadRunner 工作流程分析测试结果阶段 5LoadRunner V U G E NLoadRunner C O N T R O L L E R & A N A L Y S I S执行场景阶段 4设计测试场景阶段 3创建 Web Virtual Users阶段 2阶段 1制定压力测试方案NOTE: 这是LR的一个典型工作流程。为便于理解这个流程,有些步骤将按照 不同的顺序来介绍。
  • 13. 10/20/201813压力测试的人员分工人员/角色主要职责提供被测系统业务流程方面的建议 Database性能专家数据库性能调优LoadRunner 专家Web Server 性能专家项目经理业务专家web server性能调优管理Web站点的执行在被测系统上产生大用户量的负载
  • 14. 10/20/201814NOTE: “Action files” 将在下面讨论定义:通过回放一个或多个录制好的“Action files”(业务流程文件)来模拟一个真实用户的操作 Virtual User“Vusers”是利用 LoadRunner 执行压力测试的核心。关键词
  • 15. 10/20/201815定义:为了完成一项业务所需要执行的一系列业务操作 。通常我们把它称作 “transaction(事务)。”业务流程NOTE: 我们会频繁的提到这个关键词关键词
  • 16. 10/20/201816压力测试方案制定
  • 17. 10/20/201817目标 压力测试前需要搜集和准备哪些资料 这些资料可以从什么地方获取 这些资料的组织技巧 在制定测试方案时如何运用这些资料
  • 18. 10/20/201818 LoadRunner 工作流程 系统性能调优 分析测试结果 执行测试场景 设计测试场景 创建 Web 虚拟用户阶段 1制定压力测试方案阶段 2阶段 3阶段 4阶段 5制定压力测试方案 1.1 获得系统使用信息 1.2 准备业务流程文档 1.3 确定参数化内容 1.4 准备测试数据
  • 19. 10/20/2018191.1 获得系统使用信息目的: 确认需要模拟的业务流程的优先级 为实施压力测试提供必要的信息可以从下列文件中获得和显示系统使用信息: 任务分配图 事务统计文件 用户统计文件
  • 20. 10/20/201820系统使用信息的分析任务分配图 有哪些任务? 同一时间内有多少次操作? 事务统计文件 事务平均值、和峰值是多少? 数据库连接是多少? 如果任务失败会产生多少业务风险? 用户统计文件 每个真实用户会执行多少任务? 不同任务在每个真实用户中的分配比例?
  • 21. 10/20/201821 获得系统使用信息 网上书店 (一天, 几千用户)浏览购物管理流程*发票处理*系统备份业务流程搜索标题结帐创建新帐户NightDayNight11505050501802101501301001502001701401000120060040304075121222446688101012ampm需要模拟的时间*非Web任务例: 任务分配图
  • 22. 10/20/201822内部订单处理流程 (高峰日, 600 用户) 获得系统使用信息 *非Web任务夜晚白天夜晚111418021022018017040403022025021010121590907020251640601012503050121222446688101012ampm*系统备份生成订单更新订单登陆创建帐户订单发送*批量处理帐单*批量结算任务需要模拟的时间例:任务分配图
  • 23. 10/20/201823 获得系统使用信息哪些业务流程可以进行自动化测试?风险级别业务流程订单发送典型工作日 20/hr高峰工作日30/hrWeb server 连接状况ModerateModerateModerateHigh40/hr90/hrHeavyHighDatabase 连接状况3订单生成订单更新创建新帐户130/hr180/hrModerateModerateMod.10/hr15/hrModerateModerateLow333登陆70/hr33333210/hrHeavyLightHigh选择标准:高数据库I/O3大流量3高风险任务 (即可能导致整个业务流程的失败)3事务统计文件
  • 24. 10/20/201824决定哪些业务流程能够执行自动化测试 了解哪些业务是相互关联的 (数据关联) 确定每天的压力峰值的时间 峰值持续时间 每月、每季度或每年压力峰值的天数 决定需要模拟的业务流程和用户Virtual Users: ???信息的使用 获得系统使用信息
  • 25. 10/20/201825系统性能调优 分析测试结果 执行测试场景设计测试场景创建 Web 虚拟用户阶段 1制定压力测试方案阶段 2阶段 3阶段 4阶段 5制定压力测试方案 1.1 获得系统使用信息 1.2 准备业务流程文档 1.3 确定参数化内容 1.4 准备测试数据LoadRunner 工作流程
  • 26. 10/20/201826 LoadRunner 工作流程 系统性能调优 分析测试结果 执行测试场景设计测试场景创建 Web 虚拟用户阶段 1制定压力测试方案阶段2阶段3阶段4阶段5制定压力测试方案 1.1 获得系统使用信息 1.2 准备业务流程文档 1.3 确定参数化内容 1.4 准备测试数据
  • 27. 10/20/201827搜集和分析系统使用信息 任务分配图 事务统计文件 准备Web应用的业务逻辑文档 确定可以执行自动化测试的业务流程总结
  • 28. 10/20/201828创建虚拟用户: ACTION FILES
  • 29. 10/20/201829目标基于测试方案设计“Vuser” 创建“ action file”回放“Vuser”和检查运行结果
  • 30. 10/20/201830关键字定义:录制一个业务流程,通过回放模拟真实用户业务操作。 Action File
  • 31. 10/20/201831VuGen 获取HTTP协议 创建虚拟用户WEB服务器数据库服务器WEB浏览器公网/外网/内网HTTPHTTPVuGen
  • 32. 10/20/201832 LoadRunner 工作流程系统性能调优 分析测试结果 场景运行 场景设计 创建Web虚拟用户阶段1 制定测试方案阶段 2阶段 3阶段4阶段5创建 WEB 虚拟用户 2.1 录制用户操作脚本 2.2 增加 LoadRunner 事务 2.3 参数化数据 2.4 增加确认检查 2.5 确认正确执行
  • 33. 10/20/201833录制用户操作脚本启动VuGen工具点击“录制”按钮输入URL,选择“OK”
  • 34. 10/20/201834 录制用户操作脚本 --简单说明VuGen 中的脚本分为三部分:vuser_init、vuser_end 和Action 其中vuser_init 和vuser_end 都只能存在一个,不能再分割,而Action 还可以分成无数多个部分(通过点击New 按钮,新建ActionXXX) 在录制需要登陆的系统时,我们把登陆部分放到vuser_init 中,把登陆后的操作部分放到Action 中,把注销关闭登陆部分放到vuser_end 中如果需要在登陆操作设集合点,那么登陆操作也要放到Action 中,因为vuser_init 中不能添加集合点 在重复执行测试脚本时,vuser_init 和vuser_end 中的内容只会执行一次,重复 执行的只是Action 中的部分。
  • 35. 10/20/201835Optional item1 基于浏览器的应用程序推荐使用HTML-based Script 2 不是基于浏览器的应用程序推荐使用URL-based Script。 3 如果基于浏览器的应用程序中包含了JavaScript 并且该脚本向服务器产生了请求,比如分页按钮等,也要使用URL-based 方式录制 4 基于浏览器的应用程序中使用了HTTPS 安全协议,使用URL-based 方式录
  • 36. 10/20/201836
  • 37. 10/20/201837 录制用户操作脚本执行一个业务流程. . .
  • 38. 10/20/201838录制用户操作脚本执行一个业务流程. . .
  • 39. 10/20/201839录制用户操作脚本执行一个业务流程. . .
  • 40. 10/20/201840录制用户操作脚本. . . 选择“停止”按钮,结束业务流程录制
  • 41. 10/20/201841 Virtual User 回放模式登陆 (recording optional)vuser_init.cUser Actions (业务流程)Action1.c, Action2.c, etc. (e.g., Create Order, Sumit Order)这部分在压力测试过程中将会循环执行退出 (recording optional)vuser_end.c
  • 42. 10/20/201842关于用户操作文件每一步表式一个操作 用户的实际操作 一个 LoadRunner的 “事务*” 或者是 “确认检查点*”*NOTE: “事务”和“检查点”将在后续课程中讨论每一步都有一个图标表示每个图标代表 一个步骤
  • 43. 10/20/201843Think Times 模拟用户在实际操作时使用的时间录制过程中由 VuGen 插入 * 在controller中,默认状态是 “Play think times as recorded.”
  • 44. 10/20/201844LoadRunner 工作流程系统性能调优 分析测试压 结果 执行场景 设计场景 创建 Web 虚拟用户阶段 1 制定测试方案阶段 2阶段 3阶段 4阶段 5创建Web虚拟用户 2.1 录制用户业务操作 2.2 增加 LoadRunner 事务 2.3 参数化 2.4 增加确认检查点 2.5 确认脚本正确回放这一步在上述每个阶段完成后都要执行一次
  • 45. 10/20/201845 虚拟用户“ Run-time” 设置回放时显示页面提示结果保存目录普通设置回放时保存关联信息设置页面快照比较方式
  • 46. 10/20/201846 虚拟用户“ Run-time” 设置建立一个结果日志文件 将日志记录方式设置为标准“Run-Time”设置
  • 47. 10/20/201847回放 Action File点击工具栏上图标
  • 48. 10/20/201848 确认虚拟用户正确执行
  • 49. 10/20/201849Report Tree paneReport Details pane 确认虚拟用户正确执行 Results.qtpresult1login-test查看测试结果
  • 50. 10/20/201850 确认虚拟用户正确执行 检查回放时访问的 Web 页面是否正确
  • 51. 10/20/201851 确认虚拟用户正确执行切换到日志执行窗口日志顺序显示每一步的执行和结果 检查执行日志
  • 52. 10/20/201852总结用户所有的业务操作都记录在“Action Files”中 登陆和退出操作可以不包括在“Action Files” 多个“Action Files”可以由一个虚拟用户执行 通过菜单中的“ Options Settings” 和“Run-Time Settings ”来控制虚拟用户的操作。 可以在“执行日志”和“Result File ”中查看回放结果
  • 53. 10/20/201853创建虚拟用户: 事务
  • 54. 10/20/201854目标“action file”的哪些地方需要加入事务 如何执行 LoadRunner 事务在“action file”中使用事务的重要性LoadRunner 中的事务的含义
  • 55. 10/20/201855 LoadRunner 工作流程系统性能调优分析测试结果执行场景设计场景创建Web虚拟用户阶段 1制定测试方案阶段 2阶段 3阶段 4阶段 5创建Web虚拟用户 2.1 录制用户操作 2.2 增加 LoadRunner 事务 2.3 参数化 2.4 增加检查点 2.5 确认正确执行
  • 56. 10/20/201856定义:在一个action file中可以有一个或多个用户执行的度量单位。LoadRunner Transaction关键词
  • 57. 10/20/201857“Transactions” 是 LoadRunner 度量系统性能指标的唯一手段 用于度量高风险业务流程的性能指标 能够度量在一组操作中每一步的性能指标 实现了不同压力负载下的性能指标对比 帮助定位性能瓶颈 为什么在 LoadRunner 中加Transactions?
  • 58. 10/20/201858 Transactions 是度量什么的?Transaction 3 – 度量订单保 存操作的性能指标Transaction 2 – 度量登陆以后所有操作的性能指标Transaction 1 – 度量登陆的性能指标“LoadRunner transaction”用于度量一个或者多个业务流程的性能指标
  • 59. 10/20/201859建立 LoadRunner Transactions度量登陆Transaction 1Transaction 2度量所有登陆后的操作Transaction 3度量订单保存 – 一个基于数据库的操作,也是一个主要的“LoadRunner transaction”例子
  • 60. 10/20/201860增加 Transactions 点击工具栏上 Start Transaction 图标输入 Transaction名称, 点击OK录制过程中
  • 61. 10/20/201861 增加 Transactions 点击停止按钮完成需要被度量的业务流程录制过程中
  • 62. 10/20/201862 增加 Transactions LR_AUTO – 自动检查事务的状态LR_PASS / LR_FAIL – 通过增加代码手工检查事务状态选择事务状态
  • 63. 10/20/201863增加 Transactions 选择工具栏上的相应按钮增加事务的步骤和录制过程中是一致的录制完成后
  • 64. 10/20/201864 LoadRunner 工作流程系统性能调优分析测试结果执行场景设计场景创建Web虚拟用户阶段 1制定测试方案阶段 2阶段 3阶段 4阶段 5创建Web虚拟用户 2.1 录制用户操作 2.2 增加 LoadRunner transactions 2.3 参数化 2.4 增加检查点 2.5 确认正确执行
  • 65. 10/20/201865确认正确执行点击回放按钮
  • 66. 10/20/201866Automatic Transactions步骤12 sec1 sec9 sec12 sec1 sec21 sec19 sec4 sec交易完成过程总计1分19秒比较整个业务流程内的各个步骤的性能指标度量每一步的性能指标比较各个步骤之间的性能指标
  • 67. 10/20/201867总结使用LoadRunner事务可以度量: 业务流程中每一步所花费的时间 整个业务流程所花费的时间 业务流程中每一步的性能指标可以自动度量 可以在录制过程中和录制完成后增加LoadRunner事务 利用 “automatic LoadRunner transactions” 可以很方便的度量每一步的性能指标
  • 68. 10/20/201868创建虚拟用户: 参数化
  • 69. 10/20/201869目标参数化的好处 如何进行参数化 如何使用数据文件脚本回放中可能会遇到的问题
  • 70. 10/20/201870问题所有虚拟用户输入相同数据虚拟用户回放失败 由于没有模拟真实条件,测试结果失去意义所有虚拟用户输入相同的数据
  • 71. 10/20/201871虚拟用户输入相同的数据数据库里已有订单 1234 !Server02/14/99 是昨天!数据已经在缓存里!
  • 72. 10/20/201872解决方法参数化所有虚拟用户输入相同数据所有虚拟用户输入相同数据
  • 73. 10/20/201873关键词定义:将脚本中录制下来的特定值用一个变量来代替,该变量的值是可变的。例如登陆名和登陆密码等 参数化
  • 74. 10/20/201874参数化的目的脚本代码Place order for item #A54552(quantitywith credit card)421234993234564Place order for item #(quantitywith credit card参数化)PLACEHOLDERPLACEHOLDERPLACEHOLDER447475385798345400320230230239409485726280349421234993234564423847495782716412353648765410432165498765421A5455C3401Z1120A0544B0033C8488G999311142106952
  • 75. 10/20/201875 LoadRunner 工作流程系统性能调优 分析测试结果 运行场景 场景设计 创建Web虚拟用户阶段 1 制定测试方案阶段 2阶段 3阶段 4阶段 5制定测试方案 1.1 获得系统使用信息 1.2 准备业务流程文档 1.3 确定参数化字段 1.4 准备测试数据
  • 76. 10/20/201876确定参数化字段哪些字段需要一个当前时间? 哪些字段要求是一个唯一值? 哪些字段来自数据库? 哪些字段的值受其他字段的约束?
  • 77. 10/20/201877违反时间约束的例子数据库服务器Order date 02/02/2006Web浏览器(客户端)Order date 02/02/2006Order date 02/02/2006O.K.Order date 02/02/2006Expired DateWEB服务器12345789101161314151617121920212223182526272824February12345789101161314151617121920212223182526272824February
  • 78. 10/20/201878O.K.时间的参数化数据库服务器Order date 02/02/2006Web浏览器(客户端)Order date 02/15/2006Order date 02/02/2006O.K.Order date 02/15/2006WEB服务器12345789101161314151617121920212223182526272824February12345789101161314151617121920212223182526272824February
  • 79. 10/20/201879违反唯一性约束的例子数据库服务器Web浏览器(客户端)Book order #00115Book order #00115违反唯一性约束WEB服务器第一次运行这个订单号是先前 录制下来的
  • 80. 10/20/201880Book order #00975O.K. 对唯一性约束的字段参数化数据库服务器Book order #00975Web浏览器(客户端)Book order #00233O.K.Book order #00233WEB服务器第一次运行第二次运行
  • 81. 10/20/201881 使用相同的数据将不能给系统 施加预期的压力数据库服务器Find book title The Sun Also RisesWeb浏览器(客户端)Find book title The Sun Also RisesFind book title The Sun Also Rises5 matches foundWEB服务器5 matches foundServer not exercised缓存第一次运行第二次运行
  • 82. 10/20/201882通过参数化解决系统压力问题数据库服务器Find book title The Sun Also RisesWeb浏览器(客户端)Find book title The Great GatsbyFind book title The Sun Also Rises5 matches foundWEB服务器9 matches foundFind book title The Great Gatsby第二次运行第一次运行
  • 83. 10/20/201883 数据相互约束字段 – 未解决时数据库服务器Web浏览器(客户端)Find author Shakespeare45 matches foundDisplay match MacBethDisplay MacBethFind author ShakespeareFind author Dickens19 matches foundDisplay match MacBethDisplay MacBethFind author DickensWEB服务器OK MacBeth not found第一次运行第二次运行
  • 84. 10/20/201884相互约束字段的参数化数据库服务器Web浏览器(客户端)Find author Shakespeare45 matches foundDisplay match MacBethDisplay MacBethFind author ShakespeareFind author Dickens19 matches foundDisplay match Oliver TwistDisplay Oliver TwistFind author DickensWEB服务器OKOK 第二次运行第一次运行
  • 85. 10/20/201885参数化的决策对于每一个字段,都要问一下 . . .是否需要当前时间?是否能从缓存中获得? 参数化 参数化 参数化是否需要唯一性约束?是否受其他字段的约束? 参数化 不需要参数化NoYesNoNoNoYesYesYes
  • 86. 10/20/201886 LoadRunner 工作流程系统性能调优分析测试结果运行场景场景设计创建Web虚拟用户阶段 1制定测试方案阶段 2阶段 3阶段 4阶段 5制定测试方案 1.1 获得系统使用信息 1.2 准备业务流程文档 1.3 确定参数化字段 1.4 准备测试数据
  • 87. 10/20/20188710/26/1999 040498 Monday True Smith, Wm. $230.59准备测试数据获得主要数据 从数据库提取 创建合法的业务流程数据 确定数据类型 通过业务专家获得
  • 88. 10/20/201888数据库服务器从数据库提取数据47555333394844923564844440041012221Willamette169.0012/12/99C04410034548449
  • 89. 10/20/201889LoadRunner 工作流程系统性能调优 分析测试结果 场景运行 场景设计 创建Web虚拟用户阶段 1 制定测试方案阶段 2阶段 3阶段 4阶段 5创建Web虚拟用户 2.1 录制用户操作 2.2 增加 LoadRunner事务 2.3 参数化 2.4 增加检查点 2.5 确认正确执行
  • 90. 10/20/201890关键字定义:脚本中录制下来的动态数据被一个变量替代。参数
  • 91. 10/20/201891参数化数据2. 右键单击该步骤1. 定位需要参数化的数据 (在测试方案阶段应该已经完成)3. 选择 “Properties”打开需要参数化的数据的属性对话框
  • 92. 10/20/201892参数化数据1. 单击需要参数化的数据2. 输入一个参数名称 (或者从下拉框中选择)3. 确认参数类型为 "File" 创建一个参数
  • 93. 10/20/201893参数化数据 1. 单击“ Properties”按钮2. 单击“ Create”按钮并确认数据文件已经被创建打开参数化对话框
  • 94. 10/20/201894参数化数据选择“Edit”按钮,文件会被写字板打开 参数文件名 参数数据文件.datParameter.dat 文件回保存在VUser的目录下打开数据文件
  • 95. 10/20/201895VUSER DESIGN SPECIFICATIONFieldDatamtoyssearch_buttonqueryradish beet carrot rhubarb onion参数化数据在写字板窗口输入新数据每输入一行数据后都要按回车键DATA 参数名 保存数据并关闭写字板添加数据到文件
  • 96. 10/20/201896参数化数据 表中的数据就是文件中的数据可以显示同一个数据文件中的多列数据文件中的数据将显示在参数化属性对话框
  • 97. 10/20/201897选择数据读取方式顺序 随机 唯一 同其他行一样
  • 98. 10/20/201898选择数据更新方式每次循环时更新 每次发生时 更新 只更新一次
  • 99. 10/20/2018991 2 3 4VuserIterationVuser 1 Vuser 2 Vuser 3 Vuser 4数据替换方式详解 ------SequentialaaaabbbbccccddddabcdabcdabcdabcdEach Iteration Each Occurrence param1Once aaabbbbaeeeeffffhghghghgccccdddd
  • 100. 10/20/20181001 2 3 4VuserIterationVuser 1 Vuser 2 Vuser 3 Vuser 4数据替换方式详解 ------UniqueaeimbfjncgkodhlpabcdabcdabcdabcdEach Iteration Each Occurrence param1Once aqyzrjbiemu3fnv4hgpoxw65cks1dlt2
  • 101. 10/20/20181011 2 3 4VuserIterationVuser 1 Vuser 2 Vuser 3 Vuser 4数据替换方式详解 ------Randomaeim1f2zcgkodhlpamq1amq1amq1amq1Each Iteration Each Occurrence param1Once aq4zrj5iemu3fnvc1gpbxgqvcks1h7t2
  • 102. 10/20/2018102LoadRunner 工作流程系统性能调优 分析测试结 果 运行场景 设计场景 创建Web虚拟用户阶段 1 制定测试方案阶段 2阶段 3阶段 4阶段 5创建Web虚拟用户 2.1 录制用户操作 2.2 增加LoadRunner 事务 2.3 参数化 2.4 增加检查点 2.5 确认正确执行
  • 103. 10/20/2018103 确认正确执行对于顺序替换方式, 循环数应该和数据行数相同 Run-Time Settings - Iterations
  • 104. 10/20/2018104确认正确执行 Run-Time Settings - Log选择扩展日志,选中 Parameter substitution
  • 105. 10/20/2018105确认正确执行Execution Log参数化数据的替换过程将会在执行日志中显示
  • 106. 10/20/2018106总结参数化的目的: 解决数据唯一性约束 解决当前时间约束 给服务器施加预期的压力 处理数据的相互约束 准备输入数据: 来自数据库 来自业务专家 通过“Run-Time Settings”控制虚拟用户的执行 日志 循环数
  • 107. 10/20/2018107场景:建立,运行和分析测试结果
  • 108. 10/20/2018108完整压力测试的组成部分目标如何创建和运行一个 LoadRunner场景 LoadRunner场景的执行过程 如何分析测试结果
  • 109. 10/20/2018109关键字一个完整的压力测试由下面五个部分组成: LoadRunner Scenarioscriptsrun-time settingshost machinesresults locationvirtual usersDEFINITION
  • 110. 10/20/2018110Host 1Host 2 Scenario 结构示意图LoadRunner ControllerServer(s)VusersVusersScriptsScripts
  • 111. 10/20/2018111LoadRunner 工作流程系统性能调优 分析测试结果 运行场景 设计场景创建Web虚拟用户阶段 1 制定测试方案阶段 2阶段 3阶段 4阶段 5场景设计 3.1 定义测试主机 3.2 连接测试主机 3.3 定义虚拟用户脚本 3.4 添加虚拟用户
  • 112. 10/20/2018112 LoadRunner Controller场景执行前 场景设计 设置“ run-time configuration” 场景执行期间 运行大量并发用户 控制每个虚拟用户 (初始化, 运行, 暂停, 停止) 显示每个虚拟用户的状态 显示每个虚拟用户发出信息 监控服务器资源 场景执行完毕 搜集性能数据 运行结果分析工具 协助系统性能调优
  • 113. 10/20/2018113Controller 负责控制 Vusers Remote Command LauncherControllerLoadHost machineInitializeVusersRunStopAgent
  • 114. 10/20/2018114 添加虚拟用户 Vusers Tab of the Controller Initialize/ run VuserVuser statusScript NamesHost Machines
  • 115. 10/20/2018115Controller TabsDesign tab 场景设计区,主要包括: 调度编辑 虚拟用户生成机 虚拟用户控制 运行时设置
  • 116. 10/20/2018116Controller TabsRun tab 场景执行区,主要包括: 虚拟用户控制 监控资源设置 实时监控显示
  • 117. 10/20/2018117LoadRunner 工作流程系统性能调优 分析测试结果 执行场景 设计场景 创建Web虚拟用户阶段 1 制定测试方案阶段 2阶段 3阶段 4阶段 5运行场景和分析测试结果 4.1 确认场景中的虚拟用户均能正常运行 4.2 分离 Top Time transactions 4.3 满载压力测试 4.4 确定系统硬件和软件的极限承受能力 5.0 分析测试结果
  • 118. 10/20/2018118场景执行过程4.1 确认场景包括的虚拟用户正确执行A. 正式的压力测试执行前必须执行这一步 B. 参数化的数据必须满足并发要求 3-5场景目标具体含义并发用户数
  • 119. 10/20/2018119运行一个场景1 – 确认所有测试机上的Agent已经启动 2 – 确定保存测试结果的目录 3 – 初始化Vusers 4 – 运行Vusers
  • 120. 10/20/2018120确认场景中的虚拟用户 均能正常运行总事务数 passed / failed概要分析
  • 121. 10/20/2018121场景执行过程4.2 分离“Top Time transactions”这些“transactions”往往和系统的性能瓶颈点有关系。 20%场景目标并发用户数具体含义4.1确认场景包括的虚拟用户正确执行 3-5A. 正式的压力测试执行前必须执行这一步 B. 参数化的数据必须满足并发要求
  • 122. 10/20/2018122关键字整个业务流程中响应时间最长的事务,这个事务往往是造成整个系统瓶颈的原因。Top Time Transaction
  • 123. 10/20/2018123Top Time transactions Run-time SettingsContentCheckLog点击 Enable verification checks选择 Standard logRun-Time Settings tabRecommended点击 Define each action as a transaction 点击 Define each step as a transactionMiscellaneousAutomatic Transactions 只在 LoadRunner Controller的图表和报告中体现,VuGen的 Execution Log不体现.
  • 124. 10/20/2018124 Top Time transactions 增加新的图表
  • 125. 10/20/2018125 Top Time transactions Transaction Response Time - Percentile “Action1_Transaction ”度量的是整个的业务流程,因此“Top Time Transactions”是“create_reservation”。 Action1_ Transactioncreate_ reservation
  • 126. 10/20/2018126场景执行过程4.3满负载执行场景确认系统在设计压力下功能的正确性 100%4.2分离“Top Time transactions” 这些“transactions”往往和系统的性能瓶颈点有关系。 20%场景目标并发用户数具体含义4.1确认场景包括的虚拟用户均能正确执行 3-5A. 正式的压力测试执行前必须执行这一步 B. 参数化的数据必须满足并发要求
  • 127. 10/20/2018127满载压力测试 设置监控选项选择发送错误消息到输出窗口 (否则弹出对话框将会中断运行)
  • 128. 10/20/2018128 满载压力测试 设置监控工具CacheCopy Read Hits % Data Map Hits %MemoryPage Faults/secServer work queuesBytes Transferred/sec Total Bytes/secCOUNTEROBJECTSystem% Total Processor Time File Data Operations/secHow often is data read from cache?How many data requests can't be fulfilled by virtual memory?How busy is server sending data to clients?How often is server busy (not waiting) ?How often does server Read or Write?
  • 129. 10/20/2018129NetworkBrowser Emulation check Emulate modem speed, and enter expected speedcheck Simulate browser cache check Download non-HTML resources RUN-TIME SETTING TABRECOMMENDED 满载压力测试 Runtime SettingsLogselect Disable loggingcheck Define each action as a transaction check Define each step as a transactionMiscellaneous写日志也会占用系统资源,因此会导致测试结果不够准确。更加逼真的模拟实际工作环境尽管内容检查非常有用,但是在压力测试中并不是必须的。ContentCheckuncheck Enable verification checks
  • 130. 10/20/2018130满载压力测试 Web Server 资源图表 流量点击分析总结报告中的链接,打开相应的图表。
  • 131. 10/20/2018131 满载压力测试 Web Server 资源图表 每秒点击率
  • 132. 10/20/2018132 满载压力测试 Transactions Graph每秒事务数
  • 133. 10/20/2018133 满载压力测试 Transactions GraphTransaction key事务响应时间
  • 134. 10/20/2018134场景执行过程4.4 确定系统硬件和软件的极限承受能力了解系统在超负荷的情况是否稳定 100% +4.3满负载执行场景 确认系统在设计压力下功能的正确性 100% 4.2分离“Top Time transactions” 这些“transactions”往往和系统的性能瓶颈点有关系。 20%场景目标具体含义并发用户数4.1确认场景包括的虚拟用户均能正确执行 3-5A. 正式的压力测试执行前必须执行这一步 B. 参数化的数据必须满足并发要求
  • 135. 10/20/2018135 确定系统硬件和软件的 极限承受能力过载压力测试 检测系统在超过设计压力的情况下是否稳定 典型的过载测试是设计压力的120% 检测系统能够承受的最大压力 执行过载测试时应使用和满载测试相同的“ run-time settings” 和“analysis tools”
  • 136. 10/20/2018136 Cross Result Graphs30 Vusers25 VusersFindFlight transaction100% load vs. 120% load
  • 137. 10/20/2018137总结The LoadRunner Controller 主要完成以下功能: 设计场景 运行虚拟用户 搜集性能指标 Scenarios(场景) 包括 测试机、 脚本,、虚拟用户和 性能监视器。 基于“LoadRunner Scenario” 执行完整的压力测试 初始化虚拟用户 测试结果分析
  • 138. 10/20/2018138系统性能调优 分析测试结果 运行场景阶段 44.1 确认并发情况下Vuser正确运行 4.2 分离top time transactions 4.3 满载压力测试 4.4 Isolate hardware and software limitations 设计场景阶段 33.1 配置测试主机 3.2 连接测试主机 3.3 配置脚本 3.4 添加虚拟用户 创建Web虚拟用户阶段 22.1 录制用户操作 2.2 添加LoadRunner transactions 2.3 参数化 2.4 添加检查点 2.5 确认正确执行LoadRunner 工作流程摘要阶段 5阶段 1制定测试方案1.1 获得系统使用信息 1.2 准备业务流程文档 1.3 确定参数化内容 1.4 准备测试数据