本文主要针对WEB系统的性能测试。不涉及具体的执行操作,只是本人对性能测试的一点理解和认识。 性能测试的目的,简单说其实就是为了获取待测系统的响应时间、吞吐量、稳定性、容量等信息。 而发现一些具体的性能相关的缺陷(如内存溢出、并发处理等问题),我认为只是一种附加结果。 从更高的层次来说,性能测试最想发现的,是瓶颈。如何能得到所需要的信息,就需要从多方面进 行测试。 性能测试的内容 性能测试种类的划分与定义这里就不说了,各有各的说法,比如性能测试、负载测试、压力测 试这三个词,在网上能找到N个版本的定义,大体理解就行了,没必要在文字层面上较这个真。以 下的内容也只是我个人的理解,一些名词的定义可能和其他资料有所不同,但在我的工作中,这样 是比较形象和容易理解的。 在实际工作,一般的应用系统会从这么几个方面进行性能测试。 1.基准测试
Benchmark或者Baseline测试。一般为单用户测试,或者是零数据量环境下的测试。目的在 于建立一个可度量的参考标准,为其他测试场景或者调优过程提供对比参考。也可认为是最基础的 性能测试,如果基准测试的结果都不能达到预期要求,那么后续场景也就没必要测试了。 2.日常压力测试
在基准测试通过后,应该先进行较小压力下的测试,首先对系统在日常压力下的表现进行测试。 此压力需要根据系统使用相关数据得出,如系统平均每天访问量、平均在线人数、每日完成事务数 等。通过此测试,发现一些较表面的性能问题并进行处理。 3.峰值压力测试
在日常压力测试通过后,需要进行更大压力的测试。此处压力同样需要相关数据的支持,一般 为未来几年后的预期压力。可根据历史日均压力、日最高压力等信息,估算出未来几年的日均以 及日最高压力。再通过一些通用估算方法、如二八原则(80%的工作在20%时间内完成,相当于 2小时完成一天8小时的工作量),将日压力转换成峰值压力。
峰值压力为可预期到的最大负载压力,通过了此测试,则认为系统有能力满足未来增长的压力。 4.容量测试
验证了系统是否可满足预期的压力后,还需要知道系统能够承受的最大压力,也就是容量。一 般通过“拐点法”进行测试,逐步增大系统的压力,直到性能指标不可接受或者出现了明显的拐点。 如下图,拐点在哪?
|