[83] LR测试积累

一、hits per second/throughput的由来

1、每秒点击率是客户端向服务器发送的请求数,也就是说如果客户端进入了软件系统的界面,那么该界面上的所有图片和控件都会分别作为一次点击数。

2、吞吐量是服务器发送给客户端的数据量,而不包括客户端发送给服务器的请求等。

二、迭代方式

1、 Iteration Number
Iteration Number用当前的迭代数目替换参数。
2、 Random Number
Random Number用一个随机数替换参数。通过指定最大值和最小值来设置随机数的范围。
3、 Unique Number
Unique Number用一个唯一的数字来替换参数。你可以指定一个起始数字和一个块的大小。

三、迭代中使用关联参数化方法

注:一定要在参数的文本文档中有回车符

1、 建立一个参数A后,欲使另一参数B与之关联,在参数表中的select next row设置为the same line as A

2、 如图设置

图1

图2

四、标准偏差值STD

标准偏差(Std Dev,Standard Deviation) - 统计学名词。
一种量度数据分布的分散程度之标准,用以衡量数据值偏离算术平均值的程度。标准偏差越小,这些值偏离平均值就越少,反之亦然。标准偏差的大小可通过标准偏差与平均值的倍率关系来衡量。
标准偏差公式:S = Sqr(∑(xn-x拨)^2 /(n-1))
公式中代表总和,x拨代表x的算术平均值,^2代表二次方,Sqr代表平方根
例:有一组数字分别是200、50、100、200,求它们的标准偏差。
x拨 = (200+50+100+200)/4 = 550/4 = 137.5
S^2 = [(200-137.5)^2+(50-137.5)^2+(100-137.5)^2+(200-137.5)^2]/(4-1) =[62.5^2+(-87.5)^2+(-37.5)^2+62.5^2]/3 =[3906.25+7656.25+1406.25+3906.25]/3 = 16875/3 = 5625
标准偏差 S = Sqr(5625) = 75   

该值用于衡量LR的曲线图中所选取的若干点的值之间的偏差大小,如果超过一定标准,则说明软件过于不稳定。

五、SAP/SDP

SAP (Session Announcement Protocol )::会话通告协议。RFC2974,主要的作用就是告诉接收者,要多播一些什么内容。没有定义描述的格式

SDP:(Session Description Protocol):会话描述协议。 规定了格式,就是对会话的必要信息如何编码,不过不包括传输机制和协商参数。 SDP语法,采用文字,而不是ASN.1。一个SDP会话描述以会话级信息 和 媒体级信息开始,如果出现一个,另外一个接着后面出现。

六、合并图和关联图

将两个图联系起来,就会看到一个图的数据会对另一个图的数据产生影响。这称为将两

个图关联。例如,您可以将正在运行的 Vuser 图和平均事务响应时间图相关联,来了解

大量的 Vuser 对事务的平均响应时间产生的影响。

1 在图树中单击“正在运行的 Vuser”,查看正在运行的 Vuser 图。

2 右键单击正在运行的 Vuser 图并选择“合并图”。

3 在“选择要合并的图”列表中,选择“平均事务响应时间”。

4 在“选择合并类型”区域中,选择“关联”,然后单击“确定”

七、录制脚本方法

1、Sniffer方法:利用以太网的广播特性。嗅探器。但要求客户机与服务器在同一网段。

2、Proxy方法(代理):客户端发送到Vugen,再由Vugen发送给服务器。在客户端与服务器之间增加了LR。

八、客户端永远是发送请求,而服务器处理

LR录制的record log里面与工具charles以及实际网页文件的大小都是一致的。

九、录制模式HTTP/URL

Html-based script(browser/context sensitive)把隶属于一个页面的数据放在一个模块中。

URL(http/analog)真实记录C/S之间全部过程。

2种方式的使用:WEB或B/S结构控件过多的flash等,应使用HTML方式。可以浓缩。可读性好。实质上是一样的。

HTML记录的是web_submit_form

URL是web_submit_data,且支持控件。

十、常见错误

1、录制的脚本为空/录制出错/无法打开首页等:

空:协议选择错误/非B/S操作/打开页面时页面从缓存取出的,也是无法录制下来的/

使用代理/IE使用选项/有恶意代码(检测使用工具:AD-AWARD)/bofu防火墙或防病毒软件

录制出错:出错时使用CODE VIEW,即使出错也能把代码记录下来,而使用TREE VIEW则会停止记录

打开空网页:VUGEN有问题/LR安装路径BIN下Registe_vugen.bat(重新注册一次可能修复)

2、脚本出错

十一、协议选择

LR8中单协议HTTP,在IE中设置一个7777localhost端口,C与B之间都由7777连接,采集所有信息;多协议中单选HTTP协议,指定端口的影射

判断协议工具:PROCESSSPY(正在使用的.DLL分析使用的协议)

十二、关联

是服务器到客户端的动态产生的数据,当客户端发送请求时,需要包括关联的内容再次访问服务器

1、自动关联

2、手动关联

步骤:

a)在Run Time Setting 中选择Data returned by server,并回放脚本检查哪些脚本是因为关联问题导致失败的;

b)确定哪些数据需要关联;

出现错误:Error -27979:Requested form not found,这个问题说明发送到Server端的请求非法,找不到

这时可以使用LR自带工具:compare with Vuser...,在tools中可以找到,它可以进行2个脚本的区别对比,使用这个工具需要注意,它只能识别路径相对较短、名字中没有空格、路径与名字中不能存在中文等的文件。

c)找出动态数据的左右边界值及出现位置;

d)在脚本中添加web_reg_save_param参数

函数web_reg_save_param(“param name”,<list of attributes>*,last)

“param name”是参数名,list of attributes分为三部分:“LB=”“RB=”“ORD=”,分别指左边界、右边界和符合条件的第一个,最后一个可以写ORD=ALL,意为全部取出来。而LAST没有,写LB/RB时,写入引号需要转义符。

e)在脚本中参数化脚本中的动态值;

f)校验动态关联的正确性。 

十三、思考时间

没有:压力会大一些

有:压力会小一些但会比较符合实际等待时间

十四、.net内存分析

1、堆栈——放的是局部变量、方法参数、返回值和其他临时值

2、托管堆——0级、1级、2级,用于分配托管对象的区域,也是垃圾回收器区域

3、非托管堆——用于运行时数据结构、方法表、microsoft中间语言(MSIL)、JITed代码

垃圾回收器只是回收了托管堆的内存,堆栈是自动释放的,非托管堆由非托管堆内代码自动控制,而托管堆也有可能内存泄露

.net常用性能测试指标:

1、Process/Private bytes一个进程所独占的内存是多少,无法跟其他进程共享

2、.net CLR Memory/#Bytes in All Heaps托管堆内总使用内存数

3、.net CLR LocksAnd Threads/# of current logical Threads,在.net运行过程中所使用的线程,注意:线程里面所使用的内存是在堆栈里面分出来的

举例

a)1不让其增长,2没变,可能是非托管堆性能有问题,因为整个内存增加,而托管堆内存的没有变的

b)3增长,1增长,线程泄露,导致内存泄露

c)

堆栈内存泄露(StackOverflowException)

可能引起堆栈内存泄露的原因:

1、栈资源并且从不返回的方法调用

2、线程泄露

每分配一次堆栈后没有回收回来,就是线程泄露,严重会出现StackOverflowException异常

最新的桌面机与服务器版的WINDOWS堆栈大小为1MB

3、托管堆的内存泄露

大对像的内存碎片——如果在栈中申请有9千个字节,它不会放在堆栈中,而是在堆中。.net不会做压缩处理,不断地申请回收,可能会出现内存碎片问题导致泄露

不必要的根引用

中年危机

使用工具CLEprofiler.exe,不断申请回收大字节进行监控

十五、LR解密

Lr_decrypt,把加密函数进行解密

Action()

{

Char *str=”abc”

Char *str1;

lr_load_dll(“encode1.dll”)// 加载动态连接库,encode1.dll是.dll文件名

str1=(char *)crypt_encrypt(str)//调用接口将字符变量str放到.dll文件中去,crypt_encrypt //Dll文件发布了一个接口

lr_output_message(“encrypted=%s”,str1);

lr_out_message(“%s world”,lr_decrypt(str1); //解密

加密的话需要用外部的加密方法,使用LR自带工具或自己编写.DLL文件。

十六、写入错误的用户名和密码不出错

加检查点

要insert的地方右键addstep/ web_reg_find/增加search test/

文件。

 

web_find 函数在 HTML 页中搜索指定的文本字符串

web_reg_find 函数注册一个请求,以在下一个操作函数(如 web_url)检索到的网页上搜索一个文本字符串

web_global_verification属于注册函数,注册一个在web页面中搜索文本字符串的请求,与web_reg_find只在下一个Action函数中执行搜索不同的是它在之后所有的Action类函数中执行搜索的。

web_find函数使用时,使用在查找页面后面“插入”。

参数“其右侧”、“其左侧”是针对要查找的文本而言。

如,Web Tours site,要查找Tours,“其右侧”应该为“Web”,“其左侧”应该为“site”。

另加一个链接,是Zee的文章,可以帮助理解,当然,看到这里的朋友多数都是初学不久或是已经对LR生疏的朋友,看看Zee的博客可以学到很多东西。

十七、Analysis中summary和Average transaciton response 报告中的平均值、大小值  還有init  以及  end  的值都不太一樣
解决方法:在transaction页面中调整set Granularity值(右键)summary默认为20秒,只要将transaction的值也调为20秒就一样了

十八、如果在回放脚本或加载场景文件时出错,很有可能是存放路径不正确的问题造成的,保存时要尽量存放在没有中文、没有空格及不常用字符以及不是多重子目录的文件夹下,感谢“求知”的问题以及对问题答案的执着寻求。

原文地址:http://blog.163.com/mmhao_54/blog/static/69570810200801661727607/

posted @ 2008-06-10 16:12  Atine  阅读(872)  评论(0编辑  收藏  举报