38步LoadRunner性能测试基础知识,工作中你漏了什么

测试的工作非常枯燥,枯燥的工作很容易使一个人变得麻木,以至于在重复的工作中出现差池也不自知,特别是性能测试这一块,又是重要程序,稍有差池就会对后面的产生不必要的成本

本文讲根据之前个人从事性能测试的经验外加当前性能测试岗位的同事,从里到外地总结出了38个使用LoadRunner进行性能测试的常见要点

要点目录:

  1. 什么是负载测试?什么是性能测试?
  2. 性能测试包含哪些测试
  3. 性能测试的步骤
  4. 简述使用Loadrunner的步骤
  5. 什么时候开始执行性能测试
  6. LoadRunner由哪些部件组成
  7. 使用LoadRunner的哪个部件来录制脚本
  8. LoadRunner的哪个部件可以模拟多用户并发下回放脚本
  9. 什么是集合点,设置集合点有什么意义,LoadRunner中设置集合点的函数是哪个
  10. 什么是场景,场景的重要性有哪些,如何设置场景
  11. 如何录制web脚本
  12. 为什么要创建参数,如何创建参数
  13. 什么是关联,自动关联和手段关联的不同
  14. 如何找出哪里需要关联,项目示例
  15. 在哪里设置自动关联选项
  16. 哪个函数是用来截取虚拟用户脚本中的动态值(手工关联)
  17. 在VUGen中如何选择关闭日志。,如何选择标准和扩展日志
  18. 如何调试LoadRunner脚本
  19. 在LR中如何编写自定义函数,示例说明
  20. 如何在负载测试模式下执行功能测试
  21. 什么是逐步递增,如何来设置
  22. 以线程方式运行的虚拟用户有哪些优点
  23. 当你需要在出错事停止执行脚本,你会怎么做
  24. 响应时间和吞吐量之间的关系
  25. 在LR中如何配置系统计数器
  26. 如何识别性能瓶颈
  27. web服务器、数据库以及网络都正常,问题会出现在哪里
  28. 如何发现web服务器的相关问题
  29. 如何发现数据库相关问题
  30. 解释所有web录制配置
  31. 解释下覆盖图和关联图的区别
  32. Vuser_init中包括什么内容
  33. Vuser_end中包括什么内容
  34. 什么是think time 以及它的作用
  35. 标准日志和扩展日志的区别
  36. 解释一下函数以及他们的不同之处
  37. 什么是吞吐量
  38. 场景设置有哪几种方法

1.什么是负载测试?什么是性能测试?
负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试,例如:访问一个页面的响应时间规定不超过1秒,负载测试就是在响应时间为1秒时,系统所能承受的最大并发访问用户的数量。
性能测试:指在一定的约束条件下(指定的软件、硬件、网络环境等)确定系统所能承受的最大负载压力。


2.性能测试包含哪些测试
负载测试、压力测试、大数据量测试、疲劳强度测试等


3.性能测试的步骤



4.简述使用Loadrunner的步骤
制定性能测试计划→开发测试脚本→设计测试场景→执行测试场景→监控测试场景→分析测试结果



5.什么时候开始执行性能测试
功能测试通过,一般需要进行性能测试的系统,都是用户量比较大,业务使用比较频繁,比较重要的功能模块


6.LoadRunner由哪些部件组成
主要有三个部分组成:



7.使用LoadRunner的哪个部件来录制脚本
使用Virtual User Generator录制测试脚本


8.LoadRunner的哪个部件可以模拟多用户并发下回放脚本
LoadRunner的Controller组件


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


10.什么是场景,场景的重要性有哪些,如何设置场景
场景用于模拟用户实际业务操作;
LoadRunner中场景有手工场景和面向目标的场景
设置场景:选择场景类型、设置运行时设置、模拟用户数、加减呀方式、持续时间、配置负载生成器


11.如何录制web脚本
利用Virtual User Generator录制测试脚本,录制步骤:
1.选择合适的协议 复制代码
 

2.设置录制选项复制代码
 

3.开始录制 复制代码
 

12.为什么要创建参数,如何创建参数
LoadRunner在录制脚本的时候,只是忠实的记录了所有从客户端发送到服务器的数据,而在进行性能测试的时候,为了更接近真实的模拟现实应用,对某些信息需要每次提交不同的数据,或者使用多个不同的值进行循环输入。这时,在LoadRunner中就可以进行参数化设置,以使用多个不同的值提交应用请求。
【参数化】:使用指定数据源中的值来替换脚本录制生成的语句中的参数
【参数化的好处】:减少脚本的大小;提供使用不同的值执行脚本的能力,更加真实的模拟现实应用
【参数化步骤】:用参数替换Vuser脚本中的常量值;为参数设置属性和数据源


13.什么是关联,自动关联和手段关联的不同
关联的定义简单说:就是把脚本中某些写死(固定)的数据,转变成动态的数据,或者说将前面语句的结果数据保存下来,然后再后面的语句提交请求时使用这些数据。
【需要关联的前提条件】:客户端需要从服务端返回数据中获取部分数据,并将这些部分数据处理后作为自己下一次请求的一部分发出。
【自动关联与手动关联的不同】:自动关联是在脚本录制过程中,VuGen会根据已经制定好的规则,自动找出需要关联的值或者脚本录制完成后,执行脚本一次,通过Correlation Studio自动找出需要关联的数据,并建立关联;而手动关联是需要录制两份相同业务流程的脚本,输入的数据要相同,利用winDiff工具,找出两份脚本之间不同之处,也就是需要关联的数据,再通过web_reg_asve_param函数手动建立关联,将脚本中用到的关联的数据参数化/


14.如何找出哪里需要关联,项目示例
录制两份相同业务流程脚本,输入的数据要相同
利用winDiff工具,找出两份脚本之间不同之处,也就是需要关联的数据
通过web_reg_asve_param函数手动建立关联,将脚本中用到的关联的数据参数化



通过录制两份脚本,进行对比,可知jsessionid、sap-ext-sid、sap-wd-cltwndid、sap-wd-tstamp需要进行关联



15.在哪里设置自动关联选项
录制选项中进行设置

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

web_reg_asve_param函数主要根据需要做关联的动态数据前面和后面的固定字符串识别、提取动态数据,所以在做关联时,需要找出动态数据的左、右边界字符串


1.函数原型:int web_reg_save_param (const char *ParamName, <List of Attributes>, LAST);


2.参数说明:

paramnam:存放动态数据的参数名称

list of attributes:其他属性,包含notfound、lb、rb、relframeid、search、ord、saveoffset、convert、savelen





notfound:指当找不到要找的动态数据时,怎么处理

notfound=error,当找不到动条数据时,发出一个错误信息,为LoadRunner的默认值

notfound=warning,当找不到动态数据时,不发出错误信息,只发出警告,脚本会继续执行下去不会中断

lb:动态数据的左边界字符串,该参数为必选参数,并区分大小写

rb:动态数据的右边界字符串,该参数为必选参数,并区分大小写

ord:指提取第几次出现的左边界的数据,该参数为可选参数,默认值1

search:搜寻的范围。可以是Headers(只搜寻Headers)、Body(只搜寻Body部分,不搜寻Headers)、 Noresources(只搜寻Body部分,不搜寻Header与Resource)或是All(搜寻全部范围,此为默认值),该参数为可选参数 RelFrameID:相对于URL而言,欲搜寻的网页的Frame,此属性可以是All或是具体的数字,该参数为可选参数。

SaveOffset:当找到符合的动态数据时,从第几个字符开始才存储到参数中,该参数为可选参数,此属性值不可为负数,其默认值是0.

Convert:可能的值有两种

HTML_TO_URL:将HTML-encoded数据转成URL-encoded数据格式

HTML_TO_TEXT:将HTML-encoded数据转成纯文字数据格式

SaveLen:从Offset开始算起,到指定长度内的字符串,才储存到参数中,该参数为可选参数,默认值为-1,表示储存到结尾整个字符串

17.在VUGen中如何选择关闭日志。,如何选择标准和扩展日志

在测试场景执行时,关闭日志,因为日志信息过多,也会影响性能测试结果;在调试测试脚本时,可以选择标准或者扩展日志,用于输出调试信息

可以在运行时设置中,进行日志设置,如下所示:

18.如何调试LoadRunner脚本

  1. 通常采用一下方法调试
    断点:在脚本的任意一行上按右键菜单或F9增加断点
  2. 单步跟踪:通过菜单命令VUser—>Run Step by Step或F10,可以控制脚本以语句为单位执行
  3. 日志输出:通过日志输出函数lr_message、lr_log_message、lr_output_message输出

4.对话框输出

19.在LR中如何编写自定义函数,示例说明
在编写用户自定义函数之前,需要首先为函数创建外部库(DLL)文件,将这些库文件放在bin目录下,一旦库文件已经被添加并且将用户自定义函数作为参数,函数应该为以下格式:__declspec (dllexport) char* (char*, char*)

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


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



22.以线程方式运行的虚拟用户有哪些优点
以线程方式运行的虚拟用户,在默认情况下,Controller为每50个用户仅启动一个mmdrv进程,而每个用户都按线程方式来运行,这些线程用户将共享父进程的内存,这就节省了大量内存空间,从而可以在一个负载生成器上运行更多的用户。


23.当你需要在出错事停止执行脚本,你会怎么做
取消运行设置中的“Continue on error”复选框 或者使用lr_abort函数



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


25.在LR中如何配置系统计数器
以windows资源监控为例,可右键点“添加度量”,输入系统IP、选择平台类型,确定即可


26.如何识别性能瓶颈
性能瓶颈分为:硬件瓶颈和软件瓶颈
性能瓶颈可以通过监控器来分析发现,这些监控器包括应用服务器监控、web服务器监控、数据库服务器监控器和网络监控器;它们可以帮助分析导致响应时间增加的原因;性能度量一般包括响应时间、吞吐量、每秒点击率、网络延迟等等


27.web服务器、数据库以及网络都正常,问题会出现在哪里
系统本身或者英语服务器、或者应用编写的代码编写中


28.如何发现web服务器的相关问题
可以利用web资源监控器发现web服务器相关问题,在场景执行过程中,可以利用监控器分析web服务器吞吐量、每秒点击率、每秒HTTP响应数、每秒页面下载数、以及web服务器硬件资源使用情况等


29.如何发现数据库相关问题
可以通过数据库监控器金额数据资源图发现数据库相关问题,例如在运行Controller之前,可以指定需要度量的资源,之后可以根据监控的数据,分析数据库相关的问题。


30.解释所有web录制配置
选择录制协议、设置录制协议、选择浏览器、选择存放路径、开始录制


31.解释下覆盖图和关联图的区别
覆盖图:合并两个图的内容,使用同一个X轴,合并图左Y轴显示当前图的值,合并图右Y轴显示被合并图的值
关联图:当前活动图的Y轴变为合并图的X轴,被合并图的Y轴变成合并图的Y轴


32.Vuser_init中包括什么内容
包括在脚本执行过程中只需执行一次的脚本。一般来说,所有需要初始化的都可以放在这里面,比如登录


33.Vuser_end中包括什么内容
一般包含退出的过程,比如:退出系统,主要在脚本执行完成或者停止时运行,在设置了迭代次数时,Vuser_init和Vuser_end均只执行一次


34.什么是think time 以及它的作用
思考时间:用户在各步骤之间停下来进行思考的时间,由于用户基于其经验水平和目标而与应用程序进行交互操作,因此技术水平更高的用户工作起来可能会比新用户更快
通过启用思考时间,可以使Vuser在负载测试期间更准确地模拟其对应的真实世界用户


35.标准日志和扩展日志的区别
标准日志:脚本执行过程中,将函数集以及信息发送到日志文件中
扩展日志:可以将详细的脚本执行信息输出到日志文件中,可以选择一下三种扩展日志信息:
1.参数替换:脚本运行过程中,可以将参数及当前参数值输出到日志文件中

2.服务器返回的数据:将服务器返回给客户端的数据输出到日志文件中

3.高级跟踪:所有的虚拟用户信息和函数调用输出到日志文件中

36.解释一下函数以及他们的不同之处
lr_debug_message:发送调试信息到输出窗口或业务监控日志文件中

lr_output_message:发送日志信息到输出窗口或业务监控日志文件中

lr_error_message:发送错误信息到输出窗口或业务监控日志文件中

lrd_stmt:赋予一个SQL语句用于处理
lrd_fetch:获取结果集中的下一行数据


37.什么是吞吐量
客户端每秒从服务器接收到的数据,或系统服务器每秒能处理通过的交易数。一般随着虚拟用户数的增加,吞吐量也增加,说明网络带宽比较充足,反之,吐过随着虚拟用户数的增加,吞吐量比较平稳,呈直线状态,则说明网络带宽成为瓶颈,限制了数据传输

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群:,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值