软件性能测试模拟笔试题目

  • 欢迎关注我的公众号:造火箭的程序猿。收罗各种学习资源,分享科技趣事,推广好用但不是很大众的软件应用!
  • 简答题(2*10=20分)
  1. 客户交付一个性能测试项目,请阐述你的实施流程。

答案:

测试设计阶段:

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

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

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

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

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

测试环境准备:

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

 2)搭建测试环境;

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

测试执行阶段:

 1)录制脚本;

 2)调试脚本;

 3)执行场景;

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

测试分析阶段:

  1)分析测试数据;

提交测试报告

 

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

答案:

  1. 并发:所有用户在同一时刻对系统执行操作,一般指做同一件事情或操作。
  1. 在线:所有用户在一段时间内对系统执行操作。
  1. 请求响应时间

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

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

  1. 事务请求响应时间

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

  1. TPS(Transaction Per Second)

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

  1. 点击率(Hit Per Second)

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

  1. 资源利用率

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

  1. 写出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}"));

  1. 简述LoadRunner的工作原理?

 

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

 

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

 

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

 

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

 

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

 

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

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

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

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

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

  1. 什么是负载测试

 

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

  1. 什么是性能测试?

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

 

  1. 说明负载测试过程?

 

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

 

 

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

 

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

 

  1. 什么是LoadRunner的组件?

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

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

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

 

 

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

 

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

 

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

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

 

  1. 什么是场景

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

 

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

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

 

  1. 为什么创建参数?

 

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

 

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

 

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

 

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

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值