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脚本中的常量值;为参数设置属性和数据源4
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.什么是吞吐量
客户端每秒从服务器接收到的数据,或系统服务器每秒能处理通过的交易数。一般随着虚拟用户数的增加,吞吐量也增加,说明网络带宽比较充足,反之,吐过随着虚拟用户数的增加,吞吐量比较平稳,呈直线状态,则说明网络带宽成为瓶颈,限制了数据传输
38.场景设置有哪几种方法
面向目标的场景设置和手动场景
今天的分享就到此结束了, 如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!