自动化测试(一)

时间:2022-11-08 19:35:25

  自动化测试的概念比较广泛,一般来说能替代人工测试的方式都属于自动化测试,自动化测试出现的初衷是为了来代替人工测试,以自动化的方式来进行测试,不仅可以降低成本,也大大节约了时间,因为自动化可以24小时进行不间断测试。但从目前阶段来看,自动化在版本防护方面应用的比较多,通常在软件发行后,需要不断对软件版本进行迭代升级,这时候再用大量的人力来不断进行版本的迭代测试显然得不偿失,由此,自动化测试的作用凸显。以自动化的方式来对版本进行防护,仅需少量人力来对测试结果进行分析以及进行少量自动化防护不到的地方进行测试。

  总体而言,自动化测试在目前的测试工作中作用并不是很突出,但自动化测试仍然是以后测试的主流方向,需要进行测试软件或框架上的努力(仅属于个人简介,有不准确的请指正)。而人工测试因人而异,具有较强的灵活性,好的手工测试人员往往需要经验积累。手工测试能依赖的东西比较多,比如JMeter、LR(LoadRunner)等,而自动化测试的工具在很多情况下不是很完善,比如Selenium、sahi等,需要在版本进行迭代前期,组织自动化测试人力搭建自动化测试框架,编写自动化测试代码,组织相关测试用例,并且对这些用例进行维护。前期需要在自动化代码编写是花费较长时间,但一旦自动化框架、代码设计编写完毕,在随后的版本迭代中,成本会骤降,而效率会大大提升。

  自动化测试可分为:web自动化、APP自动化、接口自动化、以及非常重要的自动化测试框架。

  一、web自动化

  在浏览器兼容性、安全、以及与web技术相关的表单测试、链接测试等方面作用比较显著。

  常见的web自动化工具:Selenium、sahi、QTP(UFT)、RFT、Watir。

  Selenium是一套完整的web应用程序测试工具,它包含了测试的录制(Selenium IDE)、编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由Javascript编写,因此可用于任何支持JavaScript的浏览器上,因此它的应用比较广泛。Selenium Core由一种指定的HTML文件驱动,在一定程度上增强了测试套件(Test Suite)的可读性。Selenium Remote Control允许测试人员使用常见的语言(包括C#、.NET等语言)编写测试代码,并支持不同操作系统下的各种主流浏览器。

  Sahi工具比较小巧,简单一些。作为一个代理服务器,必须把浏览器的代理设置为sahi服务器。然后sahi注入JavaScript来访问web页面中的元素,sahi支持HTTP与HTTPS并且独立于web站点或web应用程序。Sahi与Selenium一样同样支持脚本录制功能,然后进行回放,支持web页面的near、under、in等元素查询方式。

  二、APP自动化

  手机APP开发,要适应不同的设备,比如一个Android App要适应不同的版本,不仅要支持最新的版本,旧的版本也需要支持。APP自动化测试相比web自动化测试相对复杂一些。

  常见的APP自动化测试框架有:Monkey Runner、Appium、UI Automator等。

  Appium自动化框架可用于ios、Android自动化测试。它支持多种语言,如Java、C#、Ruby等,可以调用selenium的API,所以一般可以利用selenium来测试在手机上面的网页应用。

  Monkey Runner是Android SDK提供的测试工具。严格来讲Monkey Runner其实是一个API工具包,比Monkey强大,利用它可以编写脚本来定义数据、事件。不足的是脚本用python来写。

  UI Automator也是Android提供的自动化测试框架,基本上支持所有的Android事件操作,它基本不需要测试人员了解代码实现细节(可以用UI Automator Viewer抓取APP页面上的控件属性而不看源码)。它是基于Java语言的,因此它的测试代码结构比较简单、编写也比较容易。可以一次编译,所有设备与模拟器都能进行运行测试,能跨APP。缺点是支支持SDK16(Android4.1)及以上,不支持HybirdAPP、WebAPP。

  三、接口自动化

  接口测试实施在多系统的平台架构下,有着极为高效的成本收益比(当然,单元测试收益更高,但实施单元测试的成本投入更大,技术要求更高)。

  接口测试天生为高复杂的平台带来高效的缺陷检测和质量监督能力,平台复杂,系统越庞大,接口测试的效果越明显。

  四、自动化测试框架

  四种常用的自动化测试框架:

  1、数据驱动测试框架:将测试数据分离出来,可以对测试数据进行单独维护,一但发生变更,可能带来较大的工作量。

  2、测试脚本模块化框架:测试脚本中包含了各功能点中涉及到的控件识别与业务逻辑操作,其中包含了外部测试数据的调用,现今大多数属于此类。

  3、测试库构架框架:将针对测试系统本身控件识别与控件支持的操作封装在测试库中。

  4、关键字驱动或表驱动测试框架:框架来识别关键字或控件对象以及action。