性能测试工具——LoadRunner:详细讲解功能
LoadRunner简介LoadRunner的安装介绍一、下载安装包二、安装loadrunner为什么选择LoadRunnerLoadrunner的基本概念功能原理LoadRunner主要包括三个前台功能组件重要概念Loadrunner的性能测试过程开发测试脚本了解Web Tours网站如何启动如何访问相关配置脚本录制创建脚本文件录制脚本文件编译脚本文件运行脚本文件脚本加强插入事务插入集合点插入检查点参数化打印日志插入函数创建运行场景Controller打开方式通过Contrllor设置运行场景选择场景类型为手动场景选择场景类型为面向目标的场景分析实时监视图表运行场景通过Analysis进行测试报告解读事务摘要平均事务响应时间每秒通过事务数分析图(Transactions per Second)负载下的事务响应事务响应时间百分比点击率/吞吐率网页诊断其他分析交易成功率曲线​ 编辑CPU使用率曲线内存使用率曲线网络带宽曲线性能测试报告的编写性能测试应该放在功能测试之前还是之后进行为什么性能测试通常应该在功能测试之后进行。主要原因如下系统稳定性 在进行性能测试之前系统可能还存在各种功能性缺陷和问题。如果在此阶段进行性能测试可能会导致测试结果不准确因为性能问题可能被功能性问题所掩盖。优化基准 进行功能测试后系统的稳定性会得到一定程度的提高这样进行性能测试时能够更好地观察系统在正常运行状态下的性能表现。同时功能测试的结果也可以作为性能测试的参考基准帮助确定性能测试的指标和目标。集成测试 功能测试之后往往会进行集成测试确保系统不同模块之间的协作正常。在集成测试完成后进行性能测试可以更准确地评估系统整体的性能包括模块之间的交互对性能的影响。稳定性和可靠性 性能测试通常需要对系统进行一定的负载如果系统在功能测试阶段存在较多的稳定性问题可能会导致性能测试的过程中出现不可预测的错误或崩溃从而影响测试结果的准确性和可靠性。所以性能测试应该在功能测试之后进行以确保系统在功能稳定的基础上能够达到预期的性能指标并且能够更好地发现和解决性能问题。LoadRunner简介LoadRunner是一款由 Micro Focus 公司开发的商业性能测试工具 旨在帮助用户评估计算机系统、应用程序或其他系统组件在特定条件下的性能表现。LoadRunner的主要功能包括负载模拟、性能监控、分析和报告等。许多互联网公司都选择使用LoadRunner来进行产品的性能测试工作因为它支持广泛的协议和平台并提供了全面的性能测试解决方案。其核心特点包括负载模拟 LoadRunner能够模拟成千上万个同时访问系统的虚拟用户以模拟真实的负载情况。支持多种协议 LoadRunner支持各种常见的网络协议和技术包括HTTP、HTTPS、Web Services、JDBC、LDAP、SMTP等因此适用于不同类型的应用程序。性能监控 LoadRunner可以实时监控系统的性能指标如响应时间、吞吐量、资源利用率等以便及时发现问题并进行调整。脚本录制与回放 LoadRunner提供了脚本录制功能可以录制用户操作并将其转换为性能测试脚本然后进行回放以模拟用户行为。灵活性和可定制性 LoadRunner提供了丰富的脚本编辑和定制选项用户可以根据需要对测试进行灵活地配置和调整。强大的分析和报告 LoadRunner提供了强大的分析工具和报告功能可以帮助用户深入了解性能测试结果并提供可视化的报告以便于分享和决策。总的来说LoadRunner是一款功能强大、灵活性高的性能测试工具被广泛认可为业界的权威性能测试解决方案之一。LoadRunner的安装介绍注意LoadRunner只能在windows操作系统 上运行MAC操作系统不支持如果你使用MAC操作系统需要在MAC操作系统上安装一个虚拟机再装上windows操作系统之后安装loadrunner比较费事一、下载安装包提前下载安装文件二、安装loadrunner双击HP_LoadRunner_12.02_Community_Edition_T7177-15059.exe弹出安装界面。一路安装继续勾选图中三项并安装整个安装过程比较慢耐心等待。安装完成后界面出现三个图标如图如果遇到VUGVirtual User Generator虚拟用户生成器无法录制脚本的问题有几种常见的解决方法完全退出浏览器在录制脚本之前确保将浏览器完全退出。有时候浏览器的进程可能仍然在后台运行这可能导致录制不到脚本的问题。使用Fiddler VUG可以借助 Fiddler网络调试工具结合 VUG 来录制脚本。通过在 Fiddler 中捕获网络流量并将其转发到 VUG 中进行处理可以解决一些无法直接录制的问题。这种方法通常比较有效。使用VUG自带的Firefox浏览器LoadRunner包括其中的 VUG提供了一个特殊版本的 Firefox 浏览器该浏览器已经配置好以确保能够与 VUG 协同工作。你可以尝试使用此浏览器来录制脚本以解决录制问题。为什么选择LoadRunner选择LoadRunner作为性能测试工具有以下几个主要原因强大的录制功能LoadRunner提供了强大的录制功能能够捕获用户与应用程序之间的交互并将其转换为可执行的测试脚本。这使得测试人员能够轻松地模拟用户行为从而进行性能测试。模拟各种场景LoadRunner支持模拟各种复杂的场景包括多种协议、不同的用户行为模式、各种负载条件等。这使得测试人员能够更加真实地模拟实际生产环境中的情况从而全面评估系统的性能表现。详细的测试报告LoadRunner生成的测试报告非常详细包含了各种性能指标、图表和分析结果。这些报告能够帮助测试人员全面了解系统的性能表现发现潜在的性能问题并提供优化建议。除此之外LoadRunner还具有丰富的功能和灵活性能够适应各种复杂的性能测试需求是业界公认的领先性能测试工具之一。Loadrunner的基本概念功能LoadRunner是一种功能强大的自动负载测试工具适用于多种软件体系架构。它提供了丰富的功能可以帮助用户评估系统的性能表现。LoadRunner可以测量用户关注的各种性能指标包括响应时间、吞吐量、并发用户数量以及性能计数器等从而全面地评估系统在不同负载条件下的性能表现。通过模拟各种场景和负载条件LoadRunner可以帮助用户发现潜在的性能瓶颈并提供详尽的测试报告和分析结果以指导系统性能的优化工作。LoadRunner的强大录制功能使得用户可以轻松地录制测试脚本快速建立测试场景从而提高测试效率。总的来说LoadRunner作为一款领先的性能测试工具为用户提供了全面而可靠的性能评估解决方案。原理LoadRunner启动后在系统任务栏中会有一个Agent进程运行。该Agent进程的作用是监视各种协议的客户端与服务器端之间的通信过程。LoadRunner利用一套C语言函数来录制测试脚本因此只要LoadRunner支持的协议就能够完整地录制通信过程避免出现无法录制的情况。录制完成后LoadRunner会使用这些脚本模拟用户行为向服务器端发送请求并接收服务器的响应。LoadRunner并不关心服务器内部的处理过程它主要通过模拟上千万用户的并发负载以及实时性能监测的方式来确认和查找系统中的性能问题并提供性能优化建议以加速应用系统的发布周期。LoadRunner主要包括三个前台功能组件VuGen虚拟用户脚本生成器、Controller测试控制器和Analysis结果分析器。此外系统还自动调用后台功能组件LG负载生成器和Proxy用户代理来完成性能测试工作。VuGenVuGen是用于录制和编写虚拟用户脚本的工具。通过录制或手动编写脚本可以模拟用户在应用程序中的行为和操作。这些脚本描述了用户与应用程序之间的交互过程包括发送请求、接收响应和处理数据等步骤。ControllerController是性能测试的中心控制器用于管理、监控和执行性能测试。在Controller中可以指定性能测试方案、配置测试场景、分配虚拟用户、启动测试并监控测试执行过程。它还负责收集测试数据和监控系统性能指标以便进行实时分析和调整。AnalysisAnalysis用于对性能测试过程中收集到的各种性能数据进行计算、汇总和分析。通过Analysis可以生成各种图表和报告展示系统在不同负载条件下的性能表现帮助测试人员深入了解系统的性能特征和瓶颈并提供优化建议。此外还有后台组件LGLoad Generator负载生成器用于模拟多用户并发访问被测试系统。它执行从Controller指定的虚拟用户脚本并生成负载以模拟实际用户的行为从而评估系统的性能表现。Proxy用户代理支持VuGen录制和回放过程。它在录制过程中拦截和记录HTTP/HTTPS通信以便生成虚拟用户脚本。在回放过程中将虚拟用户脚本发送到被测试系统并捕获响应数据以供分析使用。LoadRunner主要包括的三大组件之间的关系在LoadRunner的工作流程中首先使用VuGen录制脚本然后将脚本放置在Controller设计的测试场景中进行运行。在测试运行过程中Controller会收集监控数据并将这些数据传输到Analysis中进行分析和报告生成。VuGen虚拟用户脚本生成器VuGen用于录制、编辑和调试虚拟用户脚本。测试人员使用VuGen录制用户操作并生成脚本然后将这些脚本保存下来准备在性能测试中使用。Controller测试控制器Controller是性能测试的管理和监控中心。在Controller中测试人员设计测试场景配置虚拟用户数量、负载参数等然后将预先录制好的脚本分配到场景中的虚拟用户中。一旦场景准备就绪测试人员就可以启动测试并监控测试过程中的各项性能指标。Analysis结果分析器Analysis用于对性能测试结果进行分析和报告生成。测试人员在测试完成后可以将收集到的性能数据导入到Analysis中进行分析。这些数据包括虚拟用户的响应时间、吞吐量、错误率等指标。通过Analysis生成的报告可以帮助测试人员评估系统的性能表现发现潜在的性能问题并提出优化建议。Loadrunner的性能测试过程LoadRunner的性能测试过程可以分为以下几个主要步骤制定性能测试计划 在这一阶段团队需要分析应用程序确定测试的目标并计划如何执行测试。这包括确定测试的范围、目标用户数量、测试环境的配置等。开发测试脚本 使用LoadRunner的Virtual User GeneratorVuGen组件开发测试脚本。测试脚本描述了每个虚拟用户在测试中执行的活动包括用户的行为、参数化、事务定义和检查点设置等。设计运行场景 在Controller中设计运行场景定义要使用的虚拟用户数量、负载模型和测试持续时间等。运行场景描述了在测试活动中发生的各种事件并包括一系列Load Generator机器和测试脚本的列表。运行、监视测试 一切配置就绪后开始运行测试。在测试运行过程中需要监视各个服务器的运行情况包括数据库服务器、Web服务器等以确保系统正常运行且能够处理预期的负载。分析测试结果 在测试运行结束后使用Analysis组件来分析收集到的性能数据。LoadRunner提供了各种图表和报告用于分析测试结果评估系统的性能表现并发现潜在的性能问题。最终我们会得出结论并提出性能优化的建议。LoadRunner使用了三个主要功能模块来覆盖性能测试的整个流程Virtual User GeneratorVuGen用于开发和编辑测试脚本。Controller用于设计运行场景并执行测试。Analysis用于分析和评估测试结果生成报告。开发测试脚本我们下面直接以Loadrunner安装时附带的样例程序Web Tours进行讲解。了解Web Tours网站启动WebTours双击StartServer.bat访问:成功访问到相关配置1、端口号2、用户名、密码文件名就是Web Tours登录名文件中第一行信息就是用户名对应的密码你可以更改文件内容并保存以此更改密码。可以有多个用户名和密码你也选择可以自行注册登陆成功脚本录制这个窗口别关关了服务器就无法访问了接下来双击VUG创建脚本文件首先新建一个脚本文件配合我们现在使用的Web Tours选择HTTP协议录制脚本文件输入用户名及密码现在我们选择停止录制这个窗口可以直接关掉录制好的脚本编译脚本文件运行脚本文件下面有很多日志我们来仔细看看可以证明脚本的执行顺序vuser_init虚拟用户初始化 在此阶段虚拟用户初始化执行了一些准备工作例如加载运行时设置文件。Action操作 在此阶段虚拟用户执行了一系列操作。首先通过web_url函数发送了一个GET请求获取了页面上的一些资源如图片。接着使用web_submit_form函数提交了一个登录表单并且成功登录。然后再次使用web_submit_form函数提交了另一个表单。在这些操作中虚拟用户检测到了一些非资源的链接和一些资源已经在缓存中因此没有重复下载。vuser_end虚拟用户结束 在此阶段虚拟用户执行一些结束工作如释放资源等。Vuser Terminated虚拟用户终止 虚拟用户执行完所有操作后被终止。脚本加强为什么要进行脚本的加强对脚本进行加强的主要目的是使其能够更准确地模拟用户行为并且能够收集和报告相关的性能指标以便于对应用程序的性能进行评估和分析。录制的脚本可能会忽略一些关键的性能指标导致无法全面地评估应用程序的性能。通过对脚本进行加强可以更全面地测试和评估应用程序的性能从而确保应用程序在生产环境中能够达到预期的性能要求。插入事务当录制完一个基本的用户脚本后在正式使用前我们还需要完善测试脚本增强脚本的灵活性。一般情况下我们通过以下方法来完善测试脚本事务Transaction为了衡量服务器的性能我们需要定义事务。比如我们在脚本中有一个数据查询操作为了衡量服务器执行查询操作的性能我们把这个操作定义为一个事务这样在运行测试脚本时LoadRunner运行到该事务的开始点时LoadRunner就会开始计时直到运行到该事务的结束点计时结束。这个事务的运行时间在结果中会有反映。插入事务操作可以在录制过程中进行也可以在录制结束后进行。LoadRunner可以在脚本中插入不限数量的事务。如何插入事务通过菜单设计---在脚本中插入---开始事务、结束事务来进行事务的添加。事务的状态默认情况下是 LR_AUTO。一般情况下我们也不需要修改除非在手工编写代码时有可能需要手动设置事务的状态。可以通过步骤导航器来查看步骤的参数选项。注意开始事务和结束事务必须成对出现开始事务函数里面的“login”是事务名称开始事务和结束事务对应的事务名称要求一致以上述为例在实际生成的脚本中含有打开首页、注册、退出登录等多项操作。而我们实际需要关注的是注册这一个事务的性能那么就需要在注册前后来加入事务。除了事务我们还可以通过参数化、添加逻辑、错误处理等方式来完善测试脚本以更好地模拟真实用户的行为并评估应用程序的性能。插入集合点在LoadRunner中为了实现并发这种目的通过集合点实现。集合点是为了衡量在加重负载的情况下服务器的性能情况。在测试计划中可能会要求系统能够承受1000人同时提交数据。在LoadRunner中可以通过在提交数据操作前面加入集合点来实现这一需求。这样当虚拟用户运行到提交数据的集合点时LoadRunner就会检查同时有多少用户运行到集合点。如果不到1000人LoadRunner就会命令已经到集合点的用户在此等待。当在集合点等待的用户达到1000人时LoadRunner会命令1000人同时去提交数据从而达到测试计划中的需求。注意集合点经常和事务结合起来使用。集合点只能插入到Action部分vuser_init和vuser_end中不能插入集合点。具体的操作方法如下在需要插入集合点的前面通过菜单操作菜单设计---在脚本中插入---集合点。运行后在日志中也得以体现插入检查点当进行压力测试时为了检查Web服务器返回的网页是否正确、页面元素是否渲染正确VuGen允许我们插入文本检查点。这些检查点可以验证网页上是否存在指定的文本并测试在较大的压力测试环境中被测的网站功能是否保持正确。检查点的含义类似于单元测试中的断言功能用于确认程序的正确性。搜索web_reg_find配置通过菜单---查看---快照可以查看HTTP数据视图选择要检查的文本然后选择添加文本检查步骤即可添加一个检查点。然而在进行回放时可能会遇到错误提示。这可能是由于检查点验证失败导致的。常见的失败原因包括网页内容发生变化如果在录制脚本时检查点验证的文本与回放时的实际网页内容不一致检查点将失败。动态生成的内容如果网页上的文本是动态生成的如时间戳或会话标识符等那么每次回放时文本都会发生变化导致检查点失败。网络延迟或服务器响应时间过长如果在检查点验证期间网络延迟或服务器响应时间过长可能会导致检查点验证超时。在遇到检查点失败时需要检查网页内容是否发生变化确认是否存在动态生成的内容并评估网络延迟或服务器响应时间是否影响了检查点的验证。根据具体情况调整检查点设置或网站功能以解决问题。实际举例说明Action() { lr_start_transaction(T01_用户登录); // 正向检查响应中必须包含“欢迎” web_reg_find(Text欢迎, SearchBody, SaveCountLoginOK_Count, LAST); // 反向检查响应中不能出现“用户名或密码错误” web_reg_find(Text用户名或密码错误, SearchBody, FailFound, LAST); // 登录请求 web_submit_form(do_login, Snapshott1.inf, ITEMDATA, Nameusername, Valuetestuser, ENDITEM, Namepassword, ValueTest123, ENDITEM, LAST); // 根据检查点结果判断事务是否成功 if (atoi(lr_eval_string({LoginOK_Count})) 0) { lr_end_transaction(T01_用户登录, LR_PASS); lr_output_message(登录成功检查点通过); } else { lr_end_transaction(T01_用户登录, LR_FAIL); lr_error_message(登录失败未找到欢迎文本); return -1; } return 0; }参数含义Text欢迎要查找的文本SearchBody在响应 Body 中查找SaveCountLoginOK_Count将找到的次数保存到参数LoginOK_CountLAST参数结束标志参数化在录制脚本过程中如果用户填写并提交了一些数据比如要增加数据库记录这些操作都会被记录到脚本中。然而当多个虚拟用户运行脚本时它们都会提交相同的记录这不符合实际的运行情况并且有可能引起冲突。为了更真实地模拟实际环境我们需要各种各样的输入。参数化输入是一种有效的方法。通过使用参数可以实现以下两个优点可以使脚本变得更简洁通过将常量值替换为参数可以减少脚本的长度和重复性。可以使用不同的数值来测试脚本在回放过程中可以使用不同的参数值而不只是针对一个特定的情况。参数化的过程通常包含以下两个任务在脚本中用参数取代常量值。设置参数的属性以及数据源。需要注意的是参数化仅适用于函数中的参数。不能将参数用于非函数参数的字符串。举例来说在注册的例子中如果我们已经注册了一个名为test的用户再次注册就会失败因为用户名已经存在。这意味着当LoadRunner脚本再次运行时注册步骤会失败。为了解决这个问题可以找到对应的代码块在用户名例如username中选中test字符串然后右键点击并选择使用参数替换然后就可以设置参数使得在每次运行时可以使用不同的用户名。选择文件类型并且自定义文件名称及路径后点击“Create table”点击“close”再点击OK为了方便观察我们调整日志格式并且CtrlS保存参数的类型日期/时间DateTime用于表示日期和时间在需要输入日期/时间的地方使用DateTime类型来替代。属性设置包括选择日期时间格式。组名Group Name在实际运行中LoadRunner使用该虚拟用户所在的Vuser Group来代替。在VuGen中运行时Group Name将会是None。负载生成器名称Load Generator Name在实际运行中LoadRunner使用该虚拟用户所在负载生成器的机器名来代替。迭代编号Iteration Number在实际运行中LoadRunner使用当前测试脚本循环的次数来代替。随机数字Random Number用于生成随机数在属性设置中可以设置随机数的范围。唯一编号Unique Number用于生成唯一的数字在属性设置中可以设置第一个数字以及递增的数字大小每个Vuser的块大小。注意使用该参数类型时要注意可以接受的最大数以避免脚本运行出错。Vuser ID用于表示虚拟用户的ID在实际运行中LoadRunner使用该虚拟用户的ID来代替。在VuGen中运行时Vuser ID将会是-1。文件File需要在属性设置中编辑文件并添加内容。用户定义的函数User Defined Function从用户开发的DLL文件提取数据。每种参数类型都有不同的用途和属性设置根据实际需要选择合适的参数类型来进行参数化。具体举例子以 Web HTTP/HTML 脚本为例现在用户名和密码都是固定值然后找到admin,右键选择Replace with a Parameter/或者通过菜单Insert - Parameter弹出参数设置窗口,输入参数名username;参数类型选择:File.然后上面代码变为Nameusername, Value{username}, ENDITEM一、 详细操作步骤1. 替换常量在脚本编辑器Script View中找到需要参数化的值例如登录请求中的用户名admin。选中该字符串包含双引号。右键点击选择Replace with a Parameter替换为参数。在弹出的对话框中Parameter name输入参数名如p_username。点击 OK。此时脚本中的admin会变成{p_username}。2. 配置参数属性点击顶部菜单ViewParameter List或按Ctrl L。在列表中选择刚才创建的p_username。在右侧 Properties 区域配置核心策略见下文详解。3. 准备数据在 Parameter List 的 Data 区域。手动录入点击表格下方的Add Row输入数据。导入文件点击Browse选择外部.dat或.csv文件推荐方便管理大量数据。打印日志脚本加强中的一项重要技术是打印日志。在软件开发和测试过程中日志是一种非常有用的工具能够提供关于系统运行状态的详细信息。通过在脚本中添加日志信息我们可以更好地跟踪脚本的执行过程、调试脚本中的问题以及记录关键信息。首先通过在脚本中适当的位置插入日志语句我们可以实时地记录脚本的执行情况。这样做有助于我们了解脚本执行到哪一步以及每一步的执行结果。如果脚本出现异常或错误我们可以根据日志信息追踪问题所在并快速定位和解决。其次日志还可以用于调试脚本中的问题。通过在关键步骤前后插入日志语句我们可以输出变量的值、函数的返回结果甚至是请求和响应的内容。这些详细的信息有助于我们深入分析脚本的执行过程从而更加准确地定位和解决问题。此外日志还可以用于记录关键信息如用户操作的详细步骤、重要事件的发生时间、错误信息等。这些日志记录可以作为后续分析、报告和审计的重要依据有助于我们全面了解脚本的执行情况和系统的运行状态以及及时发现和解决潜在问题。综上所述通过适当地添加日志信息我们可以提高脚本的可读性、可维护性和调试性从而提高脚本的质量和效率以确保系统的稳定性和可靠性。搜索log_message插入函数VuGen 中可以使用C 语言中比较标准的函数和数据类型语法和C语言相同。下面简单介绍一下比较常用的函数和数据类型。控制脚本流程在脚本页面通过右键-插入-新建步骤可以查看函数列表。在VuGen中您可以直接使用C语言中常见的控制流程语句如if、else、for、while等来控制脚本的执行流程。字符串函数由于在VuGen脚本中使用最多的是字符串操作因此字符串函数在脚本中非常频繁。一些常用的字符串函数包括strcmp用于比较两个字符串。strcat用于连接两个字符串。strcpy用于拷贝字符串。 注意在VuGen中以char声明的字符串是只读的。如果试图给char类型的字符串赋值虽然编译会通过但在运行时会产生“Access Violation”的错误。解决这类问题的方法是将字符串声明为字符数组如char[100]。3.输出函数输出函数在调试脚本时非常有用。其中lr_output_message用于输出一条消息您可以在执行过程中插入此函数以输出调试信息方便排查问题。当在LoadRunner中进行脚本编写时除了常见的C标准函数外还提供了许多LoadRunner特定的标准函数这些函数用于执行各种性能测试任务并且通常与LoadRunner的特性和功能紧密相关。以下是一些常见的LoadRunner标准函数lr_start_transaction和lr_end_transaction这对函数用于开始和结束一个事务用于衡量一组操作的性能例如用户登录、搜索、结账等。web_url和web_submit_form这两个函数用于模拟用户在Web应用程序中的页面请求web_url用于访问URL而web_submit_form用于提交表单。lr_think_time用于模拟用户在操作之间的思考时间以更真实地模拟用户行为模式。lr_eval_string用于在运行时评估字符串表达式通常用于参数化脚本中的值。lr_save_string和lr_eval_string这对函数用于在脚本执行期间保存和检索字符串值可用于动态提取服务器响应中的数据并在后续请求中使用。lr_error_message用于输出错误消息方便调试和定位脚本中的问题。web_reg_find用于在服务器响应中查找特定的文本以进行文本检查用于验证页面是否正确加载。web_add_header用于添加自定义HTTP标头以满足特定的测试需求例如添加授权标头或自定义标头。以上是一些LoadRunner中常见的标准函数可以根据测试需求选择适当的函数来完成各种性能测试任务。这些函数使得LoadRunner成为一个强大而灵活的性能测试工具能够满足各种复杂的测试场景和需求。创建运行场景在LoadRunner中一个运行场景描述了在测试活动中可能发生的各种事件和操作。它包括了一组Load Generator机器列表、测试脚本列表以及大量的虚拟用户和虚拟用户组。具体来说一个运行场景包含以下几个要素Load Generator机器列表指定了用于模拟用户行为和生成负载的Load Generator机器的列表。这些机器负责发送请求到被测系统并模拟用户的行为。测试脚本列表包含了要在测试中执行的测试脚本。这些脚本定义了用户的操作流程、负载模式和性能测试目标。虚拟用户和虚拟用户组虚拟用户是由测试脚本定义的模拟用户它们模拟真实用户在被测系统中的行为。虚拟用户组则是一组具有相似行为的虚拟用户的集合可以根据需要配置不同数量的虚拟用户组以模拟不同的用户群体和负载条件。创建和管理运行场景通常通过LoadRunner中的Controller来完成。在Controller中我们可以指定Load Generator机器、加载测试脚本、配置虚拟用户组以及设置测试参数等。一旦设置好了运行场景我们就可以启动测试并监控测试过程中的性能表现。通过运行场景我们可以模拟真实的用户行为、生成负载并评估被测系统的性能表现。Controller打开方式方式一——通过VUG打开方式二——双击直接打开如果没有弹出窗口弹出一个框选择场景类型左边展示着VUG新建的所有脚本文件可以按需求添加到右边。我们不修改选择手动场景点击OK。通过Contrllor设置运行场景在LoadRunner中创建新场景时需要选择一种场景类型。下面对两种主要类型进行简要说明手动场景说明手动场景需要完全手动设置场景参数和配置。百分比模式分配Vuser在手动场景中可以选择使用百分比模式来在不同的脚本之间分配虚拟用户。这意味着我们需要定义要使用的虚拟用户总数并为每个脚本分配要运行的虚拟用户的百分比。如果不选择百分比模式则虚拟用户将按数量分配给每个脚本。面向目标的场景说明面向目标的场景是根据测试计划中定义的性能测试目标自动创建的。我们只需定义我们的测试目标LoadRunner将根据这些目标自动生成场景。特点该场景类型适用于在测试计划中明确定义了性能测试目标的情况。LoadRunner将根据我们提供的目标信息自动为我们创建一个符合目标要求的场景简化了场景设置的过程。选择适合我们需求的场景类型可以根据我们的测试目标和需求来确定。如果我们希望对场景进行详细的手动配置可以选择手动场景如果我们已经明确了测试目标并希望根据目标自动生成场景可以选择面向目标的场景。当然后者较为死板所以我们重点放在第一种手动创建场景上。选择场景类型为手动场景在手动场景设置页面中我们可以对场景进行详细的配置和调整。在性能测试领域通常有两种关键的角色施压机器Load Generators和被压机器SUTSystem Under Test。施压机器Load Generators施压机器是指用于模拟大量用户并发访问系统的计算机或服务器。这些机器通过运行性能测试工具如LoadRunner、JMeter等来模拟多个用户同时对系统发出请求以测试系统在不同负载下的性能表现。施压机器会生成大量的网络流量和请求以模拟真实用户的行为。它们通常会在测试期间不断向被压机器发送请求并记录系统的性能指标和响应时间等数据。被压机器System Under TestSUT被压机器是指要进行性能测试的目标系统或应用程序。这可能是一个Web服务器、数据库服务器、应用程序服务器等。被压机器接收来自施压机器的请求并对其进行处理。其性能表现会受到施加的负载的影响从而帮助测试人员评估系统在不同负载条件下的性能、稳定性和可靠性。在性能测试过程中施压机器和被压机器协同工作通过模拟真实用户行为和对系统进行压力测试以确保系统在生产环境中能够满足用户的需求并保持稳定的性能。1、Load Generator负载发生器负载发生器是执行场景的机器通常默认为本机。如果我们在其他计算机上安装了LoadRunner代理则可以将其添加为负载发生器从而进行调用。添加负载发生器后执行“连接”操作以确保状态为“就绪”。如果状态显示为“Failed”表示该负载发生器无法连接请检查连接原因。2、Vuser组模式在场景菜单中我们可以将场景设置为Vuser组模式或百分比模式。在Vuser组模式下可以根据Vuser数目设置每个脚本的执行方式。3、百分比模式在百分比模式下用户数目在全局计划中进行设置然后按照百分比进行分配。4、全局计划设置全局计划设置非常重要也是三种场景类型的主要区别。它包括初始化、启动Vuser、持续时间和停止Vuser等选项。初始化指定每个Vuser在何时进行初始化。通常选择在每个Vuser运行之前初始化。启动Vuser指定Vuser何时启动。一般会选择按阶梯逐步启动以减轻服务器压力。持续时间指定场景的总执行时间。选择“完成前一直运行”表示所有虚拟用户只运行一遍脚本就停止。停止Vuser指定Vuser的停止策略。5、设置结果文件保存路径通过菜单中的“结果”-“结果设置”我们可以设置结果文件的保存路径。建议在每次场景运行前重新设置路径。6、运行时设置包括日志和思考时间设置这些会影响测试结果。关闭日志和思考时间可以提高TPS。7、影响性能和TPS统计的设置项注意日志、思考时间以及自动事务选项等设置项它们都会影响性能测试结果和TPS统计。通过以上设置我们可以更加灵活地调整场景确保测试的准确性和可靠性并获取到我们所需的性能指标。选择场景类型为面向目标的场景场景目标的主要设置页面如下虚拟用户目标Virtual Users Goal如果我们想要了解系统在多少用户同时访问下的性能情况建议设置虚拟用户目标。这个目标指定了同时运行的虚拟用户数量以便我们评估系统在不同负载下的表现。每秒点击次数如果我们希望测试Web服务器的真实性能可以选择设置目标类型为每秒点击次数Hits per Second、每分钟页面数Pages per Minute或每秒事务数Transactions per Second。这些类型的目标需要指定一个虚拟用户的最小值和最大值范围。Controller会尝试以最少的虚拟用户数量来达到所定义的目标。如果最小用户数无法达到目标Controller会逐步增加用户数直到达到最大用户数。如果即使使用了最大用户数目标仍未实现就需要增加最大用户数然后重新执行场景。事务响应时间事务响应时间Transactions Response Time是评估系统性能的关键指标之一。以下是对事务响应时间的详细说明如果想知道在多少用户并发访问网站时事务的响应时间达到性能指标说明书中规定响应时间的最大值我们推荐使用Transactions Response Time 类型。在这种类型下需要指定需要测试的事务名称、虚拟用户数量的最小值和最大值以及预先定义好的事务的响应时间。在场景运行中如果我们使用了最多的虚拟用户但仍未达到定义的最大响应时间这说明Web服务器仍然有能力接受定义的最大虚拟用户数量。如果在使用了部分虚拟用户时就达到了定义的最大响应时间或者LoadRunner提示即将超过最大响应时间则需要重新设计或修补应用程序并可能需要升级Web服务器的软硬件。如果我们定义的目标是Pages per Minute、Hits/Transactions per SecondController会首先根据最小用户数除以定义的目标得到一个值然后确定每个用户应该达到的hits/transactions或pages per minute。然后Controller开始按以下策略加载用户如果选择自动加载虚拟用户LoadRunner会首先加载50个用户。如果定义的最大用户数小于50LoadRunner会一次性加载所有虚拟用户。如果选择在场景运行一段时间后达到目标LoadRunner会尝试在定义的时间段内达到目标根据时间限制和计算出的每个用户的hits、transactions或pages确定第一批加载的用户数量。如果选择按照一定的阶段达到目标LoadRunner会计算每个用户应该达到的数字然后确定第一批加载的用户数量。在每加载一批用户后LoadRunner会检查是否达到了这批用户的目标。如果未达到则会重新计算每个用户应该达到的目标数字并重新调整下一批加载用户的数量。默认情况下LoadRunner每两分钟加载一批用户。如果Controller加载了最大数量的用户仍未达到预定目标则LoadRunner会重新计算每个用户的目标并同时运行最大数量的用户以尝试达到预定目标。如果出现以下情况Pages per Minute、Hits/Transactions per Second类型的场景会置于“Failed”状态Controller使用了指定的最大数量的用户并且两次都没有达到目标。所有的用户运行都失败。没有足够的Load Generators机器可用。Controller增加了几批用户后pages per minute或hits/transactions per second没有增加。Controller加载第一批用户后定义的目标没有被捕捉到。##分析以及监控运行场景在运行过程中我们可以监视各个服务器的运行情况例如DataBase Server、Web Server等。我们可以通过添加性能计数器来实现监视。实际中更多的会使用第三方工具例如nmon来监控Linux等系统。以下是在Windows服务器上的示例在运行页面选择系统资源图中的Windows资源。点击右键选择“添加度量”。添加要监控的服务器。然后我们可以查看各个计数器的值通过这些值可以分析系统的瓶颈在哪里。分析实时监视图表在分析实时监视图表时我们可以关注以下几个关键点事务响应时间是否在可接受的时间内 我们可以通过“事务响应时间”图表来判断每个事务完成所需的时间。这可以帮助我们确定是否有任何事务的响应时间超出了预期的可接受时间范围。通过观察这些图表我们可以识别出哪些事务花费的时间最长以及是否有任何事务的响应时间超出了预定的可接受时间。网络带宽是否足够 通过“吞吐量”图表我们可以观察在场景运行期间每秒从Web服务器接收到的数据量。将这个值与网络带宽进行比较可以确定当前的网络带宽是否是系统的瓶颈。如果“吞吐量”图表显示的曲线随着用户数量的增加而呈现相对平缓的趋势而不是增长趋势那么这可能意味着当前的网络速度无法满足系统当前的流量需求。TPS值通过“每秒事务数”图表我们可以实时监测系统每秒处理的事务数量。这个值对于评估系统的性能非常重要。通过观察TPS值的变化我们可以了解系统的负载情况以及系统是否能够处理当前的事务负载。通过对这些实时监视图表的分析我们可以及时发现系统性能方面的问题并采取相应的措施来优化系统的性能。运行场景上述图片内容看不清晰下面图片能显示清晰的在Controller中的运行场景界面通常分为几个主要区域其中包括1、虚拟用户状态区Virtual User Status我们可以在这个区域看到当前正在运行的虚拟用户的状态和活动情况。每个虚拟用户通常显示其当前的状态如“运行中”、“等待中”、“完成”等。通过这个区域我们可以实时监视虚拟用户的运行情况及时发现问题并进行调整。2、日志消息区Log Messages在这个区域我们可以查看测试运行过程中生成的日志消息。日志消息可能包括关于测试步骤的信息、警告、错误信息以及其他与测试相关的事件。通过查看日志消息我们可以了解测试执行过程中的各种情况帮助定位和解决问题。3、运行时间区Run Time这个区域显示了当前测试场景的运行时间。我们可以随时查看测试已经运行了多长时间以便掌握测试的进展情况。4、图表区Graphs这个区域显示了一系列图表用于实时监视系统的性能指标和性能趋势。图表可以包括吞吐量、响应时间、错误率、CPU 使用率等性能指标帮助我们全面了解系统在不同负载下的表现。这里可以调整图表显示个数5、活动虚拟用户列表Active Virtual User List这个区域显示了当前正在活动的虚拟用户的详细信息如虚拟用户的编号、IP地址、运行时间等。我们可以通过这个区域查看每个虚拟用户的活动状态和运行情况以及它们的资源占用情况。6、活动事务列表Active Transaction List这个区域显示了当前正在执行的事务的详细信息如事务的名称、启动时间、结束时间、执行时间等。我们可以通过这个区域了解每个事务的执行情况包括事务的响应时间、成功率等指标。通过以上六种区域我们可以全面监控和管理测试场景的执行过程及时发现问题并做出调整确保测试的顺利进行和准确评估系统的性能表现。