引子

写在最前面:目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出不穷,但是,能够明白自动化测试并很好落地实施的团队还不是非常多,我们接来下用通俗的方式来介绍自动化测试……

本文共有2410字,阅读需要大约一分钟。

首先我们从招聘岗位需求说起。看近期的职业机会,提到“软件测试工程师”,基本上都有关于自动化测试的要求。例如:

  • 了解 selenium、appium或者其他自动化测试框架

  • 至少熟悉一门面向对象开发语言,有一定的代码功底优先

  • 熟悉Java或者python,有一定的测试自动化经验和代码阅读能力

  • 了解接口集成测试,会使用JMeter、Postman、SoapUI等接口测试工具

等等,上述内容不再一一列举。突然自动化测试遍地开花,好像测试工程师的自动化测试能力成为了标配一般。本文就从自动化测试的要求入手,简单的进行自动化测试扫盲,争取让各位在一分钟之内了解自动化测试。

那么我们就从“自动化测试”五个字来剖析。

测试

测试:这个我们熟悉。最经典的一个解释“程序测试是为了发现错误而执行的过程。”这个来自于G.J.Myers的经典著作《软件测试的艺术》的定义,给我们展示了测试的本质:过程。

测试是为了发现软件的错误,而执行的过程,这个过程可以是以下内容:

  • 运行被测试的软件,执行软件的功能

  • 运行其他工具,去检查软件的内部和外部

总而言之,是一个过程,执行的过程。接下来就一张最常见的测试示意图:

比如:测试主管让测试工程师去把软件的所有功能遍历一遍,该测试工程师通过鼠标、键盘、麦克风、手机屏幕触控等,把软件所有的功能,全部遍历了,这个叫做什么?熟悉测试的童鞋明白,这就是传说的“手工目测”呀,这是“人肉测试”。

我们好好的画这张图,实际上是这样的。

自动化

到这里,结合上面的说法,自动化测试就是让被测试的软件自己运行起来,执行软件的功能;或者就是让其他的工具自己运行起来,去检查软件的内部和外部。

  • 既然测试是一个过程,那么自动化测试,就是自动的执行的过程。

接下来我们探讨的一个核心的问题:自动。什么叫做自动呢?让机器自己动,就是自动。让机器按照人类的要求,把软件的所有功能遍历一遍,这是自动化。。这样说会不会清晰一点?

重点来了,机器。让机器去动,这可不是“吃鸡”哦,这是人类命令机器去操作。不知道童鞋们有没有思考过,机器怎么知道人类的要求?上面的例子,测试主管只要告诉测试工程师,命令传达就完成了。可是人类直接的沟通,远比人机沟通容易啊。

  • 首先,机器听不懂“人话”,无论中文,英文……

  • 其次,机器默认会的“汇编语言”,应该是绝大部分的童鞋不会,并且短期掌握不来吧。

好吧,用“编程语言”。是时候拿出我们的另一张图了:

机器学习一个编程语言,轻松和简单到令人发指的地步:安装上去,机器就学会了。好在人类学习编程语言也不是特别难的的事情。看来这个可行。

有了编程语言,就有了人机交流的桥梁,剩下的事情,是帮机器挑选工具。做对应的测试,就需要找到对应的工具,这样自动化就自动起来了。能到这里,我希望各位童鞋了解了基本的“自动”原理。

同样,好好的画这张自动化测试的示意图:

然后我们介绍各种常见的工具,来继续讨论自动化测试。进一步探讨之前,我们先看看测试的常用分类。这里不同的分类维度下,我们可以分为不同的测试,这里我们认真分析一下。

  • 从软件测试的实践过程看:单元测试、集成测试、确认测试、系统测试、验收测试……

  • 从软件测试的方法策略看:白盒测试、黑盒测试、灰盒测试……

  • 从软件测试的测试视角看:功能测试、性能测试、兼容性测试、安全测试、探索性测试……

  • 从软件测试的技术程度看:手工测试、自动化测试、测试开发……

以上这些维度下的分类,只有一部分测试可以通过“人肉测试”的“手工目测”完成,剩下的其实从广义概念上,都是需要机器来完成的。我们把这一部分测试抽取出来:系统测试-黑盒测试-功能测试-手工测试。不可否认的讲,这条线是目前软件测试从业者的重点覆盖范围,该范围之外的地方,便是自动化测试的用武之地。

自动化测试

接下来我们探讨一下主流的自动化测试方案,无一例外,都有人机沟通的编程语言,加上机器操作的工具来组成。

  • 功能自动化测试

  • 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 (功能测试)到契约(接口测试)以及底层代码方法(单元测试)的整个过程,要想很好的掌握自动化测试,那么的确需要以下三种领域的经验积累:

  • 编程语言,面向对象编程优先,因为大量的开源技术方案,都是基于面向对象的编程方式

  • 第三方测试工具和测试框架,这些主要通过官网的文档学习

  • 测试的理念与设计,工具和语言,只是测试的手段,如何准备测试数据,如何设置测试的检查点与测试步骤,这些决定了测试的成败

此外综合的 前端与服务器后端技术,是测试执行的保障。加油吧童鞋们,一分钟过去了么?那么你现在了解到自动化测试了么?如果依旧有疑问,欢迎联系笔者进一步的沟通交流,liu.tingli@qq.com。

一分钟了解自动化测试 1相关推荐

  1. AirtestIDE 教程 — 5分钟上手自动化测试

    AirtestIDE 教程 - 5分钟上手自动化测试::http://airtest.netease.com/tutorial/Tutorial.html AirtestIDE 官方文档:http:/ ...

  2. 1-5分钟上手自动化测试——Airtest+Poco快速上手

    1 | 5分钟上手自动化测试--Airtest+Poco快速上手 1.1 前言 本文档将演示如何使用Airtest Project专用的编辑器AirtestIDE,编写Airtest+Poco自动化脚 ...

  3. AirtestIDE 教程 : 5分钟上手自动化测试

    都跟简单,只要认真钻研. AirtestIDE 教程 - 5分钟上手自动化测试::http://airtest.netease.com/tutorial/Tutorial.html AirtestID ...

  4. 【灵魂配图】用一分钟了解自动化测试

    Time will tell. 其实自动化测试已经不是一个新兴产物.为了更好的让大家阅读理解,我特意去百度百科搜索了一下,这个是百度自动化测试的官方定义. 接下来我们大约用一分钟的时间来了解自动化测试 ...

  5. 自动化测试框架cucumber_10分钟学会自动化测试框架--Cucumber + Watir

    估计你早已厌烦了成百上千遍的网页点击测试,至少之前的我是这样的,那么,让自己的web测试自动化吧,本文使用Cucumber + Watir来完成自动化测试,从最简单例子入手,一步一步重构成一个完整的自 ...

  6. 关于自动化测试系统的想法

    ** 自动化测试的个人见解 ** 前几天,在世界银行上线的自动化测试平台有些问题,不得不继续加班. 问题是对test case 的存贮导致.因为前期代码是三哥的杰作,本来想将就用他们写的几千行的存储过 ...

  7. 面试——测试工程师(20191009)

    小小的记录一下求职经历,一起加油呀~ ٩̋(•͈ω•͈)و 职位描述: 依据需求文档及设计文档,编写测试用例: 依据测试用例执行手工测试,反馈跟踪产品BUG及用例缺陷,协助开发人员定位及修复bug,并 ...

  8. 软件测试python测试步骤_软件测试员必备基础:3分钟带你入门自动化测试!

    目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出不穷,但是,能够明白自动化测试并很好落地实施的团队还不是非常多,我们接下来用通俗的方式来介绍自动化测试-- 首先我们从招聘岗位需求 ...

  9. APP自动化测试工具uiautomator2,十分钟迅速掌握

    目录 前言 一.介绍 二.环境部署 三.编写百度贴吧首页脚本 四.uiautomator2和appium运行速度比较 写在最后,给与的建议: 前言 相信很多使用appium做过APP自动化的人都深有感 ...

最新文章

  1. 独家 | 数据科学机器学习面试题,来挑战吧~
  2. MapReduce 模式、算法和用例
  3. 以用户体验为导向的设计表现
  4. 12-1-顺序文件归并-文件-第12章-《数据结构》课本源码-严蔚敏吴伟民版
  5. tomee_Apache TomEE + JMS。 从未如此简单。
  6. 自然语言处理(2)-信息论基础
  7. mysql根据时间回退_MySQL 中的日期时间类型
  8. [转]详解Flex布局(语法+教程)
  9. mysql服务注册表删除_怎么彻底删除mysql服务(清理注册表)详解
  10. TI C64X+通用库函数使用手册
  11. 记录一次组装台式机设置U盘启动
  12. rsync简介及部署
  13. 斯坦福大学终身教授张首晟:区块链最核心的理念,必然是「 In Math We Trust 」
  14. 华为交换机dhcp获取不到_华为S7706交换机DHCP Server 配置不成功问题
  15. 随笔之javamail邮件发送(阿里云企业邮箱)
  16. Python爬虫(一):简单小说爬取实例
  17. 2068. 整数拼接
  18. 苹果屏蔽更新描述文件_iOS 13+屏蔽系统升级描述文件,终于更新了,在线安装!...
  19. 安徽省计算机二级VB笔试题,2020年9月安徽省计算机二级易考套餐:二级VB考试题库+教材...
  20. 告别艺术品造假—国外研究人员用AI进行名画鉴定

热门文章

  1. python运行js---execjs 使用
  2. 数据分析案例-数据科学相关岗位薪资可视化分析
  3. MySQL数据库基础——数据库基础
  4. java修改密码代码_Java用户修改密码
  5. 一般生产环境LINUX服务器配置
  6. sizeof求二维数组的大小
  7. QGIS:创建矢量图层
  8. python名片管理系统难点总结_Python 知识要点:名片管理系统 2.0
  9. 教学|3DSMAX制作爆炸粒子的技巧,游戏特效这么做
  10. DAX 第八篇:【翻译】数据沿袭(Data Lineage )