zoukankan      html  css  js  c++  java
  • LoadRunner性能测试笔试/面试题

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

    测试设计阶段:

     1)了解被测系统的性能需求,定义测试目标和范围;

     2)了解系统的技术信息,如系统架构等;

    3)确定测试方案、进度安排,并制定测试计划,场景设置方案,及需要收集的测试数据;

    4)同相关人员协商讨论测试方案;

     5)准备数据收集模板;不同项目的性能测试,需要收集的数据不同;针对性的制定一个模板,更符合需要;

    测试环境准备:

     1)技术准备;选择性能测试工具;测试方案中涉及到的技术问题;测试数据的收集方案实现;如:如何监控系统资源等;

     2)搭建测试环境;

     3)创建初始数据;如虚拟用户使用的账号等;

    测试执行阶段:

     1)录制脚本;

     2)调试脚本;

     3)执行场景;

      4)收集测试数据,并简单整理;

    测试分析阶段:

      1)分析测试数据;

    提交测试报告

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

    并发:所有用户在同一时刻对系统执行操作,一般指做同一件事情或操作。

    在线:所有用户在一段时间内对系统执行操作。

    请求响应时间 

              client端发出请求到得到响应的整个时间;

              包括:client端响应时间+网络响应时间+Server端响应时间。

    事务请求响应时间

               完成相应事务所用的时间;这个是性能测试中重点关注的指标。

    l TPSTransaction Per Second 

               每秒钟系统能够处理的交易或事务的数量。它是衡量系统处理能力的重要指标。TPSLoadRunner中重要的性能参数指标。

    点击率(Hit Per Second

               每秒发送的HTTP请求的数量;点击率越大对Server的压力越大

    资源利用率

               对不同资源的使用程度,如CPUI/O,内存,……

    3.写出5个Loadrunner中常用函数,并对其中2个举例说明用法。

    字符串复制

    strcpy(str,"Hello ") ;

    字符串连接

    strcat(str,"World !");

    lr_message("str: %s",str);

    sprintf(s, "%s love %s.", "I", “ocean"); //产生:“I love ocean. "

    变量转为参数,将变量str的值存到参数Param中

    lr_save_string(str,"Param");

    参数复制

    lr_save_string(lr_eval_string("{Param}"),"Param_1");

    参数转为变量

    strcpy(str1,lr_eval_string("{Param_1}"));

    4.简述LoadRunner的工作原理?

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

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

    集合点:是一个并发访问的点,例如在测试计划中,可能会要求系统能够承受1000 人同时提交数据,在LoadRunner 中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据,并发访问的目的。
    注意:集合点经常和事务结合起来使用,常放在事务的前面,集合点只能插入到Action 部分,vuser_init和vuser_end 中不能插入集合点。集合点函数如下:lr_rendezvous(“SubmitData”)

    6.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”模式进行录制。

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

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

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

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

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

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

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

    8.LoadRunner的Controller组件中Pacing参数的作用是什么?

    设置LoadRunner中事务(trsaction)在每次循环中的间隔时间,系统可以利用该间隔时间进行相应事务的结束收尾工作的处理。加大Pacing参数,可使系统压力减小。

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

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

    10.如果让QALoad模拟LoadRunner中只对关注的性能点进行迭代测试,你有什么好方法?

    可以将QAload脚本中关注的事务点写成一个循环,如果进行长时间的综合场景测试,则可将其写成一个永真循环,如while (1) {事务点},则对关注的性能点进行循环,而脚本其他代码不会进行循环。

    11.什么是负载测试

    负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试,例如,访问一个页面的响应时间规定不超过1秒,负载测试就是测试在响应时间为1秒时,系统所能承受的最大并发访问用户的数量。

    12.什么是性能测试?

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

    13.说明负载测试过程?

    第一步:计划测试。在这里,我们需开发一个明确定义的测试计划,以确保该测试方案能完成负载测试目标。第二步:创建虚拟用户。创建的脚本需要包含单个虚拟用户需要执行的操作、多个虚拟用户作为一个整体要执行的操作、以及能够作为事务来度量的操作。第三步:创建场景。一个场景描述了在一个测试会话中发生的事件。它包含了当场景中运行时的机器、脚本和虚拟用户。我们使用LoadRunner中的Controller创建场景。我们可以创建手动场景也可以创建基于目标的场景。在手动场景中,我们定义虚拟用户的数量、负载生成器、被分配到每个脚本中虚拟用户的百分比。对于web测试,我们创建基于目标的场景,其中目标即测试过程中要达成的性能目标。LoadRunner会由此自动为我们创建一个场景。第四步:运行场景。我们通过配置多个虚拟用户同时执行任务来模拟对服务器加压。在测试之前,我们设置场景的配置和计划安排。我们可以运行整个场景、一组虚拟用户或单个虚拟用户。第五步:监控场景。我们使用LoadRunner联机运行来监测场景执行、事务系统资源,Web资源,Web服务器资源,Web应用服务器资源,数据库服务器资源,网络延迟,流媒体资源,防火墙服务器资源,ERP服务器资源,Java性能监视器。第六步:分析测试结果。在场景执行时,LoadRunner记录了应用软件在不同负载下的性能。我们可以使用LoadRunner的图表和报告来分析应用软件的性能。

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

    我们一旦完成界面(GUI)测试,我们就可以执行负载测试。现代的软件系统架构庞大而复杂的。而单用户测试主要是侧重于系统组件的功能和用户界面的测试,应用测试侧重于整个系统的性能和可靠性。例如,一个典型的应用测试场景,描绘了1000个用户,同时登录到系统。这就产生了问题,如系统的响应时间是多少,它会崩溃么;是否兼容不同的应用软件和系统平台;它是否可以支撑成千上万的用户等,这时我们就需要做负载和性能测试。

    15.什么是LoadRunner的组件?

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

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

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

     17在多用户模式下你用LoadRunnner的哪个组件来回放脚本?

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

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

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

    19.什么是场景

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

    20解释Web Vuser脚本的录制模式

    我们使用VuGen通过记录一个用户在客户端执行典型的业务流程来开发一个Vuser脚本。VuGen通过记录客户端和服务器之间的交互来创建脚本。例如,基于Web的应用程序,VuGen监测客户端直到数据库,跟踪所有发送出的请求,再从数据库服务器接收。我们使用VuGen:监测应用程序和服务器的交互;使形成函数调用;插入生成的函数调用到一个Vuser脚本中。

    21.为什么创建参数?

    参数就像脚本中的变量。他们被用来改变对服务器的输入值来模拟真正的用户。每次当脚本运行时,不同的数据设置被发送到服务器。为了更精确的在Controller中测试,从而更好的模拟使用模型;一个脚本在系统上模拟很多不同的用户。

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

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

    23.你在哪里设置自动关联的选项

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

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

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

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

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

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

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

    27.你怎么写LR中用户自定义的函数?写几个你以前项目中的函数?

    在我们创建用户自定义的函数之前我们需要创建外部的库函数。我们添加这个库到VuGen bin目录下。一旦库被添加,然户我们分配给用户自定义的函数作为参数。函数应该有以下格式:__declspecdllexportchar*<函数名称>char*char *)。用户自定义函数如下:GetVersionGetCurrentTimeGetPltform,这些都是我之前的项目中用到的用户自定义的函数。

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

    Run Time Setting中我们所做的是:aPacing—它有迭代次数。bLog—在此,我们有已禁用的标准日志。c)扩展Think Time—在Think Time里有两个选项,忽略think time和回放think timed)General—在General选项卡中,我们可以设置vusers作为进程或者多线程,将每一步作为一个事务。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    38.你是怎么找到数据库中的相关问题?

    监视运行“数据库”监测器和在“数据资源图”的帮助下,我们可以发现数据库中的相关问题。例如您可以在Controller运行前指定您想要的资源来监控,然后你可以看到数据库中的相关问题

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

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

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

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

    41.vuser_init动作包含什么?

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

    42.vuser_end动作包含什么?

    Vuser_end部分包含注销的程序。

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

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

    44.简述使用Loadrunner的步骤

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

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

    在性能测试过程中,需要模拟大量用户在同一时刻,访问系统并同时操作某一任务,可以通过配置集合点来实现,多个用户同时进行某操作;
      集合点可以在服务器上创建密集的用户负载,使LoadRunner能够测试服务器在负载状态下的性能。
      设置集合点函数:lr_rendezvous(“Meeting”) // Meeting是集合点名称

    46.哪个函数是用来截取虚拟用户脚本中的动态值?(手工关联)

    Web_reg_save_param函数主要根据需要做关联的动态数据前面和后面的固定字符串来识别、提取动态数据,所以在做关联时,需要找出动态数据的左、右边界字符串。
      1.函数原型:
      int web_reg_save_param (const char *ParamName, , LAST);
      2.参数说明:
      ParamNam:存放动态数据的参数名称
      List of Attributes:其它属性,包含NotfoundLBRBRelFrameIDSearchORDSaveOffsetConvertSaveLen

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

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

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

    虚拟用户数随着负载时间逐渐增加,可以帮助确定系统响应时间减慢的准确时间点。
    可以在“加压”选项卡中进行设置:如下图所示,将设置更改为:“每 30 秒启动 2  Vuser”

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

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

    50.说明一下如何在LR中配置系统计数器?

    windows资源监控为例,可右键点“添加度量”,输入系统IP、选择平台类型,确定即可,详细参加LR自带操作手册^_^
      对于监控不同类型的操作系统,需要做一些准备工作,可参见监控操作系统资源部分。

    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录制SQL Server介绍一下如何测试一个sql语句或存储过程的执行性能。

    主要分如下几个步骤完成:

    第一步、测试准备

    第二步、配置ODBC数据源

    第三步、录制SQL语句在Sql Server查询分析器中的运行过程

    第四步、优化录制脚本,设置事务

    第五步、改变查询数量级查看SQL语句的性能

    第六步、在controller中运行脚本

    56.LoadRunner如何创建脚本?

    1.启动VuGen:选择需要新建的协议脚本,可以创建单协议,或是多协议脚本

    2. 点击Start Record按钮,输入程序地址,开始进行录制

    3. 使用VuGen进行录制:创建的每个 Vuser 脚本都至少包含三部分:vuser_init、一个或多个 Actions 及vuser_end。录制期间,可以选择脚本中 VuGen 要插入已录制函数的部分。运行多次迭代的Vuser 脚本时,只有脚本的Actions部分重复,而vuser_init和vuser_end部分将不重复

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

    1.菜单tools->Recording Options进入录制的设置窗体

    2.Recording标签页:选用哪种录制方式

    3.Browser标签页:浏览器的选择

    4.Recording Proxy 标签页:浏览器上的代理设置

    5.Advanced 标签页:可以设置录制时的think time,支持的字符集标准等

    6.Correlation标签页:手工设置关联,通过关联可在测试执行过程中保存动态值。使用这些设置可以配置 VuGen 在录制过程中执行的自动关联的程度。

    58.LoadRunner如何选择协议?

    LoadRunner属于应用在客户端的测试工具,在客户端模拟大量并发用户去访问服务器,从而达到给服务器施加压力的目的。所以说LoadRunner模拟的就是客户端,其脚本代表的是客户端用户所进行的业务操作,即只要脚本能表示用户的业务操作就可以。

    1.LR支持多种协议,请大家一定要注意,这个地方协议指的是你的Client端通过什么协议访问的Server,Client一般是面向最终使用者的,Server是第一层Server端,因为现在的体系架构中经常Server层也分多个层次,什么应用层,什么数据层等等,LR只管Client如何访问第一层Server.

    2.特别要注意某些应用,例如一个Web系统,这个系统是通过ActiveX控件来访问后台的,IE只是一个容器,而ActiveX控件访问后台是通过COM/DCOM协议的,这种情况就不能使用Web协议,否则你什么也录制不到,所以,LR工程师一定要了解应用程序的架构和使用的技术。   3. 象HTTPS,一般来讲一定要选择多协议,但在选择具体协议的时候一定只选Web协议,这时候才能作那个端口映射。

    n通常协议选择

    1.对于常见的B/S系统,选择Web(Http/Html)

    2.测一个C/S系统,根据C/S结构所用到的后台数据库来选择不同的协议,如果后台数据库是sybase,则采用sybaseCTlib协议,如果是SQL server,则使用MS SQL server的协议,至于oracle 数据库系统,当然就使用Oracle 2-tier协议。

    3.对于没有数据库的C/S(ftp,smtp)这些可以选择Windwos Sockets协议。

    4.至于其他的ERP,EJB(需要ejbdetector.jar),选择相应的协议即可.

    5. 一般可以使用Java vuser协议录制由java编写的C/S模式的软件, ,当其他协议都没有用时,只能使用winsocket协议

    59.Loadrunner支持哪些常用协议?

    Web(HTTP/HTML)

    Sockets

    .net 协议

    web services

    常用数据库协议(ODBC,ORACLE,SQLSERVER 等)

    邮件(SMTP、pop3)

    其它协议

    60.性能测试的类型都有哪些?

    负载测试(Load Test)

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

    压力测试(Stress Test)

    通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,并以此来获得系统能够提供的最大服务级别的测试。

    压力测试是一种特定类型的负载测试。

    疲劳强度测试

    通常是采用系统稳定运行情况下能够支持的最大并发用户数或者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。

    疲劳强度测试可以反映出系统的性能问题,例如内存泄漏等。

    大容量测试(Volume Test)

    对特定存储、传输、统计、查询业务的测试。

    61.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错误。需要修改服务器的最大连接来解决该问题。

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

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

    错误现象:在脚本中插入函数Web_find,在脚本中设置文本以及图像的检查点,但是在回放过程中并没有对设置的检查点进行检查,即Web_find失效。

    错误分析:由于检查功能会消耗一定的资源,因此LoadRunner默认关闭了对文本以及图像的检查,所以在设置检查点后,需要开启检查功能。

    解决办法:打开运行环境设置对话框进行设置,在“Run-time Settings”的“Internet Protocol”选项里的“Perference”中勾选“Check”下的“Enable Image and text check”选项。

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

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

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

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

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

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

     63.LoadRunner请求无法找到如何解决?

    在录制Web协议脚本回放脚本的过程中,会出现请求无法找到的现象,而导致脚本运行停止。

    错误现象:Action.c(41): Error -27979: Requested form. not found [MsgId: MERR-27979]

    Action.c(41): web_submit_form. highest severity level was “ERROR”,0 body bytes, 0 header bytes [MsgId: MMSG-27178]”

    这时在tree view中看不到此组件的相关URL。

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

    解决办法:打开录制选项配置对话框进行设置,在“Recording Options”的“Internet Protocol”选项里的“Recording”中选择“Recording Level”为“HTML-based script”,单击“HTML Advanced”,选择“Script. Type”为“A script. containing explicit”。然后再选择使用“URL-based script”模式来录制脚本。

     64.LoadRunner HTTP服务器状态代码都有哪些?如何解决?

    在录制Web协议脚本回放脚本的过程中,会出现HTTP服务器状态代码,例如常见的页面-404错误提示、-500错误提示。

    错误现象1:-404 Not Found服务器没有找到与请求URI相符的资源,但还可以继续运行直到结束。

    错误分析:此处与请求URI相符的资源在录制脚本时已经被提交过一次,回放时不可再重复提交同样的资源,而需要更改提交资源的内容,每次回放一次脚本都要改变提交的数据,保证模拟实际环境,造成一定的负载压力。

    解决办法:在出现错误的位置进行脚本关联,在必要时插入相应的函数。

    错误现象2:-500 Internal Server Error服务器内部错误,脚本运行停止。

    错误分析:服务器碰到了意外情况,使其无法继续回应请求。

    解决办法:出现此错误是致命的,说明问题很严重,需要从问题的出现位置进行检查,此时需要此程序的开发人员配合来解决,而且产生的原因根据实际情况来定,测试人员无法单独解决问题,而且应该尽快解决,以便于后面的测试

    65.HTTP的超时有哪三种?

    HTTP-request connect timeout、HTTP-request receive timeout、step download timeout

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

    runtime_settings中download filter里面进行设置。

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

    利用线程和进程做中介,逻辑上的对应。

    选中Expert Mode,设置Options中的General

    68.什么contentcheck?如何来用?

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

    面。如果是,VuGen就停止运行,指示运行失败。

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

    69.network中的speed simulation是模拟的什么带宽?

    模拟用户访问速度的带宽。

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

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

     71.WAN emulation是模拟什么的?

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

    72.在设置windows资源图监控的时候,用到的是什么端口和协议?在这一过程中,会有大概哪些问题?(大概描述)

    microsoft-ds :445 ;要有权限、开启服务。

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

    Tree View的好处是使用户更方便地修改脚本,Tree View支持拖拽,用户可以把任意一个节点拖拽到他想

    要的地方,从而达到修改脚本的目的。用户可以右键单击节点,进行修改/删除当前函数参数属性,增加函

    数等操作,通过Tree View能够增加LoadRunner提供的部分常用通用函数和协议相关函数。

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

     74.LR中的API分为几类?

    A:通用的API:,就是跟具体的协议无关,在任何协议的脚本里都能用的;

    B:针对协议的:像lrs前缀是winsock的;lrd的是针对database;

    C:自定义的:这个范围就比较广了

  • 相关阅读:
    最近面试有感,不要耍小聪明,面试官都是开了上帝视角的
    Mac OS X上编写 ASP.NET vNext 系列中断和再开声明
    Mac OS X 上编写 ASP.NET vNext (二) IDE配置
    Mac OS X上编写 ASP.NET vNext(一)KRE环境搭建
    Redhat Linux /etc/profile 与 /etc/bashrc 的区别
    IIS7 Application Pool Integrate Mode 和 Classic Mode 的区别
    Linux 学习笔记(一) 入门
    SQL Server 常用分页SQL
    winform 如何控制输入法
    winform 记录全局异常捕获
  • 原文地址:https://www.cnblogs.com/ldf223/p/9871791.html
Copyright © 2011-2022 走看看