您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > 性能测试面试题总结(答案全)
1.什么是负载测试?什么是性能测试?负载测试是一种性能测试指数据在超负荷环境中运行,程序是否能够承担在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征,例如,响应时间、事务处理速率和其他与时间相关的方面。性能测试主要使用场景测试软件系统的性能是否满足生产性能的要求,包括负载测试,强度测试,数据库容量测试,基准测试以及竞争(并发,用户)测试。2.性能测试包含了哪些测试(至少举出3种)包括负载测试,强度测试,数据库容量测试,基准测试以及竞争测试3.简述性能测试的步骤第一步:需求分析、计划测试,设计测试用例第二步:测试设计和开发(测试脚本录制及调试,测试场景设计)第三步:测试执行(测试环境搭建,场景部署,场景执行,监视场景)第四步:测试结果分析,性能问题定位,测试报告评估4.简述使用Loadrunner的步骤制定性能测试计划-》使用Vuser录制调试脚本VuGen-》用LoadrunnerController设置场景-》运行场景-》监视场景byLoadrunneronlineruntime等-》分析测试结果5.什么时候可以开始执行性能测试?功能测试通过;一般需要进行性能测试的系统,都是用户量比较大、业务使用比较频繁、比较重要的功能模块。6.LoadRunner由哪些部件组成?VirtualUserGenerator-生成用于“Controlier”部署的VusersLoadRunnerControlier-产生压力和搜集测试结果数据LoadRunnerAnalysis-通过图表分析工具来编译和显示测试结果7.你使用LoadRunner的哪个部件来录制脚本?使用VirtualUserGenerator录制测试脚本8.LoadRunner的哪个部件可以模拟多用户并发下回放脚本?LoadRunner的Controller组件。9.什么是集合点?设置集合点有什么意义?Loadrunner中设置集合点的函数是哪个?在性能测试过程中,需要模拟大量用户在同一时刻,访问系统并同时操作某一任务,可以通过配置集合点来实现,多个用户同时进行某操作;集合点可以在服务器上创建密集的用户负载,使LoadRunner能够测试服务器在负载状态下的性能。设置集合点函数:lr_rendezvous(Meeting);//Meeting是集合点名称10.什么是场景?场景的重要性有哪些?如何设置场景?场景用于模拟用户实际业务操作;LoadRunner中场景有手工场景和面向目标的场景。设置场景:选择场景类型、设置运行时设置、模拟用户数、加减压方式、持续时间,配置负载生成器。11.请解释一下如何录制web脚本?利用VirtualUserGenerator录制测试脚本,录制步骤:1、选择合适的协议-Web(Http/Html),2、设置录制选项(HTML-basedScript/URL-basedScript)3、开始录制12.为什么要创建参数?如何创建参数?A12:LoadRunner在录制脚本的时候,只是忠实的记录了所有从客户端发送到服务器的数据,而在进行性能测试的时候,为了更接近真实的模拟现实应用,对于某些信息需要每次提交不同的数据,或者使用多个不同的值进行循环输入。这时,在LoadRunner中就可以进行参数化设置,以使用多个不同的值提交应用请求。【参数化】:使用指定数据源中的值来替换脚本录制生成的语句中的参数。【参数化好处】●减少脚本的大小●提供使用不同的值执行脚本的能力,更加真实的模拟现实应用。【参数化步骤】●用参数替换Vuser脚本中的常量值●为参数设置属性和数据源13.什么是关联?请解释一下自动关联和手动关联的不同。A13:【关联的定义】简单的说:就是把脚本中某些写死(固定)的数据,转变成动态的数据,或者说将前面语句的结果数据保存下来,然后在后面的语句提交请求时使用这些数据。【需要关联的前提条件】:客户端需要从服务器端返回数据中获取部分数据,并将这些部分数据处理后作为自己下一次请求的一部分发出。【自动关联与手工关联的不同】:自动关联是在脚本录制过程中,VuGen会根据已经制定好的规则,自动找出需要关联的值或脚本录制完成后,执行脚本一次,通过CorrelationStudio自动找出需要关联的数据,并建立关联;而手动关联是需要录制两份相同业务流程的脚本,输入的数据要相同,利用WinDiff工具,找出两份脚本之间不同之处,也就是需要关联的数据,再通过web_reg_save_param函数手动建立关联,将脚本中用到关联的数据参数化。14.你如何找出哪里需要关联?请给一些你所在项目的实例。A14:1、录制两份相同业务流程的脚本,输入的数据要相同2、利用WinDiff工具,找出两份脚本之间不同之处,也就是需要关联的数据3、通过web_reg_save_param函数手动建立关联,将脚本中用到关联的数据参数化。通过录制两份脚本,进行对比,可知jsessionid、sap-ext-sid、sap-wd-cltwndid、sap-wd-tstamp需要进行关联。15.你在哪里设置自动关联选项?录制选项中进行设置16.哪个函数是用来截取虚拟用户脚本中的动态值?(手工管联)A16:Web_reg_save_param函数主要根据需要做关联的动态数据前面和后面的固定字符串来识别、提取动态数据,所以在做关联时,需要找出动态数据的左、右边界字符串。1.函数原型:intweb_reg_save_param(constchar*ParamName,ListofAttributes,LAST);2.参数说明:ParamNam:存放动态数据的参数名称ListofAttributes:其它属性,包含Notfound、LB、RB、RelFrameID、Search、ORD、SaveOffset、Convert、SaveLen。17.你在VUGen中何时选择关闭日志?何时选择标准和扩展日志?在脚本运行调试成功后应关闭日志。创建发送函数和消息日志时用标准日志,创建警告和其他信息是用扩展日志。18.你如何调试LoadRunner脚本?在VuGen设置断点breakpoints,然后使用单步跟踪RunStepbyStep,输出调试日志19你在LR中如何编写自定义函数?请给出一些你在以前进行的项目中编写的函数。Givemefewfunctionsyouwroteinyourpreviousproject?-BeforewecreatetheUserDefinedfunctionsweneedtocreatetheexternallibrary(DLL)withthefunction.WeaddthislibrarytoVuGenbindirectory.Oncethelibraryisaddedthenweassignuserdefinedfunctionasaparameter.Thefunctionshouldhavethefollowingformat:__declspec(dllexport)char*functionname(char*,char*)lr_load_dll(user32.dll);Examplesofuserdefinedfunctionsareasfollows:GetVersion,GetCurrentTime,GetPltformaresomeoftheuserdefinedfunctionsusedinmyearlierproject.20.在运行设置下你能更改那些设置?pacing:每个虚拟用户脚本包括三个部分:vuser_init,Run(Actions),vuser_end.当你运行脚本的时候你能通知,虚拟用户重复执行run部分,每一个重复做为一个iteration.注意:vuser_init和vuser_end部分是不被重复的。ThinkTimeSettings:虚拟用户thinktime仿效一个真实用户在活动中等待的时间,例如:当一个用户从服务器接受数据的时候,在响应前这个用户需要等待数秒来接受数据,这个被耽搁的时间就是thinktime。ErrorHandling:你能指定一个虚拟用户在脚本执行期间如何处理错误,默认的,当一个虚拟用户发现一个错误的时候,它会随着下一次重复继续下去,你能使用这个设置来通知虚拟用户当发生错误的时候是否继续执行脚本。RunLogic:迭代次数21.你在不同的环境下如何设置迭代?A21:在“RunTimeSettings”中设置22.你如何在负载测试模式下执行功能测试?A22:在负载测试模式下,可以通过同时运行数个虚拟用户,通过增加虚拟用户数,确定服务器在多大的负载量下,仍然可以正常运行,我一般进行核心功能操作,验证核心功能运行是否正常。23.什么是逐步递增?你如何来设置?A23:虚拟用户数随着负载时间逐渐增加,可以帮助确定系统响应时间减慢的准确时间点。可以在“加压”选项卡中进行设置:如下图所示,将设置更改为:“每30秒启动2个Vuser”24.以线程方式运行的虚拟用户有哪些优点?A24:以线程方式运行的虚拟用户,在默认情况下,Controller为每50个用户仅启动一个mmdrv进程,而每个用户都按线程方式来运行,这些线程用户将共享父进程的内存,这就节省了大量内存空间,从而可以在一个负载生成器上运行更多的用户。25.当你需要在出错时停止执行脚本,你怎么做?取消运行设置中的“Continueonerror”复选框。或者使用lr_abort函数。26.响应时间和吞吐量之间的关系是什么?A26:当系统吞吐量未达到系统处理极限时,系统性能不会衰减,交易平均响应时间一般也不会递增,当系统达到吞吐量极限时,客户端交易会在请求队列中排队等待,等待的时间会记录在响应时间中,故交易平均响应时间一般会递增。27.说明一下如何在LR中配置系统计数器?A27:以windows资源监控为例,可右键点“添加度量”,输入系统IP、选择平台类型,确定即可,详细参加LR自带操作手册^_^。对于监控不同类型的操作系统,需要做一些准备工作,可参见监控操作系统资源部分。28.你如何识别性能瓶颈?A28:性能瓶颈分为:硬件瓶颈和软件瓶颈性能瓶颈可以通过监控器来分析发现,这些监控器包括应用服务器监控、web服务器监控、数据库服务器监控器和网络监控器;它们可以帮助分析导致响应时间增加的原因;性能度量一般包括响应时间、吞吐量、每秒点击率、网络延迟等等。29.如果web服务器、数据库以及网络都正常,问题会出在哪里?A29:问题可能出在系统本身或应用服务器、或为应用编写的代码编写中。30.如何发现web服务器的相关问题?A30:可以利用web资源监控器发现web服务器相关问题,在场景执行过程中,可以利用监控器分析web服务器吞吐量、每秒点击率、每秒HTTP响应数、每秒页面下载数,以及web服务器硬件资源使用情况等。31.如何发现数据库的相关问题?A31:可以通过数据库监控器和数据资源图发现数据库相关的问题,例如在运行Controller之前,可以指定需要度量的资源,之后可以根据监控的数据,分析数据库相关的问题32.解释所有web录制配置?A32:选择录制协议、设置录制选项、选择浏览器、选择存放路径、开始录制。33.解释一下覆盖图和关联图的区别?A33:覆盖图:合并两个图的内容,使用同一个X轴,合并图左Y轴显示当前图的值,合并图右Y轴显示被合并图的值。关联图:当前活动图的Y轴变为合并图的X轴,被合并图的Y轴变成合并图的Y轴。34.你如何设计负载?标准是什么?A34:负载测试计划多少用户数量、使用什么类型的机器、以及在什么环境下进行。主要基于两个重要的文档,任务分布图和事务信息,任务分布图告诉我们在负载时间段内,某一个事务使用的用户数,高峰使用率及低峰使用率均来自该文档;事务信息告诉我们事务名及优
本文标题:性能测试面试题总结(答案全)
链接地址:https://www.777doc.com/doc-1907134 .html