* 性能测试,一直徘徊在门外
做QA多年了,手工功能测试,自动化测试做过的项目不少。但做性能测试的项目很少。
我感觉性能测试和功能测试,自动化测试完全不一样,这种不一样是从测试理论到测试目的,测试方法,测试工具等等都不一样。再加上性能测试本身的知识,实践都是挺丰富的。所以功能测试和自动化测试经验丰富,初次面对性能测试也是两眼一抹黑,狗咬乌龟,无从下口。
因为不会,所以自己对性能测试一直都感兴趣,平时也不时关注一下相关的信息,性能测试的书和网友写的文档也看了一些,甚至也经历了几个性能测试相关的项目。但感觉这些介绍都有点隔鞋瘙痒,看完之后只是多了一些零星的知识。自己对性能测试的理解总有在门外徘徊,并没有真正掌握的感觉。
* 复杂的性能测试
其中一个原因,就是性能测试看上去比较复杂。比如 段念的 "软件性能测试过程详解与案例分析" 把测试类型可以细分为“性能测试,负载测试,压力测试,并发测试 … …”
测试的目标也挺多,这些目标分别来自于QA,Dev,客户,系统管理员…
过程也比较复杂,具体可以参看书 "Web application performance testing"。
计数器,报表更是五花八门,让人眼晕。
对于任何复杂的事物,我认为一般来说都有一个核心的东西,核心是比较简单的,而复杂性是来源于在核心上面加了越来越多特定方面的功能造成的。要理解和掌握性能测试,一定要把这些附加功能剥离,把核心的东西找出来。那么性能测试的核心究竟是什么呢?
* 从简单出发
前段时间,老大交代了一个任务就是对一个产品做性能测试。他提出了对性能测试的要求,比如测试结果要能评估系统的性能,要能发现性能相关的bug,要能给Dev提供足够的信息去分析bug,要能测试新版本的performance downgrade,等等。没错,这些都是性能测试中常见的要求,但我知道要是一开始,就打算满足所有的这些目标,那我肯定搞不出来,毕竟我还是性能测试的菜鸟。
所以,我一开始定了一个最简单(可以说简陋)的目标: 跑完测试,得到一个性能指数,用这个指数来表示系统的性能。具体来说就是我们定一个固定的虚拟用户的值(凭感觉),然后统计 响应时间的平均值,用这个值来表征系统的性能。这个就像常见的pc上的3d性能测试样,无论显卡性能如何,都跑同样的test,用同样的过程,同样的计算指数的方法。这真是一个简单得不能再简单的性能测试目标。