看了这篇文章《什么是测试自动化?》
首先说明一下什么是自动化测试, 它主要完成2个方面的工作:
● 把手动的测试用例自动化,手动的测试用例可以自动执行
● 把没有办法手动的测试用例自动化,比如让你测试光驱可以打开几次,做个压力测试,人工测试显然不可行(也有人把这部分称之为自动化测试,但是我觉得这样太绕了,就全部称之为测试自动化吧)
然后再说明一下为什么要自动化,ROI如何;
● 研发要解决的问题是,一个是效果问题,一个是效率问题, 自动化可以提高效率(大部分人这么认为,虽然其实这个有待商榷),所以自动化有利于提高效率
● 这是一种工程师的态度,或者是套用一下流行的词,叫做Facebook的文化,Hacker的文化;因为不喜欢重复的做一个事情,把它自动化,看上去是很Cool的事情
所以自动化最重要的事情就是提高效率(当然能否提高效率,这个事情是这样的,因为UI经常变动,或者是由于其他的外部因素,自动化需要修改,维护,那么投入的人力和物力是否大于产出或者小于产出,这个每个公司,每个产品都不一样,具体就不在这里讨论了)以及实现手动无法完成的事情;
接下来回应一下《什么是测试自动化?》
文章里面提到测试自动化是无法自动化所有的测试用例,这点是肯定的,完全同意;所以这里来说说自动化的弊端:
● 自动化其实更多的是一种防御策略,是为了防止Regression,自动化发现的bug数量一般都是不及手动测试发现的bug数量;而且有人提出了有些系统比较难发现Bug的测试用例你即使在不同的版本多跑几次相同的测试用例效果甚微,就像杀虫剂效应一样,由于虫子有抗药性,同样Bug也有;所以不能期望自动化测试发现更多的Bug
● 自动化测试需要更多的投入,维护,由于系统需要经常变动,期望值发生改变,所以自动化测试也需要变动
另外说明一下对API的测试不能算成自动化测试的范畴,因为你本来就是要测试这些API,只是恰好这些都可以写成Code,可以自动的运行而已;
所以理想的情况是, 自动化的产出大于投入在自动化的人力,物力;然后解放出来的人力,物力可以花在发现新的Bug,解决新的Bug上面;而且由于大家不用去做重复的事情,真个团队的Productivity也很高。
相信这样的解释,大家对自动化就有一个合理的期望,然后心安理得的选择自动化或者是手工的测试。