定性能指标,又分为迭代项目和新项目,迭代项目就根据生产监控、日志分析来评估指标,这里需要做容量规划,新项目单独评估(后续详细介绍);
这里说下性能指标,一般是tps(每秒处理事务数,这里都是通过的事务)、art(平均响应时间)及并发数,加上服务器资料利用率的要求(cpu、内存、IO、网络等)、各个服务的资源情况。
三、熟悉系统架构,申请性能测试环境
做性能测试,必须要熟悉项目的架构,这样你才知道监控哪些服务器,以及准备监控方案(监控方式及监控的性能指标点);
包含具体用到的web服务器、应用服务器、缓存数据库服务器、数据库服务器、文件服务器等;
主流的技术栈:nginx、dubbo、mysql、redis、jvm等等(后续专项介绍)。
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】
四、制定性能测试方案
项目背景及架构分析,
需要的资源,
技术策略(比如压测、监控、分析工具选择等),
场景设计,
计划什么时候做什么事等等。
(模板请联系作者获取)
五、搭建测试环境,准备测试数据
搭建测试环境是测试必备的技能,当然,如有困难,你也可以找运维、开发一起配合;
测试数据分为基础环境数据和业务数据;
基础环境数据可以从功能测试的库导过来,改一些配置即可;
业务数据包含:存量数据+容量规划数据,比如一个查询接口,都是并发100用户,对应的表数据量是1万和100万,压测结果是不一样的;
数据量要参考生产环境,如果是新项目,除了空库压,最好也做一下存量数据压。
六、压测脚本开发
主流程稳定后,调试被测接口、开发压测脚本(也可以在功能测试环境进行);
客户端并发工具,推荐用jmeter,主流、开源、轻量、免费、功能强大;
根据实际情况,对脚本调整,比如:参数化、关联、事务、检查点、思考时间、信息头管理器等;
这些是基础,可以访问博客:
这里再强调一下,jmeter只是客户端并发工具,jmeter≠性能测试。
七、预压测(基准测试)
少量并发(比如1个用户),压测10分钟,
第一:可以看压测环境功能是否通;
第二:估算并发过程中需要多少参数化数据的数据量(具体估算方式后续介绍)。
八、执行压测并监控
场景设计好后,就可以执行压测了,然后监控查看测试各项指标是否满足需求;
如果不满足,可以结合表象及根据自己的经验直接去看预估的瓶颈点;
否则,从请求开始,一步一步排查请求流经的节点,包括服务器资源(cpu、内存、磁盘io、网络)是否存在性能瓶颈、是否存在队列、线程池、连接池、线程死锁、数据库死锁、慢sql、长事务等性能问题;
经常有测试朋友问我用什么工具监控,我大部分都是用的命令,为了方便,也会写shell脚本来监控;
linux服务器,常用的命令是top、vmstat、free、df、sar、iostat、netstat等,一般是多个命令配合着用;
java应用:jvisualvm、jconsole、jmap、jstat、jstack等,以及自己写的一些shell脚本;
redis、mysql、jvm等等,后续文章会专项介绍。
九、分析定位
基于上一步的监控数据,对瓶颈进行分析、定位,模块隔离分析、日志分析、内存分析、线程栈分析、代码跟踪等等;
这个真需要实战积累,没有捷径,遇到好几个去参加过性能培训的朋友,他们反馈说还是不会性能,操作起来同样一脸懵逼、无从下手。
十、性能优化