---------------------性能测试培训--------------------
惦记了一个多星期的为期2天的培训结束。培训讲师是段念,一个工作11年的小伙。对于性能测试,写就一本《软件性能测试过程详解与案例剖析》,参与了Google API大全——编程·开发·实例》,对于此次培训,我倒还真是有了一些认识。工具这种东西,只要你去用,去摸索,怎么着都能学会。有一些思路,思想,还有一些经验的分享,也估计只能花钱去买咯。
做些笔记:
1)需求决定性能好坏。
举例说明:一个报税系统,需要填写2个多小时的数据,然后报送的时候需要12分钟,性能是好是坏?
客户反馈:性能不错,能接受。
思考:开始的时候忒不能理解,12分钟在等待计算机响应,是不是太恐怖了点。后来发现,有个前提,需要填写2个多小时的数据。报送12分钟。来平均一下我们的数据,2个多小时,算2个小时。也就是1个小时要对应6分钟提报时间。再次拆分,10分钟对应的是1分钟报送时间。再次拆分也就是10秒的填写,对应1秒的报送时间。那我们在模拟一下系统的用户,填写30秒,等待3秒。嘿,按照258理论。这个完全还是可以接受的。所以结论是性能还不错。
换句话来说,做性能也是为了客户而做,客户都满意了,自己何必再吹毛求疵?
2)响应时间
响应时间分为两段:a)服务器响应时间 b)客户端响应时间
在目前我们所面对的大部分的应用中,以web应用为主。客户所感觉到的时间为:网络传输时间+服务器响应时间+客户端响应时间。目前的多ajax应用中,客户端响应时间反而成为了一个不确定的因素。
3)虚拟并发的估算
一般系统为同时在线的10-20%之间。
在选定的时间段,用户行为基本稳定,有相对固定的行为模型。业务并发数用于模拟用户的真实负载情况。这是一个时间段的概念,具有业务意义,体现的是用户的视角;而服务端的并发数表明软件在同一时刻受到的用户请求,这是一个时间切片的概念,体现的是应用本身的压力,一般用于查找并发引起的问题,比如死锁,内存溢出等所用的概念。利用正态分布来计算并发峰值。
4)性能诊断过程
大胆设想,小心求证。
举例:医生看病,比如一个人发烧来到医院,说自己发烧,让医生给诊断,医生也不知道是怎么回事啊,就把常见的发烧病因列举一下,然后在一一检查,最后定位出来。
同样,做性能测试和分析也是如此,要能知道大概是怎么回事,才能定位出来问题。
用福尔摩斯话结尾:One should always look for a possible alternative and provide against it. It is the first rule of criminal investigation。
你必须寻找各种可能解释事情的方法,然后想办法看看能否试图推翻它。 其实就算是让你看到内存分布有能如何呢?
性能测试和调优也莫过如此。
5)短板效应
一个系统能承受多少压力,不是取决于服务器的配置什么性能最优,而是服务器的最弱的那块硬件性能。
举例:人大学生选课系统,2台数据库服务器,负载均衡。由于2台服务器的硬件配置不一致,一台CPU一直保持在100%,而一台CPU一直就没上过50%。这时候,那台一直100%的就会导致压力脚本运行失败。变成了整个系统的短板。
6)测试分类
- 性能测试。(performance testing)
-
负载测试。(load testing)
-
压力测试。(stress testing)
-
配置测试。(configuration testing)
- 并发测试。(concurrence testing)
-
容量测试。(volume testing)
-
可靠性测试。(reliability testing)
-
失败测试。(failure testing)
明确目的,才能做好测试。
7)响应时间和并发数的关系
由线性转为非线性。
举例:理发店举例。
一个理发店4个理发师,理发一次需要30分钟,来小于等于5个人的响应时间都为30分钟。等来了8个人,平均响应时间就是一个小时。如果来的人越来越多,时间的变化曲线应为抛物线型。
8)从需求中获取和性能相关的指标
-
在约定的时间内完成的业务数量。
-
和时间相关描述
-
和速度相关描述
关于性能的需求,2个盲点:a)二义性。b)不可测试性。碰到这种问题,需迭代回需求状态,确认需求。
9)确定目标确定的风险考虑
似乎所有的和风险相关的事情,都会有以下2种。
-
严重性。
-
可能性。
举例:车祸,不做赘述。
--------------------------------TIPS---------------------------
1)测试数据分为负载数据,探测数据。
2)时间戳的使用需配合ntp协议做测试服务器和客户端的时间同步
3)开源用的最多的测试工具 jmeter。
4)http1.1协议规定不能同时发起超过2个的请求。js需单独占用线程下载。
5)loadrunner的使用中,如果是web页面ajax的应用较多,录制脚本请选用url的选项进行录制。
6)在脚本中,如果值能确定,请用参数。如果值不能确定,需从服务器上获取,用关联。
9)fiddler,调试工具,可模拟http请求。
10)用loadrunner监视器他的机器,如果是*nix系列的机器,必须要保证rstatd的进程在运行才能进行监视。
11)页面缓存,用版本来指定文件夹存放静态需缓存数据,可以把静态时间设置比较长。来源于http头的 expired来设置。
12)firefox的插件yslow,firebug的使用。
13)推荐网站:www.testingreflections.com
课后扯淡:最怕领导说要加入项目组了,加入一个(人)死一个(项目),深以为然。比如第一个报税的举例,自己人能把自己人掐死。
----------------------dokuwiki-----------------------
见到了上次性能测试这一块的一哥们,用dokuwiki在本地跑着,记录了他的工作过程,也方便查找,我决定学习了。







