LordRunner 相关

1. LoadRunner 的工作原理是什么?

LoadRunner 通过模拟上千万用户实施并发负载,实时性能监控的系统行为和性能方式来确认和查找问题。

  1. VuGen 发生器:捕捉用户的业务流,并最终将其录制成一个脚本:

    • 选择相应的一种协议;
    • 在客户端模拟用户使用过程中的业务流程,并录制成一个脚本;
    • 编辑脚本和设置 Run-Time Settings 项;
    • 编译脚本生成一个没有错误的可运行的脚本。
  2. 控制器(Controller):

    • 设计场景,包括手动场景设计和目标场景设计两种方式;
    • 场景监控,可以实时监控脚本的运行的情况。可以通过添加计数器来监控 Windows 资源、应用服务器和数据库使用情况。

    场景设计的目的是设计出一个最接近用户实际使用的场景,场景设计越接近用户使用的实际情况, 测试出来的数据就越接近真实值。

  3. 负载发生器(Load Generators)

    模拟用户对服务器提交请求。通常,在性能测试过程中会将控制器和负载发生器分开;当使用多 台负载发生器时,一定要保证负载均衡(指在进行性能测试的过程中,保证每台负载发生器均匀地对 服务器进行施压)。

  4. 分析器(Analysis):主要用于对测试结果进行分析。

2. LoadRunner 分哪四部分?

  1. 用户动作设计(VuGen 发生器)
  2. 场景设计(Controller)
  3. 负载压力生成(Load Generators)
  4. 测试数据分析(Analysis)

3. LoadRunner 进行测试的流程?

  1. 测试测试
  2. 创建虚拟用户脚本
  3. 创建运行场景
  4. 运行测试脚本
  5. 监视场景
  6. 分析测试的结果

以上,最好是结合一个案例,根据以上流程来介绍。

4. 什么是并发?在 LoadRunner 中,如何进行并发的测试?集合点失败了会怎么样?

在同一时间点,支持多个不同的操作。

LoadRunner 中提供 IP 伪装,集合点,配合虚拟用户的设计,以及在多台电脑上设置,可以比较好的模拟真实的并发。

集合点,即是多个用户在某个时刻,某个特定的环境下同时进行虚拟用户的操作的。集合点失败,则集合点的操作就会取消,测试就不能进行。

5. LoadRunner 脚本如何录制和编写?

打开 LoadRunner 的 Virtual User Generator,新建脚本

在弹出框中选择 Web(HTTP/HTML)协议,然后点击创建按钮

弹出 start Recording 窗口,选择对应的录制类型(Internet Applications),选择浏览器(这里我们选择 IE),选择需要测试的 web 地址,选择浏览器安装地址。点击 ok 自动打开 IE 浏览器,进入相对应地址,在页面上方显示一个录制工具条。此时我们发给服务器的所有请求都会被记录在脚本中。输入用户名和密码,在点击登录前插入事务,输入事务名称,点击 ok 然后点击登录按钮,待登录成功,显示出成功页面后,点击结束事务,再点击 ok。然后点击工具条上的停止按钮。结束录制,回到脚本中。这时候需要等待会,待自动生成脚本。

生成的脚本含有刚才录制的信息,点击菜单栏,回放按钮。回放如果有红色,是报错信息,没有 红色,说明运行成功。

还可点击“View”菜单栏的“Test Results”进行查看。显示 passed 即为成功。脚本便可使用。

6. LoadRunner 中的 Think Time 有什么作用?

用户在执行连续操作之间等待的时间称为“思考时间”,它是决定对服务器施压大小的因素之一。设置思考时间,是为了更真实的模拟用户。Vuser 使用 Lr_think_time 函数来模拟用户思考时间。录制 Vuser 脚本时, VuGen 将录制实际思考时间,并插入到 Vuser 脚本中响应的 Lr_think_time 语句。可以编辑录制的 Lr_think_time 语句,并向 Vuser 脚本手动添加更多 Lr_think_time 语句。

可以通过选择【插入】>【步骤】>【思考时间】来插入思考时间步骤。当录制 Java Vuser 脚本时, 不会在 Vuser 脚本中生成 Lr_think_time 语句。

可以使用【Run-time Settings】,更改执行 Vuser 脚本时 Lr_think_time 语句的运行方式。

7. 在搜索引擎中输入汉字就可以解析到对应的域名, 请问如何用 LoadRunner 进行测试?

  • 建立测试计划,确定测试标准和测试范围

  • 设计典型场景的测试用例,覆盖常用业务流程和不常用的业务流程等

  • 根据测试用例,开发自动测试脚本和场景:

    1. 录制测试脚本

      • 新建一个脚本(Web/HTML 协议)
      • 点击录制按钮,在弹出的对话框的 URL 中输入访问地址
      • 在打开的浏览器中进行正常操作流程后,结束录制
      • 调试脚本并保存。可能要注意到字符集的关联
    2. 设置测试场景

      • 针对性能设置测试场景,主要判断在正常情况下,系统的平均事务响应时间是否达标
      • 针对压力负载设置测试场景,主要判断在长时间处于满负荷或者超出系统承载能力的条件下,系统是否会崩溃
    3. 执行测试,获取测试结果,分析测试结果

8. 一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别?

300 个用户在一个客户端上,会占用客户机更多的资源,而影响测试的结果。线程之间可能发生干扰,而产生一些异常。

300 个用户在一个客户端上,需要更大的带宽。

IP 地址的问题,可能需要使用 IP Spoof 来绕过服务器对于单一 IP 地址最大连接数的限制。

所有用户在一个客户端上,不必考虑分布式管理的问题;而用户分布在不同的客户端上,需要考虑使用控制器来整体调配不同客户机上的用户。同时,还需要给予相应的权限配置和防火墙设置。

9. 客户交付一个性能测试项目,请阐述你的实施流程

测试设计阶段:

  1. 了解被测系统的性能需求,定义测试目标和范围;
  2. 了解系统的技术信息,如系统架构等;
  3. 确定测试方案、进度安排,并制定测试计划,场景设置方案,及需要收集的测试数据;
  4. 同相关人员协商讨论测试方案;
  5. 准备数据收集模板;不同项目的性能测试,需要收集的数据不同;针对性的制定一个模板,更符合需要;

测试环境准备:

  1. 技术准备;选择性能测试工具;测试方案中涉及到的技术问题;测试数据的收集方案实现;如:如 何监控系统资源等;
  2. 搭建测试环境;
  3. 创建初始数据;如虚拟用户使用的账号等; 测试执行阶段:
    1. 录制脚本;
    2. 调试脚本;
    3. 执行场景;
    4. 收集测试数据,并简单整理; 测试分析阶段:
  4. 分析测试数据; 提交测试报告。

10. 解释 5 个常用的性能指标的名称与具体含义

  • 并发:所有用户在同一时刻对系统执行操作,一般指做同一件事情或操作。
  • 在线:所有用户在一段时间内对系统执行操作。
  • 请求响应时间:从 client 端发出请求到得到响应的整个时间;包括:client 端响应时间 + 网络响应时间 + Server 端响应时间。
  • 事务请求响应时间:完成相应事务所用的时间;这个是性能测试中重点关注的指标。
  • TPS(Transaction Per Second):每秒钟系统能够处理的交易或事务的数量。它是衡量系统处理能力的重要指标。TPS 是

LoadRunner 中重要的性能参数指标。

  • 点击率(Hit Per Second):每秒发送的 HTTP 请求的数量;点击率越大对 Server 的压力越大
  • 资源利用率:对不同资源的使用程度,如 CPU,I/O, 内存,……

11. 简述 LoadRunner 的工作原理?

LoadRunner 会自动监控指定的 URL 或应用程序所发出的请求及服务器返回的响应,它做为一个第三方(Agent)监视客户端与服务器端的所有对话,然后把这些对话记录下来,生成脚本,再次运行时模拟客户端发出的请求,捕获服务器端的响应。

12. 什么是集合点?设置集合点有什么意义?LoadRunner 中设置集合点的函数是哪个?

集合点:是一个并发访问的点,例如在测试计划中,可能会要求系统能够承受 1000 人同时提交数据,在 LoadRunner 中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到 1000 人,LoadRunner 就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到 1000 人时,LoadRunner 命令 1000 人同时去提交数据,并发访问的目的。

注意:集合点经常和事务结合起来使用,常放在事务的前面,集合点只能插入到 Action 部分,vuser_init 和 vuser_end 中不能插入集合点。集合点函数:lr_rendezvous(“SubmitData”)

13. HTML-based script 与 URL-based script 的脚本有什么区别?

使用“HTML-based script”的模式录制脚本,VuGen 为用户的每个 HTML 操作生成单独的步骤,这种脚本看上去比较直观;使用“URL-based script”模式录制脚本时,VuGen 可以捕获所有作为用户操作结果而发送到服务器的 HTTP 请求,然后为用户的每个请求分别生成对应方法。

通常,基于浏览器的 Web 应用会使用“HTML-based script”模式来录制脚本;而没有基于浏览器的 Web 应用、Web 应用中包含了与服务器进行交互的 Java Applet、基于浏览器的应用中包含了向服务器进行通信的 JavaScript/VBScript 代码、基于浏览器的应用中使用了 HTTPS 安全协议,这时使用“URL-based script”模式进行录制。

14. 如何设置 LoadRunner 才能让集合点只对一半的用户生效?

在 LoadRunner 中,进入 Controller->Scenario->Rendezvous …->Policy,系统弹出 Policy 对话框。在该对话框中可以设定集合点执行的策略。

第一项:表示当所有用户数的 X% 到达集合点时,开始释放等待的用户并继续执行场景。

第二项:表示当前正在运行用户数的 X% 到达集合点时,开始释放等待的用户并继续执行场景。第三项:表示当 X 个用户到达集合点时,开始释放等待的用户并继续执行场景。

其中还有一项 Timeout between Vusers,就 30 秒来说,当第一个用户到达集合点后,再等待 30 秒, 如果在 30 秒内到达的用户数达到指定的数量,就开始继续执行场景。如果在 30 秒内还没有达到指定 的用户数量,就不再等待,开始释放等待的用户并继续执行场景。

由上可知,将第一项用户数设置成 50% 可。

15. LoadRunner 中如何监控 Windows 资源?

进入被监视 windows 系统,开启以下二个服务:Remote Procedure Call(RPC) 和 Remote Registry Service; 在 controller 中,Windows Resources 窗口中右击鼠标选择 Add Measurements,添加被监控 windows 的 IP 地址,选择所属系统,然后选择需要监控的指标就可以开始监控。

16. 什么是负载测试?

负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,

系统所能承受的最大负载量的测试,例如,访问一个页面的响应时间规定不超过 1 秒,负载测试就是测试在响应时间为 1 秒时,系统所能承受的最大并发访问用户的数量。

17. 什么是性能测试?

性能测试:指在一定的约束条件下(指定的软件、硬件、网络环境等),确定系统所能承受的最 大负载压力。

18. 说明负载测试过程?

第一步:计划测试。在这里,我们需开发一个明确定义的测试计划,以确保该测试方案能完成负载测试目标。

第二步:创建虚拟用户。创建的脚本需要包含单个虚拟用户需要执行的操作、多个虚拟用户作为一个整体要执行的操作、以及能够作为事务来度量的操作。

第三步:创建场景。一个场景描述了在一个测试会话中发生的事件。它包含了当场景中运行时的机器、脚本和虚拟用户。我们使用 LoadRunner 中的 Controller 创建场景。我们可以创建手动场景也可以创建基于目标的场景。在手动场景中,我们定义虚拟用户的数量、负载生成器、被分配到每个脚本中虚拟用户的百分比。对于 web 测试, 我们创建基于目标的场景,其中目标即测试过程中要达成的性能目标。LoadRunner 会由此自动为我们创建一个场景。

第四步:运行场景。我们通过配置多个虚拟用户同时执行任务来模拟对服务器加压。在测试之前,我们设置场景的配置和计划安排。我们可以运行整个场景、一组虚拟用户或单个虚拟用户。

第五步:监控场景。我们使用 LoadRunner 联机运行来监测场景执行、事务系统资源,Web 资源, Web 服务器资源,Web 应用服务器资源,数据库服务器资源,网络延迟,流媒体资源,防火墙服务器资源,ERP 服务器资源,Java 性能监视器。

第六步:分析测试结果。在场景执行时,LoadRunner 记录了应用软件在不同负载下的性能。我们可以使用 LoadRunner 的图表和报告来分析应用软件的性能。

19. 我们什么时候做负载和性能测试?

我们一旦完成界面(GUI)测试,我们就可以执行负载测试。现代的软件系统架构庞大而复杂的。而单用户测试主要是侧重于系统组件的功能和用户界面的测试,应用测试侧重于整个系统的性能和可靠性。

例如,一个典型的应用测试场景,描绘了 1000 个用户,同时登录到系统。这就产生了问题,如系统的响应时间是多少,它会崩溃么;是否兼容不同的应用软件和系统平台;它是否可以支撑成千上万的用户等,这时我们就需要做负载和性能测试。

20. 什么是 LoadRunner 的组件?

LoadRunner 的组件有虚拟用户生成器,控制器、代理程序、LoadRunner 的分析器和监控器,LoadRunner 在线帮助

21. 你用 LoadRunner 的哪个组件录制脚本?

虚拟用户生成器(VuGen)可以用来录制脚本。它通过多种应用程序类型和通讯协议来确保你开发一个 Vuser 脚本。

22. 在多用户模式下你用 LoadRunner 的哪个组件来回放脚本?

Controller 组件可以用来在多用户模式下回放脚本。这个过程可以在一组虚拟用户以组的形式执行脚本的场景中运行时完成。

23. 什么是场景

场景定义了发生在每个测试会话中的事件。例如,一个场景定义和控制了要加载的虚拟用户的数量,要被执行的动作,虚拟用户模拟压力时的机器。

24. 解释 Web Vuser 脚本的录制模式

我们使用 VuGen 通过记录一个用户在客户端执行典型的业务流程来开发一个 Vuser 脚本。VuGen 通过记录客户端和服务器之间的交互来创建脚本。

例如,基于 Web 的应用程序,VuGen 监测客户端直到数据库,跟踪所有发送出的请求,再从数据库服务器接收。

我们使用 VuGen:监测应用程序和服务器的交互;使形成函数调用;插入生成的函数调用到一个 Vuser 脚本中。

25. 为什么创建参数?

参数就像脚本中的变量。他们被用来改变对服务器的输入值来模拟真正的用户。每次当脚本运行时,不同的数据设置被发送到服务器。

为了更精确的在 Controller 中测试,从而更好的模拟使用模型;一个脚本在系统上模拟很多不同的用户。

26. 什么是关联?解释自动关联和手动关联的区别

关联是用来获取每次脚本运行时由嵌套请求产生的唯一的数据。关联提供值以避免产生重复值的错误,并且优化代码(避免嵌套请求)。自动关联是我们自己为关联设置的一定规则。它可以是应用服务器特定的。这里的值被通过规则创建的数据取代。在手动关联里,我们要关联的值被浏览和创建关联以用来关联。

27. 什么是关联?解释自动关联和手动关联的区别,你在哪里设置自动关联的选项

从 web 自动关联的观点来说,可以在录制选项中和关联表单中设置。这里我们可以使整个脚本关联,选择在线信息或者离线的动作,在这里我们可以定义关联的规则。为数据库自动关联可以使用显示输出窗口和为了关联浏览,找出关联查询的图表,选择我们想关联的查询值来完成。如果我们知道要被关联的特殊值,我们只用为这个值创建关联,指定如何创建这个值。

28. 什么函数可以捕捉到 web Vuser 脚本的动态值?

Web_reg_save_param 函数保存动态的数据信息到一个参数中。

29. 什么时候你在虚拟用户产生器中禁用日志,什么时候选择标准日志和扩展日志?

一旦我们调试脚本来验证它的功能,我们可以只记录错误。当我们在场景中添加一个脚本,日志记录将自动被禁用。标准日志选项:当您选择标准日志,它在脚本执行调试时创建一个标准的功能和发送信息的日志。大负荷的测试场景时,禁用此选项。当你复制一个脚本到一个场景,日志自动禁用扩展日志选项:选择扩展日志创建一个扩展的日志,包括警告和其他信息。禁用此选项为大负荷的测试场景。当你复制一个脚本的场景,将被自动禁用日志记录。我们可以指定附加信息,用扩展日志选项添加到扩展日志中。

30. 你如何调试 LoadRunner 的脚本?

VuGen 包含两个选项帮助调试 VuGen 脚本—通过逐步命令和断点运行某一步。选项对话框中的 Debug 设置,使我们决定在场景运行期间进行跟踪的程度。Debug 信息被写到输出窗口,我们可以使用 lr_set_debug_message 函数手动设置你的脚本中的信息类。如果我们希望得到关于一小部分脚本的调试信息时,这就有意义了。

31. 在 run-time setting 里你可以设置哪些改变?

Run Time Setting 中我们所做的是:

  1. Pacing—它有迭代次数。
  2. Log—在此,我们有已禁用的标准日志。
  3. 扩展 Think Time—在 Think Time 里有两个选项,忽略 think time 和回放 think time。
  4. General— 在 General 选项卡中,我们可以设置 vusers 作为进程或者多线程,将每一步作为一个事务。

32. 你在哪里设置 Vuser 测试时迭代?

我们在 VuGen 中的 Run Time Setting 中设置迭代。这个导航是 Run Time Setting,Pacing 选项卡,设置迭代次数。

33. 你如何在负载下执行功能测试?

负载下的功能可以通过同时运行多个 Vuser 来测试。通过增加一定数量的 Vuser,我们可以判断服务器可以承受多少负载。

34. 什么是 Ramp up?你如何设置?

这个选项被用来逐步增加 Vuser 的数量 / 服务器上的负载。初始值设置,间隔的等待值可以被指定。要设置 Ramp up,进入“场景调度选项”

35. Vuser 作为线程运行的优势是什么?

VuGen 提供使用多线程的设施。这使每个产生器中运行更多的 Vuser。如果 Vuser 作为进程运行,相同的驱动程序为每个 Vuser 加载到内存,从而占用大量的内存。这限制了在单发生器中运行的 Vuser 的数量。如果 Vuser 作为线程运行,为给定数量的 Vuser(如 100),只有一个驱动程序的实例被加载到内存。每个线程共享父驱动程序的内存,从而使每个产生器运行更多的 Vuser。

36. 如果你想停止执行出错的脚本,怎么做?

Lr_abort 函数中止执行 Vuser 脚本。它指示 Vuser 停止执行 Action 部分,执行 vuser_end 部分,并结束执行。这个函数是有用的,当你需要手工停止一个脚本的执行,作为一个指定错误条件下的结果。当你使用这个函数停止一个脚本,Vuser 被分配成停止状态。为让它生效,我们必须首先在 Run—Time Setting 中取消选择“Continue on error”

37. 响应时间和吞吐量间的关系是什么?

吞吐量图表显示的是 Vuser 每秒从服务器收到的以字节为单位的数据量。当我们比较它和事务响应时间,我们会发现,若吞吐量下降,响应时间也会下降。同样,高峰时期的吞吐量和最高的响应时间大 约在同一个时间。

38. 你如何识别性能瓶颈?

性能瓶颈可以使用监控器监测。这些监控器可能是应用服务器监控器、web 服务器监控器和网络监控器。它们帮助找出在场景中导致响应时间增加有问题的区域。通常所做的测试指标是性能响应时间、吞吐量,点击率,网络延迟图等

39. 如果 web 服务器、数据库服务器、网络都一切正常,那么哪里可能有问题?

问题可能是系统本身,应用程序服务器或为应用程序编写的代码。

40. 你如何找出 web 服务器相关的问题?

利用 web 资源监控器,我们可以发现 web 服务器的性能。使用这些监测器我们可以分析发生在场景中的 web 服务器的吞吐量,每秒点击数、以及每秒 HTTP 响应数,每秒下载的网页数量。

41. 覆盖图和关联图之间的区别是什么?

覆盖图:它覆盖两个图表的内容,使共用一个 X 轴。合并后的图形左 Y 轴显示当前图形中的值,右 Y 轴显示合并图的 Y 轴的值。关联图:绘制相互对立的两个图表的 Y 轴。活动图的 Y 轴,成为合并后的图的 X 轴。合并图的 Y 轴成为合并后的图的 Y 轴

42. 你是怎么计划负载的?标准是什么?

计划负载测试,以决定用户数量,我们将使用的机器型号,在哪里运行。它是基于两个重要文件,任 务分配图和事务状况。任务分配图,给我们提供用户数量为一个特定的业务信息和负载时间。从这个图决定使用高峰期和不工作时段。事务配置文件,为我们提供了有关交事务方面的情况,包括事务的 名称和我们决定的它们关于场景的优先等级。

43. vuser_init 动作包含什么?

Vuser_init 动作包含登录到服务器的程序

44. vuser_end 动作包含什么?

Vuser_end 部分包含注销的程序。

45. 什么是 Think Time?你如何改变这个阈值?

Think Time 是一个真实的用户动作之间的等待时间。例如:当一个用户从服务器接收数据时,用户可以在响应前等待几秒钟来检查响应数据。此延迟就是 Think Time。更改这个阈值:阈值是一个标准水平, 思考时间低于阈值水平时将被忽略,Vugen 不会生成思考时间语句。默认值是 5 秒。我们可以在 Vugen 录制选项中改变 Think Time 阈值。

46. 简述使用 LoadRunner 的步骤

制定性能测试计划—>开发测试脚本—>设计测试场景—>执行测试场景—>监控测试场景—>分析测试结果

47. 什么是集合点?设置集合点有什么意义?LoadRunner 中设置集合点的函数是哪个?

在性能测试过程中,需要模拟大量用户在同一时刻,访问系统并同时操作某一任务,可以通过配置集 合点来实现,多个用户同时进行某操作;

集合点可以在服务器上创建密集的用户负载,使 LoadRunner 能够测试服务器在负载状态下的性能。

设置集合点函数:lr_rendezvous("Meeting"); // Meeting 是集合点名称

48. 你如何在负载测试模式下执行功能测试?

在负载测试模式下,可以通过同时运行数个虚拟用户,通过增加虚拟用户数,确定服务器在多大的负载量下,仍然可以正常运行,我一般进行核心功能操作,验证核心功能运行是否正常。

49. 什么是逐步递增?你如何来设置?

虚拟用户数随着负载时间逐渐增加,可以帮助确定系统响应时间减慢的准确时间点。

可以在“加压”选项卡中进行设置:将设置更改为:“每 30 秒启动 2 个 Vuser”

50. 响应时间和吞吐量之间的关系是什么?

当系统吞吐量未达到系统处理极限时,系统性能不会衰减,交易平均响应时间一般也不会递增,当系 统达到吞吐量极限时,客户端交易会在请求队列中排队等待,等待的时间会记录在响应时间中,故交易平均响应时间一般会递增。

51. 在 LoadRunner 中为什么要设置思考时间和 pacing

录制时记录的是客户端和服务端的交互,如果要精确模拟 用户的行为,那么客户操作客户端时花费了很多时间要怎么模拟呢?

录入填写提交的内容,从列表中下拉搜索选择特定的值等,这时 LoadRunner 不会记录用户的客户端操作,而是记录了用户这段时间,成为思考时间 (Think-time),因为用户的这些客户端操作不会影响服务端,只是让服务器端在这段时间内没有请求而已,所以加入思考时间就能模拟出熟练的或者生疏的用户操作,接近实际对于服务端的压力。

Vuser 思考时间模拟实际用户在不同操作之间等待的时间。例如,当用户收到来自服务器的数据时,可能要等待几秒钟查看数据,然后再做出响应。这种延迟就称为“思考时间”。VuGen 使用 lr_think_time 函数将思考时间值录制到 Vuser 脚本中。以下录制的函数指明用户等待了 8 秒钟才执行下一个操作:

lr_think_time(8);

当您运行了 Vuser 脚本并且 Vuser 遇到了上述 lr_think_time 语句时,默认情况下,Vuser 将等待 8 秒钟后再执行下一个操作。可以使用思考时间运行时设置来影响运行脚本时 Vuser 使用录制思考时间的方式。

52. 如何理解 TPS?

TPS 主要还是体现服务器对当前录制的事务的处理速度快慢。TPS 高并不代表性能好。

TPS 是 Transactions Per Second 的 缩 写,也就是事务数 / 秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服

务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数,最终利用这些信息来估计得分。客户机使用加权协函数平均方法来计算客户机的得分,试软件就是利用客户机的这些信息使用加权协函数平均方法来计算服务器端的整体 TPS 得分。

53. LoadRunner 中的设置线程和进程的区别

LoadRunner 中,在进行运行设置中有一项选择,是按进程运行 Vuser 或按线程运行 Vuser? 下面进行分别来讲:

  1. 按进程运行 Vuser:Controller 将使用驱动程序 mdrv 运行 Vuser。如果按进程方式运行每个 Vuser, 则对于每个 Vuser 实例,都将启动一个 mdrv 进程。如果设置了 10 个 Vuser,则在任务管理器中出现 10 个 mdrv 进程。多个 mdrv 进程肯定会占用大量内存及其他系统资源,这就限制了可以在任一负载生成器上运行的 Vuser 的数量。
  2. 按线程运行 Vuser: 及设置了 10 个 Vuser,其只会调用一个驱动程序 mdrv. 而每个 Vuser 都按线程运行,这些线程 Vuser 将共享父进程的内存段。这就节省了大量内存,从而可以在一个负载生成器上运行更多的 Vuser。

任何选择都是有两面性的。选择线程方式运行 Vuser 会带来一些安全问题。因为线程的资源是从进程资源中分配出来的,因此同一个进程中的多个线程会有共享的内存空间,这样可能会引起多个线程的同步问题,调度不好,就会出问题,不如 A 线程要用的资源就必须等待 B 线程释放,而 B 也在等待 其他资源释放才能继续。这就会出现这样的问题:同一个测试场景,用线程并发就会超时失败或报错,而用进程并发就没错。

虽然会有区别,但两种方式的运行都会给服务端造成的压力是一样的。

54. HTML-Based scrīpt 和 URL-Based scrīpt 录制的区别?

基于浏览器的应用程序推荐使用 HTML-Based scrīpt。不是基于浏览器的应用程序推荐使用 URL-Based scrīpt。

如果基于浏览器的应用程序中包含了 Java scrīpt 并且该脚本 向服务器产生了请求,比如 DataGrid 的分页按钮等,也要使用 URL-Based scrīpt 方式录制。

基于浏览器的应用程序中使用了 HTTPS 安全协议,使用 URL-Based scrīpt 方式录制。录制过程中不要使用浏览器的“后退”功能,LoadRunner 对其支持不太好。

55. LoadRunner 如何创建脚本?

  1. 启动 VuGen: 选择需要新建的协议脚本,可以创建单协议,或是多协议脚本
  2. 点击 Start Record 按钮,输入程序地址,开始进行录制
  3. 使用 VuGen 进行录制:创建的每个 Vuser 脚本都至少包含三部分:vuser_init、一个或多个 Actions 及 vuser_end。录制期间,可以选择脚本中 VuGen 要插入已录制函数的部分。运行多次迭代的 Vuser 脚本时,只有脚本的 Actions 部分重复,而 vuser_init 和 vuser_end 部分将不重复

56. LoadRunner 如何设置 Recording Options 选项? (以单协议 http/html 为例)

  1. 菜单 tools -> Recording Options 进入录制的设置窗体
  2. Recording 标签页:选用哪种录制方式
  3. Browser 标签页:浏览器的选择
  4. Recording Proxy 标签页:浏览器上的代理设置
  5. Advanced 标签页:可以设置录制时的 think time,支持的字符集标准等
  6. Correlation 标签页:手工设置关联,通过关联可在测试执行过程中保存动态值。使用这些设置可以配置 VuGen 在录制过程中执行的自动关联的程度。

57. LoadRunner 常用的分析点都有哪些?

  • Vusers:提供了生产负载的虚拟用户运行状态的相关信息,可以帮助我们了解负载生成的结果。
  • Rendezvous(负载过程中集合点下的虚拟用户):当设置集合点后会生成相关数据,反映了随着时间的推移各个时间点上并发用户的数目,方便我们了解并发用户的变化情况。
  • Errors(错误统计):通过错误信息可以了解错误产生的时间和错误类型,方便定位产生错误的原因。
  • Errors per Second(每秒错误):了解在每个时间点上错误产生的数目,数值越小越好。通过统计数据可以了解错误随负载的变化 情况,定为何时系统在负载下开始不稳定甚至出错。
  • Average Transaction Response Time(平均事务响应时间):反映随着时间的变化事务响应时间的变化情况,时间越小说明处理的速度越快。如果和用户负载 生成图合并,就可以发现用户负载增加对系统事务响应时间的影响规律。
  • Transactions per Second(每秒事务):TPS 吞吐量,反映了系统在同一时间内能处理事务的最大能力,这个数据越高,说明系统处理能力越强。
  • Transactions Summary(事务概要说明):统计事物的 Pass 数和 Fail 数,了解负载的事务完成情况。通过的事务数越多,说明系统的处理能力越强;失败的事务数越小说明系统越可靠。
  • Transaction performance Summary(事务性能概要):事务的平均时间、最大时间、最小时间柱状图,方便分析事务响应时间的情况。柱状图的落差越 小说明响应时间的波动小,如果落差很大,说明系统不够稳定。
  • Transaction Response Time Under Load(用户负载下事务响应时间):负载用户增长的过程中响应时间的变化情况,该图的线条越平稳,说明系统越稳定。
  • Transactions Response time(事务响应时间百分比):不同百分比下的事务响应时间范围,可以了解有多少比例的事物发生在某个时间内,也可以发现 响应时间的分布规律,数据越平稳说明响应时间变化越小。
  • Transaction Response Time(各时间段上的事务数):每个时间段上的事务个数,响应时间较小的分类下的是无数越多越好。
  • Hits per Second(每秒点击):当前负载重对系统所产生的点击量记录,每一次点击相当于对服务器发出了一次请求,数据越大 越好。
  • Throughput(吞吐量):系统负载下所使用的带宽,该数据越小说明系统的带宽依赖就越小,通过这个数据可以确定是不 是网络出现了瓶颈。
  • HTTP Responses per Second(每秒 HTTP 响应):每秒服务器返回各种状态的数目,一般和每秒点击量相同。点击量是客户端发出的请求数,而 HTTP 响应数是服务器返回的响应数。如果服务器的响应数小于点击量,那么说明服务器无法应答超出负载 的连接请求。
  • Connections per Second(每秒连接):统计终端的连接和新建的连接数,方便了解每秒对服务器产生连接的数量。同时连接数越多,说 明服务器的连接池越大,当连接数随着负载上升而停止时,说明系统的连接池已满,通常这时候服务 器会返回 504 错误。需要修改服务器的最大连接来解决该问题。

58. LoadRunner 不执行检查方法怎么解决?

在录制 Web 协议脚本中添加了检查方法 Web_find,但是在脚本回放的过程中并没有执行。

  • 错误现象:在脚本中插入函数 Web_find,在脚本中设置文本以及图像的检查点,但是在回放过程中并没有对设置的检查点进行检查,即 Web_find 失效。
  • 错误分析:由于检查功能会消耗一定的资源,因此 LoadRunner 默认关闭了对文本以及图像的检查, 所以在设置检查点后,需要开启检查功能。
  • 解决办法:打开运行环境设置对话框进行设置,在“Run-time Settings”的“Internet Protocol”选项里的“Perference”中勾选“Check”下的“Enable Image and text check”选项。

59. 并发用户数是什么?跟在线用户数什么关系?

并发主要是针对服务器而言,是否并发的关键是看用户操作是否对服务器产生了影响。因此,并 发用户数量的正确理解为:在同一时刻与服务器进行了交互的在线用户数量,这种交互既可以是单向 的传输数据,也可以是双向的传送数据。

并发用户数是指系统运行期间同一时刻进行业务操作的用户数量。

该数量取决于用户操作习惯、业务操作间隔和单笔交易的响应时间。

使用频率较低的应用系统并发用户数一般为在线用户数的 5% 左右。

使用频率较高的应用系统并发用户数一般为主线用户数的 10% 左右

60. 在什么地方设置 HTTP 页面 filter?

在 runtime_settings 中 download filter 里面进行设置。

61. 如何设置可以让一个虚拟 IP 对应到一个 Vuser?

62. 什么是 ContentCheck? 如何来用?

ContentCheck 的设置是为了让 VuGen 检测何种页面为错误页面。如果被测的 Web 应用没有使用自定义的错误页面,那么这里不用作更改;如果被测的 Web 应用使用了自定义的错误页面,那么这里需要定义,以便让 VuGen 在运行过程中检测,服务器返回的页面是否包含预定义的字符串,进而判断该页面是否为错误页面。如果是,VuGen 就停止运行,指示运行失败。

使用方法:点击在 runtime settings 中点击“ContentCheck”,然后新建立一个符合要求的应用程序和规则,设定需要查找的文本和前缀后缀即可使用。

63. 生成 WEB 性能图有什么意义?大概描述即可

可以很直观的看到,在负载下系统的运行情况以及各种资源的使用情况,可以对系统的性能瓶颈 定位、性能调优等起到想要的辅助作用。

64. 树视图和脚本视图各有什么优点?

Tree View 的好处是使用户更方便地修改脚本,Tree View 支持拖拽,用户可以把任意一个节点拖拽到他想要的地方,从而达到修改脚本的目的。用户可以右键单击节点,进行修改 / 删除当前函数参数属性, 增加函数等操作,通过 Tree View 能够增加 LoadRunner 提供的部分常用通用函数和协议相关函数。

Script View 适合一些高级用户,在 Script View 中能够看到一行行的 API 函数,通过 Script View 向脚本中增加一些其他 API 函数,对会编程的高手来说很方便

© 2022 刘士. All rights reserved.

结果匹配 ""

    没有匹配的结果 ""