图片描述前端
引子
写在最前面:目前自动化测试并不属于新鲜的事物,或者说自动化测试的各类方法论已经层出不穷,可是,可以明白自动化测试并很好落地实施的团队还不是很是多,咱们接来下用通俗的方式来介绍自动化测试……node
首先咱们从招聘岗位需求提及。看近期的职业机会,提到“软件测试工程师”,基本上都有关于自动化测试的要求。例如:python
了解 selenium、appium或者其余自动化测试框架npm
至少熟悉一门面向对象开发语言,有必定的代码功底优先编程
熟悉Java或者python,有必定的测试自动化经验和代码阅读能力后端
了解接口集成测试,会使用JMeter、Postman、SoapUI等接口测试工具浏览器
等等,上述内容再也不一一列举。忽然自动化测试遍地开花,好像测试工程师的自动化测试能力成为了标配通常。本文就从自动化测试的要求入手,简单的进行自动化测试扫盲,争取让各位在一分钟以内了解自动化测试。安全
那么咱们就从“自动化测试”五个字来剖析。服务器
测试
测试:这个咱们熟悉。最经典的一个解释“程序测试是为了发现错误而执行的过程。”这个来自于G.J.Myers的经典著做《软件测试的艺术》的定义,给咱们展现了测试的本质:过程。app
测试是为了发现软件的错误,而执行的过程,这个过程能够是如下内容:
运行被测试的软件,执行软件的功能
运行其余工具,去检查软件的内部和外部
总而言之,是一个过程,执行的过程。接下来就一张最多见的测试示意图:
是去把软件的全部功能遍历一遍,该测试工程师经过鼠标、键盘、麦克风、手机屏幕触控等,把软件全部的功能,所有遍历了,这个叫作什么?熟悉测试的童鞋明白,这就是传说的“手工目测”呀,这是“人肉测试”。
咱们好好的画这张图,其实是这样的。
自动化
到这里,结合上面的说法,自动化测试就是让被测试的软件本身运行起来,执行软件的功能;或者就是让其余的工具本身运行起来,去检查软件的内部和外部。
既然测试是一个过程,那么自动化测试,就是自动的执行的过程。
接下来咱们探讨的一个核心的问题:自动。什么叫作自动呢?让机器本身动,就是自动。让机器按照人类的要求,把软件的全部功能遍历一遍,这是自动化。。这样说会不会清晰一点?
重点来了,机器。让机器去动,这可不是“吃鸡”哦,这是人类命令机器去操做。不知道童鞋们有没有思考过,机器怎么知道人类的要求?上面的例子,测试主管只要告诉测试工程师,命令传达就完成了。但是人类直接的沟通,远比人机沟通容易啊。
首先,机器听不懂“人话”,不管中文,英文……
其次,机器默认会的“汇编语言”,应该是绝大部分的童鞋不会,而且短时间掌握不来吧。
好吧,用“编程语言”。是时候拿出咱们的另外一张图了:
机器学习一个编程语言,轻松和简单到使人发指的地步:安装上去,机器就学会了。好在人类学习编程语言也不是特别难的的事情。看来这个可行。
有了编程语言,就有了人机交流的桥梁,剩下的事情,是帮机器挑选工具。作对应的测试,就须要找到对应的工具,这样自动化就自动起来了。能到这里,我但愿各位童鞋了解了基本的“自动”原理。
一样,好好的画这张自动化测试的示意图:
而后咱们介绍各类常见的工具,来继续讨论自动化测试。进一步探讨以前,咱们先看看测试的经常使用分类。这里不一样的分类维度下,咱们能够分为不一样的测试,这里咱们认真分析一下。
从软件测试的实践过程看:单元测试、集成测试、确认测试、系统测试、验收测试……
从软件测试的方法策略看:白盒测试、黑盒测试、灰盒测试……
从软件测试的测试视角看:功能测试、性能测试、兼容性测试、安全测试、探索性测试……
从软件测试的技术程度看:手工测试、自动化测试、测试开发……
以上这些维度下的分类,只有一部分测试能够经过“人肉测试”的“手工目测”完成,剩下的其实从广义概念上,都是须要机器来完成的。咱们把这一部分测试抽取出来:系统测试-黑盒测试-功能测试-手工测试。不能否认的讲,这条线是目前软件测试从业者的重点覆盖范围,该范围以外的地方,即是自动化测试的用武之地。
自动化测试
接下来咱们探讨一下主流的自动化测试方案,无一例外,都有人机沟通的编程语言,加上机器操做的工具来组成。
功能自动化测试
VBScript + QTP(HP UFT),商用功能自动化测试方案
Python/PHP/Java/C#/JavaScprit/Ruby + Selenium/Appium + 单元测试框架,开源功能自动化测试方案
这里咱们多介绍一点,Selenium/Appium 自己不能算是测试工具,而只是机器用来操做浏览器的工具,而且这个工具能听懂多种语言:
Java,C# 这两个重 (zhòng) 语言
Python,Ruby 这两个脚本轻语言
PHP,JavaScript 这两个专门处理 Web 的语言
工具外加指定的语言,可让机器来操做浏览器,可是到此时还没法作到测试,因而才须要每一个语言本身的单元测试框架,来一块儿完成这个功能自动化测试方案的构建。
此外,业界还一种暂时临时的方案,就是 Python 2 + Robot Framework + Selenium Library 插件 + 单元测试框架 构成的一种测试方案,这个方案笔者不是很是推荐,主要基于两点:
理念:这是一种基于关键字的方案,那么关键字是 QTP(HP UFT)的特长,并非Selenium的本意
技术:Python 2 终究是要退出历史舞台的,若是从零开始作自动化测试,仍是直接入手 Python 3 吧,然而 Robot Framework 不支持 Python 3……
Python/Java/C#/JavaScprit/Ruby + Gauge,又一款开源的功能自动化测试方案
Thoughtworks 的基于BDD理念的自动化测试工具
Gauge 自己就是完整的测试方案
Gauge 是从需求分析师(BA)到测试工程师(QA)都覆盖的测试方案
Java/Python + Macaca,阿里巴巴的功能自动化测试方案,缺点是文档少
JavaScript + TestCafe,DevExpress 的开源功能自动化测试方案
pure node.js - TestCafe不使用Selenium,而且不须要插件来在实际浏览器中运行测试。 它创建在node.js的顶部,所以它与现代开发工具集成和工做良好
无需额外的设置或配置- TestCafe是全部设置后当即运行测试npm install
完整的测试工具 - 使用单个启动命令,TestCafe启动浏览器,运行测试,收集结果并生成报告
JavaScript + Postman,免费的Web接口功能自动化测试方案
Groovy + SoapUI,开源的Web接口功能自动化测试方案
性能自动化测试
Java/C + HP LoadRunner,商业版性能测试方案
Java + JMeter,开源版性能测试方案
Python + locust,开源版性能测试方案
这里,咱们借用一张别人的图,Martin Fowler,敏捷开发方法的创始人之一,他借用金字塔的概念来展现测试的层次。
事实上,自动化测试覆盖了从 UI (功能测试)到契约(接口测试)以及底层代码方法(单元测试)的整个过程,要想很好的掌握自动化测试,那么的确须要如下三种领域的经验积累:
编程语言,面向对象编程优先,由于大量的开源技术方案,都是基于面向对象的编程方式
第三方测试工具和测试框架,这些主要经过官网的文档学习
测试的理念与设计,工具和语言,只是测试的手段,如何准备测试数据,如何设置测试的检查点与测试步骤,这些决定了测试的成败
此外综合的 前端与服务器后端技术,是测试执行的保障。加油吧童鞋们,一分钟过去了么?那么你如今了解到自动化测试了么?若是依旧有疑问,欢迎联系笔者进一步的沟通交流,1363134450@qq.com。
接下来的写做安排:
基于 Postman 的Web 接口测试 基于 SoapUI 的 Web 接口测试 基于 requests Python 库的Web接口自动化测试构建(系列文字) 基于 JMeter 的性能测试方案(系列文字) 基于 Python locust 库的性能测试方案 基于 HP LoadRunner 的性能测试方案(系列文字)
结语:
最后跟你们推荐一个学习资料分享群:903217991,里面大牛已经为咱们整理好了许多的学习资料,有自动化,接口,性能等等的学习资料!
人生是一个逆水行舟的过程,不进则退,我们一块儿加油吧!