这是两个很绕口的词。而且乍一看起来好像就是同一份
工作。今儿聊聊我个人对于这两者的认识。
举例:
有一天,一家
手机公司要做一个UI自动化
测试,于是他们聘请了一名工程师。
这个工程师需要做的事情,首先就是setup一个
自动化测试环境。单单从这方面来说,测试工程师和自动化工程师需要做的是完全一样的。比如搭建起来一套完整的UiAutomator环境。
之后就会有区别了。当环境搭建好以后,测试工程师的主要精力就会铺到编写脚本,执行测试上。而自动化工程师则会把精力放在如何优化UiAutomator环境上
比如,大家都知道UiAutomator的case编写完成后,首先需要通过ant编译,然后再通过adb命令进行push,最后才能执行。这一点上,一般来说测试工程师就不会做什么改变了,但是自动化工程师一定会做一个程序或者批处理或者其他的什么,让这几个步骤变成点一下就全干完的事情。
什么是测试自动化:
这是一种让测试过程脱离人工的一次变革。对于控制成本,控制质量,回溯质量和减少测试周期都有积极影响的一种研发过程。
什么是自动化测试:
通过将测试执行部分部分或者全部交由机器执行的一种测试,叫做自动化测试。这种测试不需要人的实时参与。同时这种测试在小规模应用时会比手动测试昂贵许多。
自动化测试可以看作测试自动化的一部分。
不同的工程师,工作不同:
一个自动化工程师,会比较专注于测试工具的研发。最主要的是这个工程师会从成本的角度去考虑问题。这一点比较像PM。他所做的一切是为了减少自己或者团队的工作量,尽可能的将重复的,有规律可循的工作代码化,自动化。
一个自动化测试工程师,会比较专注于测试代码的开发,以及测试结果的分析。对于被测设备本身非常感兴趣。他们比较倾向于一种完美主义者,追求的是高质量而经常忽略成本。这一点更像开发人员。
现在绝大多数公司都会执着于自动化测试,而忽略测试自动化。这一点会让整个AT(automation
test,下同)成本变得非常高。
我曾经
面试过一家公司的AT工程师,对方对于AT的做法就是每天都在release新的测试代码,每天都在run不同的测试。每天都在修改之前的case。我说你这个并不是自动化测试,而是一种用代码测试产品的手动测试。这样的测试,经常被冠以自动化测试之名混水摸鱼。
这家公司很明显的只是将代码
单元测试贴上了自动化的幌子。
自动化测试的几个准则:
并不是将测试用例代码化了,就可以称之为自动化测试了。这是现在很多公司宣称自己做AT的一个噱头。
AT的代码有很多的要求。
首先就是你的覆盖面要够广。个位数case的自动化完全没有意义。
第二就是你的case必须要能够复用:软件每天都在变,如果你的case要天天跟着软件变,那你的case是完全不合格的。
第三就是测试的规模要够大:要么时间长(case多或者是压力测试),要么测试产品多。这样才能体现出来自动化测试的优势。、
测试自动化的几个准则:
第一个就是要减少除工具研发部门外,其他所有测试部门的人力成本。这个是测试自动化追求的终极目标之一。、
第二个就是提高测试质量,不仅仅包括测试执行的质量,还包括测试的统计质量,数据回溯质量,等等等等。这些质量的提高可以帮助测试团队修正他们的测试方法,而不是每天将精力铺在无止境的数据收集和分析中。
第三个就是要抢出时间。某一项工作自动化后的时间,要么比人手做时间短,要么可以在非工作的16个小时中进行。通过让电脑OT的方法来解放工程师或者项目经理。
自动化的三大入手点:
自动化的三大入手点其实和三大准则是一样的。看哪个需求更加迫切:
1. 成本:自动化并不一定围绕测试执行,还可以包括测试的准备,log的提取,数据分析等等。将所有的与测试有关的工作逐一列出,然后找到重复的,可以被代码化的部分,评估现有工作成本和自动化成本,寻找到收益最大的工作块并顺序将之代码化。
2. 质量:和成本差不多,只是在评估的时候需要评估的是该工作块现有的质量状况和需求质量间的差异,寻找到差异最多的那个模块,并将所有质量差的模块逐一进行自动化。
3. 时间:和以上两点一样,都需要寻找到与测试有关的所有步骤和工作块,将其中关键路径上,动作最慢,耗时最大的部分进行自动化。
版权声明:本文出自 zeustest 的51Testing软件测试博客:http://www.51testing.com/?15030005
原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。