导语:”在国外,资深的软件测试人员大多是手动测试,他们厉害之处在于测试用例的设计,但在国内,很多测试人员都把自动化测试当成很厉害的资本,为什么?”
偶然在知乎上看到一篇关注度很高的话题,标题如上。 作为一名从业8年有余的软件测试工程师,并且一直在外企做测试的我, 忍不住想发表一些自己的看法和见解。
我觉得在国内,很多公司或者个人把自动化测试当成一个了不起的资本,根本是源于国内大家对代码的无上崇拜,这也造就了国内现在IT互联网行业内一个鄙视链: 开发---> 测试开发--->自动化测试--->纯手工测试。所以,在这个鄙视链中,纯手工测试属于底端被碾压的生物。
实际上,我觉得这是一种严重的偏见,并且体现了其对测试行业认知的极其不专业。
首先,我们不能否认自动化测试的作用,他肯定是将来软件测试发展的一个大方向。自动化测试将QA从繁重的重复劳动中解放出来,优化测试资源,提高测试效率,对产品质量保证起到积极的作用;另外,一个有自动化测试脚本、框架、工具开发能力的QA,更有竞争力也是一件毋庸置疑的事情。
但是,但凡做过测试工程师的朋友都知道,一些逻辑非常复杂的场景是很难用自动化脚本实现的,就算要强行实现,也性价比很低,因为太费时费力了。所以用手工测试来执行一些奇葩的场景更灵活方便并且可以发现很多问题;而且,从事过测试的人应该很清楚,同样的一个测试任务,交给不同的测试人员是会有特别不一样的结果,发现的bug数量和最终产品的质量都不一样。所以,手工测试不是手工执行测试,其更重要的部分应该是测试思路和用例设计灵感,这点往往是最困难的,也是需要经验积累以及自我沉淀的地方,更不是自动化代码可以替代的。如果没有一个很好的测试用例和测试思路,纯有代码和工具,那也是巧妇难为无米之炊。
所以,不论自动化测试还是手工测试,都只是一种测试手段或者说是一种测试工具,他们各有自己所服务和侧重的领域,并无高低贵贱之分。真正专业的公司和企业,绝对不会一味的追寻和崇尚自动化测试,关注的核心一般会放在测试用例、业务模型和测试分析上。
我自己待过三家公司,都是在北京的外企或者外资企业,三家公司都是美国或者台湾上市的成熟公司,成立至少15+年左右。我在职期间,公司虽然都有自动化测试团队,但是都并不是最核心部门。举例其中一家,其团队模型是手工测试和自动化测试分别在不同的team里,虽然都是服务于同一个产品的,但是业务是完全隔离的。纯手工测试负责测试用例的设计,执行手工测试,包括功能性能等,然后自动化测试拿着相应的测试用例,去实现代码自动化。相信,这种测试模型分布在目前国内大部分的公司来说是最常见的,但是却也是问题比较显著的。这里的主要问题就是,纯自动化团队没有参与手工测试所以他们并不懂业务,不会设计测试用例测试,他们实现的自动化代码,往往不能覆盖我们产品核心重要的业务,能够发现的问题往往是用户不那么关心的问题。 这样,自动化测试的初衷就不复存在了。导致的一个现象就是,本来自动化测试是为了释放双手,节约人工和时间成本,但是后来手工测试团队没有办法完全信任自动化团队的测试结果,很多版本的迭代测试,都还是要亲力亲为测一遍才敢发布出去,这样自动化测试就成为了一个很鸡肋的存在。
当然,这种问题目前也慢慢被重视起来所以得到了一些改善。现在很多公司都是手工测试和自动化测试归属于同一个team。在产品项目前期,设计测试用例和定测试模型是他们;等产品部分功能稳定了,代码改动少了,实现自动化脚本覆盖每个迭代的回归测试是他们;随着产品成熟,优化手工测试用例,以及开发自动化框架提高覆盖率的还是他们.....当然,这种工作模型是一种比较理想的状态,需要测试人员的素质和技术都是一流的,才能完全覆盖包括手工测试和自动化测试各个阶段的工作,企业需要这样的人才,个人需要这样的奋斗方向,这将会是测试领域的人才需求的趋向。
说了这么多,总结一下,对于测试行业,手工测试和自动化测试缺一不可,手工测试是基础,自动化测试是锦上添花。所以,基于现在的市场需求,测试工程师们应该先打好基础,积累很好的测试理念和测试思想,然后可以进一步提升自己的自动化能力,让自己成为市场需要的全面型人才。