现在招人,不问几个开发的问题,都不好意思。《Google软件测试之道》里说到:未来是软件测试开发工程师(SET)的天下。软件测试的开发化似乎是一个不可避免的趋势了。
再谈软件测试的目的
测试的目的,还是发现需求,开发过程中的问题,避免流入到生产环境。所以,用什么手段不重要,达到上线的要求才是根本。
自动化测试真的有用吗?
自动化测试不见得能直接发现bug,那还要来干啥?还有用吗?
1、以前,我们做了很多基于UI的自动化测试。上头给的解释是1.增加上线的信心。2.回归测试节省时间。撇开UI自动化的实现成本,执行中我们确实没发现什么被测系统的bug(发现更多的是测试代码的bug)。由于测试数据准备,网络,UI改变等等原因,调试又花了不少功夫,回头想想,根本没有节省时间。
2、那么,自动化测试到底在哪些方面有用呢?我觉得,最能突出反映自动化价值的,就是性能测试。因为,手动完全做不了大并发或者长时间大容量的压力,使得性能测试完全无法替代。
3、其次,做一些主流程的接口测试或者复杂项目部分方法的单元测试,也是一个有比较高ROI的尝试。尤其是对于多系统的集成,或关键代码的覆盖测试,非常有价值。有些黑盒测试很难构造的测试数据,必须通过接口测试或者单元测试保障,做到分支覆盖或者语录覆盖。
4、最近测试谈的都是分层测试,UI被放在了最顶端,做得也最少。这种理念似乎被广为接受了,说辞是UI变化太大,不值得做。但是,至少从我经历项目来看,UI的变化并没有传说得那么夸张,往往半年甚至一年才经历一次大改版,大部分后台系统很少改动,大家的精力还是放在增加新功能上。所以,个人觉得还是应该提高一些UI自动化的比例。加上Web Driver的日渐成熟,以及Page Object框架维护被测对象,使得UI脚本可维护性也大大提升。即使改版,也只需要更新一些对象的id,name和xpath就可以运行,不妨一试。
5、另外,还有一部分自动化测试开发,会研发一些平台工具类的东西。我个人以为,这些是锦上添花的东西。作为测试开发工程师,尽量还是自己去写代码完成测试,少依赖这些别人搭建的平台。否则,等到丢开拐杖之后,无法独立行走,那就惨了。。。
懂开发有啥用,到底有啥用啊?
1、测试懂开发,最直观的感受,就是可以看懂代码逻辑,并且做code review。一些不明白的东西也不用老是缠着人家问了,自己看看反而比人家讲得更清楚。
2、其次,可以提升自己的编码水平。反正我学一个新的方法,总是从抄开始的。看不同人的代码,学到不同的实现方式,也是一种乐趣。
3、再次,扩展知识面,有些未必对你写接口测试有帮助,但是一些设计思想,设计模式会对你有帮助。学一些前端知识,数据库缓存的使用,也可以帮助你去开发测试工具,测试平台等。了解打包和发部脚本,也能帮助你维护好测试环境等。甚至后期转行做开发或者运维,都是不错的。
说了这么多,再用摘抄的文章,提醒一下自己。自动化测试知识手段,不是目的。学习开发知识虽然很重要,但也不应本末倒置。我们应该花更多时间理解业务的实质,设计好测试策略!!!
测试策略是所有测试活动的灵魂和核心,对于待测系统,其价值类似于隆中对之于刘备,农村包围城市之于中国革命。遗憾的是尽管有很多业内人士在不断呐喊,但对于测试策略的重视程度仍然远远不足。测试策略需要很强的专业领域知识与测试经验,是测试工程师的重要价值所在。