性能小知识

1性能测试原理:

           (1)录制/回放原理 录制协议的内容,回放的也是协议内容

           (2)实现多个并发和负载,通过多线或多进程来运行协议包(请求)3、协议包的编写,用脚本形式展现

重要性:性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。

2.性能测试包含了哪些测试(至少举出3种)

 性能测试包含负载测试压力测试大数据量测试疲劳强度测试配置测试容量测试等。

3.简述使用Loadrunner的步骤

  制定性能测试计划—>开发测试脚本—>设计测试场景—>执行测试场景—>监控测试场景—>分析测试结果 

4.什么时候可以开始执行性能测试?

功能测试通过;一般需要进行性能测试的系统,都是用户量比较大、业务使用比较频繁、比较重要的功能模块。 

 5.你使用LoadRunner的哪个部件来录制脚本

  使用Virtual User Generator录制测试脚本

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

  LoadRunner的Controller组件。

7. 什么是集合点?设置集合点有什么意义?Loadrunner中设置集合点的函数是哪个?

  在性能测试过程中,需要模拟大量用户在同一时刻,访问系统并同时操作某一任务,可以通过配置集合点来实现,多个用户同时进行某操作

意义:集合点可以在服务器上创建密集的用户负载,使LoadRunner能够测试服务器在负载状态下的性能。

设置集合点函数:lr_rendezvous("Meeting");  // Meeting是集合点名称

loadrunner集合点策略

三种集合点策略的字面意思我知道,我想知道选择不同的集合点策略对结果有什么影响,

第一个选项:当所有 Vuser中的 X% 到达集合点时释放 Vuser(注意,一般不选择第一个策略,如果选择此选项,场景将不按计划运行)
第二个选项:仅当场景中正在运行的指定百分比用户到达集合点后才释放 Vuser
第三个选项:场景中正在运行的用户的50%到达集合点后,才释放 Vuser,并继续执行场景。
最后一个选项指:在“Vuser 之间的超时值”框中输入一个超时值。每个 Vuser 到达集合点之后,LoadRunner 都会等待下一个 Vuser 到达,等待的最长时间为您设置的超时间隔。如果下一个 Vuser 在超时间隔内还没到达,Controller 就会从集合中释放所有的 Vuser。

8. 为什么要创建参数?如何创建参数?

参数:在环境变化时必须时脚本具有环境变化的能力,就需要参数化(客户端发送到服务器端)  

1.确定要参数化的数据  

2.设定规则形式来取值

9. 什么是关联?请解释一下自动关联和手动关联的不同

     关联(correlation)就是把脚本中某些写死的(hard-coded)数据,转变成是撷取自服务器所送的、动态的、每次都不一样的数据。

      自动关联手动关联的区别:

自动关联具有很强的局限性,很多特殊的动态数据都捕获不到,例如表格的单元,论坛帖子的ID,项目管理系统中的项目ID等,这个时候就需要手动关联来解决。

手动关联是关联应用最有效的手段,通过手动关联函数web_reg_save_pram_ex()将想要的字符串保存到一个参数中。通过关联可以获得服务器返回的标题或正文的文本内容,也可以用来捕获服务器返回的超链接。

10. 你如何找出哪里需要关联?请给一些你所在项目的实例

用户登陆,客户端发送请求后,服务端验证正确性后,发送给客户端sessionid,是某种规则产生。

11. 你在哪里设置自动关联选项?

(1).设置允许录制时进行自动关联,可以自定义规则

(2)录制完成后,vuser-scan action for correlations

12. 什么时候需要做关联?

当服务器返回一个值 这个值每次都会变化而且后面的请求需要提交这个值

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

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

14.   负载测试流程是什么?

测试分析—创建脚本—业务场景分析---创建场景---运行场景—监控场景---分析场景

15. 你在LR中如何编写自定义函数?请给出一些你在以前进行的项目中编写的函数。

在创建用户自定义函数前我们需要和创建DLL(external libary)。把库放在VuGen bin目录下。一旦加了库,把自定义函数分配做一个参数。该函数应该具有一下格式:__declspec (dllexport) char* (char*, char*)。 Milan

16. 什么是逐步递增?你如何来设置?

Ramp up这个选项用于逐渐增加服务器的虚拟用户数或负载量。设置一个初始值而且可以在两个迭代之间设置一个值等待。设置Ramp up,请到‘Scenario Scheduling Options’。

18.以线程方式运行的虚拟用户有哪些优点?

VuGen提供了用多线程的便利。这使得在每个生成器上可以跑更多的虚拟用户。如果是以进程的方式跑虚拟用户,为每个用户加载相同的驱动程序到内存中,因此占用了大量的内存。这就限制了在单个生成器上能跑的虚拟用户数。如果按线程运行,给定的所有虚拟用户数(比如100)只是加载一个驱动程序实例到内存里。每个线程共用父驱动程序的内存,因此在每个生成器上可以跑更多的虚拟用户。

19. 当你需要在出错时停止执行脚本,你怎么做?

lr_abort函数放弃虚拟用户脚本的执行。说明虚拟用户停止Action的执行,直接执行vuser_end然后结束执行。在出现错误情况下想手工放弃脚本的执行,这个函数是有用的。用这个函数停止脚本时,Vuser被指定为“Stopped”状态。为了这个函数起作用,开始时候就不能选择Run-Time Settings中的Continue on error选项。

20. 响应时间和吞吐量之间的关系是什么?

吞吐量图显示的是虚拟用户每秒钟从服务器接收到的字节数。当和响应时间比较时,可以发现随着吞吐量的降低,响应时间也降低,同样的,吞吐量的峰值和最大响应时间差不多在同时出现。

21.说明一下如何在LR中配置系统计数器?

通过Web资源监视器,利用这些监控器可以分析web服务器的吞吐量、点击率、每秒http响应数以及每秒下载的页面数。

22. 什么是thinktime?think_time有什么用?

思考时间是真实用户在action之间等待的时间。例如:当一个用户从服务器接收到数据时,用户可能需要在响应之前等待几分钟回顾数据,这种推迟被称为思考时间。

23. 标准日志和扩展日志的区别是什么?

Standard Log Option:选择标准日志时,就会在脚本执行过程中,生成函数的标准日志并且输出信息,供调试用。大型负载测试场景不用启用这个选项。扩展日志包括警告和其他信息。大型负载测试不要启用该选项。用扩展日志选项,可以指定哪些附加信息需要加到扩展日志中



你可能感兴趣的:(性能,性能方面小知识)