• 1. LoadRunner性能测试黄文高 E-mail:huangwengao@sina.com
  • 2. 第一章 性能测试基础知识该章节主要包括以下部分内容: 什么是软件性能 性能测试相关术语 性能测试划分 性能测试应用领域
  • 3. 第一章 性能测试基础知识什么是软件性能? 软件性能应该是一种指标,通过这个指标可以 衡量,系统或构件性能达到的程度。也是对软 件性能需求的一个测试和评估,用来验收或评 估软件达到的性能程度。
  • 4. 第一章 性能测试基础知识性能测试相关术语 响应时间 是用户提交一个请求,系统从开始呈现到将所 有信息都呈现到客户端所需要的时间
  • 5. 第一章 性能测试基础知识性能测试相关术语 并发用户数 指同一时刻与服务器进行数据交互的所有用户 数量 吞吐量 吞吐量是指单位时间内系统处理客户请求的数 量,其直接体现系统的承载的能力。
  • 6. 第一章 性能测试基础知识性能测试相关术语 吞吐量作为性能测试时主要关注的一个指标, 与虚拟用户数之间存在一定的关系,当系统没 有遇到性的瓶颈时,可以采用下面这个公式来 计算。
  • 7. 第一章 性能测试基础知识性能测试相关术语 吞吐率 指单位时间内的数据传输量,即吞吐量/传输时 间,也可以是单位时间内处理的客户请求数。 它是衡量网络性能一个重要指标。通常情况下 吞吐量越大,吞吐率的值也越大。吞吐率越大 表示系统的负载能力越强
  • 8. 第一章 性能测试基础知识性能测试相关术语 TPS 表示每秒系统处理的事务数,它是衡量系统处 理能力的重要指标,在LoadRunner中一定要分 析的一个指标 点击率 指每秒钟用户向Web服务器提交的HTTP的数量
  • 9. 第一章 性能测试基础知识性能测试相关术语 资源利用率 指的是系统资源被占用的情况,主要包括CPU利 用率、内存利用率、磁盘利用率、网络等 性能计数器 是描述服务器或操作系统性能的一些数据指 标。主要是通过添加计数器来观察系统资源的 使用情况
  • 10. 第一章 性能测试基础知识性能测试相关术语 思考时间(Think Time) 指的是系统资源被占用的情况,主要包括CPU利 用率、内存利用率、磁盘利用率、网络等 性能计数器 也称为“休眠时间”,从业务层面来说,这个 时间是指用户在进行操作时,每个请求之间的 时间间隔
  • 11. 第一章 性能测试基础知识性能测试划分 负载测试 压力测试 配置测试 并发测试 可靠性测试
  • 12. 第一章 性能测试基础知识性能测试划分 负载测试 是通过对被测试系统不断的加压,直到超过预 定的指标或者是部分资源已经达到了一种饱和 状态不能再加压为止 压力测试 指当系统已经达到一定的饱和程度(如CPU、磁 盘等已经处于一种饱和状态),系统处理业务 的能力,系统是否会出现崩溃等
  • 13. 第一章 性能测试基础知识性能测试划分 配置测试 配置测试 (Configuration Testing)是通过调 整系统软/硬件环境,了解在不同环境下系统性 能指标的情况,从而找到系统的最优配置。压 力测试
  • 14. 第一章 性能测试基础知识性能测试划分 并发测试 并发测试(Concurrency Testing)是通过模拟 用户并发访问,测试多用户同时访问同一应 用、模块或数据,观察系统是否存在死锁、系 统处理速度明显下降等其它的一些性能问题
  • 15. 第一章 性能测试基础知识性能测试划分 可靠性测试 是当系统在一定的业务压力下,让系统持续运 行一段时间,看系统是否达到我们要求的稳定 性,这里强调在一定业务压力下持续运行的能 力,一定都会有一个明确的要求,例如:持续 运行多少天系统不能出现问题
  • 16. 第一章 性能测试基础知识性能测试应用领域 能力验证 规划能力 性能调优 缺陷发现
  • 17. 第一章 性能测试基础知识性能测试应用领域 能力验证 能力验证是性能测试最常用的一个领域。一般能力验证 采用这样的描述方式:“某系统能否在条件A下具备B性 能” 规划能力 规划能力与能力验证有相似之处,但还是有不一样的地 方,能力验证强调的是在某个条件下具备什么样的能 力,而规划能力体现在系统如何才能达到要求的性能指 标
  • 18. 第一章 性能测试基础知识性能测试应用领域 能力验证 性能调优是通过测试来调整系统的环境,最终 使系统性能达到最优的状态。这是一个持续调 优的过程,主要调优的对象有数据参数、应用 服务器、系统的硬件资源等
  • 19. 第一章 性能测试基础知识性能测试应用领域 发现缺陷 性能测试应用领域的主要目标是通过性能测试 的手段来发现系统存在的缺陷
  • 20. 第二章 性能测试基础知识该章节主要包括以下部分内容: LoadRunner工作原理 LoadRunner工作过程 LoadRunner内部结构 LoadRunner测试步骤
  • 21. 第二章 性能测试基础知识LoadRunner工作原理
  • 22. 第二章 性能测试基础知识LoadRunner工作过程
  • 23. 第二章 性能测试基础知识LoadRunner内部结构
  • 24. 第二章 性能测试基础知识LoadRunner测试步骤
  • 25. 第三章 Vuser发生器该章节主要包括以下部分内容: 脚本录制 Recording Options设置 Run-Time Setting设置 脚本完善
  • 26. 第三章 Vuser发生器脚本录制 如何选择协议 开始录制脚本
  • 27. 第三章 Vuser发生器脚本开发过程
  • 28. 第三章 Vuser发生器如何选择协议 各种协议和相关头文件的对应关系
  • 29. 第三章 Vuser发生器选择协议的常用方法主要有以下几种: 询问开发工程师数据通讯采用何种协议 当没有开发工程师支持时,可以通过概要或详细设计手册获知所使用的协议; 使用协议分析工具捕获包进行分析,然后确定被测对象所使用的协议。 根据以往测试经验来判断被测试对象采用的协议,这种方法具有猜测性,有时候不一定具备;
  • 30. 第三章 Vuser发生器协议分类表 应用类型建议选用协议Web网站(J2EE、.NET)Web(HTTP/HTML)FTP服务器File Transfer Protocol(FTP)邮件服务器Internet Messaging Application Protocol(IMAP)Post Office Protocol(POP3)Simple Mail Trans Protocol(SMTP)C/S客户端以ADO、OLEDB方式连接后台数据库MS SQL ServerOrical、Sybase、DB2、Informix以ODBC方式连接后台数据库ODBC没有后台数据库Socket分布式组件COM/DCOM、EJB无线应用WAP、PALM
  • 31. 第三章 Vuser发生器LoadRunner提供三种选择协议的方式 单协议脚本 多协议脚本 最近新建脚本类型使用过的协议
  • 32. 第三章 Vuser发生器开始录制脚本 Web(HTTP/HTML)协议为例
  • 33. 第三章 Vuser发生器Recording Options设置 Recording标签页 Advanced标签页 Correlation标签页
  • 34. 第三章 Vuser发生器Recording标签页
  • 35. 第三章 Vuser发生器HTML-base script方式:是对每个页面录制形成一条语 句,在该模式下,访问一个页面,首先会与服务器之间 建立一个连接获取页面的内容,然后从页面中分解得到 其他的元素(component),然后建立几个连接分别获 取相应的元素。 URL-base script方式:是将每条客户端发出的请求录 制成一条语句,对在该模式下,一条语句只建立一个到 服务器的连接,并将通讯过程中的很多隐藏的信息都录 制出来(如session、cookie)。LoadRunner提供了 web_concurrent_start和web_concurrent_end函数模拟 URL-base script的工作方式。
  • 36. 第三章 Vuser发生器分别使用这两种模式录制一个登录过程的脚本 HTML方式录制
  • 37. 第三章 Vuser发生器URL方式录制
  • 38. 第三章 Vuser发生器Advanced标签页 其中“Save snapshot resources locally”表 示运行结果中保存一个快照。“Add comments to script for HTTP errors while recording”表示出现错误时会自动添加注释。
  • 39. 第三章 Vuser发生器Advanced标签页
  • 40. 第三章 Vuser发生器Correlation标签页 Correlation标签页用来对脚本中的关联属性进 行设置。选中需要的关联规则,这样在时行录 制脚本时会自动的进行关联。当然这里也可以 点击“New Application”按钮来新建一个关 联,再点“New Rule”按钮为该关联新建一个 规则
  • 41. 第三章 Vuser发生器Correlation标签页
  • 42. 第三章 Vuser发生器Run-Time Setting设置 Run Logic标签页 Pacing标签页 Think Time标签页 Miscellaneous标签页
  • 43. 第三章 Vuser发生器Run Logic标签页 设置运行脚本的迭代的次数,可以更改 “Number of iterations”的值来设置迭代的 次数
  • 44. 第三章 Vuser发生器Pacing标签页 Pacing选项主要是用来设置脚本迭代过程中, 两次重复执行的时间间隔。 As soon as the previous iteration ends:在多次迭代时,一次执行完后马上执行下一次。 After the previous iteration ends:这里有两个选择Fixed和Random。选择Fixed表示上一次执行结束后,等待固定的一段时间后,再执行下一次;选择Random表示上次一执行结束后,等待一段随机的时间长度后,再执行下一次,这个随机时的取范围为设置的范围。 At fixed/Random intervals:这个表示不管上一次执行完与否,到达到规定的时间就开始执行下一次,这里也有两个选择Fixed和Random。Fixed表示固定的一个时间值;Random表示取一个随机值,随机值的范围是自己设置的。
  • 45. 第三章 Vuser发生器Pacing标签页
  • 46. 第三章 Vuser发生器Think Time标签页 Think Time选项用来设置用户操作的思考时 间 。 AsIgnore think time:运行脚本的时候忽略思考停顿时间。 Replay think time:设置思考时间的延迟。 As recorded:根据录制时的思考时间来运行 Multiply recorded think time by:根据录制时思考时间的整数倍来运行。 Use random percentage of recorded think time:设置一个最大值和最小值,从中选出一个随机值。一般在实际使用过程中选择这种模式。 Limit think time to :设置一个最大的think time 的值,如果录制值超过最大值,就以最大值为准。
  • 47. 第三章 Vuser发生器Think Time标签页
  • 48. 第三章 Vuser发生器Miscellaneous标签页 Error Handing选项表示运行时出现错误时的处理,一般不需要改动。 Multithreading选项表示运行时把虚拟用户当作进程还是线程来处理。Run Vusers as a process表示把虚拟用户当作进程来处理。Run Vusers as a thread把虚拟用户当作线程来处理。在这里一般选择把虚拟用户当作进程来处理,这样才更真实的模拟了用户的操作。 Automatic Transactions选项用来设置事务模式。Define each action as a transaction:将一个action看作一个事务。Define each step as a transaction:将每一个操作步骤看作一个事务。
  • 49. 第三章 Vuser发生器Miscellaneous标签页
  • 50. 第三章 Vuser发生器脚本完善 插入事务 插入集合点 插入注释
  • 51. 第三章 Vuser发生器插入事务 插入事务的两种方法:脚本录制中插入和录制后 插入事务的几种状态LR_AUTO、 LR_PASS、LR_FAIL、 LR_STOP LR_AUTO:事物的状态被自动设置,如果事务执行成功,状态设置为PASS,如果执行失败,状态设置FAIL,如果由于异常中断,状态被设置成STOP。 LR_PASS:事务如果执行成功,代码返回的状态是PASS。 LR_FAIL:事务如果执行失败,代码返回的状态是FAIL。 LR_STOP:事务如果由于异常中断,代码返回的状态是STOP。
  • 52. 第三章 Vuser发生器插入集合点 插入集合点的两种方法:脚本录制中插入和录制 后
  • 53. 第三章 Vuser发生器插入注释 插入注释的两种方法:脚本录制中插入和录制 后
  • 54. 第四章 Controller控制器该章节主要包括以下部分内容: 场景类型介绍 场景设计 场景执行 场景监视
  • 55. 第四章 Controller控制器场景类型介绍 手动测试场景 面向目标测试场景
  • 56. 第四章 Controller控制器手动测试场景 启动Controller控制器后,会弹出新建场景对 话框,选择手动测试场景
  • 57. 第四章 Controller控制器面向目标测试场景 面向目标场景是一个闭环回馈关系,在这种场 景模式下,首先定义要达到的目标,然后 LoadRunner会自动基于这些目标创建场景,运 行过程中,会不断的将结果与目标相比较,以 决定下一步怎么走
  • 58. 第四章 Controller控制器面向目标测试场景
  • 59. 第四章 Controller控制器场景类型介绍 手动场景配置Schedule 面向目标场景配置Schedule 配置View Script 配置Load Generator
  • 60. 第四章 Controller控制器手动场景配置Schedule 场景名称,可以添加一个场景、对场景进行重 命名、删除某个场景,这里命名时场景名最好 要具有意义,能表示场景动作。
  • 61. 第四章 Controller控制器手动场景配置Schedule 按场景计划,包括Ramp Up、Duration和Ramp Down三个选项卡 Ramp Up选项卡:设置场景虚拟用户初始加载方 式 第一:刚开始就加载所有虚拟用户。 第二:每隔一段时间加载一定的虚拟用户,最 常用的是这种方式,这种方式最接近用户的真 实使用情况。
  • 62. 第四章 Controller控制器Ramp Up选项卡
  • 63. 第四章 Controller控制器Duration选项卡:设置设置场景持续运行的情况 第一:按照设置运行,即每个虚拟用户按照所 指定的迭代次数运行,直到运行结束。 第二:按时间运行:即所有虚拟用户一直在迭 代重复运行脚本,直到指定的时间结束,脚本 迭代次数被忽略,不起作用。 第三:一直运行,不停止,直到人为停止场景 的运行才结束。
  • 64. 第四章 Controller控制器Duration选项卡
  • 65. 第四章 Controller控制器Ramp Down选项卡 第一:持续运行结束后,同时停止所有的虚拟 用户。 第二:每隔一段时间就停止一定量的虚拟用 户,这项和Ramp Up中的第二项一样,只是这里是结束,那里设置的是开始。
  • 66. 第四章 Controller控制器按用户组计划 按用户组计划多了“Start Time”选项,在按 用户组计划中,以组为单位进行计划,每个组 都要设置自已的Start Time、Ramp Up、 Duration和Ramp Down 这里主要来看一下Start Time选项卡
  • 67. 第四章 Controller控制器Start Time选项卡 第一:场景运行时开始。 第二:场景开始运行后一段时间才开始。 第三:在某个特定的用户组运行结束后才开始,通俗的 讲就是在某个脚本运行结束后才开始运行。
  • 68. 第四章 Controller控制器百分比模式 百分比模式是设定虚拟用户总数,然后以百分 比的形式把虚拟用户分配到各脚本中。这种场 景非常适合业务模型明确的性能测试
  • 69. 第四章 Controller控制器初始化虚拟用户 初始化虚拟用户表示必须所有的虚拟用户都准 备好之后,场景才能执行
  • 70. 第四章 Controller控制器面向目标场景配置Schedule 在面向目标场景中,先定义测试达到的目标, 然后LoadRuner自动根据这些目标创建场景
  • 71. 第四章 Controller控制器Scenario Settings选项卡 第一:在“Run Time”中设置一个时间,当然目标达到 后,该场景还会持续运行设置时间后结束。 第二:“If target cannot be reached”设置如果目 标达不到,Controller将如何处理场景。这里有两种选 择,可以选择停止场景运行并保存结果(Stop Scenario and save results),或继续运行场景直到 达到目标(Continue scenario without reaching goal)
  • 72. 第四章 Controller控制器Scenario Settings选项卡
  • 73. 第四章 Controller控制器Load Behavior选项卡 第一:让Controller自动加载用户。 第二:设定一个时间后达到目标。 第三:设置每隔一段时间增加一定的目标量。
  • 74. 第四章 Controller控制器目标类型(Goal Type) 第一:Virtual Users目标类型 这种目标类型主要是用来测试服务器对并发用 户的处理能力,这种目标类型与手动设置
  • 75. 第四章 Controller控制器第二:Hit per Second目标类型 设置的目标是点击数/秒。同时要设置最小虚拟 用户数和最大虚拟用户数,当场景执行时, Controller会使用最小的虚拟用户来达到定义 的目标。如果最小的用户,达不到目标,那个 Controller将会增加虚拟用户数,直到定义的 最大的虚拟用户数
  • 76. 第四章 Controller控制器第三:Transactions per Second目标类型 设置的目标为每秒处理的事务数,但这里要注 意的是,在脚本中一定要定义事务,否则事务 名的地方为空白
  • 77. 第四章 Controller控制器第四:Transactions Response Time目标类型 这类目标是设置事务的响应时间,在多用户并 发时,事务的响应时间,同时要设置好最大和 最小虚拟用户数
  • 78. 第四章 Controller控制器第五:Pages per Minute目标类型 设置目标为每分钟处理的页面数
  • 79. 第四章 Controller控制器配置View Script 在场景设计界面,脚本加载后,如需对加载的 脚本修改,选中需要配置的脚本,单击右侧的 “View Script”按钮。注意,对脚本修改后, 一定要重新加载脚本,确保修改一定有效。
  • 80. 第四章 Controller控制器配置Load Generator Load Generator又叫负载发生器,当控制器发 出执行命令时,Load Generator负责和其它的 负载机建立起联系并强制负载机执行,单击 “Connect”按钮,测试负载与控制机是否连接 好
  • 81. 第四章 Controller控制器场景执行 场景控制 场景执行期间查看场景
  • 82. 第四章 Controller控制器场景控制
  • 83. 第四章 Controller控制器场景控制 (开始场景):单击该按钮,场景即开 始运行 (停止场景):场景运行停止,在场景 未开始运行时,该按钮为灰,不可用,只有当 场景已经开始运行后,该按钮才是可用状态。
  • 84. 第四章 Controller控制器场景控制 (重置/复位):将方案中所有的Vuser 组重置为方案运行前的“关闭”(Down)状 态,准备下一次场景的执行 (虚拟用户组):单击该按钮,能打开 Vuser对话框,可以查看Vuser组中每个Vuser的 详细状态,如图4-29所示。显示出该组中每个 Vuser的ID、运行状态、脚本、负载生成器和所 用时间
  • 85. 第四章 Controller控制器场景控制 场景结束运行的三种模式 单击“Tools”->“Options”选项,弹出 “Options”对话框,选中Run-time Settings 选项卡
  • 86. 第四章 Controller控制器场景控制
  • 87. 第四章 Controller控制器场景控制 第一:等当前迭代运行结束后,再停止运行场 景(Wait for the current iteration to end before stopping); 第二:等当前的Action运行结束后,再停止运 行场景(Wait for the current action to end before stopping); 第三:不等待,立即停止运行场景(Stop immediately);
  • 88. 第四章 Controller控制器在虚拟用户组点击双键,可以对虚拟用户组进行 相关的操作
  • 89. 第四章 Controller控制器选择“Pause”,可以暂停该Vuser,但是暂停Vuser将影响其事务响应时间 选择“Reset”,可以重置该Vuser,使其重新回到“关闭”的状态 选择“Initialize Vuser/s”,可以初始化该Vuser 选择“Renumber”,可以对该Vuser编号重新定义 选择“Filter Vusers”,可以筛选列出来的Vuser,可以使用不同的筛选条件进行筛选,也可以Vuser对话框中的筛选器中选择要使用的筛选条件
  • 90. 第四章 Controller控制器选择“Sort Vusers”,再选择不同的排序方式对Vuser进行排序 选择“Show Vusers”,可以查看正在执行所分配脚本的Vuser。此时会弹出运行时查看器,并显示返回到Vuser的页面快照,可以查看正在执行脚本的Vuser。运行时查看器的功能与浏览器的功能不一样,它显示的图像是快照,而不是回放的所有特征 选择“Show Vusers Log”,会显示出该Vusers脚本日志
  • 91. 第四章 Controller控制器场景执行期间查看场景 Vuser运行状态
  • 92. 第四章 Controller控制器Vuser运行状态 状态含义关闭(Down)Vuser处于关闭状态挂起(Pending) Vuser初始化已就绪,正在等待可用的负载生成器,或者正在向负载生成器传输文件初始化(Init)Vuser正在进行初始化就绪(Ready)Vuser已经执行了脚本的初始化部分,可以开始运行正在运行(Run)Vuser正在运行。正在负载生成器上执行 Vuser 脚本集合点(Rendezvous)Vuser已经到达了集合点,正在等待释放完成并通过(Passed) Vuser已结束运行。脚本执行通过完成但失败(Failed)Vuser已结束运行。脚本执行失败错误(Error)Vuser发生了错误。要了解错误的完整说明,请查看“输出”窗口或“Vuser”对话框中的“状态”字段逐步退出(Gradula Exiting)Vuser正在运行退出前的最后一次迭代退出(Exiting)Vuser运行结束,正在退出停止(Stopped)设置“停止”命令后, Vuser 即停止
  • 93. 第四章 Controller控制器事务详细信息
  • 94. 第四章 Controller控制器事务详细信息 状态概要含义场景状态(Scenario Status)场景处于“正在运行”状态,还是处于“关闭”状态正在运行的Vuser(Running Vusers)负载生成器计算机上正在执行的 Vuser数已用时间(Elapsed Time)指自场景开始运行到现在所用的时间每秒点击次数(Hits/Second)指每个 Vuser 运行期间,每秒对所测试网站的点击次数(HTTP请求数)通过的事务数场景运行到现在成功通过的事务数失败的事务数场景运行到现在失败的事务数错误数场景运行到现在发生错误的Vuser数
  • 95. 第四章 Controller控制器查看“输出”窗口
  • 96. 第四章 Controller控制器场景监视 关于联机监控 监控器与度量 联机监视器
  • 97. 第四章 Controller控制器关于联机监控
  • 98. 第四章 Controller控制器LoadRunner提供的监视器 “运行时”监视器:显示参与场景的Vuser数和状态,以及Vuser生成的错误数和类型 “事务”监视器:显示场景运行时,各事务速率和响应时间 “Web资源”监控器:监视场景运行时期间Web服务器上的信息,主要包括Web连接数、吞吐量、HTTP响应数、服务器重试次数和下载到服务器的页面数信息 “系统资源”监控器:主要是监控场景运行期间Windows、UNIX、Tuxedo、SNMP、Antara FlameThrower和SiteScope资源使用情况 “网络延迟”监控器:显示关于系统网络延迟的信息
  • 99. 第四章 Controller控制器LoadRunner提供的监视器 “防火墙”监控器:用来度量场景执行期间防火墙服务器信息统计的情况 “Web服务器资源”监控器:用来度量场景运行期间Apache、Microsoft IIS、iPlanet (SNMP) 和iPlanet/Netscape Web 服务器的统计信息 “Web应用程序服务器资源”监控器:度量场景运行期间应用程序服务器Ariba、ATG Dynamo、BroadVision、ColdFusion、Fujitsu INTERSTAGE、iPlanet (NAS)、Microsoft ASP、Oracle9iAS HTTP、SilverStream、WebLogic (SNMP)、WebLogic (JMX) 和 WebSphere统计信息的情况
  • 100. 第四章 Controller控制器LoadRunner提供的监视器 “数据库服务器资源”监控器:用于度量场景运行期间数据库DB2、Oracle、SQL 服务器和Sybase统计信息的情况 “流媒体”监控器:用来度量场景运行期间RealPlayer和Media Player客户端以及Windows Media服务器和 RealPlayer 音频/ 视频服务器的统计信息 “ERP/CRM服务器资源”监控器:用来度量场景执行期间SAP R/3 系统、SAP Portal、Siebel Server Manager、Siebel Web 服务器和 PeopleSoft (Tuxedo) 服务器的统计信息 “Java性能”监控器:用于度量J2EE对象及J2EE和EJB服务器对象的统计信息
  • 101. 第四章 Controller控制器LoadRunner提供的监视器 “应用程序组件“监控器:用来度量场景执行期间 Microsoft COM+和 Microsoft .NET CLR 服务器的统计信息 “应用程序部署解决方案”监控器:用来度量场景执行期间 Citrix MetaFrame XP 和 1.8 服务器的统计信息 “中间件性能”监控器:度量场景执行期间 Tuxedo 和 IBM WebSphere MQ 服务器的统计信息 “基础结构资源”监控器:用于度量场景执行期间网络客户端数据点的统计信息
  • 102. 第四章 Controller控制器监视器与度量 添加计数器
  • 103. 第四章 Controller控制器联机监视器
  • 104. 第五章 Analysis分析器该章节主要包括以下部分内容: Analysis介绍 报告概要 Analysis常见分析图 Analysis报告
  • 105. 第五章 Analysis分析器Analysis介绍 Analysis基础知识 设置选项 Analysis图
  • 106. 第五章 Analysis分析器Analysis基础知识 Vuser日志文件,包括每个Vuser运行方案的完整跟踪 Controller输出窗口,输入窗口中错误信息 Analysis图,分析数据的最主要手段 “图数据”视图和“原始数据”视图以电子表格形式显示用于生成图的实际数据 报告形式,包括HTML、Word和水晶报表三种形式的报告。
  • 107. 第五章 Analysis分析器设置选项 Result Collection设置
  • 108. 第五章 Analysis分析器Set Granularity设置
  • 109. 第五章 Analysis分析器Configure Measurements设置
  • 110. 第五章 Analysis分析器设置筛选条件
  • 111. 第五章 Analysis分析器Analysis图 Analysis分析器中提供了丰富分析图,常见的 有8种:Vusers图、错误图、事务图、Web资源 图、网页细分图、系统资源图、Web服务器资源 图和数据库服务器资源图
  • 112. 第五章 Analysis分析器Analysis图
  • 113. 第五章 Analysis分析器报告概要 概要部分 统计部分 事务统计部分 HTTP响应统计
  • 114. 第五章 Analysis分析器概要部分 Analysis概要总结部分的信息
  • 115. 第五章 Analysis分析器统计部分 统计部分显示的信息
  • 116. 第五章 Analysis分析器事务统计部分 事务统计部分的信息
  • 117. 第五章 Analysis分析器HTTP响应统计 HTTP响应统计的信息
  • 118. 第五章 Analysis分析器Analysis常见图分析 Vuser图 每秒点击数图 平均事务响应时间图 吞吐量图
  • 119. 第五章 Analysis分析器Vuser图
  • 120. 第五章 Analysis分析器每秒点击数图 “每秒点击数”图显示在方案运行过程中Vuser 每秒中向Web服务器提交的HTTP请求数
  • 121. 第五章 Analysis分析器平均事务响应时间图 “平均事务响应时间”图显示方案在运行期间 每一秒内执行事务所用的平均时间
  • 122. 第五章 Analysis分析器吞吐量图 吞吐量”图显示方案运行过程中服务器上每秒 的吞吐量
  • 123. 第五章 Analysis分析器Analysis报告 HTML报告 WORD报告 水晶报表
  • 124. 第五章 Analysis分析器HTML报告
  • 125. 第五章 Analysis分析器WORD报告 Format选项卡
  • 126. 第五章 Analysis分析器WORD报告 Primary Content选项卡
  • 127. 第五章 Analysis分析器WORD报告 Additional Graphs选项卡
  • 128. 第五章 Analysis分析器水晶报表 水晶报表包括活动报告和性能报告两类报告。 而活动报告又包括场景执行报告、失败事务报 告和失败虚拟用户报告。性能报告又包括数据 点报告、详细事务报告和事务性能报告
  • 129. 第五章 Analysis分析器水晶报表 Scenario Execution Report
  • 130. 第五章 Analysis分析器水晶报表 Failed Transaction Report
  • 131. 第五章 Analysis分析器水晶报表 Failed Vusers Report
  • 132. 第五章 Analysis分析器水晶报表 Data Point Report
  • 133. 第五章 Analysis分析器水晶报表 Detailed Transaction Report
  • 134. 第五章 Analysis分析器水晶报表 Transaction Performance Report
  • 135. 第六章 脚本编写该章节主要包括以下部分内容: 检查点 Block块技术 参数化技术 关联技术
  • 136. 第六章 脚本编写检查点 在进行压力测试时,经常会有页面间数据传递 的操作,页面就有可能会发生传递混乱,或者 客户端与服务端数据传输被中断或传输了错误 的数据等情况。所以我们需要一个检查的过程 检查点返回的值是通过检查点函数将返回值的 结果反映在Controller的状态面板上和 Analysis统计结果中
  • 137. 第六章 脚本编写插入检查点的步骤 将视图模式设置为“Tree View”
  • 138. 第六章 脚本编写插入检查点的步骤 在“Tree View”中选择要插入检查点的位置
  • 139. 第六章 脚本编写插入检查点的步骤 选择检查点类型和插入函数
  • 140. 第六章 脚本编写插入检查点的步骤 参数化
  • 141. 第六章 脚本编写常用的检查点函数 web_find() web_reg_find()
  • 142. 第六章 脚本编写Block块技术 案例:假如想在一个脚本中,实现注册执行3 次,登录执行1次,查询执行2次,怎么办? 首先使用LoadRunner录制好脚本
  • 143. 第六章 脚本编写进入菜单Vuser->Run-time Settings,弹出Run-time Settings对话框,选择General-> Run Logic标签页
  • 144. 第六章 脚本编写选择Run插入一个Block块
  • 145. 第六章 脚本编写选择Block0,按Insert Action键,弹出Select Actions对话框
  • 146. 第六章 脚本编写重复以上操作,再新建两个Block块为Block1和Block2,并为这两个块插入对应的Action
  • 147. 第六章 脚本编写将Block外面的Action删除
  • 148. 第六章 脚本编写设置Block properties
  • 149. 第六章 脚本编写参数化技术 所谓的脚本参数化,就是针对脚本中的某些常 量,定义一个参数来取代,这个参数中包含很 多数据源,可以是一文本文件也可以是数据 源。 那么为什么要进行参数化呢? 为了减少脚本的大小和脚本数量。 使业务更接近真实的客户业务。
  • 150. 第六章 脚本编写创建参数 录制好脚本后,选中要参数化的常量点右键­- >Replace with a parameter
  • 151. 第六章 脚本编写创建参数 当参数化结束后,脚本保存的根目录下会多出 一个参数化的文件。
  • 152. 第六章 脚本编写创建参数 如果有多个参数文件,可以对参数文件进行合 并
  • 153. 第六章 脚本编写创建参数 参数文件合并后,可以放到一个专门管理参数 文件的文件夹中
  • 154. 第六章 脚本编写参数类型属性 “Date/Time”(日期/时间)参数类型 “Group Name”(组名)参数类型 “Iteration Number”(迭代编号)参数类型: “Load Generator Name”(负载生成器名)参数类型 “Random Number”(随机编号)参数类型 “Unique Number”(唯一编号)参数类型 “Vuser ID”参数类型 File参数类型
  • 155. 第六章 脚本编写数据文件 Browse属性 Edit With Notepad设置 Select column设置 Column delimiter设置 File data line设置 Select next row设置 Update value on设置
  • 156. 第六章 脚本编写导入数据 使用Microsoft Query 指定数据库连接字符串和SQL语句
  • 157. 第六章 脚本编写关联技术 录制中关联 建立规则 内建关联规则
  • 158. 第六章 脚本编写录制中关联 建立规则 用户自定义关联规则
  • 159. 第六章 脚本编写录制中关联 规则使用 在Tools->Recording Options对话框中选中 “Enable correlation during recording”复 选框,启用自动关联
  • 160. 第六章 脚本编写录制后关联 录制后关联与内建关联还是有点区别的,录制 后关联是在执行脚本后才会建立关联,也就是 说,当录制完脚本后,脚本至少要执行一次, 录制后关联才会产生效果。。点菜单Vuser- >Scan Script for Correlations或按Ctrl+F8
  • 161. 第六章 脚本编写录制后关联
  • 162. 第六章 脚本编写手动关联 手动关联的一般步骤如下: 录制两份相同的业务流程和数据的脚本 使用WinDiff工具比较两份脚本,找到需要关联的数据 找到左边界和右边界字符串 使用web_reg_save_param函数手动建立关联 将脚本中有用到关联的数据,以参数取代
  • 163. 第七章 场景设计实践该章节主要包括以下部分内容: 集合点设置 IP欺骗技术 执行路径转换 在LoadRunner中使用功能测试脚本
  • 164. 第七章 场景设计实践集合点设置 选择“Scenario”->“Rendezvous”插入集合 点
  • 165. 第七章 场景设计实践集合点设置 在场景中设置集合点
  • 166. 第七章 场景设计实践集合点设置策略 第一项:表示当所有用户数的X%到达集合时, 就开始释放等待的用户并继续执行场景。 第二项:表示当前正在运行用户数的X%到达集 合点时,就开始释放等待的用户并继续执行场 景。 第三项:表示当X个用户到达集合点时,就开始 释放等待的用户并继续执行场景。
  • 167. 第七章 场景设计实践集合点设置策略
  • 168. 第七章 场景设计实践IP欺骗 在“开始”菜单->“所有程序”>“Mercury LoadRunner”->“Tools”->“IP Wizard”,弹出IP Wizard配置对话框
  • 169. 第七章 场景设计实践IP欺骗 在这里选择一种方式进行设置,如果以前保存过这类文件,可以选择“从文件中加载”,然后选择该文件即可 也可以选择“创建一个新的设置” 单击“下一步”,设置服务器的IP地址
  • 170. 第七章 场景设计实践IP欺骗 单击“下一步”将看到该计算机的IP地址列表。单击“添加”按钮可以定义地址范围
  • 171. 第七章 场景设计实践IP欺骗 在该对话框,选择计算机的IP地址类型。指定要创建的IP地址数。选中“验证新的IP地址未被使用”复选框,以指示IP向导对新地址进行检查。这样只会添加未使用的地址 完成之后,IP向导会显示出IP变更统计的对话框
  • 172. 第七章 场景设计实践IP欺骗
  • 173. 第七章 场景设计实践IP欺骗 以上是同网段IP欺骗,那么跨网段IP欺骗应该 如何处理呢? 在设置完成IP欺骗的最后一步,不要重启计算 机,此时在临时文件夹Temp里生成两个文件, 一个是用于UNIX的unix_routing.sh文件,一个 是用于WINDOWS的nt_routing.bat文件。 下面我们来看一下这两个文件的内容
  • 174. 第七章 场景设计实践IP欺骗 nt_routing.bat文件的内容如下: REM This is a bat file to add IP addresses to the routing table of a server REM Replace [CLIENT_IP] with the IP of this machine (Load Generator) that the server already recognizes REM This script should be executed on the server machine route ADD 192.168.14.22 MASK 255.255.255.255 [CLIENT_IP] METRIC 1 route ADD 192.168.14.23 MASK 255.255.255.255 [CLIENT_IP] METRIC 1 route ADD 192.168.14.25 MASK 255.255.255.255 [CLIENT_IP] METRIC 1
  • 175. 第七章 场景设计实践IP欺骗 uxix_routing.sh文件的内容如下: # Bourne shell script to add IP addresses to the routing table of a server # To run replace [CLIENT_IP] with the IP of this machine (Load Generator) that the server already recognizes # Then chmod +x unix_routing.sh # and finally execute this script on the server #!/bin/sh route add 192.168.14.22 [CLIENT_IP] 255.255.255.0 route add 192.168.14.23 [CLIENT_IP] 255.255.255.0 route add 192.168.14.25 [CLIENT_IP] 255.255.255.0
  • 176. 第七章 场景设计实践IP欺骗 要更新服务器路由表,必须对这两个文件进行 一定的修改。 每次出现[CLIENT_IP],将[CLIENT_IP]用LoadRunner机器的IP地址替换。假设我们LoadRunner机器的IP地址192.168.14.26。 修改的文件必须在服务器上运行该文件,Windows系统使用nt_routing.bat文件,Unix系统使用uxix_routing.sh文件。
  • 177. 第七章 场景设计实践IP欺骗 下面我们来看一下修改后的两个文件: nt_routing.bat文件内容如下: REM This is a bat file to add IP addresses to the routing table of a server REM Replace [CLIENT_IP] with the IP of this machine (Load Generator) that the server already recognizes REM This script should be executed on the server machine route ADD 192.168.14.22 MASK 255.255.255.255 192.168.14.25 METRIC 1 route ADD 192.168.14.23 MASK 255.255.255.255 192.168.14.25 METRIC 1 route ADD 192.168.14.25 MASK 255.255.255.255 192.168.14.25 METRIC 1
  • 178. 第七章 场景设计实践IP欺骗 下面我们来看一下修改后的两个文件: uxix_routing.sh文件内容如下: # Bourne shell script to add IP addresses to the routing table of a server # To run replace [CLIENT_IP] with the IP of this machine (Load Generator) that the server already recognizes # Then chmod +x unix_routing.sh # and finally execute this script on the server #!/bin/sh route add 192.168.14.22 192.168.14.25 255.255.255.0 route add 192.168.14.23 192.168.14.25 255.255.255.0 route add 192.168.14.25 192.168.14.25 255.255.255.0 修改好后,将这两个文件拷贝到服务器运行,重启当前的电脑IP欺骗设置即生效
  • 179. 第七章 场景设计实践Controller中启动IP Spoofer 选择“Scenario”->“Enable IP Spoofer”, 启动IP Spoofer策略
  • 180. 第七章 场景设计实践Controller中启动IP Spoofer 当启动IP Spoofer后,在Run选项卡的右下角会 看到IP Spoofer的标记
  • 181. 第七章 场景设计实践负载均衡技术 为了尽可能减少或者避免本身的测试机成为测 试过程中的瓶颈,在测试过程中,我们需要使 用所有的测试机产生Vuser,对被测试系统进行 施压 在默认模式下,Controller中只能添加一台机 器
  • 182. 第七章 场景设计实践负载均衡技术 这样负载分配还是不均匀,为了解决这个问 题,首先要更换场景模式,选择“Scenario”- >“Convert Scenario to the Percentage Mode”
  • 183. 第七章 场景设计实践负载均衡技术 在这里我们可以选择我们要的负载机,也可以 选择所有的负载机,点击“OK”按钮,选择的 机器都将被添加进来 之后将百分比模式切换成组模式即可
  • 184. 第七章 场景设计实践执行路径转换 路径转换介绍 路径转换是 LoadRunner 在转换 Controller 的远程路径名时所使用的一种机制。一个远程 负载生成器将网络驱动器映射为 F,而另一个 负载生成器将同一个驱动器映射为 H。在如此 复杂的场景中,需要确保所有参与的计算机能 够识别同一个网络驱动器
  • 185. 第七章 场景设计实践执行路径转换 路径转换介绍
  • 186. 第七章 场景设计实践执行路径转换 编辑路径转换表 在Controller控制器中,选择“Tools”->“Options”,选择“Path Translation Table”选项卡,打开路径转换表视图
  • 187. 第七章 场景设计实践执行路径转换 编辑路径转换表 输入路径转换信息之前,请首先考虑使用通用命名约定方法 如果您的计算机不是 Windows 计算机并需要路径转换,则请在该表中键入路径信息
  • 188. 第七章 场景设计实践在LoadRunner中使用功能测试脚本 在LoadRunner中运行功能测试脚本的主要优点 有以下几点: 可检查高负载对应用程序的功能带来的影响。 可以度量应用程序在负载下运行时,典型用户在客户端等待的响应时间(端到端的响应时间)。
  • 189. 第七章 场景设计实践在LoadRunner中使用功能测试脚本
  • 190. 第七章 场景设计实践QuickTest创建GUI Vuser脚本 QuickTest与LoadRunner集成要注意以下几个方 面 事务 将集成数据与测试一起保存 添加语句 为LoadRunner设计测试
  • 191. 第七章 场景设计实践WinRunner创建GUI Vuser脚本 使用WinRunner创建GUI Vuser脚本时,要注意 下面几个地方: 插入事务和集合点 向Controller发送消息 运行Controller的计算机
  • 192. 第七章 场景设计实践场景中使用GUI Vuser脚本 在添加GUI Vuser脚本到LoadRunner场景前,要 注意以下几个问题: 每台计算机上每次只能运行一个GUI Vuser 请确保在运行场景前关闭Q uickTest或WinRunner 在“Run-time Setting for script”设置对话框中,只有“General”类中的“Run Logic”和“Think Time”与QuickTest和WinRunner测试有关
  • 193. 第八章 结果分析实践该章节主要包括以下部分内容: 分析图合并 分析图关联 页面细分 钻取技术 导入外部数据
  • 194. 第八章 结果分析实践分析图合并 分析图合并原理 叠加:查看共用同一X轴的两个图的内容。合并图左侧的Y轴显示当前图的Y轴值,右边的Y轴显示合并进来的图的Y轴值 平铺:查看在平铺布局,共用同一个X轴,合并进来的图显示在当前图的上向 关联:合并后当前活动图的Y轴变为合并图的X轴,被合并图的Y轴作为合并图的Y轴
  • 195. 第八章 结果分析实践分析图合并 实例讲解
  • 196. 第八章 结果分析实践分析图关联 分析图关联原理
  • 197. 第八章 结果分析实践分析图关联 分析图关联原理 Trend(趋势):选择关联度量值变化趋势相对稳定的一段为时间范围 Feature(功能):在关联度量值变化相对稳定的时间内,选择一段大体与整个趋势相似的时间范围 Best(最佳):选择关联度量值发生明显变化趋势的一段时间范围
  • 198. 第八章 结果分析实践分析图关联 实例讲解
  • 199. 第八章 结果分析实践页面细分 页面细分原理 下面来看一下在浏览器发送一个请求到最后显 示全过程 浏览器向服务器发送一个请求,一般情况下,请求首先是被发送到DNS服务器上,通过域名解析,将DNS名解析为IP地址。其中域名解析的时间就是DNS解析的时间(DNS Resolution)
  • 200. 第八章 结果分析实践页面细分原理 DNS解析完成后,请求被送到Web服务器,之后浏览器与Web服务器之间需要建立一个初始化连接 建立连接后,Web服务器发出第一个数据包,经过网络传输到客户端,浏览器成功接收到第一个字节的时间就是First Buffer的时间 从浏览器接收到第一个字节起,直到成功接收到最后一个字节,下载完成为止
  • 201. 第八章 结果分析实践页面细分 实例讲解
  • 202. 第八章 结果分析实践钻取技术 钻取技术原理钻取技术通常有以下几个特点: 在一个活动图中,选择一个需要的组进行显示,这时钻取技术可以帮助我们进行特定的测量 而这个组是由活动图所决定对于不同的图,组信息有所不同 可以钻取每个Vuser的响应时间,并可以按Vuser ID进行排序 钻取后的信息会按组中不同的元素与不同的曲线显示
  • 203. 第八章 结果分析实践钻取技术 实例讲解
  • 204. 第八章 结果分析实践导入外部数据 LoadRunner自带了一个导入数据的工具,选择 “Tools”->“External Monitors”- >“Import Data”。
  • 205. 第八章 结果分析实践自定义文件格式 LoadRunner支持下列文件类型: NT Performance Monitor(*.csv)(NT性能监视器) Win 2K Performance Monitor(*.csv)(Windows2000性能监视器) Standard Comma Separated files (*.csv)(标准逗号分隔文件) Standard Microsoft Excel Files (*.csv)(主从逗号分隔文件)
  • 206. 第八章 结果分析实践自定义文件格式 LoadRunner支持下列文件类型: Master-Detail Comma Separated files(*.csv)(Microsoft Excel文件) Master-Detail Microsoft Excel Files(*.csv)(主从Microsoft Excel文件) XLS
  • 207. 第九章 特殊协议该章节主要包括以下部分内容: Windows Sockets协议 邮件服务协议
  • 208. 第九章 特殊协议Windows Sockets协议 Windows Socket录制选项设置
  • 209. 第九章 特殊协议Windows Socket录制 录制脚本 增强脚本 脚本参数化 关联脚本 设置运行参数 运行脚本
  • 210. 第九章 特殊协议Windows Socket数据操作 查看快照中的数据 缓冲区导航器 转至偏移量 书签 修改缓冲区数据
  • 211. 第九章 特殊协议关于LRS函数 Lrs_accept_connection Lrs_set_receive_option Lrs_set_send_buffer lrs_save_param lrs_save_param_ex lrs_save_searched_string
  • 212. 第九章 特殊协议邮件服务协议 邮件服务协议简介 IMAP协议 MAPI协议 POP3协议 SMTP协议
  • 213. 第九章 特殊协议邮件服务协议录制
  • 214. 第九章 特殊协议邮件服务协议录制 选择“New Multiple Portocol Script”双协 议,同时选择POP3和SMTP两种协议进行录制
  • 215. 第九章 特殊协议邮件服务协议录制 进行录制
  • 216. 第九章 特殊协议邮件服务协议录制 弹出“Recording Options”对话框。选择 “New Entry”“Port Mapping”并点击按钮进 行录制
  • 217. 第九章 特殊协议邮件服务协议录制
  • 218. 第九章 特殊协议下面我们来看一下这些设置项: Target Server(目标服务器):选择邮件服务器的地址,可以输入IP地址或域名地址,如mail.myspace.com Port(端口号):设置服务ID,这里是POP3协议,所以端口号为110 Service ID(服务ID):选择我们要的协议,这里我们设置为POP3 Record Type(录制方式):选择录制方式有代理和直接两种,这里我们设置为代理 Traffice Forwarding:将“Allow forwarding to target server from local port”选中,并设置一个端口
  • 219. 第九章 特殊协议LoadRunner代理过程
  • 220. 第九章 特殊协议再更改邮箱的SMTP服务器端口和POP3服务器端 口
  • 221. 第九章 特殊协议设置好之后,可以开始录制了,开始录制后, LoadRunner会激活wplus_init_wsock.exe程序 录制结束后,要记得把代理程序 wplus_init_wsock.exe关闭掉,否则再次录制 时,由于端口被占用,导到录制无法进行。
  • 222. 第九章 特殊协议脚本分析 smtp_logon_ex: smtp_send_mail_ex: MAILDATA mailnote1_01.dat的内容
  • 223. 第九章 特殊协议关于SMTP和POP3函数 smtp_logon_ex smtp_send_mail_ex Pop_logon_ex Pop3_retrieve_ex