APP下载

自动化软件测试框架的分析及应用

2021-10-25李丹阳郭金蔓刘鹏飞

科技信息·学术版 2021年19期
关键词:自动化测试

李丹阳 郭金蔓 刘鹏飞

摘要:软件测试工作在软件开发的整个过程中有着很重要的位置。为了克服手工测试的一些困难,提高软件质量和测试效率,测试过程的自动化被广泛地引入进来。其自动化程度高、实用性强等特点,引起了人们的广泛重视,成为软件测试的发展方向。自动化测试框架产品的出现表明软件测试自动化技术正在趋于成熟。同时,以B/S架构为基础的Web应用成为软件开发行业的主流,Web应用前端样式的多样性和复杂度也给各公司带来不小的前端测试麻烦,因此,如何根据产品的特点进行自动化测试,已成为各测试团队重点需要关注的问题。本文分析了手工测试与自动化测试的优缺点,介绍了几个比较常见的自动化测试工具,通過对比发现Selenium是功能最全面,使用最广泛的前端自动化测试工具之一,它能够用程序控制浏览器,从而实现前端自动化测试。

关键词:自动化测试;Selenium;前端测试

一、研究背景

随着IT市场竞争不断加剧,如何提升软件质量、缩短软件迭代开发周期,对软件测试方法和工具提出了更高要求。软件测试就是在规定的条件下对程序进行操作,最大化的发现程序的错误,并对其是否能满足设计要求进行评估的过程。软件测试对于保证软件产品的质量至关重要,而通过搭建良好的测试框架来实现自动化测试,可以降低各测试模块之间的耦合,提高测试的效率和覆盖率,同时也大大降低了测试的成本,更好的保证软件质量。软件测试分传统的手工测试和自动化测试,传统手工测试存在周期较长、效率较低、回归测试覆盖度不高等问题,而自动化测试为解决这些问题提供了可行性途径,因而受到了业界重视。目前业界已经出现众多自动化测试工具和框架,如何借助现有工具框架,构建一套适合于自身实际需求的自动化测试框架,是当前迫切需要解决的重要问题。

二、自动化测试相关技术

本章主要介绍了软件测试、自动化测试的相关理论知识和一些自动化测试工具,并且比较了手工测试、自动化测试及自动化测试工具的优缺点。

2.1软件测试

软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程[1]。

软件测试从是否关心软件的内部结构和具体实现的角度可划分为:白盒测试、黑盒测试和灰盒测试;从是否执行程序的角度可划分为:静态测试和动态测试;从基于测试的不同阶段可划分为:单元测试、集成测试、系统测试和验收测试;从软件的侧重性可划分为性能测试、功能测试、兼容测试、压力测试、回归测试和负载测试;从是否借用工具可划分为:手工测试和自动化测试;从按测试实施组织可划分为:α测试、β测试和第三方测试[2]。

2.2自动化测试

自动化测试是把以人为驱动的测试行为转化为机器执行的过程。通常,在设计了测试用例并通过之后,由测试人员根据测试用例中描述的规程一步步执行测试,可以得到实际结果与期望结果的比较结果。在此过程中,为了节省人力、时间或硬件资源,提高了测试效率,便引入了自动化测试的概念。自动化测试的概念有广义与狭义之分:广义上来讲,所有借助工具来辅助进行软件测试的方式都可以称为自动化测试;狭义上来讲,主要指基于UI层的功能自动化测试[2]。

2.3自动化测试与手工测试

现在很多人都会认为手工测试没有技术含量并且没有前途,觉得只有自动化测试才能体现出测试人员的技术水平。其实无论是手工测试还是自动化测试都是软件质量保障的一个途径,至于使用哪一种测试方法不仅仅要看测试人员的能力,还要看项目规模,客户需求以及公司能力等因素。

自动化测试的优点包括1. 对程序的回归测试更加方便。2. 可以运行更多更繁琐的测试。3. 可以执行一些手工测试困难或不可能进行的测试。4. 更好地利用资源。5. 测试具有一致性和可重复性。6. 测试的复用性。7. 增加软件信任度。

自动化测试的缺点包括1. 不能取代手工测试。2. 手工测试比自动测试发现的缺陷更多。3. 对测试质量的依赖性极大。4. 测试自动化不能提高有效性。5. 测试自动化可能会制约软件开发。6. 工具本身并无想像力。

手工测试也存在着一些缺陷,手工测试者最常做的工作就是重复的手工回归测试,不但耗费时间,而且容易出错。自动化测试可以减少但不能消除这种工作的工作量。尽管测试就是要花费更长的时间找到错误,但比不意味着因此而要付出更高的代价。所以选择正确的测试方法是尤为重要的,自动化测试完成不了的,手工测试可以弥补。手工测试无法做到的,自动化测试却可以,两者有效的结合是测试质量保证的关键。

2.4自动化测试框架

框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面,而后者是从目的方面给出的定义[3]。从框架的定义可以了解,框架可以是被重用的基础平台;框架也可以是组织架构类的东西。其实后者更为贴切,因为框和架本来就是组织和归类所用的。

所以自动化测试框架的定义为:由一个或多个自动化测试基础模块、自动化测试管理模块、自动化测试统计模块等组成的工具集合[3]。

目前市面上的自动化测试的工具有很多,下面是几个比较常见的自动化测试工具。

1. QTP

QTP(Quick Test Professional)是一种自动化测试工具。使用QTP的目的是想用它来执行重复的自动化测试,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试,例如要测试哪些功能、操作步骤、输入数据和期望的输出数据等。

2. UFT

UFT(Unified Functional Testing)由QTP(Quick Test Professional)与ST(Service Test)合并而来,由HP公司开发。它是一个企业级自动化测试工具,提供了强大易用的录制回放功能,同时兼容对象识别模式与图像识别模式两种识别方式,支持B/S与C/S两种架构的软件测试,是目前主流的自动化测试工具[4]。

3. Robot Framework

Robot Framework是一款基于Python语言编写的自动化测试框架,具备良好的可扩展性,支持关键词驱动,可以同时测试多种类型的客户端或接口,可以进行分布式测试[4]。

4. LoadRunner

LoadRunner是一種预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。企业使用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。LoadRunner可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能。

5. Selenium

Selenium是一系列基于Web的自动化测试工具,支持多平台、多浏览器、多语言去实现自动化测试。它提供了一系列测试函数,用于支持Web自动化测试。这些函数非常灵活,它们能够通过多种方式定位界面元素,并可以将预期结果与系统实际表现进行比较[5]。

经过对比和分析,可以发现Selenium是功能最全面,使用最广泛的前端自动化测试工具之一,它能够用程序控制浏览器,从而实现前端自动化测试。Selenium2.0版本包含着Selenium IDE和Selenium RC以及WebDriver。Selenium IDE是通过监听用户对html页面的操作来录制脚本的,是真正能够监听用户对html页面的操作的录制工具。Selenium RC模式,是客户端利用各种编程语言,通过网络向Selenium Server发送指令,Selenium Server接收到测试指令后,启动浏览器并向其发出JavaScript调用实现对Html页面的全面追踪,并通过网络把执行结果返回给调用者。WebDriver针对各个浏览器而开发,取代了嵌入到Web应用中的JavaScript。与浏览器的紧密集成支持创建更高级的测试,避免了JavaScript安全模型导致的限制。

三、总结与展望

软件测试是软件工程整个生命周期中非常重要的过程之一,随着互联网和计算机技术的发展,软件测试工作的难度逐渐增大。本文首先引入了软件测试和自动化测试的概念,分析了手工测试与自动化测试的优缺点,介绍了几个比较常见的自动化测试工具。

在自动化脚本中仍存在着许多需要改进的地方,比如脚本的优化、数据驱动的实现、测试用例的自动生成,这都是接下来仍需要继续完善的地方,并将在后续的研究过程中逐步解决,使自动化脚本能够更加完善。相信今后随着Web自动化测试技术的不断发展,会有大量自动化测试框架的涌现,自动化测试必将走向成熟化、标准化。

参考文献

[1]虫师.Selenium2自动化测试实战:基于Python语言[M].北京:电子工业出版社,2016.2-20.

[2]佟伟光.软件测试[M].北京:人民邮电出版社,2015.2-50.

[3]赵卓.Selenium自动化测试指南[M].北京:人民邮电出版社,2013.2-24.

[4]江慰.基于Selenium的软件测试自动化管理系统的设计与实现[D].上海:上海师范大学,2016.

[5]但凝云.基于Selenium的自动化测试框架的设计与实现[D].昆明:云南师范大学,2016.

猜你喜欢

自动化测试
基于Java反射的APP自动化混合测试框架的研究与实现
Hadoop性能测试自动化研究
数据驱动和关键字驱动的研究与应用
浅谈空调控制器自动化测试
基于多总线结构的电路板测试系统设计研究
航空航天与国防电子新形势下自动化测试系统的应用
基于CTI—TET和SeleniumWebdriver的Web应用自动化测试框架的设计与实现
自动化测试实现研究
一种航空交换机中CAN总线的自动化测试方法
基于Selenium进行Web应用测试研究