摘自:https://yq.aliyun.com/articles/68196
什么时候会用到性能测试?
当性能测试开始普及的时候,那么我们会在什么阶段进行性能测试?
1.应用使用人数多,网站打开速度慢。
当应用上线有大量用户访问的时候,我们会担心系统能不能抗住压力,如果扛不住,那么业务会不会受影响?以3秒、5秒、10秒法则来说,网站打开3秒以内,用户还能接受,当达到5秒,用户可能就有点不耐烦了,当你的网站用了10秒还打不开,那么用户肯定会离开,并且下次可能不再来。
2.需要提供很高稳定性的基础服务。
在整个的网站应用架构体系中,会有一些接口基础服务,它的职责是对外输出一些稳定的查询,一些服务能力,这个时候系统需要有较高的稳定性,比如访问量很多,数据量很大,这个时候就需要关注性能。另外对于一些核心系统,可用性很高,对于性能系统也是非常关键的。
3.改动了核心应用,担心对链路有影响。
当网站应用比较复杂的时候,比如核心应用被改造了,改造之后我们会担心这对整条核心链路有影响,这个时候也会考虑是不是要去做一些性能评估。
性能测试指标及其联系
性能测试指标通常分为线上指标、基本指标、系统指标和JVM指标。可以从业务方、研发和测试三个角度去看。
通常来说,业务方提出性能指标,比如某段时间内网站可能会带来100万UV, 1000万PV,然后研发将这些指标转化成实际性能指标,比如要实现多少的成交额、交易量等,再根据目标来设定合理的架构策略,最后测试保障这些性能指标。
大家可能会有疑问,业务方给出一个指标,怎么换算成研发可以实现的指标?比如在对接阿里巴巴广告类业务时,业务方说:“这个广告发布以后,会给网站带来100万的UV”,那这个怎么换算成研发需要实现的性能指标?这中间其实存在关联。例如阿里巴巴线上监控会统计通常UV和PV的比例,然后根据放大三倍或者五倍的比例,计算出100个UV对应的PV数,这是一种方式。
另外一种方式就是对业务进行合理的预估。比如像一些平台首页发布的秒杀页面,可能秒杀产品只有100多个,但是引流来的人有100万,这个时候假设这100万用户都会去查看这个页面,再做一些比例放大,然后得出一个相应的PV关系,也可以帮我们做一个推导。当PV数据有了以后,QPS、TPS、RT也是可以换算得出的。
性能测试方法和策略
在做性能测试时,我们会采用不同的方法达到不同的性能测试目的。
1.基准测试法
当我们拿到一个性能测试项目的时候,我们会对这个系统架构做个了解,了解最好的方式是做一个基准测试,先谈谈它的基本情况。所以会去定一个小并发,比如5-10个人的并发,先去测一测,看它的响应时间,然后将此作为我们的基准。
2.压力测试
如果我们需要快速了解这个系统性能到底是什么情况?我们可以先做一个压力测试,压力测试是为了获取极限性能指标。比如可以设置一个3小时压测场景,每10分钟加10个用户,那到3小时后,可能就是180个用户了。这个时候观察,在压力不断增大过程中系统的表现。
3.负载测试
这是是为了获取性能拐点,我们叫最佳性能。当达到这个点的时候,系统能力、极限能力是多少?这个通常用来做线上流量评估。
4.稳定性测试
我们会把用户真实会发生的场景放大3-5倍,然后在线上运行24小时,在这个阶段会发现很多稳定性问题, list回收,java list回收,一旦回收出现问题,可能会出现内存溢出,这个在日常测试过程中,是很难测出来的,所以用稳定性测试查出这些问题。
5.容量测试
当我们业务越来越复杂的时候,比如一场大促,应该怎么评估线上的性能?如何去做合理的扩容?这个就属于容量测试范畴。
在具体性能测试中,如何针对不同的应用,采用不同的测试方法?比如针对响应时间优先的应用,或者吞吐量优先的应用,应该如何进行测试分析?什么时候采用单场景测试法?什么时候用组合场景测试法?什么时候使用链路测试法?这些都可以进行策略分析,以期达到最优的测试效果。