目录:导读
- 前言
- 一、Python编程入门到精通
- 二、接口自动化项目实战
- 三、Web自动化项目实战
- 四、App自动化项目实战
- 五、一线大厂简历
- 六、测试开发DevOps体系
- 七、常用自动化测试工具
- 八、JMeter性能测试
- 九、总结(尾部小惊喜)
前言
抛出一个问题:性能测试能对测试工程师本人和企业带来什么价值?
随着不断的学习成长和工作中的应用实践以及和很多业内同行沟通交流,我总结了如下几点性能测试的优点和价值:
提升测试工程师的技术能力;
提升对系统架构和业务逻辑的了解;
提升测试工程师在职场和求职市场的竞争力;
提前发现系统潜在的不稳定因素,提高线上系统稳定性;
更精准的流量评估和容量规划,降低系统的硬件成本和维护成本;
保障系统在大促秒杀等场景和峰值流量冲击下的稳定性,助力业务目标达成;
全链路压测的衍生和挑战
随着互联网行业不断发展,系统架构越发复杂,业务场景越发多样化,对性能测试的要求也越来越高。
传统压测方式已经无法满足业务和技术的发展需要,全链路压测,就是在这样的背景下应运而生的。
作为性能测试领域新阶段的最佳实践,全链路压测在更多公司被探索和应用的过程中,也遇到了种种挑战。
传统压测和全链路压测的区别
相比于传统的压测方式,全链路压测在性能测试领域,有其独到的特殊性:
压测类型 | 压测工具 | 承接方式 | 压测环境 | 环境特点 | 压测场景 | 压测过程 | 测试结果 | 投入成本 |
---|---|---|---|---|---|---|---|---|
传统压测 | Jmeter、Locust、Loadrunner | 需求响应式,被动 | 测试环境/性能环境 | 环境不稳定/配置低/压测结果参考性不高 | 单机单接口、单机单链路、单机混合链路 | 可观测性较低,延时较高 | 数据维度小,无法提供太多数据便于分析 | 需要搭建单独的压测环境 |
全链路压测 | 压测集群、流量引擎、录制回放 | 发现系统所有链路瓶颈点,主动 | 生产环境 | 环境稳定/完全真实环境/压测结果真实可靠 | 包含覆盖范围内的所有核心链路及场景 | 实时可视化观测 | 提供多维度细粒度的数据,便于快速定位问题优化 | 完全线上生产环境进行,无须单独搭建环境 |
以某银行信用卡中心性能测试为例,当时也是传统压测占大多数。要完成一次完整的压测,需要经历下述多个环节才可以完成:
业务研发部门提出压测需求,压测团队和业务方沟通后确认是否执行;
业务部门提供压测范围、涉及链路接口、数据并且准备相关的铺底数据和参数化数据;
压测团队和运维DBA沟通,准备相关的压测环境,开通防火墙及临时访问权限;
压测团队调试脚本,有问题需要业务研发协助定位解决;
开展压测,通过nmon、JDK自带工具获得压测数据,然后导出进行图表绘制,进行性能问题初步分析;
和业务研发、运维以及DBA沟通,一起排查定位问题;
优化发布后,再次验证(这个环节要持续多轮);
压测完成,统计压测结果,手动编写压测报告;
上述过程还只是在测试环境进行压测,不仅耗时费力,还无法对生产环境的性能评估有足够的建议参考。每次上线特别是大促阶段,还是提心吊胆的怕出问题。
全链路压测落地过程中的挑战
虽然全链路压测解决了传统压测过程中的种种痛点,可以为线上性能评估提供更多详实的参考建议。
但在落地过程中,全链路压测依然要解决很多问题,主要有如下几点挑战:
链路梳理:现在大多数企业都是采用微服务架构来设计系统,且业务场景多样化,导致了系统架构异常复杂。要覆盖所有压测范围内的场景,就需要对涉及的所有应用及其调用关系进行梳理。目前业内还没有较好的链路梳理工具,导致这个过程需要人肉来梳理,耗时且费力。
流量评估:不同企业在监控体系方面的建设都不一样,要进行全面详细的流量评估,需要有完善的监控平台来进行各维度的数据采集和展示。
数据隔离:生产全链路压测最重要的一点是避免对生产数据造成污染。
业内常见的做法有如下两点:
全链路监控:在全链路压测实施过程中,实时的可视化监控监控是很重要的一点。在整个压测链路中,能实时的观察到每个调用链路的具体信息,对问题的快速发现和定位有重大的帮助。
压测数据写入正式库表,然后通过特殊的字段进行清理(业务改造成本大,清理风险高,耗时久)
采用影子库表,压测流量数据进行影子库表,在不对生产数据造成污染的情况下进行压测;
服务保护机制:全链路压测是在生产环境进行,压测过程中,除了要防止数据污染,还要考虑到不把生产服务压垮。因此需要一套完整的机制来保证,压测在正常实施的同时,不对生产服务应用造成影响。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
只有在放弃时,才能切身体会到奋斗的重要性。努力拼搏不一定能得到想要的结果,但不努力肯定什么都得不到。在追求目标的路上,保持勇气和坚定信念,才能最终实现自己的价值和梦想。
在人生的道路上,不要被困难和挫折所击倒,坚持自己的梦想与信念,迎难而上,勇往直前,成功的道路上充满艰辛,但只有不停地奋斗才能获得胜利!
每一天都是一个新的开始,不要给过去和未来留下任何遗憾。即使路途坎坷,也要勇往直前,相信自己的能力,追求自己的梦想。只有坚持不懈地奋斗,才能收获属于自己的成功和幸福。