很多想往测试方向转的非IT从业者,道听途说软件测试门槛低,就算不会写代码也可以进入这个行业工作。那么是不是这样呢?
应该说:
没代码能力,要从事软件测试,实际上可以做,但实际上又不能做。
实际上可以做
软件测试并不是一个建立在代码能力上的技术,所以说实际上可以做。
软件测试是通过测试,暴露出产品中的质量问题,其实是一个发现未知的技能。所以更关键的是试验、探索、观察、推理、设问、建模这些方面的能力;而有代码能力,更多是能去帮助自己理解产品的实现过程,或者可以通过代码帮助自己扩展测试手段、去提升测试效率,从这个意义上,代码能力是一个辅助能力,用来辅助测试工作,但它并不是决定测试工作是否能完成的的关键!
James Bach在论文 《testing and checking》 中,阐述了 测试
和 检查
的关系
测试
是一个更大范围的概念,而检查
只是测试的子集,并且检查还分为人工检查和借助机器(工具)来检查。
而代码能力,影响的部分,更多是在利用工具检查这部分。
所以早年,很多测试工作做得出色的测试专家,其实并不长于编码,但多半是相关业务领域的业务专家,且有出色的测试思维,也就是上面说到的类似侦探那样的观察、推理等能力。
所以说,实际上,没有代码能力,并不影响是否能把测试工作做到出色。
实际上不能做
但是,我们还要说,没有代码能力,实际又不能做。
上面我们也说了,早年,还存在不会代码的测试专家。时移事易,当下的现状其实不一样了。随着行业发展,测试这个行当的方向可以说已经脱离了原先轨道。挺可悲可叹!
原因多种:
敏捷研发等强调快速交付的研发模式流行
在敏捷研发模式中,其实已经不再有专门的测试角色,更多强调团队成员是多面手,各种研发任务可以一专多能,包括开发和测试!测试人员作为团队一份子,自然也就不能仅仅只能做测试,必要时也要能接手开发,至少包括单元测试、集成测试等原来开发范畴的工作也要去承担。当然代码能力就是满足这个条件的硬性要求了
对自动化测试能力的强制要求
也是因为敏捷,持续集成等研发模式的需要,自动化测试成为其中必不可少的环节。而作为自动化测试的基础能力,代码能力自然也就是必然。
但这里必须要指出,像自动化测试这种,为了“快速完成测试”,按上图测试和检查的关系,实际上并不是真正的“测试”,更多是“检查”。一味强调代码能力,某种意义其实是对测试工作要求的弱化,也就是更多只要求了“检查”,而不是“测试”
人才市场供大于求
最后,还是行业环境。在早年互联网兴起阶段,人力缺口大,很多“验证” 工作也是由不需要代码能力的初级或者0基础小白去人工完成,人工“检查”比重更大。
但行业下行时,企业压缩成本,导致人才市场供大于求。所以入行门槛自然会抬高,从业要求也水涨船高,对工具“验证”的期望也更高,所以代码能力,自动化测试、工具开发等等几乎已经就成了必备技能。
再叠加当下敏捷研发等研发模式的流行,对自动化测试的要求,可以说,没有代码能力,在当前环境下,实际上已经很难说还可以从事测试工作,无门可入。
结语
所以,目前情况下,对于测试工作,虽然没代码能力,不代表不能完成测试工作,但不具备代码能力却已很难搭上车
所以,作为个体,时代洪流下,能做的就是不要逆时而行,踏实去构建顺应潮流的个人能力。 但还是要理解这个工作的核心要求是什么,厚积薄发,吹尽黄沙始到金!