经常被测试人员问到这样的问题:
- 测试工程师的需要什么能力?
- 我要掌握什么方面的知识?
- 测试人员最重要的能力是什么?
- 如何不断提升自己的能力?
今天就呈现自己利用业余时间做的一幅软件测试能力图谱, 全方位解析研发人员(不局限于测试人员) 需要哪些方面的测试能力、具有哪些能力才能成为一名合格的测试工程师。并说明这些能力之间有什么关系、以及如何不断提升自己的能力、向哪些点进行突破……
先从基本能力看,把它归为三项,没有这个基础,不仅难以开展测试工作,今后的成长也会很困难。(由于时间关系,不细谈了,以后见面或在学习平台上再详细交流):
低水平的测试就会执行,像用户那样执行,几乎没有门槛,那不是专业人员,可以忽略。谈到专业测试,人们往往首先想到的是测试设计。但测试设计的基础是分析,而分析的基础是测试思维方式和思维能力。而且测试人员最好先做几年开发——理解架构、程序和代码等,具备良好的开发能力,了解开发人员的思维和习惯,然后再做测试,就更容易成长为优秀测试工程师。在许多公司(如华为),把开发者测试(主要是单元测试、集成测试)称为“LLT:Low Level Testing (底层测试、甚至可以翻译为低层测试、下层测试)”,只有具备底层测试能力,才能走向高层测试。
- 测试思维方式能力
- 测试分析能力
- 开发者测试能力
有了上面两层能力,基本可以干活了,做LLT、做功能测试,但还缺一层能力。纯碎的算法、工具等测试,可能不需要业务,但绝大多数的测试工作都和业务相关,需要业务理解能力。不理解业务,一定做不好测试。基于业务、基于分析,培养自己的设计能力、自动化测试能力,才是靠谱、坚固耐用的。如果没有业务、没有分析、没有测试基础,自动化测试能力只是空中楼阁。现在流行“测试开发”岗位,也应该是“测试在先、开发在后”。
- 业务理解拓展能力
- 测试设计能力
- 测试自动化能力
具备了良好的前三层能力(总共有33种能力,不容易吧),才算是一个合格的工程师。这时,可以追求一些突破,在专项测试上的突破、在测试效率/速度上的突破、在管理上的突破,成为测试领域技术专家、成为技术管理者。
- 专项测试能力
- 快速测试能力
- 测试管理能力
为了让大家看得清楚,换个方向看,可以粗糙地(不够准确)分为三种能力:
- 专业测试能力:测试基础、分析、设计等能力;
- 计算机技术能力:偏计算机技术,如开发者测试、性能测试、自动化测试工具和框架开发等;
- 软实力与业务能力:如沟通交流、思维能力、管理能力等。
最好上一张完整的测试图谱: