怎样开展一个性能测试
一、需求分析:性能测试目的、测试功能/接口/场景/类型
TPS、响应时间RT、并发用户 ----测试目标不能自己定。(必须)
1.查看日志,按天分析TOP系列的URL(用户常用的功能或者接口),确定功能场景;相同秒、分钟、小时数最大的请求数(awk),确定最大并发数;每秒每个URL有多少次,确定单个URL的最大并发。
分析日志的工具:AWstats、Webalizer Analog、Deep Log Analyzer、Web Log Explorer
日志分析的峰值+30%制定为性能测试初步目标。最大TPS,混合TPS,单个TPS都需要测试。上线前需要测出最大TPS。
新系统的测试目标:①.需求或者开发。②.同公司的同类系统做参考。
2.通过性能预警可以保证上线系统性能问题。
举例:以TPS作为预警:线上TPS为200,预警值为190,如果预警频繁表示需要扩容(加机器或者优化)
举例:以平均响应时间RT作为预警:比如平均响应时间是2s,2s是预警值,所有小于2s的请求之和在95%以上就没有问题;如果小于95%,说明有5%以上的响应超过2s,那么需要做性能优化。
3.CPU、内存、IO、网络;数据库:SQL执行效率和有无慢查询;JVM:GC情况,FGC间隔次数、FGC时间;中间件队列,排队时间,缓存命中率。
通过以上权重分配分数,给优化建议,但是权重比例待定。
淘宝、电商→全链路压测:所有流程,浏览、支付、评价等流程,在线上全链路压测。
流量复制工具:tcpdump;流量复制:把线上的请求复制一份到线下。线上数据复制到线下要做数据脱敏:敏感数据剔除掉。
二、测试计划、用例设计,了解系统构架。
三、了解系统构架,线上服务软硬件配置,从而申请性能测试环境。软硬件至少单节点与线上保持一致。
硬件:CPU、内存、磁盘、网络、磁盘分区、磁盘阵列、文件句柄数、tcpip配置等等
软件:JDK版本(最末位版本号)、操作系统、软件版本(配置文件)、数据库、JVM、缓存、其他等