我转行做软件测试工作已有六年多了, 从功能到自动化测试,然后负责性能测试团队和质量团队的技术专项治理,再到测试专家角色,负责整个技术项目的产品/运营和质量保障工作。
其中性能测试和线上稳定性保障,算是我最擅长的技术领域。很多同学咨询过我,性能测试如何入门,如何快速提升压测和性能优化相关的技能。
我写了很多文章分享性能测试相关的干货文章,但发现还是有很多同学迟迟无法入门,对性能测试的认知依然停留在使用工具压测然后统计数据出报告就完事的层次。
这篇文章,我想结合自己的实践和技术成长经历,聊聊性能测试如何从入门到落地实践的路线图。
导图
性能测试从入门到落地实践的路线图,我会以下面这张图为示例来分开描述。
方法论
有句话叫做“工欲善其事,必先利其器”,我想在后面补充一句:“欲利其器,必晓其理”!
我觉得无论任何一种知识或者技术领域,想要很好的在这个领域有所收获,一定要先掌握这个领域的理论知识,并且对相关的底层通用知识有所了解,否则在深入实践时会遇到很多认知上的偏差导致的结果南辕北辙。
基础理论知识不难学习,网上一搜很多基础理论知识的介绍,或者某些专业书籍上面都有很多关于理论知识的介绍。
学习理论知识不需要死记硬背,理论知识的作用在于让我们对性能测试有一个足够和全面的了解,知晓其脉络骨骼,然后按照方法论的指导,在具体的实践中灵活运用。
而通用的底层知识,对IT行业相关的技术从业者来说,无非就是网络协议、编码语言、数据库存储和操作系统相关知识。
这些知识基本是几十年前就有的,到现在没怎么变化,预计未来也不会有大的改变。
业务场景
我在前面的文章多次提到了我对技术和业务的认知,就是技术本身没有直接的价值,它一定要通过业务目标的达成或者商业活动的变现,才能体现自己的价值。
我们所有的测试活动开展,也是基于具体业务场景,因此在掌握基础理论知识后,开展性能测试的前提一定是要对业务场景有足够深的理解。
工具组件
技术不断发展带来的最大的优势就是出现了多种类型的工具,而工具的作用就是辅助人提高做事情的效率,性能测试也不例外。在实际的压测实施前后,借助工具可以事半功倍的完成性能测试工作。
上图的几种工具组件,下面列举几种供参考:
- 压测工具:jmeter、gatling、locust、ghz、perfdog、airlab、sysbench;
- 监控工具:zabbix、cat、skywalking、jaeger、prometheus、grafana;
- 分析工具:arthas、SystemTap、jconsole、visualvm、操作系统自带工具;
- 服务组件:常见的如redis、kafka、tomcat、feign、apollo、nacos、mybatis;
- 系统架构:性能测试的对象是各应用服务及技术组件,需要了解整个系统的调用关系,因此熟悉被测系统的系统架构和数据流是做好性能测试工作的必须项;
技术实践
其实性能测试只是一个统称,现在大家更习惯称之为容量测试或者容量保障。
性能测试本质是一个特别吃经验的活儿,需要大量的项目实践和踩坑排查问题,定位分析优化问题,才能累积丰富的技术经验和案例。
上面我列举了几个具有代表性的技术实践类型,其实本质都是为了保障线上服务的稳定性。
体系建设
性能测试或者说任何的技术实践,做到最后都是建立体系,体系是基于理论指导的适合自己的支撑业务目标达成的最佳技术实践。我个人认为体系建设最重要的五点要素如下:
组织结构:技术团队的人员构成、新人落地、人员培养、知识库建立以及团队目标和分工;
流程规范:好的流程规范是保证团队大部分人可以遵循同一个目标和方向前进,降低内耗;
技术体系:技术团队一定要做自己的技术体系搭建,从技术选型、demo验证到技术落地以及持续优化;
沟通协作:现在很多工作单靠自己是无法完成的,需要多人协作甚至跨团队合作,因此高效的沟通协作机制很重要;
性能文化:其实不仅仅是性能文化,每种技术实践都有自己提倡的文化,比如测试的文化就是质量+效率。文化的本质就是团队所认可并且践行的一种理念,一种有益于业务、团队和个人利益的追求。
其实无论哪一门技术领域,都需要先了解理论,才能更好的实践。所有的技术都是服务于业务,一切以业务目标为导向的开展技术实践。
技术的最大价值就在于,支撑业务更好的发展而体现自身的价值。 技术实践到最后,构建最适合自己团队和业务目标达成的体系,并且需要持续改进。
加油吧,测试人!如果你需要提升规划,那就行动吧,在路上总比在起点观望的要好。未来的你肯定会感谢现在拼命的自己!