自动化测试如何破局?
最近面试软件自动化测试工程师,感想颇多。
面试者都来自大厂或大厂外包,华为,oppo,顺丰,沃尔玛,百丽,腾讯,字节……
开始以为捡到宝了,即使没吃过猪肉也见过猪跑吧,起码参与过自动化测试,面试后大失所望。
面试了很多工作十年的测试工程师仍然在做功能测试,或是功能测试为主,自动化测试打酱油。
什么是打酱油?我们有自动化测试,我们做了。但是自动化对工作的贡献微乎其微,
也就是说自动化测试并没有真正为企业带来价值,最后自动化测试脚本不在有人维护,被人遗忘。
问及为什呢自动化测试流于形式?实施自动化测试最终摆脱不了失败厄运,会不了了之。
每个人都给出无数理由,在我看来是无数借口。
十年前我曾经写过关于自动化测试为什么难以普及的文章,时隔十年,都2021年了,自动化软件测试普及程度跟10几年前情况差不错。究竟问题出在哪里呢?
如果你是管理层,你会发现,自动化测试工程师人在招聘,事在做,钱在花,但是没有成绩。仍然人工测试为主,自动化辅助。
难道无法实现自动化为主,人工为辅吗?
此前我在一直在外企工作,为什么外企能做到自动化为主的测试呢?我认为有一下几点:
- 认知的问题
- 生态问题
- 技术问题
- 能力问题
- 氛围问题
认知问题
你问测试人员我们有没有做自动化,答案是:
- 1. 认为自动化测试替代不了人工测试
这话没毛病,确实不能100%替代,但是自动化测试可以干80%的活。剩下20%人来干。
2. 需求迭代快不适合做自动化,迭代快常常导致自动化脚本跑不通。
我不这么认为,我们通过持续集成运行自动化测试脚本,一旦发现流水线测试失败就会立即修复自动化测试脚本。只要紧跟开发,开发动,我就动,联动开发,就可以解决这种问题。写测试脚本的工作量远没有开发的工作量和强度大。更多时候只是修改定位元素标签而已。
人工测试前首先要通过自动化测试,这样可以避免盲目测试。
也就是人工测试走了大部份流程后才发现往下走不通了,此时已经浪费了时间,为什么不让自动化程序去发现问题呢?
生态的问题
在国内包括大厂,软件自动化测试处于很低的水平,测试人员水平也相对低于其他团队,例如开发和运维。为什么 DevOps(运维自动化)在国内能风生水起?因为DevOps 在为企业创造价值。
DevOps 降低了IT成本,解决企业面临的众多IT痛点。
管理层重视程度,管理层能力,管理层认知都决定最终结果。
管理层重视自动化测试,但是能力又无法推动。
招聘也存在问题,管理层的认知天花板决定他招聘进来的员工天花板。
即一流人才做面试官,只能招聘到二流人才,二流面试官,只能招聘来三流人才,以此类推。
最终一个乌合之众的测试团队被攒出来。
技术的问题
互联网技术越来越复杂,HTML 4.0 的时候只有 form 表单提交,那时做自动化测试畅通无阻,非常顺利,后来有了ajax 和复杂UI,导致自动化测试难以进行。
很多测试工程师的开发水平仅限于测试,没有从事过前后端开发,遇到问题被卡住,解决不了,就放弃了自动化测试。
能力问题
测试团队能力不足是最大问题,多数测试人员的职业生涯规划是失败的,从功能测试走到自动化测试的人非常少。
成为自动化测试工程师,需要三个因素:
自驱力,外驱力,环境因素。
自驱力是自我学习的动力,外驱力是外部施压强制员工学习,以满足岗位需要,两种力都具备后还需要有环境,包括学习环境(氛围)应用环境(学以致用),实战机会等等。
氛围问题
很多公司的想法是招聘一两个自动化测试人员,更多配置是功能测试。
这个想法就是错误的,从一开始就注定了要以功能测试为主。尤其是当测试组的leader是功能测试者后,他会更坚信自动化测试替代不了人工测试,在自动化测试短期没有成绩的时候,他会本能否定自动化测试,最终将会从自动化专人工。
由于自动化测试人员少,就会有孤独感,遇到问题解决不了,没有人沟通,工作容易被卡住。
所以氛围很重要,要打造学习型团队。提供分工,教练,合作,咨询,培训, 提升团队整体素质。
老生常谈
测试部门负责人的认知和格局天花板决定了测试团队的天花天,以及在自动化测试领域能走多远。