02 自动化测试的基础知识
同学们好,我是网易AirtestProject的团队成员晓娟,欢迎大家来到我们的视频教程专栏《14天Airtest自动化测试小白课程》。
今天我们主要来讲一下自动化测试的基础知识。只有对自动化测试的理论知识有所了解之后,我们才能更加明确自动化测试究竟在做些什么事情,以及我们该如何进行自动化测试实操。
软件测试的分类
我们先来了解下软件测试。
软件测试是使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。通俗点来说,就是一个用来鉴定软件是否符合需求或者其是否有缺陷的过程。
① 我们常常听到的黑盒、白盒测试,其实就是把软件测试根据 测试方法 来进行分类:
黑盒测试:为最基础的功能测试,不关心内部的代码实现,而仅验证输入输出的正确性。
白盒测试:基于逻辑驱动或者基于代码测试,打开代码内部的实现,去研究源代码中的接口或者具体实现的正确性。
灰盒测试:则是介于黑白盒测试之间的一种测试方法
② 按 测试目标 来划分,软件测试又可以分为功能测试、性能测试、压力测试和兼容性测试等等。因为测试目的不同,所以我们要获取的测试数据往往差别也比较大。举个例子,做性能测试,我们会更关注系统的各项性能指标;而做兼容性测试的时候,我们则会更关注软件在不同机型上的兼容性数据。各种目标测试的定义我们已经写在了PPT上,同学们可以详细阅读下:
功能测试:对产品和模块的各个功能进行测试
性能测试:对系统的各项性能指标进行测试
压力测试:测试软件或系统的负载能力,挖掘隐患
兼容性测试:对产品和软硬件之间的兼容性进行测试,比如软件在各种不同安卓机型上的兼容性
安全性测试:通过不同方法发现软件的安全性问题,比如信息泄露、非法使用、恶意破坏等等
其他专项测试:比如弱网络测试、耗电量测试、流畅度测试等等
③ 另外比较常见的分类还有按软件 开发阶段 来划分的,同学们也可以根据PPT上给出的详细内容了解下,其中回归测试也是我们经常要做的一种测试:
单元测试:对程序中的独立模块进行白盒测试,目的是检验软件基本组成单位的正确性
集成测试:通过对单元模块进行组合测试,目的是验证单元模块之间的接口是否正确
系统测试:对整个系统进行完整测试,验证整个系统的正确性与合规性
回归测试:当软件发生变更的时候,对这次变更可能受影响的功能模块进行验证
验收测试:测试的最后一个阶段,软件发布或者上线前确保软件质量
自动化测试的价值
好了,了解完软件测试的基本定义和常见分类之后,我们再来聊聊自动化测试。自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。
自动化测试的意义,就在于大幅度提高了测试效率,节省了大量的测试人力。在互联网飞速发展的背景下,产品的迭代速度也非常快,单纯的手工测试已经无法满足这个快速变化的过程。所以我们才需要自动化测试技术,来提高整个测试的效率。

测试人员通过自动化测试大大提升了测试效率之后,就会有更多的时间去思考产品质量策略和新的测试场景这些方面的内容,从而在产品快速迭代的情况下也能保障产品的质量。
另外,我们还在拉勾网上爬取了400多个测试工程师的岗位要求,分析得到,大部分公司都非常希望测试人员拥有自动化测试的能力,这也间接说明了自动化测试是非常受公司所重视的:

因此,作为一名测试人员,自动化测试是我们的必然选择,也是技术发展的选择。
主流自动化测试框架
最后,我想带大家来看一下目前市面上一些主流的自动化测试框架。
软件测试的自动化一般可以分为3层:
代码层的单元测试
接口层的集成测试
UI 层的测试
① 代码层自动化
代码层的自动化,一般指针对代码进行的单元测试,比较常用的单元测试框架比如Java的Junit、Python的PyUnit等等。
② 接口层自动化
接口层的自动化测试主要是对系统和组建之间的接口进行测试,目标是校验数据的交换和业务的流程。由于接口比代码单元要稳定很多,所以自动化脚本维护成本更低、收益也更大,具有不错的性价比。常用的测试工具有Jmeter、LoadRunner、Robot Framework、Postman等等:
Jmeter:由Apache组织开发的基于Java的接口测试、压力测试和性能测试工具,起初为Web测试而设计,后来逐步扩展到其他领域,可以用来测试静态或者动态的资源。
LoadRunner:HP公司提供的一款性能测试和压力测试工具,可以通过模拟成千上万用户实施并发操作来测试系统性能,并且有详细的测试结果分析,是性能测试和压测的不错选择。
Robot Framework:一款开源的自动化测试框架,具有很好的可扩展性。框架用python编写,同时也提供跨平台支持。
Postman:简单方便且功能强大的接口调试工具,API调试首选。
③ UI层自动化
基于UI层的自动化测试框架要复杂很多,从平台种类来讲,有Windows,Linux,Android,Ios,Web,还有最新的小程序等等,常见的UI层自动化测试框架主要有:Appium、Selenium、Airtest和Poco等等:
Appium:一款开源的自动化测试工具,支持IOS、Android、Windows和Mac应用。拥有跨平台和跨语言等特点。
Selenium:一款开源的Web应用自动化测试工具,可以直接运行在多种浏览器平台中,就像用户真实操作一样。
Airtest:基于Python的、跨平台的UI自动化测试框架,基于图像识别原理,适用于游戏和App等。
Poco:基于UI控件搜索的自动化测试框架,其核心优势是除了对Android、IOS之外,对游戏也是支持的,同时也支持微信小程序、微信小游戏和H5应用。
课程小结
好啦,本次课程的主要内容就到这里结束啦。我们来回顾一下,这节课我们主要讲述了软件测试的定义和分类、自动化测试的定义和价值所在,最后我们还简单了解了一些主流的自动化测试框架。

关于自动化测试的基础知识我们就介绍到这里,下节课我们会进入一个新的专题: 设备连接 。届时我们会跟大家详细讲述并实操下如何连接各种平台的测试设备来进行自动化测试,下期我们不见不散~

