这几天有机会跟几个公司测试部门的负责人聊了一下自动化测试,感触颇深。就接触这几个公司来讲,有的觉着自动化测试效率低下浪费时间产出不高根本没必要;有的想建立起自己的自动化团队但不知道着力点在哪;有的有自己的自动化团队,做得也比较深入,但一直苦于摸索一套系统规范的自动化测试流程。就我做自动化测试这几年所经历的一切,尤其是每次公司裁员,产品和开发总是毫无保留的大声吵嚷着自动化团队一点用都没有,完全可以撤了,每当想到这种种就有一种无力的沮丧感,熬了这些年,依然看不到国内自动化测试的春天。不想抱怨什么,也不再去抱怨什么,这篇日志的着力点仍然在于讨论自动化测试,我为自动化测试呐喊。
测试圈内好多牛逼的人,饱读诗书,跟人讨论问题动不动就是一套套测试理论,名词听都没听过,让人五体投地的崇拜,但咱始终站不到那种高度,只能说一些感悟性的东西。测试是什么,为什么需要测试,测试的着力点在哪,什么是优秀的测试,手动测试能不能完全替代自动化测试的作用?所有这些问题的解没人能透彻的讲明白,但所有这些问题的解却都在于一点,也是最被忽略的一点,那就是--产品。产品是这一切问题产生的源头,而解这些问题最后也会归结到这核心的一点上。所谓测试没有一定之规,你能在产品上线之前检测出所有潜在的bug,你的测试就完美的,但这世间没有完美。这就要求你要根据自身产品特性有侧重点的去合理分配测试资源,以达到测试目标,这里要注意两点:自身产品特点,测试目标。自身产品不同,测试目标也就不同,测试的着力点也就不同,那么回归到这次讨论的主题自动化测试来讲,他的方向也就不同。举个说了无数遍的例子:拿微软来讲,其产品形态相对比较稳定,版本迭代变化较小,他自动化测试着力点有可能就是通过大规模自动化模拟手动测试以降低测试劳动力成本,它的自动化测试代码有的跑了十几年都没有进行大的维护;而移动端这些运行于系统之上的app来讲,前期版本变化太大,即使后期版本稳定了,有的时候还要满足挑剔的客户审美疲劳,刻意大幅度调整设计,再加上产品同质化严重,相互抄袭,那测试的重点就应该在于提高用户体验,自动化测试的重点就应该在于通过大量的重复性操作去尽可能发现闪退,崩溃等,可以去看看各种app商店里的评论,大部分用户的抱怨除了产品功能性体验问题,质量上就数闪退啊,崩溃啊最多,尤其是android,手机品牌,系统版本众多,质量参差不齐,但你的app崩溃了用户不会去抱怨手机,他最多的选择就是卸了,装上别家的。
功能性的bvt测试,用户体验,文案等测试,这些是手动测试的强项,毕竟自动化测试还做不到那么智能,但测试毕竟是一个机械性,重复性太强的活儿,遇到这些,自动化测试就是强有力的辅助支撑了,而且有些测试点,手动测试根本没办法覆盖,这种种都是自动化测试存在的必要性;还有一点,在大家潜意识里,自动化测试就是单纯的测试,你们的工作就是调用一个单元测试框架,写点机械性的代码,这其实是不对的,刚说了,测试这个工作有大量机械重复性的动作,也会产生海量的测试报告,数据,那么自动化团队还有一项最重要的任务就是以各种手段去减少这些重复性动作,快速的处理这些数据,挖掘出有价值的信息,这里的各种手段就要求自动化测试人员眼界开阔,什么网站开发,桌面程序开发,移动端开发都得会,各种主流编程语言都得了解,说不准什么时候就用到了,很难想象一个测试团队里没有自动化测试的情况,但现实中总有些牛逼的人能做到我们就不需要自动化测试团队,哎,做人差距的真大啊,难道我注定一生都只能望其项背?