做为开篇,大家可以思考如下两个问题:
1、假如说你脱离了公司的现有业务,你还剩下什么?
2、假如说你脱离了公司的现有体系,你还剩下什么?
我相信很多人已经习惯了当前的工作模式和工作内容。假如某一天你下岗了,或者公司业务转型了,你需要去一个新的行业新的公司开始工作,扪心自问,你还剩下什么?你的竞争力何在?脱离原有熟悉的业务和体系,可能很多人都不会测试了。你还拥有什么能力是可以通用且不过时的?在现有的工作下应该如何挖掘背后的模式和方法?你如何努力怎么才能做到泰然自若?
软件测试的职业发展方向比较多,如产品测试、自动化开发、专项测试、测试交付、质量管理等。本文主要想谈一下一些通用的技能,与公司的产品、业务知识、管理体系等无关,大家在任何测试工作中都用得上,而这就是你开篇问题的答案,也是你应该具备的。
下面主要分三个方面跟大家交流一下:测试技术、业务能力、管理能力。
第一、测试技术:测试技术是测试人员的基本技能,也是测试人的饭碗,是必备武器。
初级要求:从业1-2年的测试人员。
测试用例编写:一般的产品使用常用的四五种用例编写的方法足矣,常用的有等价类、边界值、组合测试法、错误推断法、场景测试法;一些特殊的软件可能需要更多的编写用例方法,所谓特事特办,在基本编写方法之上,根据产品需要再灵活扩充即可。
测试缺陷:包括缺陷的描述、缺陷的沟通、缺陷发现的方法分析、缺陷基本分析、缺陷的跟踪等。
测试报告:测试人的重要产出,包括测试报告的编写、测试数据的呈现、测试结论的陈述等。
测试工具:测试仪表使用、测试监控工具、测试环境部署、单元/接口/集成/性能测试工具等。
基本测试策略:任务的测试周期、测试重点难点、测试风险、测试顺序等,至少需要理解测试负责人的工作要求。
场景测试:用户使用的场景,至少熟悉基本的常见场景。
交付测试:用户交付的测试,包括验收测试、用户演示、用户培训等,达到可以配合相关负责人和用户完成工作的要求。
中级要求:从业2-5年的测试人员。
测试经验教训:第一,总结自己工作中的测试经验和教训;第二,学习和吸取前人的经验和教训;第三、不断的在工作中持续实践和总结,积累更多的成果。
快速测试:快速测试的场景、常见的使用方法和应用技巧,可参照James Bach的快速测试教程。
测试之道:熟悉微软、谷歌、华为、腾讯、阿里等行业巨头的测试之道,可参照谷歌如何测试软件、微软如何测试软件、软件测试价值提升之路(华为体系介绍);对比自己公司的测试体系,紧跟行业发展,不断优化和提升整体的测试水平。
探索测试:探索测试是目前手工测试的最高技术,如何将探索测试技术应用到实践中,更好的把控质量是必须要熟悉的;探索式测试的资料很多,可以参照探索式软件测试(James whittaker编写,把探索测试隐喻为旅行,非常风趣)、探索式测试实践之路(史亮、高翔合著,国内探索测试实践书籍)等。
基于风险测试:基于风险的测试是测试的重要课题之一,测试中无所不在的风险,如何在更短时间、更适当人力投入下进行更有效且恰当的测试,基于风险的识别、评估和测试分析异常重要。
测试工具(性能/接口/单元/集成/应用)。
专项测试:性能测试/可用性测试/可靠性测试/集成测试等都可以称为专项测试,专项测试是指在某一个专业测试项目领域有持续积累;大团队会划分的比较仔细,小团队基本上不会划分专项测试人员,做的比较全面;不管在什么团队,测试人员在专项测试领域是必须要熟悉的。
高级要求:从业5年及以上,在行业内经验丰富,技术过硬。
架构师:在开发部有开发架构师,测试部门同样也需要测试架构师;测试架构师把控测试技术的使用和落地,是测试项目的技术专家;掌握大量的测试技术,制定整体及阶段性测试策略,把控测试进度,测试风险管理和评估,更多的是“对事”负责。
测试价值:测试的基本价值和拓展价值;测试在公司体系内怎么更好的发挥作用;测试人的话语权和工作价值如何更好体现。
测试预防:缺陷如果能够提前预防,提前发现的话,会非常的缩小代价,也能更好的把控质量;测试预防的技术是比较难的,是一个系统性的工程,流程的规范化、文档的完备性、代码的编写审查走读、常见错误的排查等等,在交付测试之前或者说更早开展预防活动,是非常关键的。
探索测试:这里的要求与中级不同的是,中级要求会用,高级要求会熟练应用,举一反三,纳入到测试体系中,作为常规测试的一部分;发现潜藏在内部的诸多问题。
测试模型:目前来看,测试模型是自动化测试的终极模式,怎么样把相关技术掌握、落地实践、推广使用是非常艰难的事情,这也正是测试高级技术的要求。
测试分析:通过测试分析,可以得出软件模块的缺陷分布,未来缺陷趋势,当前的测试反馈,相关的策略是否需要调整等等,测试分析是测试的决策基础,也是测试的高级技能;分析的方法和工具也需要掌握,如趋势图、鱼骨图、二八分析法等等。
测试体系:测试是一个组织一个系统,需要建立一个测试体系,来保证大家的工作效率;测试体系包含的内容巨多,测试流程、测试规范化、测试制度、各种测试技术、测试模板、测试分析、各种测试工具等等;把众多东西组织到一起,变成一个强有力的“营盘”,是高级测试技术人员的要求;不一定成为测试体系的主力建设者,但至少一定是辅助建设者。
第二、业务能力:所有的测试都离不开业务,都需要一定的业务背景和知识储备,这是产品的血肉,更是用户的需求;搞不懂业务的测试人员注定做不好测试。
初级:必须搞懂测试的业务,包括业务的功能要求、性能指标、应用场景、可用性、可靠性等基本属性。
中级:除了懂测试业务外,还需要懂产品、基本的开发知识和用户情况。
主要包括业务的功能要求、性能指标、应用场景、可用性、可靠性等中高级属性;产品的客户及拓展市场,竞品分析;基本的设计架构、开发模式、功能模块原理;用户整体场景、用户目标、业务发展方向等。
高级:除了懂测试业务外,还需要懂产品、开发和用户。
主要包括业务的功能要求、性能指标、应用场景、可用性、可靠性等中高级属性;产品的客户及拓展市场;竞品分析;开发架构、代码模块及接口设计、架构拓展性及优缺点等细节;用户整体场景、目前问题及困扰、技术发展路线、用户组织结构、业务未来趋势等。
第三、管理能力:管理的概念很多,每个公司及团队的管理模式可能都存在差异,但自我管理、向上及向下管理是我们所有人必须做的事情;在组织里工作,在社会里生活,必须具备的技能,只是很多时候不像管理者感受的那么明显而已。
初级:
一、测试管理:管理2-3人小组,小型测试项目管理;按照测试规范性和流程化执行任务;监控项目进展。
二、项目管理:具备项目管理基本知识,进度、风险、沟通、质量、人力等,并实际应用。
中级:
一、测试管理:管理3-5人小组。
1、对事:中型测试项目管理(测试策略制定、测试方案/计划的制定,测试风险评估及跟踪,测试技术把控,测试问题沟通;动态调整及应对的管理能力);优化测试规范性和流程化;监控项目进展;与项目组成员实时沟通和反馈;对外沟通;熟悉业务场景,了解产品动向、用户趋势等。
2、对人:人员培养;绩效考核;团队建设;部门制度建设;管理平台建设等。
二、项目管理:具备项目管理一定知识,进度、风险、沟通、质量、人力等,并实际熟练应用;从项目管理过程中不断优化和吸取经验和教训;合理使用相关管理工具。
三、质量管理:熟悉质量管理知识;从整体上借助质量部的力量对开发流程进行改进;培养及促进整体的质量意识和观念;使用质量工具进行质量分析。
高级:
一、测试管理:管理5-10人及以上小组。
1、对事:大型测试项目管理(测试策略制定、测试方案/计划的制定,测试风险评估及跟踪,测试技术把控,测试问题沟通;动态调整及应对的管理能力);建设测试部门规范性和流程化水平;监控各个项目进展;与项目组成员实时沟通和反馈;对外沟通;熟悉业务场景及产品动向、用户趋势,从多种层面综合把控测试项目。
2、对人:人员培养;绩效考核;团队建设;部门制度建设;管理平台建设;考勤请假;生活关怀等。
二、项目管理:具备项目管理大部分知识,进度、风险、沟通、质量、人力等,并实际熟练应用;从项目管理过程中不断优化和吸取经验和教训;合理使用相关管理工具;与对接部门进行沟通确认;熟悉应对突发问题及灵活调整各分项目任务的能力。
三、质量管理:熟悉质量管理知识;从整体上借助质量部的力量对开发流程进行改进;培养及促进整体的质量意识和观念;使用质量工具进行质量分析;推进部门整体的管理水平不断提升;协助建设根因追溯系统;打通各部门之间壁垒,促进有效配合;提升整体工作效率等。
四、其他知识:管理学、商业、运营、心理学、哲学、历史、沟通与交流、思考力等,不断提升自我综合能力,进而促进管理能力的提高和进化。