1 什么是性能测试?
性能测试是通过工具模拟正常,峰值,以及异常的负载的条件来对系统各项指标进行测试。
2 如何理解压力、负载、性能测试测试?
性能测试是一个较大的范围,实际上性能测试本身包含了性能、强度、压力、负载等多方面的测试内容。
压力测试是对服务器的稳定性以及负载能力等方面的测试,是一种很平常的测试。增大访问系统的用户数量、或者几个用户进行大数据量操作都是压力测试。
而负载测试是压力相对较大的测试,主要是测试系统在一种或者集中极限条件下的相应能力,是性能测试的重要部分。100个用户对系统进行连续半个小时的访问可以看作压力测试,那么连续访问8个小时就可以认为负载测试,1000个用户连续访问系统1个小时也可以看作是负载测试。
实际上压力测试和负载测试没有明显的区分。测试人员应该站在关注整体性能的高度上来对系统进行测试。
3 什么是系统瓶颈?
瓶颈主要是指整个软硬件构成的软件系统某一方面或者几个方面能力不能满足用户的特定业务要求,“特定”是指瓶颈会在某些条件下会出现,因为毕竟大多数系统在投入前。
严格的从技术角度讲,所有的系统都会有瓶颈,因为大多数系统的资源配置不是协调的,例如CPU使用率刚好达到100%时,内存也正好耗尽的系统不是很多见。因此我们讨论系统瓶颈要从应用的角度讨论:关键是看系统能否满足用户需求。在用户极限使用系统的情况下,系统的响应仍然正常,我们可以认为改系统没有瓶颈或者瓶颈不会影响用户工作。
因此我们测试系统瓶颈主要是实现下面两个目的:
-发现“表面”的瓶颈。主要是模拟用户的操作,找出用户极限使用系统时的瓶颈,然后解决瓶颈,这是性能测试的基本目标。
-发现潜在的瓶颈并解决,保证系统的长期稳定性。主要是考虑用户在将来扩展系统或者业务发生变化时,系统能够适应变化。满足用户目前需求的系统不是最好的,我们设计系统的目标是在保证系统整个软件生命周期能够不断适应用户的变化,或者通过简单扩展系统就可以适应新的变化。
4 什么是可靠性测试?
可靠性测试也叫稳定性测试,是指连续运行被测系统,检查系统运行时的稳定程度
5 什么是集合点?
设置集合点有什么意义?Loadrunner中设置集合点的函数是哪个?”在性能测试过程中,需要模拟大量用户在同一时刻,访问系统并同时操作某一任务,可以通过配置集合点来实现,多个用户同时进行某操作;
集合点可以在服务器上创建密集的用户负载,使LoadRunner能够测试服务器在负载状态下的性能。
设置集合点函数:lr_rendezvous(“”Meeting””) Meeting是集合点名称
6 什么是场景?
场景的重要性有哪些?如何设置场景?”场景用于模拟用户实际业务操作;
LoadRunner中场景有手工场景和面向目标的场景。
设置场景:选择场景类型、设置运行时设置、模拟用户数、加减压方式、持续时间,配置负载生成器。
7 哪个函数是用来截取虚拟用户脚本中的动态值?
(手工关联)Web_reg_save_param
8 进行参数化的目的
减少脚本的大小
提供不同的值以提高执行脚本的能力,从而更加真实的模拟生产环境的数据
9 解释以下函数及他们的不同之处。
Lr_debug_message 发送调试信息到输出窗口
Lr_output_message 发送日志信息到输出窗口
Lr_error_message 发送错误日志信息到输出窗口
10 如何得到性能测试需求?
1)在查看需求文档,从中提取性能测试需求,与用户交流,了解实际使用情况。
2)结合业务设计场景总结出性能关键指标。
3)执行后根据提取性能关键指标来分析是否满足性能测试需求。
11什么是think time?think_time有什么用?
思考时间:用户在各步骤之间停下来进行思考的时间,由于用户基于其经验水平和目标而与应用程序进行交互操作,因此技术水平更高的用户工作起来可能会比新用户要快。通过启用思考时间,可以使 Vuser在负载测试期间更准确地模拟其对应的真实世界用户。
11 Vuser_init中包括什么内容
Vuser_init中包含在脚本执行过程中只需执行一次的脚本。一般来说,所有需要初始化的都可以放在vuser_init里面,比如登录。
12 Vuser_end中包括什么内容?
vuser_end中一般包含退出的过程,比如退出系统,vuser_end和vuser_int均只执行一次。
13 以线程方式运行的虚拟用户有哪些优点?
以线程方式运行的虚拟用户,在默认情况下,Controller为每50个用户仅启动一个mmdrv进程,而每个用户都按线程方式来运行,这些线程用户将共享父进程的内存,这就节省了大量内存空间,从而可以在一个负载生成器上运行更多的用户。
14 响应时间和吞吐量之间的关系是什么?
当系统吞吐量未达到系统处理极限时,系统性能不会衰减,交易平均响应时间一般也不会递增,当系统达到吞吐量极限时,客户端交易会在请求队列中排队等待,等待的时间会记录在响应时间中,故交易平均响应时间一般会递增。
15 HTML-Based scrīpt 和URL-Based scrīpt 录制的区别
基于浏览器的应用程序推荐使用HTML-Based scrīpt。
不是基于浏览器的应用程序推荐使用URL-Based scrīpt。
如果基于浏览器的应用程序中包含了Java scrīpt并且该脚本 向服务器产生了请求,比如DataGrid的分页按钮等,也要使用URL-Based scrīpt方式录制。
基于浏览器的应用程序中使用了HTTPS安全协议,使用URL-Based scrīpt方式录制。”
16 简述使用Loadrunner性能测试的步骤
制定性能测试计划—>开发测试脚本—>设计测试场景—>执行测试场景—>监控测试场景—>分析测试结果
17 什么是集合点?
设置集合点有什么意义?
LoadRunner中设置集合点的函数是哪个?
集合点:是一个并发访问的点,例如在测试计划中,可能会要求系统能够承受1000 人同时提交数据,在LoadRunner 中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据,并发访问的目的。
注意:集合点经常和事务结合起来使用,常放在事务的前面,集合点只能插入到Action 部分,vuser_init和vuser_end 中不能插入集合点。集合点函数如下:lr_rendezvous(“SubmitData”)
18 简述LoadRunner脚本录制及回放功能的工作原理?
loadrunner会自动监控指定的URL或应用程序所发出的请求及服务器返回的响应,它做为一个第三方(Agent)监视客户端与服务器端的所有对话,然后把这些对话记录下来,生成脚本,再次运行时模拟客户端发出的请求,捕获服务器端的响应。
19 解释5个常用的性能指标的名称与具体含义
1、并发:所有用户在同一时刻对系统执行操作,一般指做同一件事情或操作。
2、请求响应时间:从client端发出请求到得到响应的整个时间;包括:client端响应时间+网络响应时间+Server端响应时间。
3、TPS(Transaction Per Second) ,每秒钟系统能够处理的交易或事务的数量。它是衡量系统处理能力的重要指标。TPS是LoadRunner中重要的性能参数指标。
4、点击率(Hit Per Second),每秒发送的HTTP请求的数量;点击率越大对Server的压力越大
5、资源利用率:对不同资源的使用程度,如CPU,I/O,内存,……
21什么是关联?请解释一下自动关联和手动关联的不同?
把脚本中某些写死(固定)的数据,转变成动态的数据,或者说将前面语句的结果数据保存下来,然后在后面的语句提交请求时使用这些数据。
需要关联的前提条件:
客户端需要从服务器端返回数据中获取部分数据,并将这些部分数据处理后作为自己下一次请求的一部分发出。
自动关联与手工关联的不同:自动关联是在脚本录制过程中,VuGen会根据已经制定好的规则,自动找出需要关联的值或脚本录制完成后,执行脚本一次,通过Correlation Studio自动找出需要关联的数据,并建立关联;而手动关联是需要录制两份相同业务流程的脚本,输入的数据要相同,利用WinDiff工具,找出两份脚本之间不同之处,也就是需要关联的数据,再通过web_reg_save_param函数手动建立关联,将脚本中用到关联的数据参数化。
22 你在VUGen中何时选择关闭日志?何时选择标准和扩展日志?标准日志以及扩展日志的区别?
在测试场景执行时,关闭日志,因为日志信息过多,也会影响性能测试结果;在调试测试脚本时,可以选择标准或扩展日志,用于输出调试信息。
可以在运行时设置中,进行日志设置,如下图所示:
标准日志:脚本执行过程中,将函数集及信息发送到日志文件中
扩展日志:可以将详细的脚本执行信息输出到日志文件中
23 LoadRunner由五大组件组成
1. VuGen脚本生成器:录制调试脚本 捕获最终用户业务流程和创建自动性能测试脚本
2. Controller场景控制器:用脚本生成场景、执行场景,并在场景执行时进行监控 用于组织、驱动、管理和监控负载测试
3. Load Generators负载发生器:在性能测试过程中会将场景控制器和负载发生器分开,模拟用户对服务器提交请求。
4. Analysis结果分析器:场景结束后将监控的指标整理成图标展现给用户用于查看、分析和比较性能结果
5、proxy:实现不同LG上虚拟用户的步调一致”