我为什么长期看好软件测试这个职业—软件测试属于“金字塔型”职业?还是“扁平型”职业?
前两天看《香帅的中国财富报告》,在职业篇里,提到一个关键词:可编码。什么样的职业是可编码的呢?重复的、有明确目标的工作会被算法替代,比如:阅读资料、记忆、复述、数字分析、总结等等。
其中还提到两种职业模型:“金字塔型职业”和“扁平型职业”,他们的含义分别如下:
- 金字塔型职业:可编码的工作很多,只有顶部少数的工作无法被替代。比如:金融行业、法律、商业、销售等,虽然很多工作可以被替代,但是优秀的基金经理或者销售经理,他们所具备的经验、决策力是不可替代的。
- 扁平型职业:多数的工作是不能被编码的,比如:社区服务、医疗保健执业医师和技师等。这些工作往往需要人的主观意识和经验,因此被替代率会比较低。
那么软件测试属于哪种职业呢?我个人的观点,现阶段应该还属于“扁平型职业”,也就是可编程替代率不高。我主要是从目前软件测试行业的工作内容去分析,下面是我的几个思考点。
测试用例
测试用例编写是一系列的工作,前期需要参与需求评审,后面则需要根据需求文档内容,结合一些测试理论思想编写详细的测试点。这个过程是依赖人的主观理解以及经验,同时还牵扯到用户交互体验,因此可被编程替代度比较低。
那假如这个过程想被编程替代,有没有可能呢?我觉得等到发展到一定阶段,也有可能,需要依赖人工智能。首先产品经理需要按照一定的规则编写PRD文档,然后由人工智能系统,分析每条需求的语义,之后在知识库中筛选出对应的测试用例。不过在我的认知范围内,我觉得实现类似的场景,还需要一段时间。
执行测试
执行测试的阶段,包含很多个方面,包括业务测试、性能测试、专项测试、安全测试等。其中业务测试是大家眼中的“点点点测试”,这个过程能不能被替代呢?我觉得不能。可能有人会觉得靠自动化不行吗?我觉得靠自动化有两点需要考虑:
- 自动化的脚本目前还是得人工参与,想依赖测试用例自动生成自动化脚本,目前有可供使用的框架customer,但需要用例按照一定的格式编写,还是得人工参与。
- 我觉得对一些异常测试,比如探索性测试中的极端测试点,用自动化比较难触达,因为需要人参与去思考和模拟一些场景。
其他几类测试,我觉得可编程替代程度比业务测试要略高一些,为什么呢? 比如:安全测试,目前像阿里云、腾讯云都提供了用于安全测试的平台,它们底层其实就是靠扫描代码,根据一些约束的规则,给出安全漏洞的评估。再比如专项测试,其本质上是对客户端专项数据的收集,那理论上来说完全可以靠编码来实现,比如像腾讯的PerfDog就是非常不错的专项测试工具,完全可能在执行业务测试的过程中直接收集专项测试数据。
不过安全测试、专项测试也不能完全脱离开人的参与,我考虑有两点:
- 专项测试、安全测试和测试场景是有关联的,需要人参与制定对应的测试场景。
- 做专项测试、安全测试,获取数据容易,最难的是数据分析及查找原因,这需要人参与其中。
测开比例
那既然上面写了一大堆来说明,目前软件测试还不能被编程替代,那为什么现在大家都在鼓吹测开比例能达到1:10,甚至1:15?!这不正说明,软件测试人员是能够被优化和替代的吗?其实则不然,我的思考点如下:
- 我之前也提到过,测开比例不应该有行业标准,需要结合着公司具体的情况,比如所做的业务、团队配置、测试体系等等各方面考虑,还是那句话:适合自己的才是最好的。
- 测开比的变化其实是整个测试体系的优化,以及整个团队建立起优秀的质量文化等。比如:测试左移和测试右移、良好的UAT测试等。
总结来说,测开比例的优化,并不能说明软件测试是可以被编程替代的,只能说明是对测试体系进行优化,以及我们自身职业能力的提升。
写在最后
以上是我对香帅老师关于“扁平化职业”和“金字塔型职业”的思考,我长期还是很看好软件测试这个行业的。大家可以在评论区写下自己的想法,一起交流。