针对软件测试岗位,从业10多年所见所闻,个人对测试岗位的理解,总结出优秀的测试工程师所具备的能力模型。分享给组内,为大家职业发展和后续测试能力发展方向提供一个参考。对近些年测试领域技术发展的趋势也进行了部分总结。由于内容涉及面较多,不会对文章中提到的能力逐一进行展开细讲,有兴趣的可以下来单独沟通讨论。
一、基础能力
测试理论
偏版本功能的测试,掌握版本测试必要的基本理论和流程。
测试模型:瀑布、V、W、X、H、敏捷(慎用)。
测试过程:从版本开启到版本上线,整个过程中测试要开展的活动,常见的环节包括:开发计划和提测计划、需求分析、策划文档验收、版本整体测试计划、功能用例设计和评审、专项测试场方案和评审、测试环境和数据构造、测试执行、交叉测试、bug提交、bug跟踪修复、测试报告、预发布冒烟、开机冒烟、线上问题跟踪、复盘总结、测试改进等。
用例设计:等价类、边界值、错误推测、正交试验、因果图-判定表、探索(偏向于某种策略的随机)。
测试文档:能够编写常规的测试文档,并简洁、清晰、全面的传递信息。
问题跟踪
严重定级:问题影响面评估准确性,和项目组达成一致。
复现定位:提高重现问题的几率,帮助开发定位问题产生的原因,特别是偶现问题,要采用多种手段(DB导入、log、堆栈调用、异常信息、时序、压力、适配、配置、异常分支、异常数据、异常数值),触发问题产生,根据触发问题的手段,进行问题产生分析。
改进方案:根据问题产生原因分析,给出改进方案,并在重大问题修复时,进行记录,可以提高在程序面的理解,提高问题复现定位能力。
二、进阶能力
专项
为检测某种非功能问题而进行的测试,解决功能测试无法覆盖到的测试覆盖盲点。
客户端性能:常规性能(基本)、单帧渲染分析(高级)。
服务器性能:常规性能(基本)、性能调优(高级)。
网络测试:网络的组合参数、常规弱网络、断线重连、上下行丢包。
适配兼容:机型和用户占比,非适配问题过滤,概率。
容灾容错:故障切换、请求限制、系统公告。
安全:协议结构分析、协议测试(逻辑限制、异常类型、乱序、拒绝攻击)、脚本函数篡改、本地文件篡改、系统时间篡改、反调试、反汇编、加密、混淆。逆向技术:动态调试、静态分析、注入、hook、堆栈平衡。
白盒:静态代码扫描、单元测试、动态插桩路径覆盖。
自动化:基于UI(门槛低、难维护)、基于协议(门槛高、稳定、不依赖包)。
游戏性分析:db、log、数据建模,反向分析。
精准对比:代码、结构、资源、数值、配置。
平台能力:qq、微信、Android、iOS、字节、JJ关联的sdk功能。
个性化专项:误判、回扯率、版本同步、动作帧分析、竞品借鉴、协议自动化。
开发能力
Android:开发测试工具App,Android stdio,java、四大组件、Dalvik、Jvm。
web:php、css、html、web框架、web server、http协议、jquery。
基础组件:so、dll,动态链接库的方式提供调用接口,实现通用的服务。
开发基础:算法和数据结构、操作系统、语言特性、网络编程、数据库。
效率:先梳理主逻辑,考虑条件约束和异常处理情况,然后再编码。注释和快捷键、常用代码库、开源项目二次开发、带智能补全的ide、引用库清单导入和导出。
三、软能力
个人管理
时间管理:优先级排序、时间点设置、阻塞任务调度。
情绪管理:服务意识,合作共赢的心态,换位思考,解决问题的出发点,对事不对人的原则。
目标管理:梳理目标效果,及时干预,目标简化,关键数据。
职业规划:分短期、中期、长期规划自己的职业目标,制定配套的学习和实践计划,进行针对性的提升和总结。
合作沟通
有效沟通:沟通内容梳理,达成一致(时间点,程度),确认理解一致。
集中沟通:常规疑问集中一起问,可先尝试自行解决或者网上寻找解决方案,有一个思考的过程。
紧急沟通:影响到测试进度的事情,马上进行沟通,通过面对面沟通或者电话、语音的及时沟通方式。
专业性
主动性:主动沟通、主动承担核心任务、主动实施优化方案。
尽责:对自己做的事负责,高质量完成,对于长线的事情不断进行优化总结改进。
自我修正:能客观的听取批评,自我分析改进,形成正向的能力进化。
复盘
项目数据:对于项目本身数据进行记录:提测相关数据、测试相关数据、外网运营数据、外网质量数据。
个人数据:个人为团队贡献的产出数据,包括版本测试贡献的数据、方案建设的数据、团队建设的数据。
创新
存在问题:从漏测问题出发,分析漏测问题,找出优先级最高的痛点,进行针对性的分析,挖掘检查点和数据,尝试用技术手段完成数据获取,并检验检查点的正确性,通过多轮滚动的方式,建立测试数据库,逐步找出规律,形成某种标准。
达成目标:针对问题的解决,要抽离出当前的影响数据,针对改进的目标需要通过制定初步的数据来确认改进的效果,是否需要用其他方案或者继续当前方案。
推广:在问题项目取得一定的成果之后,再找类似的项目进行一次方案执行,进一步优化效果,逐步通用化,再通过内部论坛或者部门交流的方式进行宣传接单,扩大影响面。
四、发展趋势
分层测试
代码层:白盒
系统层:接口、功能、常规专项
表现层:UI
左移和右移
左移:相对于传统的测试流程,把测试工作前移,代码扫描、单元测试、接口测试、mock、需求测试。
右移:相对于传统的测试流程,把测试工作结束的周期延长。bugly、cube、舆情监控。
测试中台化
实现平台化(多部门参与),向中台化转换(在保证后台尽量少的维护代价的情况下,以产生和维护公共组件化的方式提供前端需要的数据,保证后台尽量少的改动,快速适应前端迭代频繁的需求)。
测试云端化
更多的专项服务被上传到云端,提供整套的解决方案,解决中小企业搭建测试环境和测试设备的巨量成本,并提供更专业的专家级测试服务(云真机、兼容性测试、压测)。
测试显示器
James Whittaker提出的概念,类似飞行显示器,把被测系统的各项数据都能够在屏幕直观的实时显示出来,从数据和状态的角度,测试可以实时的观察这些数据,捕捉到系统的异常,一种集中化的实时系统测试数据监控方案。目标是为任何人都提供可检测软件质量的工具。
自动化和大数据AI结合
基于大数据的机器学习,自动生成测试用例(1阶),自动执行用例(2阶),自动判断结果并给出分析报告(3阶),AI辅助测试的准确率也只有80%多,不足90%。这种准确率在金融等一些要求很高的系统中很难获得认同,只能作为辅助测试手段。
测试跨岗位
devops:自动构建、自动部署、自动测试、自动出报告、性能监控、预警。
测试环境容器化:环境和测试数据切换、进程级数据更改。
功能测试plus
功能测试仍将存在,但对功能测试人员的业务逻辑的理解能力有更高的要求,弥补AI编写测试用例覆盖不到的深路径分支组合用例,同时对用户的体验性测试有较高的敏感度,能够预测功能需求是否满足用户。
评论区