在实际工作中,我们会接受到各种各样的性能测试任务,但是在这些性能测试任务中,很大的可能接口的性能指标没有办法很明确的给到测试人员,在这个时候怎么处理呢?
最理想的情况是:开发或者是项目经理/产品已经提前确定好了性能指标,然后将这个指标很明确的告诉你,这个接口就是要达到多少的tps
理想很丰满,现实很骨感,根据实际的工作经验看,这种根本不会有(也许有,但是我还没碰见过)
所以作为性能测试人员,我们很有必要去针对一些数据进行分析,在实际测试之前就先明确一个相对科学的指标,这样测试出来的结果才更加有价值
好,下面很重要了
一般来说:我们对压测的项目可以分为两种,一种的老项目,一种是新项目
那么何为老项目?何为新项目,这个应该对测试人员来说不难,所谓老项目也就是指已经上线运行了一段时间的项目,新项目也就是还没有上线过的项目
一、针对老项目来分析
既然已经上线运行过一段时间,那么我们可以通过以下手段对历史数据进行分析
1、业务监控系统
在比较成熟点的公司,一般都会有各种各样的业务监控系统,定期监控各业务模块核心接口的调用量,平均耗时等,这个可以直接问运维要,或者和你有权限也可以直接上监控平台中看
数据:过去一周或者一个月内没调用接口量最该的一天,然后在找到接口量调用最好的时间点(分钟),比如在12:00的调用量为10000,那么我们再换算成S级别:10000/60=167,也就是说我们可以确定这个接口满足tps为167即可
2、日志
有的比较小一点的公司,可能压根就没有建立业务监控系统,这样就没有直接的数据了,但是办法也是有的,比如:日志,那么那么多的日志,我们找什么日志呢?
比如中间件的访问日志或者tomcat的访问日志,看情况自己寻找,这里举例说明下tomcat的访问日志吧,
tomcat的访问日志我们一般可以通过localhost_access_log.*.txt这个文件进行查看,里面记录了每一个接口的详细记录,请求的访问时间,URL,请求的方式,响应码,响应时间等,但是里面那么多记录,我们怎么处理呢?
有了这些日志信息就很好办了,如果你自己会Python或者java,那就自己写一个脚本搞定,如果自己不会那就找运维或者开发了,我们只需要统计出你需要的接口在哪个时间段调用量最高,峰值是多少,然后根据上面的公式来计算出TPS即可,计算出的的tps直接定为这个接口的预期TPS
二、针对新项目
在新项目中我们可没有这些线上数据,这怎么搞?一般在新项目上线前,很有可能会先压测一波,评估下项目的性能如何,到底能支持多少的并发,这个时候这个性能预期更为重要。但是我们又如何确定这个数据呢?
这里我们一般会使用“二八定律”