自动化测试到底是什么


偶然在群里有人问自动化测试到底是啥,搞不懂。qtp对象库好麻烦,jmeter怎么做测试。。。。一堆一堆的问题。其实说实话真心不知道该咋解答了,我的内心是累的~

突然想到自己的新书里不就解释过这些吗!看来还是很多童鞋对于自动化测试的认知存在巨大的问题啊!

so,以下内容选择《小强软件测试疯狂讲义》


重新认识性能测试之后我们再来看看自动化测试到底是什么。其实这个话题我在不同的场合多次谈过,甚至在我创办的“挨踢脱口秀”中也专门做了一次节目来说明,但可惜的是仍然有很多朋友对自动化测试的认知是不完整的,那本节就再次带领大家重新认识一下。

自动化测试到底是什么?我们可以简单的理解为前期通过人工编码完成框架,后期来解放人力并自动完成规定的测试。更通俗点可以这么理解:现在有小强1号和2号两个机器人,你对其中的小强1号机器人进行编码告诉他“在每天中午12点的时候给小强2号机器人一巴掌”,那么当到了中午12点的时候小强1号机器人就会按照你的编码要求执行,并给小强2号机器人一巴掌,这样你就可以干其他事情去了,不需要自己来做,解放了人力,提升了效率(莫名的感觉到自己的脸被打了一巴掌啊)。

讲到这里大家应该明白什么是自动化测试了吧?嘿嘿,你真的以为自己明白了?我想这时候肯定有不少朋友会脱口而出,自动化测试不就是QTP、Selenium、Appium这些玩意嘛?如果你真的这么理解那还是不够完整。大部分朋友都觉得一说自动化测试就是指UI层自动化测试,其实UI层自动化测试只是其中的一种而已,具体的层级我们会在后面的章节讲解。

最后我也必须提出一点,任何无法服务于业务的技术都是没有价值的,自动化测试也是,只有自动化测试能真正的服务于业务,并带来较高性价比才有价值,单纯拿代码堆叠起来的自动化测试不可取。


我们全新认识了自动化测试之后就来看看自动化测试分层模型,同时也会和大家聊聊自动化测试到底怎么用才能“恰当好处”。此模型在网上也看到过,不知道是谁最先写出来的,总之感谢此模型的创造者!我在这个模型上面做了一些微调,方便小白朋友们更好的理解。分层模型如图1.3所示。

自动化测试到底是什么

图1.3 自动化测试分层模型

有了性能测试分层模型的经验,自动化测试分层模型就容易理解了,它主要是分为了三层,下面我们就一层层的来详细讲解。


这个是大部分朋友理解的自动化测试,UI指的就是用户可以用肉眼看到的页面。基本上我接触的小白朋友一说自动化测试就认为是UI层的,这个误解我觉得真的太可怕了。

我们先来聊聊UI层自动化测试的原理。不论是Web端还是移动端,原理都是一样的:就是基于页面元素的识别和定位来进行模拟用户行为。首先识别到某个元素,比如一个按钮,然后定义一个动作,比如点击,这样就通过代码模拟完成了一次按钮的点击,代替了人工去点击。如果后期再加入数据驱动和Page Object思想就基本可以形成一个UI层自动化测试框架了。明白了这个道理之后我们再来聊聊UI层自动化测试的适用范围。

对于UI层自动化测试的适用范围,我个人不建议做大规模的应用,从自己的实践经验来看大规模的应用UI层自动化测试最后的结局总是悲剧的。主要是由于以下几个原因导致:

1) UI变化频繁,计划根本赶不上变化(同意的小伙伴们请点赞)。

2) 初期见效太慢,等不了,我们都希望恨不得用了自动化测试技术就能立马看到带来的效果,但事实总是相反,自动化测试的效果是在后期体现的。

3) 前端的开发不规范,导致很多元素识别和定位起来较为困难。

那UI层自动化测试是不是就不能应用了呢?必然不是!保持一个客观、公正的态度来看待是非常重要的,至少从我个人的实践经验来讲,UI层自动化测试可以应用到冒烟测试中,这里的冒烟测试是指主流程的测试,就是那些非常重要且不会频繁变化的流程,可以利用UI层自动化测试来完成。比如,之前我们会对电商系统的主流程做每日的UI层自动化回归测试,用来保证线上系统功能的正常,效果还不错。所以,用与不用关键在于它的适用范围,只有在合适的范围内使用了合适的技术才会表现出最好的效果。

自动化测试到底是什么