1、前言
在软件测试中,自动化测试指的是使用独立于待测软件的其他软件来自动执行测试、比较实际结果与预期并生成测试报告这一过程。在测试流程已经确定后,测试自动化可以自动执行的一些重复但必要测试工作。也可以完成手动测试几乎不可能完成的测试。对于持续交付和持续集成的开发方式而言,测试自动化是至关重要的。
随着软件系统规模的日益扩大,以及应用领域的不断拓展,对软件系统的测试也变得更加困难和复杂,传统的人工测试的局限性也越来越明显。自动化软件测试技术可以克服传统测试技术的许多问题。自动化测试所依据的是一套严密的测试法则和评估标准,具有完整的自动测试过程。因此,它可以避免测试人员惯性思维所导致的测试疏漏,也可减少由于手工测试中繁复的重复工作所导致的人为差错。
2、自动化测试的意义和优点
自动化测试(尤其是单元测试的自动化),是极限编程和敏捷软件开发的一个关键特征,这也被称为测试驱动开发(TDD)。单元测试的用例可以在代码编写完成之前就设计好,并作为功能的一种定义形式存在。随着新的代码不断完成编写,单元测试随之进行,缺陷被不断找出,因而代码也不断得到改进。由于开发人员能够及时发现缺陷然后立即作出改变,修复的代价大大减小,这种不断发展的开发方式被认为比瀑布模型这类开发结束再测试的方式更为可靠。
使用单元测试框架(如JUnit、NUnit等“xUnit”类型测试框架)执行自动化测试是目前软件开发行业的大趋势。单元测试框架的应用使得各部分代码开发完成后立即进行相关单元测试来验证它们是否如预期在运行成为可能。
手工完成一些软件测试的工作(例如大量的低级接口的回归测试)十分艰苦耗时,而且寻找某些种类的缺陷时效率并不高,因而测试自动化,提供一种完成这类工作的有效方法。
一旦自动化测试方法开发完成,日后的测试工作将可以高效循环完成。很多时候这是针对软件产品进行长期回归测试的高效方法。毕竟,早期一个微小的补丁中引入的回归问题可能在日后导致巨大的损失。
3、自动化测试的局限性
尽管长期来看(尤其是针对回归问题的)自动化测试,可以带来开支上的节省,将所有测试短期内全部自动化还是可能产生巨大的开销,通常情况下业内采用手工测试和自动化测试相结合的方法完成测试工作。
尽管测试“自动化”了,但测试结果分析、测试脚本维护和编写仍然需要人力投入。
4、自动化测试的要求
4.1、对于测试用例的要求
需要被自动化的测试用例大多是待测产品中每次修改代码都需要进行回归测试的重要部分。对这样的部分采取自动化测试手段后能大大减小手工测试消耗的人力物力。
4.2、对于测试人员的要求
由于在自动化测试中的测试用例和输出结果都由代码构成,测试工程师(或软件质量保证人员)必须具备软件编码的能力。不过某些测试自动化工具支持通过关键词指定测试步骤,因而免除了程序编写的过程,对测试人员而言也就不再要求他们掌握编程技术了。
4.3、对于团队的要求
自动化测什么,什么时候可以自动化,团队是否真的需要自动化——这三个问题是一个测试(或开发)团队必须做出的关键决断。
测试自动化应考虑五个关键因素:
最常提及的独立因素是:
5、自动化测试的分类
测试自动化有许多途径,下面列出一些广泛应用的一般方法:
基于图形用户交互界面测试(GUI Based Testing)。基于用户界面(GUI)的测试使用能够产生图形用户界面操作(如鼠标点击、键盘输入等)的测试框架,模拟用户动作来以观察、验证程序是否正确的响应。
接口测试(又称基于API的测试,API Based Testing)。接口测试指的是通过调用接口(API)绕过GUI,以应用到验证的行为进行测试。通常API绕过测试的应用程序的用户界面。它也可以测试公共的接口,以各种各样的输入参数来验证返回的结果是正确的。
5.1、图形用户界面(GUI)测试
许多测试自动化工具提供记录与回放的功能,这允许用户记录他们在交互式用户界面上进行的鼠标点击、键盘输入等操作。这样在之后的测试当中,回放便可以自动测试这些交互,与正常情况下的交互反馈进行对比便可完成针对GUI的测试工作。
这种方法几乎不要求用户具有软件开发经验,并且可以应用于几乎任何具有GUI的应用程序。然而,这些特点也带来了一些可靠性和维护性问题:任何按钮的重命名或是移动都会让脚本出现错误,用户便需要重新录制脚本。
5.2、接口测试
接口测试是被广泛使用的软件测试方法之一,它使软件测试工程师能够忽略GUI的影响,对软件功能本身进行测试。它是程序逻辑测试中非常关键的一步。通常情况下在开发的早期阶段,接口测试就会开始执行来确保代码始终是准确无误的。
接口测试也作为集成测试的一部分,用于判断系统是否满足功能、可靠性、性能表现和安全性的要求。由于接口测试不使用GUI,它主要通过字符方式与测试者进行交互。
5.3、持续测试
持续测试指的是在软件开发过程中自动对即将发布的软件版本,通过软件输送管道,自动的执行测试并给出即时反馈,依次降低软件缺陷带来的业务风险。
6、自动化测试框架
测试自动化框架是一个为特定产品设置一系列特定自动化规则执行测试的集成系统。这套系统的整合(测试用的)函数库、测试数据集、对象细节(元数据)和各种可重用模块。将这些模块按照测试需求组合起来便可以得到一个完整的,针对特定功能或应用场景的测试用例。测试框架为自动化测试提供基础,并简化了自动化测试的工作流程。
6.1、几种常用的框架/脚本模式
6.2、测试框架的功能
7、自动化测试在行业中的现状
根据Practitest组织2018年收集,来自80多个国家的QA专业人士提供,约1,500份回复报告统计显示,高达76%的受访者执行自动化测试或负责编写自动化测试脚本。有85.5%的受访企业采用了各类自动化测试方法,其中75%的企业利用自动化测试方法执行回归测试,43%的企业将自动化测试和持续集成、持续开发方法结合使用,有3%的公司甚至将90%的测试工作自动化进行。
精彩推荐
面试笔试系列
思维导图系列
Linux常用命令壁纸
接口Requests系列
测试框架pytest系列
Jmeter快速上手之接口测试
自动化测试框架结构图
移动安全框架(MobSF)
版权归原作者 wangmcn 所有, 如有侵权,请联系我们删除。