五年测试开发心路经历:沉淀与思考

前言

前段时间,我在准备绩效材料,总结过去一年的质量工作和产出。不经意间,感叹时间飞逝,今年是我在测试开发领域摸爬滚打的第五个年头,趁着这个时间点,对过去几年工作做个小结。

总结有几个目的:

  • 沉淀与分享:沉淀过去几年的质量保障技术和工作经验,一方面可以为刚入门的同学提供些参考,希望帮同学们少走些弯路;另一方面,也让自己可以带着批判的眼光审视这几年的工作,发现不足,持续改进。
  • 计划与鞭策:基于过去五年的工作积累和当下行业热点,我制定下一个五年计划,明确未来的发展方向,并定期自我鞭策。
  • 交流与共勉:抛砖引玉,期待与业界同仁展开深度讨论,获得宝贵建议。

经历

2019 年:

  • 7 月:在学校当地某网络安全公司态势感知研发部进行短期实习,初步体验职场环境。
  • 下半年:加入百度网盘部门担任测试开发实习生,参与一刻相册 v1.0 和百度网盘核心模块的质量保障。

2020 年:

  • 获得百度智能云测试开发 offer,实习期间负责网络业务测试。
  • 正式入职后转入存储测试团队,开启为期三年的云产品测试生涯,专注质量保障与效能提升。

2023 年至今:

  • 加入 OLAP 领域初创公司,负责质量保障体系建设、效能提升和基础设施优化。
  • 目前负责产品某个方向质量保障工作。

职业生涯前五年关键字:存储、质量保障、效率提升、基础建设。

沉淀

主要可以分为三个方面:质量保障、效率提升和个人技能。

以下是个人经验总结,大致列个大纲,很多概念不会细讲,具体细节可以问大模型或 Google。

质量保障

讲到这里,很多同学可能会直接跟测试挂钩,其实质量保障并不等于测试。测试只是质量保障的一类手段。我总结为 3 方面:质量评估、质量方案、质量标准。

质量评估

质量评估目的是明确系统质量的薄弱点 以制定质量保障方案,按优先级开展。

测试覆盖

  • 测试覆盖:内部所有测试进行复盘。
  • 代码覆盖率:执行所有测试,产出代码覆盖率。每种代码语言有对应的工具 Java JaCoco, C++ llvm 等。
  • 日志覆盖率:执行所有测试,产出日志与代码中日志打印逻辑覆盖率。baidu 有个项目 logcover,个人体感 ROI 不高。

BUG 分析

  • 主要是基础场景和 KA 用户场景,需要高优关注。并对 BUG 进行分类,功能、性能、稳定性等。

质保方案

质保方案大致可以分为 3 方面:质保流程、质量测试、质量标准。

质保流程

这块可以网上搜下软件工程测试流程,说的比我这要细,总结下大概以下几个比较有用:

测试准入

  • 准入测试通过:各种 CI 通过。
  • 增量覆盖率达标:根据实际系统类型,设置基线,比如数据库内核部分 90% 以上。
  • 提测文档给出:包含设计文档、代码改动 PR、风险点等。

质量评估

测试设计

测试设计评审

回归测试

  • 测试通过后,提测版本在回归流水线上执行,判断是否影响存量功能。当然,回归测试也可以前置到测试准入阶段执行。

发版准出

  • 回归测试正常、性能无回退等

冒烟测试

  • 挑选高优测试用例作为冒烟测试用例,产品上线后进行验证。

PoC 测试

  • 在客户环境或者预生产环境验证。
质量测试

这块可以网上搜下测试金字塔,从底层到顶层,包含但不限于:

基础层:单元测试/打桩测试

中间层:功能/兼容性/集成测试

高层:性能/长稳/压力/混沌/安全/场景仿真

质量标准

任何工程项目都有质量标准,不限于系统软件,汽车、桥梁、食品等。

当然质量标准基线越准确,越丰富、越细节,对应的工程越可靠。

标准基线:这块可以基于项目真实情况,制定对应的质量标准基线,比如:

  • 发版所有测试均通过。
  • 发版所有测试情况下,不触发监控告警。
  • 发版性能所有性能场景不回退。

发版报告

  • 需要把所有测试情况真实清晰的输出。

效率提升

这块主要看公司需求,提升测试或研发效率,包含但不限于:

CI/CD

测试工具

测试框架

测试平台

监控告警

个人技能

这块需要自己有个定位,在某个领域想成为什么样的角色,对应的去掌握相关技能。包括硬技能与软技能。

硬技能

系统熟悉

  • 用户场景
  • 系统架构
  • 重要模块
  • 代码细节

理论知识

  • 计组
  • 网络
  • 操作系统
  • 数据库等

工具使用

  • 编程语言
  • 系统工具
  • 测试工具
  • 测试框架等

代码能力

  • 代码走读
  • 代码审查

问题解决

  • 问题复现
  • 问题定位

软技能

质量、效率、运维的思维和方法论

向上、向下管理能力等

思考

这是我一直想写的一篇文章。由于篇幅有限,简单总结了几年的工作。后续我会每块内容进行完善或单独写文章与各位讨论。

测试开发的这几年,我对质量保障这个事儿有了比较深刻的理解,获得了较多经验。同时借此机会,感谢各位老师给予的帮助与肯定。

近两年,计算机行业热点大家想必很清楚。生成式 AI 与大模型推动了全产业链革命。有时候我会想,作为测试开发,如何具备立身之本,才不会被 AI 大模型的浪潮淹没。

结合工作沉淀和行业热点,我在多个方面给自己制定下个五年计划:

  • 方向方面
    • 持续在生成式 AI 与大模型沾边的基础业务。
  • 技能方面
    • 具备带人的能力。
    • 精通当前质保项目(OLAP)的实现原理。
    • 持续提升基础理论、工具和代码水平,具备问题定位、风险评估和客户重保能力。
    • 能够运用大模型推动在业务质量保障的某个领域落地。
    • 学习网络安全,最近对网络安全比较感兴趣。未来大模型安全也是个方向。
  • 其他方面
    • 输出《分布式存储系统质量保障笔记》,希望对相关从业者有帮助。
    • 保持良好的身体状态和心态。

参考

推荐书单

  • 《软件测试的艺术》(Glenford Myers)
  • 《Google 软件测试之道》(James Whittaker)
  • 《设计数据密集型应用》(Martin Kleppmann)
  • 《金字塔原理》(Barbara Minto)
  • ...

讨论

  1. 在当前AI大模型快速发展的背景下,传统质量保障手段是否会被AI取代?测试开发工程师应该如何转型或提升技能以适应这一趋势?
  2. 作为测试开发工程师或架构师,你认为最难能可贵的品质是什么?是技术深度、风险嗅觉,还是其他特质?你在实践中如何培养这种品质?
  3. 你目前从事哪种岗位,深耕了多久?是否有不一样的心得体会?

欢迎分享你的观点或经验!

相关推荐
小小面试官1 个月前
java江湖系列——集合世家争霸(下)
java·开发语言·list·set·map·集合·hashmap
ling__wx1 个月前
List、Set 和 Map 的区别及常见实现类、线程安全集合(总结图表)
java·list·set·map·集合·线程安全
azaz_plus1 个月前
C++ map set pair
c++·stl·set·map·pair
hnjzsyjyj1 个月前
洛谷 P2234:[HNOI2002] 营业额统计 ← STL set
stl·set
笨手笨脚の2 个月前
Redis 源码分析-内部数据结构 intset
数据结构·redis·set·intset·并差集
星迹日2 个月前
数据结构:Map & set - 习题(三)
java·数据结构·经验分享·set·map
秋已杰爱3 个月前
map和set
开发语言·set·map
zxctsclrjjjcph4 个月前
【C++】map和set的封装
java·c++·redis·set·map·红黑树
胡西风_foxww4 个月前
【es6复习笔记】集合Set(13)
前端·笔记·es6·set·集合