loadrunner学习笔记

作者:admin / 时间:10个月前 (02/25) / 分类:后端测试 / 阅读:3082 / 评论:0

#loadrunner学习笔记

````1. ````

对于大部分的应用,包括使用js的应用,使用Web(Click and Script)协议

对于使用applets和vbscript的基于浏览器的应用,或者非浏览器的web应用,使用Web(HTTP/HTML)协议

这两个协议是互斥的,在选择多协议的时候是不能同时选择的

````2. ````

Web(Click and Script)的录制是基于用户操作过程的录制

Web不支持使用applets和vbscript,如果被测站点包括Applet和VBscript,请使用Web(HTTP/HTML)协议

Web(HTTP/HTML)协议是基于浏览器请求响应数据的脚本

当你选择Web(HTTP/HTML)协议录制时,VuGen记录的是Internet上传送的‘浏览器发出的HTTP请求和服务器的响应’的数据,脚本中包含了你的浏览器请求的数据的详细信息,而不是操作过程的信息

````3. ````

如果不确定目标系统采用了哪些协议,可以使用Protocol Advisor来进行协议分析

````4. ````

事务(transaction)是这样的一个点,我们为了衡量某个action的性能,需要在action的开始和结束位置插入这样的一个范围,这就定义了一个transaction

````5. ````

为什么在loadrunner中使用事务?

1. 事务是loadrunner度量系统性能指标的唯一手段

2. 事务能够用于度量高风险业务流程的性能指标

3. 事务能够度量在一组操作中每一步的性能指标

4. 通过事务计时实现了不同压力负载下的性能指标对比

5. 通过事务计时可以帮助定位性能瓶颈

````6. ````

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

web_reg_save_param("session",

   "LB=name=\"userSession\" value=\""

   "RB=\">",

   LAST);

````7. ````

参数化就是使用指定数据源中的值来替换脚本生成的语句中的参数

1. 用参数替换Vuser脚本中的常量值

2. 为参数设置属性和数据源

````8. ````

"回放日志"中使用了不同颜色的文本:

黑色:标准输出信息

红色:标准错误信息

绿色:用引号括起来的文字字符串

蓝色:事务信息(开始、结束、状态和持续时间)

橙色:迭代次数信息

````9. ````

VuGen错误处理

LR_CONTINUE_ON_ERROR(0)  ///发生错误不运行脚本

LR_CONTINUE_ON_ERROR(1)  //发生错误继续运行脚本

LR_CONTINUE_ON_ERROR(2)  //发生错误调到下一个action运行

LR_CONTINUE_ON_ERROR(3)  //发生错误调到下一个迭代来运行

LR_CONTINUE_ON_ERROR(4)  //发生错误结束当前用户

````10. ````

录制脚本时,生成的脚本中存在乱码如何解决

打开录制选项配置对话框record-options,进入到Advanced标签,先勾选support charset,然后选中utf-8

````11. ````

手工场景(Manual Scenario)

自行设置虚拟用户的变化,通过设计用户的添加和减少的过程,来模拟真实的用户请求模型,完成负载的生成手工场景是“定量型”性能测试,掌握负载的变化过程中系统各个组件的变化情况,定位性能瓶颈并了解系统的处理能力,一般在负载测试和压力测试中应用。手工场景的核心就是设置“用户负载方式”

````12. ````

目标场景(Goal-OrientedScenario)

设置一个运行目标,通过Controller的自动加载功能进行自动化负载,如果测试的结果达到目标,说明系统的性能符合测试目标,否则就提示无法达到目标

````13. ````

负载生成器(Load Generations)

每生成一个虚拟用户,需要花费负载生成器大约2M~3M的内存空间。通常运行controller的主机很少用作负载生成器,负载生成器的工作多由其他装有LR Agent的PC机来担任,如果负载生成器内存的使用率大于70%,负载生成器就会变成系统的瓶颈,导致性能测试成绩下降,这时候就需要调用多个Load Generations来完成大规模的性能负载

````14. ````

集合点:当通过controller虚拟多个用户执行该脚本时,用户的启动或运行步骤不一定都是同步的。集合点是在脚本的某处设置一个标记。当有虚拟用户运行到这个标记时,停下等待,直到所有的用户都达到这个标记处,再一同进行下面的步骤,这样能够用最大的用户并发去做下面的操作,就像集合再前进一样。集合点之名由此而来。集合点主要用于对关键步骤的加压

````15. ````

ip欺骗:是指用户操作产生的ip数据包为伪造的源ip地址,以便冒充其他系统或发件人的身份。这是一种黑客的攻击形式,黑客使用一台计算机上网,而借用另一台机器的ip地址,从而冒充另外一台机器与服务器打交道

为什么要用ip欺骗

1. 当某个ip的访问过于频繁,或者访问量过大时,服务器会拒绝访问请求,这时候通过ip欺骗可以增加访问频率和访问量,以便达到压力测试的效果

2. 某些服务器配置了负载均衡,使用同一个ip不能测出系统的实际性能。LR中的IP欺骗通过不同的ip,可很大程度上的模拟实际使用中多IP访问和并测试服务器均衡处理能力

3. 有些网站会限制同一个用户同一个ip登录。为了更加真实的模拟实际情况,loadrunner允许运行的虚拟用户使用不同的ip访问同一网站

````16. ````

服务水平协议(Service-Level Agreement)

SLA是为负载测试场景定义的具体目标。例如评测脚本中任意数量事务的平均响应时间,可以定义具体的目标或阈值。测试运行结束后,Loadrunner将你定义的目标与是记录纸的平均事务响应时间进行比较。如果实际的平均事务响应时间未超过你定义的阈值,SLA状态为通过,否则为不通过

````17. ````

LR常用函数

Lr_start_transaction() //标记事务的开始

Lr_end_transaction()  //标记事务的结束,一般情况下与开始事务联合使用

Lr_get_tans_instance_status()  //得到事务的状态,当事务由许多步骤组成,或者可能存在导致事务失败的执行点,这个函数非常有用,可以通过检查状态和终止Vuser,可以避免不必要的活动

Lr_get_tansaction_think_time()  //得到事务的指定思考时间

Lr_stop_transaction()  //停止事务,该函数返回当前事务的持续是件,以毫秒为单位,当为错误时返回一个负数

````18. ````

LoadRunner 12对Chrome版本有要求吗

支持对Internet Explorer 11、Chrome 版本58 和Firefox 版本25 的录制和回放支持

忽略火狐安全连接检查:http://mozilla.com.cn/thread-230194-1-1.html

````19. ````

为什么脚本中添加了检查方法Web-find ,但是脚本回放时却没有执行

由于检查点功能会耗费一定的资源,因此LoadRunner 默认关闭了对文本及图像的检查。要想开启检查功能,必须修改运行时的配置Run-time Setting。

进入“Run-time Setting”对话框,依次进入“Internet Protocol→Preferences”,勾选Checks 下的“Enable Image and text check”选项即可。

检查执行结果时推荐使用web_reg_find方法。

````20. ````

虚拟客户脚本“Run-time Setting”中的线程和进程运行方式的区别?

如果选择“Run Vuser as a process”,则场景运行时会为每一个虚拟用户创建一个进程; 选择“Run Vuser as a thread”则将每个虚拟用户作为一个线程来运行,在任务管理器中只看到一个mmdrv.exe ,这种方式的运行效率更高,能造成更大的压力时默认选项。

````21. ````

为什么Windows 系统中的CPU 、内存等资源仍然充足,但是模拟的用户数量却上不去?

在Windows 计算机的标准设置下,操作系统的默认限制只能使用几百个Vuser ,这个限制与CPU 或内存无关,主要是操作系统本身规定了默认的最大线程数所导致。要想突破Windows 这个限制,须修改Windows 注册表

````22. ````

打开回放期间显示快照查看器:

工具=>选项=>脚本=>回放=>回放期间显示运行时查看器

在这个窗口下将收集回放统计信息也打勾

````23. ````

使用chrome等浏览器录制脚本卡死或响应速度慢的问题

下载安装fiddle客户端,在录制之前运行fiddle可解决很多妖怪问题

````24. ````

先搞清楚什么是协议,为什么要选择协议。这就需要我们对通信机理有一些的了解

首先,什么是协议?

协议无非就是一个约定,关于数据包发送的格式的约定,就是说如果大家都这样发送,那么通信就能够成功,如果大家都各按各的来,那么就没办法进行通信了。

那么接下来就是LR录制时的工作原理了,LR的录制和WR不一样,它不关心你的对象识别什么的,不关心你的什么窗口之类的,LR有一个Agent进程,来专门监控客户端和服务器之间的通信,然后用自己的函数进行录制。所以说,LR录制的时候关心的是通信,是客户端和服务器之间的数据包。lr录制机理,在录制时,lr应该会对你从本机发出去的数据进行截包,并拆包。因为我们知道协议的不同就是体现在数据包的结构不同,lr应该通过对包结构的分析,判断是不是它支持的协议,对包数据的分析,来获取用户发送的东西。说到这里,大家就比较清楚了,为什么有的时候不能录制呢?因为,协议不认识阿,导致LR截获的数据包不能解析,所以录制下来是空的。比如你用ftp的协议去录制一个访问网页的IE操作,那肯定是无所收获的。因为lr没有在网络截获到ftp协议格式的包,都是http协议格式的包,它不认,当然就是一个录制为空的结果了。 

````25. ````

谈谈并发点和结果检查

很多人喜欢使用并发点和结果检查,我谈谈我自己的看法。第一我基本上从来不使用结果检查,压力测试的结果我一般是去后台检查存储层的数据是否正确的。

LR只能检查协议层上的错误,但如果在大量并发用户的情况下使用返回结果检查例如reg_text_check,会极大的占用客户端的资源,我一般不这么作;

至于并发点,我只有在客户强烈要求的情况下才会使用,否则基本不用

没有评论,留下你的印记,证明你来过。


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。