性能测试实用面试题资料.docx
- 文档编号:17219574
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:37
- 大小:39.68KB
性能测试实用面试题资料.docx
《性能测试实用面试题资料.docx》由会员分享,可在线阅读,更多相关《性能测试实用面试题资料.docx(37页珍藏版)》请在冰点文库上搜索。
性能测试实用面试题资料
软件性能测试模拟笔试题目
(一)
注:
本试卷中题目所涉及性能测试工具如无特殊说明则均为LoadRunner。
一、简答题(2*10=20分)
1.客户交付一个性能测试项目,请阐述你的实施流程。
答案:
测试设计阶段:
1)了解被测系统的性能需求,定义测试目标和范围;
2)了解系统的技术信息,如系统架构等;
3)确定测试方案、进度安排,并制定测试计划,场景设置方案,及需要收集的测试数据;
4)同相关人员协商讨论测试方案;
5)准备数据收集模板;不同项目的性能测试,需要收集的数据不同;针对性的制定一个模板,更符合需要;
测试环境准备:
1)技术准备;选择性能测试工具;测试方案中涉及到的技术问题;测试数据的收集方案实现;如:
如何监控系统资源等;
2)搭建测试环境;
3)创建初始数据;如虚拟用户使用的账号等;
测试执行阶段:
1)录制脚本;
2)调试脚本;
3)执行场景;
4)收集测试数据,并简单整理;
测试分析阶段:
1)分析测试数据;
提交测试报告。
2.解释5个常用的性能指标的名称与具体含义。
答案:
●并发:
所有用户在同一时刻对系统执行操作,一般指做同一件事情或操作。
●在线:
所有用户在一段时间内对系统执行操作。
●请求响应时间
从client端发出请求到得到响应的整个时间;
包括:
client端响应时间+网络响应时间+Server端响应时间。
●事务请求响应时间
完成相应事务所用的时间;这个是性能测试中重点关注的指标。
●TPS(TransactionPerSecond)
每秒钟系统能够处理的交易或事务的数量。
它是衡量系统处理能力的重要指标。
TPS是LoadRunner中重要的性能参数指标。
●点击率(HitPerSecond)
每秒发送的HTTP请求的数量;点击率越大对Server的压力越大
●资源利用率
对不同资源的使用程度,如CPU,I/O,内存,……
3.写出5个Loadrunner中常用函数,并对其中2个举例说明用法。
答案:
字符串复制
strcpy(str,"Hello");
字符串连接
strcat(str,"World!
");
lr_message("str:
%s",str);
sprintf(s,"%slove%s.","I",“ocean");//产生:
“Iloveocean."
变量转为参数,将变量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-basedscript与URL-basedscript的脚本有什么区别?
答案:
使用“HTML-basedscript”的模式录制脚本,VuGen为用户的每个HTML操作生成单独的步骤,这种脚本看上去比较直观;使用“URL-basedscript”模式录制脚本时,VuGen可以捕获所有作为用户操作结果而发送到服务器的HTTP请求,然后为用户的每个请求分别生成对应方法。
通常,基于浏览器的Web应用会使用“HTML-basedscript”模式来录制脚本;而没有基于浏览器的Web应用、Web应用中包含了与服务器进行交互的JavaApplet、基于浏览器的应用中包含了向服务器进行通信的JavaScript/VBScript代码、基于浏览器的应用中使用了HTTPS安全协议,这时使用“URL-basedscript”模式进行录制。
7.如何设置LaodRunner才能让集合点只对一半的用户生效?
答案:
在Loadrunner中,进入Controller->Scenario->Rendezvous…->Policy,系统弹出Policy对话框。
在该对话框中可以设定集合点执行的策略。
第一项:
表示当所有用户数的X%到达集合点时,开始释放等待的用户并继续执行场景。
第二项:
表示当前正在运行用户数的X%到达集合点时,开始释放等待的用户并继续执行场景。
第三项:
表示当X个用户到达集合点时,开始释放等待的用户并继续执行场景。
其中还有一项TimeoutbetweenVusers,就30秒来说,当第一个用户到达集合点后,再等待30秒,如果在30秒内到达的用户数达到指定的数量,就开始继续执行场景。
如果在30秒内还没有达到指定的用户数量,就不再等待,开始释放等待的用户并继续执行场景。
由上可知,将第一项用户数设置成50%可。
8.LoadRunner的Controller组件中Pacing参数的作用是什么?
答案:
设置LoadRunner中事务(trsaction)在每次循环中的间隔时间,系统可以利用该间隔时间进行相应事务的结束收尾工作的处理。
加大Pacing参数,可使系统压力减小。
9.LoadRunner中如何监控Windows资源?
答案:
进入被监视windows系统,开启以下二个服务:
RemoteProcedureCall(RPC)和RemoteRegistryService;在controller中,WindowsResources窗口中右击鼠标选择AddMeasurements,添加被监控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.解释WebVuser脚本的录制模式
我们使用VuGen通过记录一个用户在客户端执行典型的业务流程来开发一个Vuser脚本。
VuGen通过记录客户端和服务器之间的交互来创建脚本。
例如,基于Web的应用程序,VuGen监测客户端直到数据库,跟踪所有发送出的请求,再从数据库服务器接收。
我们使用VuGen:
监测应用程序和服务器的交互;使形成函数调用;插入生成的函数调用到一个Vuser脚本中。
21.为什么创建参数?
参数就像脚本中的变量。
他们被用来改变对服务器的输入值来模拟真正的用户。
每次当脚本运行时,不同的数据设置被发送到服务器。
为了更精确的在Controller中测试,从而更好的模拟使用模型;一个脚本在系统上模拟很多不同的用户。
22.什么是关联?
解释自动关联和手动关联的区别
关联是用来获取每次脚本运行时由嵌套请求产生的唯一的数据。
关联提供值以避免产生重复值的错误,并且优化代码(避免嵌套请求)。
自动关联是我们自己为关联设置的一定规则。
它可以是应用服务器特定的。
这里的值被通过规则创建的数据取代。
在手动关联里,我们要关联的值被浏览和创建关联以用来关联。
23.什么是关联?
解释自动关联和手动关联的区别
24.你在哪里设置自动关联的选项
从web自动关联的观点来说,可以在录制选项中和关联表单中设置。
这里我们可以使整个脚本关联,选择在线信息或者离线的动作,在这里我们可以定义关联的规则。
为数据库自动关联可以使用显示输出窗口和为了关联浏览,找出关联查询的图表,选择我们想关联的查询值来完成。
如果我们知道要被关联的特殊值,我们只用为这个值创建关联,指定如何创建这个值
25.什么函数可以捕捉到webVuser脚本的动态值?
Web_reg_save_param函数保存动态的数据信息到一个参数中。
26.什么时候你在虚拟用户产生器中禁用日志,什么时候选择标准日志和扩展日志?
一旦我们调试脚本来验证它的功能,我们可以只记录错误。
当我们在场景中添加一个脚本,日志记录将自动被禁用。
标准日志选项:
当您选择标准日志,它在脚本执行调试时创建一个标准的功能和发送信息的日志。
大负荷的测试场景时,禁用此选项。
当你复制一个脚本到一个场景,日志自动禁用扩展日志选项:
选择扩展日志创建一个扩展的日志,包括警告和其他信息。
禁用此选项为大负荷的测试场景。
当你复制一个脚本的场景,将被自动禁用日志记录。
我们可以指定附加信息,用扩展日志选项添加到扩展日志中。
27.你如何调试LoadRunner的脚本?
VuGen包含两个选项帮助调试VuGen脚本—通过逐步命令和断点运行某一步。
选项对话框中的Debug设置,使我们决定在场景运行期间进行跟踪的程度。
Debug信息被写到输出窗口,我们可以使用lr_set_debug_message函数手动设置你的脚本中的信息类。
如果我们希望得到关于一小部分脚本的调试信息时,这就有意义了。
28.你怎么写LR中用户自定义的函数?
写几个你以前项目中的函数?
在我们创建用户自定义的函数之前我们需要创建外部的库函数。
我们添加这个库到VuGenbin目录下。
一旦库被添加,然后我们分配给用户自定义的函数作为参数。
函数应该有以下格式:
__declspec(dllexport)char*<函数名称>(char*,char*)。
用户自定义函数如下:
GetVersion,GetCurrentTime,GetPltform,这些都是我之前的项目中用到的用户自定义的函数。
29.在run-timesetting里你可以设置哪些改变?
RunTimeSetting中我们所做的是:
a)Pacing—它有迭代次数。
b)Log—在此,我们有已禁用的标准日志。
c)扩展ThinkTime—在ThinkTime里有两个选项,忽略thinktime和回放thinktime。
d)General—在General选项卡中,我们可以设置vusers作为进程或者多线程,将每一步作为一个事务。
30.你在哪里设置Vuser测试时迭代?
我们在VuGen中的RunTimeSetting中设置迭代。
这个导航是RunTimeSetting,Pacing选项卡,设置迭代次数。
31.你如何在负载下执行功能测试?
负载下的功能可以通过同时运行多个Vuser来测试。
通过增加一定数量的Vuser,我们可以判断服务器可以承受多少负载。
32.什么是Rampup?
你如何设置?
这个选项被用来逐步增加Vuser的数量/服务器上的负载。
初始值设置,间隔的等待值可以被指定。
要设置Rampup,进入“场景调度选项”
33.Vuser作为线程运行的优势是什么?
VuGen提供使用多线程的设施。
这使每个产生器中运行更多的Vuser。
如果Vuser作为进程运行,相同的驱动程序为每个Vuser加载到内存,从而占用大量的内存。
这限制了在单发生器中运行的Vuser的数量。
如果Vuser作为线程运行,为给定数量的Vuser(如100),只有一个驱动程序的实例被加载到内存。
每个线程共享父驱动程序的内存,从而使每个产生器运行更多的Vuser。
34.如果你想停止执行出错的脚本,怎么做?
Lr_abort函数中止执行Vuser脚本。
它指示Vuser停止执行Action部分,执行vuser_end部分,并结束执行。
这个函数是有用的,当你需要手工停止一个脚本的执行,作为一个指定错误条件下的结果。
当你使用这个函数停止一个脚本,Vuser被分配成停止状态。
为让它生效,我们必须首先在Run—TimeSetting中取消选择“Continueonerror”
35.响应时间和吞吐量间的关系是什么?
吞吐量图表显示的是Vuser每秒从服务器收到的以字节为单位的数据量。
当我们比较它和事务响应时间,我们会发现,若吞吐量下降,响应时间也会下降。
同样,高峰时期的吞吐量和最高的响应时间大约在同一个时间。
36.你如何识别性能瓶颈?
性能瓶颈可以使用监控器监测。
这些监控器可能是应用服务器监控器、web服务器监控器和网络监控器。
它们帮助找出在场景中导致响应时间增加有问题的区域。
通常所做的测试指标是性能响应时间、吞吐量,点击率,网络延迟图等
37.如果web服务器、数据库服务器、网络都一切正常,那么哪里可能有问题?
问题可能是系统本身,应用程序服务器或为应用程序编写的代码。
38.你如何找出web服务器相关的问题?
利用web资源监控器,我们可以发现web服务器的性能。
使用这些监测器我们可以分析发生在场景中的web服务器的吞吐量,每秒点击数、以及每秒HTTP响应数,每秒下载的网页数量。
39.你是怎么找到数据库中的相关问题?
监视运行“数据库”监测器和在“数据资源图”的帮助下,我们可以发现数据库中的相关问题。
例如您可以在Controller运行前指定您想要的资源来监控,然后你可以看到数据库中的相关问题
40.覆盖图和关联图之间的区别是什么?
覆盖图:
它覆盖两个图表的内容,使共用一个X轴。
合并后的图形左Y轴显示当前图形中的值,右Y轴显示合并图的Y轴的值。
关联图:
绘制相互对立的两个图表的Y轴。
活动图的Y轴,成为合并后的图的X轴。
合并图的Y轴成为合并后的图的Y轴
41.你是怎么计划负载的?
标准是什么?
计划负载测试,以决定用户数量,我们将使用的机器型号,在哪里运行。
它是基于两个重要文件,任务分配图和事务状况。
任务分配图,给我们提供用户数量为一个特定的业务信息和负载时间。
从这个图决定使用高峰期和不工作时段。
事务配置文件,为我们提供了有关交事务方面的情况,包括事务的名称和我们决定的它们关于场景的优先等级。
42.vuser_init动作包含什么?
Vuser_init动作包含登录到服务器的程序
43.vuser_end动作包含什么?
Vuser_end部分包含注销的程序。
44.什么是ThinkTime?
你如何改变这个阈值?
ThinkTime是一个真实的用户动作之间的等待时间。
例如:
当一个用户从服务器接收数据时,用户可以在响应前等待几秒钟来检查响应数据。
此延迟就是ThinkTime。
更改这个阈值:
阈值是一个标准水平,思考时间低于阈值水平时将被忽略,Vugen不会生成思考时间语句。
默认值是5秒。
我们可以在Vugen录制选项中改变ThinkTime阈值。
45.简述使用Loadrunner的步骤
制定性能测试计划—>开发测试脚本—>设计测试场景—>执行测试场景—>监控测试场景—>分析测试结果
46.什么是集合点?
设置集合点有什么意义?
Loadrunner中设置集合点的函数是哪个?
在性能测试过程中,需要模拟大量用户在同一时刻,访问系统并同时操作某一任务,可以通过配置集合点来实现,多个用户同时进行某操作;
集合点可以在服务器上创建密集的用户负载,使LoadRunner能够测试服务器在负载状态下的性能。
设置集合点函数:
lr_rendezvous(“Meeting”);//Meeting是集合点名称
47.请解释一下如何录制web脚本?
48.请解释一下自动关联和手动关联的不同。
49.哪个函数是用来截取虚拟用户脚本中的动态值?
(手工关联)
Web_reg_save_param函数主要根据需要做关联的动态数据前面和后面的固定字符串来识别、提取动态数据,所以在做关联时,需要找出动态数据的左、右边界字符串。
1.函数原型:
intweb_reg_save_param(constchar*ParamName,,LAST);
2.参数说明:
ParamNam:
存放动态数据的参数名称
ListofAttributes:
其它属性,包含Notfound、LB、RB、RelFrameID、Search、ORD、SaveOffset、Convert、SaveLen。
50.你如何在负载测试模式下执行功能测试?
在负载测试模式下,可以通过同时运行数个虚拟用户,通过增加虚拟用户数,确定服务器在多大的负载量下,仍然可以正常运行,我一般进行核心功能操作,验证核心功能运行是否正常。
51.什么是逐步递增?
你如何来设置?
虚拟用户数随着负载时间逐渐增加,可以帮助确定系统响应时间减慢的准确时间点。
可以在“加压”选项卡中进行设置:
如下图所示,将设置更改为:
“每30秒启动2个Vuser”
52.当你需要在出错时停止执行脚本,你怎么做?
53.响应时间和吞吐量之间的关系是什么?
当系统吞吐量未达到系统处理极限时,系统性能不会衰减,交易平均响应时间一般也不会递增,当系统达到吞吐量极限时,客户端交易会在请求队列中排队等待,等待的时间会记录在响应时间中,故交易平均响应时间一般会递增。
54.说明一下如何在LR中配置系统计数器?
以windows资源监控为例,可右键点“添加度量”,输入系统IP、选择平台类型,确定即可,详细参加LR自带操作手册^_^。
对于监控不同类型的操作系统,需要做一些准备工作,可参见监控操作系统资源部分。
55..如果web服务器、数据库以及网络都正常,问题会出在哪里?
56.如何发现web服务器的相关问题?
57..如何发现数据库的相关问题?
58.解释所有web录制配置?
59.你如何设计负载?
标准是什么?
60.什么是吞吐量?
61.在LoadRunner中为什么要设置思考时间和pacing
录制时记录的是客户端和服务端的交互,如果要精确模拟用户的行为,那么客户操作客户端时花费了很多时间要怎么模拟呢?
录入填写提交的内容,从列表中下拉搜索选择特定的值等,这时LOADRUNNER不会记录用户的客户端操作,而是记录了用户这段
时间,成为思考时间(Think-time),因为用户的这些客户端操作不会影响服务端,只是让服务器端在这段时间内没有请求而已。
,所
以加入思考时间就能模拟出熟练的或者生疏的用户操作,接近实际对于服务端的压力。
Vuser思考时间模拟实际用户在不同操作之间等待的时间。
例如,当用户收到来自服务器的数据时,可能要等待几秒钟查看数
据,然后再做出响应。
这种延迟就称为“思考时间”。
VuGen使用lr_think_time函数将思考时间值录制到Vuser脚本中。
以下录
制的函数指明用户等待了8秒钟才执行下一个操作:
lr_think_time(8);
当您运行了Vuser脚本并且Vuser遇到了上述lr_think_time语句时,默认情况下,Vuser将等待8秒钟后再执行下一个操作。
可
以使用思考时间运行时设置来影响运行脚本时Vuser使用录制思考时间的方式。
62.如何理解TPS?
TPS主要还是体现服务器对当前录制的事务的处理速度快慢。
TPS高并不代表性能好。
TPS是Tr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 性能 测试 实用 试题 资料