测试服务器稳定性: CPU内存 硬盘 网络
建议初次测试的时候监控值
CPU:%Processor Time %Privileged Time Processor Queue Length
Memory:Avalilable Mbytes Page Faults/Sec
PhysicalDisk:%Disk Time Avg.Disk.Queue Length
Q1:loadrunner设置虚拟IP跟在场景里设置多个Vuser有什么区别,他们的目的是一样的吗?
A1:不一样的。
Load Generator上运行大量的虚拟用户,这样就造成了大量的用户使用同一IP同时访问一个服务器的情况,这种情况和实际运行的情况不符,并且有一些服务器会根据用户IP来分配资源,这些服务器会限制同一个IP的登陆,使用等。
2012-07-18补充---------------------------------------
当运行场景时,虚拟用户使用他们所在的Load Generator Machine的固定IP地址对被测系统进行访问。一般来说,每个Load Generator Machine上都会运行大量的虚拟用户,对被测系统来说,这就造成了大量的用户使用同一IP地址同时访问一个网站的情况。
其实,在性能测试过程中,使用多个IP地址和使用一个IP地址对网站进行访问并不影响被测系统的性能表现,但在某些情况下,使用多个IP地址和使用一个IP地址对系统造成不同的运行状况,此时就需要考虑更加真实的模拟,在同一台Load Generator Machine上,让每个虚拟用户都使用不同的IP地址。这种技术就被称为IP欺骗(IP Spoofer)。
一般来说,必须使用IP欺骗的情况是:1、网站采用了“根据IP确定负载分布”的负载均衡方式。2、处于安全目的,网站限制同一个IP地址只能在网站上产生有限个任务。
注意:一、Load Generator Machine必须使用静态IP地址,而不能使用动态IP地址;二、必须在设置Load Generator Machine前设置好IP欺骗的方式和打开IP欺骗的选项开关。
-----------------------------------------------
Q2:loadrunner中怎么正确的设置检查点呢,依据什么来设?
A2:检查点就是为了检查你录制的脚本的操作是否实现了你预期的结果。
测试用例有一个预期结果,一个实际结果。检查点的就是预期结果,然后和你实际运行的结果去对比,就达到检查的目的了。简单举例来说,登录成功的话页面会返回包含welcome这个字段的信息,不成功就没有,那么你就可以对登录操作设置一个检查点,检查welcome是否存在从而判断登录是否成功。
正确的检查点肯定是要根据你的业务来的,你执行某项操作,成功的话会返回什么,不成功会返回什么你需要了解,需要找到一个能给你做出唯一性判断的字段作为检查的内容。
==2012-04-24=============================
遇到的问题:
1、controller中报错"HttpSendRequest" failed, Windows error code=12029
解决方法:vuser用户数太多,系统不能支持这么多的用户访问
2、controller中报错Error -27728: Step download timeout (120 seconds)
解决方法:设置了runt
time setting中的internet protocol-preferences中的advaced区域有一个winlnet replay instead of
sockets选项,选项后再回放就成功了。具体原因请见:
http://blog.csdn.net/zeeslo/article/details/1059187
==2012-04-26测试群的问题记录====================
Q:局域网中测试,虚拟用户的增多到某点,吞吐量和每秒点击次数突然下降,被测系统(客户端),内存直线上升,cpu使用却不高,响应时间特别高,最高80%,这个啥原因呢?
A:如果cpu处理性能稳定,内存增加可能是从磁盘读取数据过多的原因吧
可能存在一些数据在缓存中找不到,必须磁盘查找读取啊
内存数据跟数据库的应该是不断交互的,这两个方面都要考虑吧
那也该考虑一下程序运行中有没有大批量的数据操作吧
==2012-05-04 365论坛收集的====================
HTTP-500错误
造成这个错误的原因具体有:
1、运行的用户数过多,对服务器造成的压力过大,服务器无法响应,则报HTTP500错误。减小用户数或者场景持续时间,问题得到解决。
2、该做关联的地方没有去做关联,则报HTTP500错误。进行手工或者自动关联,问题得到解决。
3、录制时请求的页面、图片等,在回放的时候服务器找不到,则报HTTP500错误,若该页面无关紧要,则可以在脚本中注释掉,问题将会得到解决。例如:有验证码的情况下,尽管测试时已经屏蔽了,但是录制的时候提交了请求,但回放的时候不存在响应。
4、参数化时的取值有问题,则报HTTP500错误。可将参数化列表中的数值,拿到实际应用系统中进行测试,可排除问题。
5、更换了应用服务器(中间件的更换,如tomcat、websphere、jboss等),还是利用原先录制的脚本去运行,则很可能报HTTP500错误。因为各种应用服务器处理的机制不一样,所录制的脚本也不一样,解决办法只有重新录制脚本。
6、Windows xp2与ISS组件不兼容,则有可能导致HTTP500错误。对ISS组件进行调整后问题解决。
7、系统开发程序写的有问题,则报HTTP500错误。例如有些指针问题没有处理好的,有空指针情况的存在。修改程序后问题解决。
HTTP-500错误
HTTP-500:cannot find page XXX
回放的过程中没有出现这样的错误,而在场景中出现的。检查脚本Runtime-Setting的设置,去掉Simulate a new user
oneach iteration的勾,该选项的意思是选中后LoadRunner在每次迭代时清楚当前的上下文。
==2012-05-09 51论坛收集的====================
手动场景与目标场景的区分
magee:直白点说 目标场景就是 已经给定你一个目标,你跑性能就是为了达到这个目标
手动场景 就是你对系统不了解,不知道他能经得起几个vuser,要一步一步的测试
我摘录云层大哥的书
这2天看了云层大哥的书(性能测试进阶指南-loadrunner9.1实战),终于明白了。
所谓目标场景,就是设置一个运行目标,在Controller中运行相关负载,如果测试的结果达到目标,则说明系统的性能符合测试目标,否则就提示无法到达目标。
目标场景是定性型的性能测试,我们只关心最后性能测试的结论是否符合性能需求,常常用在验收测试的场合。
如何修改各个Group的Quantity用户数:选中Scenario菜单下的Convert Scenario to the Percentage Mode
==2012-05-28 qq群收集的====================
page download per second跟每秒PV不太一样,因为页面下载的单位
和PV单位不一样,页面下载的单位是
pages/s,PV是每秒浏览的页面数,页面数不包括JS JPEG等,对于每个JS JPEG CSS这些都算一个PDS,
PV是给客户看的,
PDS是深度分析用的,
一个PV可能有多个PDS,
可以这样理解,一个请求可能请求了多张JPGE ,而一张JPGE算一个PDS
性能测试用例:1、铺底数据(数量级、获取方式、漂白方式等)2、脚本大纲3、测试交易分析4、参数配置方案5、场景设计6、数据收集(服务器、数据库、压力机等)
铺底数据:取个例子,比如你测试一个查询交易,数据表的数据量多少会影响你的测试结果,那么数据库里有多少数据合适?这些在测试前就有的数据 就是铺地数据
漂白指的是机密信息不能在测试中导致泄漏的可能而对生产拷贝来的数据进行特定的处理,比如将用户名、密码、单位信息等使用随机产生的信息进行替换
2012-06-27疑惑,已解决
如果在vugen里设置3次循环,那么转到controller中也设置3个Vuser,那么每个Vuser
就要跑3次,3乘以3总共就是跑9次了。
VuGen中参数化10个用户,我想10个并发量,那么在Controller中设置10个vuser,而不是1个vuser,因为参数化不等并发用户,这里没有设置循环次数,所以不能相乘。跑一个vuser就对应一个用户即可。
===================================================
NTP协议可以实现unix测试机与windows测试机之间的同步---这个保证了不管测试机在哪儿,是什么系统的,他们可以同步加压。
关于各地都有服务器,看有他们做的工作是否一样?假如北京放的请求分发,上海放的是数据库查询。那我北京的压力机请求分发做脚本时行加压,上海的压力机真对你的数据库查询做脚本进行加压。加压机与服务器保证在一个局域网内。如果我上海的加压机去压你北京的服务器,那就没什么意义了。
性能测试最好是不要受到外界干扰的情况下开始,放在互联网上测试,那就成了带宽测试了。
放在互联网上测试,那就成了带宽测试了。
===================================================
2012-07-15摘自段念的《软件性能测试-过程详解与案例剖析(第二版)》
虚拟用户脚本生成器通过Proxy方式实现。具体来说,就是由一个Proxy作为客户端和服务器之间的中间人,接收从客户端发送的数据包,记录并将其转发给服务器端;接收从服务器端返回的数据流,记录并返回给客户端。
小的注意点
将某个参数类型设置为File或Table后,可以手工编辑数据文件形成参数的数据池,这里要特别注意,数据文件一定要以一个空行结束,否则,最后一行输入的数据不会被参数所使用。
对于性能测试结果分析来说,一般首先关注Transaction Summary(成功和失败的事务),其次会关注每个事务的响应时间Average Transaction Reponse
Time,如果某个事务的响应时间特别长,可以分解响应时间,操作是在该事务的响应时间曲线上右键选择Web page break down for xxx,如果主要的时间消耗在DNS Resolution、Connection上则说明需要重点关注网络相关的因素;如果主要的时间消耗在Receive上,则说明可以通过减小返回数据的大小(例如在.Net中,取消VIEWSTATE)或是改变网速减小响应时间;如果主要的消耗在First Buffer那就需要进一步分析确定具体的性能瓶颈了。
===2012-08-08==============
Conf文件夹里面有一个扩展名为cfg的文件,在你测试完毕后出报告的时候要将当时的参数配置列表写入报告,标明当前环境配置下的性能表现,若上线环境与此测试环境和参配存在差异还需要写一些差异分析