一分钟了解自动化测试
- 2021-02-25 10:00:00
- 立师兄Linty
- 转贴:
- 知乎
- 4664
首先我们从招聘岗位需求说起。看近期的职业机会,提到“软件测试工程师”,基本上都有关于自动化测试的要求。例如:
- 了解 selenium、appium或者其他自动化测试框架;
- 至少熟悉一门面向对象开发语言,有一定的代码功底优先;
- 熟悉Java或者python,有一定的测试自动化经验和代码阅读能力;
- 了解接口集成测试,会使用JMeter、Postman、SoapUI等接口测试工具;
那么我们就从“自动化测试”五个字来剖析。
一、测试
测试:这个我们熟悉。最经典的一个解释“ 程序测试是为了发现错误而执行的过程。”这个来自于G.J.Myers的经典著作《软件测试的艺术》的定义,给我们展示了测试的本质: 过程。测试是为了发现软件的错误,而执行的过程,这个过程可以是以下内容:
- 运行被测试的软件,执行软件的功能;
- 运行其他工具,去检查软件的内部和外部。
我们好好的画这张图,实际上是这样的。
二、自动化
到这里,结合上面的说法,自动化测试就是让被测试的软件自己运行起来,执行软件的功能;或者就是让其他的工具自己运行起来,去检查软件的内部和外部。既然测试是一个过程,那么自动化测试,就是自动的执行的过程。
重点来了,机器。让机器去动,这可不是“吃鸡”哦,这是人类命令机器去操作。不知道童鞋们有没有思考过,机器怎么知道人类的要求?上面的例子,测试主管只要告诉测试工程师,命令传达就完成了。可是人类直接的沟通,远比人机沟通容易啊。
- 首先,机器听不懂“人话”,无论中文,英文……
- 其次,机器默认会的“汇编语言”,应该是绝大部分的童鞋不会,并且短期掌握不来吧。
有了编程语言,就有了人机交流的桥梁,剩下的事情,是帮机器挑选工具。做对应的测试,就需要找到对应的工具,这样自动化就自动起来了。能到这里,我希望各位童鞋了解了基本的“自动”原理。
同样,好好的画这张自动化测试的示意图:
这个呢?自动化测试示意图
然后我们介绍各种常见的工具,来继续讨论自动化测试。进一步探讨之前,我们先看看测试的常用分类。这里不同的分类维度下,我们可以分为不同的测试,这里我们认真分析一下。
- 从软件测试的 实践过程看:单元测试、集成测试、确认测试、系统测试、验收测试……
- 从软件测试的 方法策略看:白盒测试、黑盒测试、灰盒测试……
- 从软件测试的 测试视角看:功能测试、性能测试、兼容性测试、安全测试、探索性测试……
- 从软件测试的 技术程度看:手工测试、自动化测试、测试开发……
三、自动化测试
接下来我们探讨一下主流的自动化测试方案,无一例外,都有人机沟通的编程语言,加上机器操作的工具来组成。
1.功能自动化测试
- VBScript + QTP(HP UFT),商用功能自动化测试方案;
- Python/PHP/Java/C#/JavaScprit/Ruby + 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 的开源功能自动化测试方案;
- JavaScript + Postman,免费的Web接口功能自动化测试方案;
- Groovy + SoapUI,开源的Web接口功能自动化测试方案。
2.性能自动化测试
- Java/C + HP LoadRunner,商业版性能测试方案;
- Java + JMeter,开源版性能测试方案;
- Python + locust,开源版性能测试方案。
事实上,自动化测试覆盖了从 UI (功能测试)到契约(接口测试)以及底层代码方法(单元测试)的整个过程,要想很好的掌握自动化测试,那么的确需要以下三种领域的经验积累:
- 编程语言,面向对象编程优先,因为大量的开源技术方案,都是基于面向对象的编程方式;
- 第三方测试工具和测试框架,这些主要通过官网的文档学习;
- 测试的理念与设计,工具和语言,只是测试的手段,如何准备测试数据,如何设置测试的检查点与测试步骤,这些决定了测试的成败。
- 联系人:阿道
- 联系方式: 17762006160
- 地址:青岛市黄岛区长江西路118号青铁广场18楼