抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

一.什么是性能测试

介绍

以下内容摘自百科:

“性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。”

目的

识别系统的弱点,评估系统能力,发现系统性能瓶颈,提高系统可靠性能和稳定性

性能测试主要分为两种,一种是负载测试,一种是压力测试。前者是为了找到系统承载能力的极限,后者是为了判断实现是否达到初衷。

为什么要做性能测试

为什么要做性能测试呢?一个是依据经验系统有重大改变需要提前做下测试拿到一些参照数据,一个是已经出现了性能瓶颈,需要做性能测试,获取优化前后的数据,对整体可用性做一个评估。

例如【场景A】:某公司是做SaaS服务的,起初商户有1000家,随着名气扩大和时间耕耘,接入商户数量增长越来越快,增速保持在每年100%,这个时候,就需要对系统各个功能接口页面做一个全面的性能测试。

例如【场景B】:系统有一些访问量较大的接口,因为一些原因,做了重大修改(或者直接就替换了接口),为了使修改后不会造成性能下降,需要对修改前后的接口做一个性能测试,对比前后性能差异。

例如【场景C】:系统开发过程中,替换了中间件,或者更换了一些底层的组件,引擎,或者更换了服务器提供商等等,也需要做性能测试,看下是否替换影不影响性能。

例如……

怎么做性能测试

通过上面的三个场景,我们知道目的有一些细微差别。但是有一点,绝大多数情况下是适用的:首先要对现有环境(or接口)做下性能测试,出具报告。

然后依据场景,看优化后,新的环境(or接口)TPS是否大于等于原来的TPS,同时需要查看监控,看一下服务器负载,I/O等主要指标是否有明显升高。

而对于场景A,在对现有环境做完性能测试以后,计算出一个当前的TPS与服务器之间的一个关系,简单举个例子,例如某接口当前实际1000商户,日常TPS为100/S,而通过压测该接口在两台机器上最大可承载2000家商户 最大TPS为200/S。 而后台有4台机器,那么每台机器能分摊50TPS,然后根据目前商户数量的增速,提前做好系统扩容的准备,计算出在什么时间点,同等配置下系统应不低于几台机器才能满足日常使用。

对于单独某个接口,实现如下:

image.png

其他

性能测试是一个整体性比较强的工作,虽然往往修改的只是一个接口,也需要考虑关联影响,不能省。而钓对于当前环境的系统架构,各种微服务,中间件,缓存,主从,MQ等等,还有系统本身的session机制,cookies机制,需要更多的思考。而面对越来越复杂的业务架构,一个好的监控软件也显得很有必要。我们测试系统,测试接口之外,也需要关注下服务器的各项性能数据。

另外像一些需要VPN的,系统有多个集群跨越南北的,都是会影响最后结果的因素,需要考虑进去。

评论