首页 > 其他分享 >自动化测试框架的AW模式

自动化测试框架的AW模式

时间:2024-04-01 16:11:20浏览次数:22  
标签:封装 AW 框架 测试用例 测试 自动化

     近年自动化测试发展迅猛,几乎每个行业,如GUI、APP、云等都开发出自己的自动化开源框架来满足本行业自动化测试的需求,但这些自动化开源架构大多是偏向自动化实现技术的。从自动化工程角度出发,给出通用的自动化测试框架。

 从自动化工程的角度来说,自动化测试框架主要分为4层。

自动化测试架构的底层是“被测系统/测试环境层”,主要包括自动化测试对象的实际物理设备和虚拟化环境。自动化脚本实际就运行在这一层上。 第二层是“自动化测试架构层”,这是自动化测试架构的核心层,主要包含几个子系统。 ·脚本语言运行环境和各种框架的集合:包含自动化测试相关的语言环境、库、开源/自研框架等。 ·业务负载发生器:主要作用是模拟所需的业务负载。 ·测试数据生成器:根据测试要求生成所需的测试数据。 ·被测系统管理系统:包括配置文件的管理、相关数据库管理等。 ·测试环境管理系统:主要是对测试环境的管理,如测试拓扑、资源等。 ·AW(Action Word,动作关键字):在自动化测试中,所有的操作都需要抽象封装为关键字,供上层自动化脚本调用。 ·工具:与自动化测试相关的工具组件(如测试报告生成工具)和其他系统(如需求管理系统、测试用例系统或缺陷系统关联的工具插件等)。 第三层是“自动化脚本和套件层”。建议从“特性——测试类型”这样的角度来组织自动化脚本。还可以根据场景、专项等将满足特定条件的自动化脚本组合起来,形成自动化测试用例集(又称自动化测试套件),方便用户层调度使用。  

 最顶层是“用户层”,包含的子系统如下。

·脚本调度运行系统:如Jenkins Jobs等,提供与脚本调度和运行相关的能力。 ·自动化测试报告:提供自动化测试结果,为测试失败的脚本提供详细信息,以供自动化测试执行人员分析使用。 ·仪表盘:提供当前自动化项目的整体状态、统计等信息。 ·用户管理系统:提供基本的账号管理、权限等能力。 AW是第二代自动化测试框架新的架构中的思想其中之一。(ActionWord)

总结分享一下自动化测试框架设计的思想

  • 自动化测试一般有数据驱动和关键字驱动两种模式,这里将两种思想结合起来,即有关键字驱动也有数据驱动。从架构层面设计,采用开发常用MVC框架思想,分为逻辑控制层(Controller)、持久层(Model)、展示层(View)。如下图所示,以Java语言为例,每层应用到的技术:

  逻辑控制层:Selenium适用于Web自动化,真实模拟用户操作浏览器;HttpClient应用于接口自动化;TestNG是一个目前很流行实用的单元测试框架,有完善的用例管理模块,配合Maven能够很方便管理依赖第三方插件,事半功倍。如果适用python,也是有类似的开源库可供选择,如python+selenium+request+unittest。

  持久层:这一层注意用例测试数据的管理,很多是适用excel表格的形式去管理测试数据,这里也不是说不好,毕竟也是经过市场的考验。例外介绍一个笔者觉得更加优秀的思路,采用MyBatis+MySQL的方式管理数据,可能很多测试人员开发经验不足,不太熟悉MyBatis框架,这里有必要可以学一学。总体的思想就是首先做好测试分析,根据业务设计好测试数据库表结构,然后将测试数据保存在MySQL数据库,实现测试数据和期望结果数据的线上管理,这里只需要在MyBatis框架下面写好对应的SQL语句即可实现数据驱动的自动化测试。笔者对python的第三方库不是很熟悉,想必python应该也有类似的管理MySQL的库。

  展示层:主要是测试报告的展示,采用ExtentReport框架实现测试报告的展示,该框架的测试报告效果目前来看是比较好的。

  • 逻辑业务层的具体实现来看,主要分基础框架类、封装工具类、封装业务类和自动化脚本。如图所示:

 

  基础框架类:这里可以直接使用maven引入即可,管理起来很方便。

  封装工具类:这个类主要包括连接数据库、读取配置文件、读取excel文件等基本工具类,还包括对selenium、HttpClient等框架进行二次封装的类,可能有人会说,这是多余的,为什么要做这个封装,做这个主要是为了解耦业务类与框架。如果某天发现这个框架有点缺陷,业务类不好使,当我们更新框架可能会需要大量修改封装的业务类,维护工作量巨大,如果有这一层,那我们只需要修改二次封装类的具体实现就可以了,对业务类提供的API不变,这样维护工作量小很多。

  封装业务类:这一层采用关键字驱动的自动化测试思想,根据被测对象的特性,设计很多个不同的业务类,比如登录操作,如果很多个登录的入口,就写一个登录基类,不同入口继承基类分别实现子类。如果是接口自动化,这个设计起来就比较简单了,有多少个接口就设计多少个业务类,这些类我们称之为AW(Action Word),是为了自动化测试脚本测试不同场景直接引用方法,组合AW,形成一条条测试用例。这样,我们测试人员即使代码能力一般,也能依葫芦画瓢,组合各个AW写自动化测试用例。如果公司资金人力允许,还可以针对开发一个桌面工具或者网站,实现表格式开发测试用例,这样的话,即使不懂代码的测试人员,也能根据业务逻辑自己在桌面工具或者页面组合AW,形成测试用例,程序自动组装TestNG测试用例。笔者用到过的类似这种框架就有Robot Framework,一个非常优秀的开源python自动化测试框架。

  自动化脚本:直接组合业务类写好的AW。针对这一层需要测试人员懂一点点Java代码就可以胜任这个工作,如果想要小白都能写,需要针对开发一个桌面工具或者网站,实现表格式开发测试用例,前面已经讲到不再赘述。

  • 最后说一说测试执行,目前用的比较多的就是Jenkins,持续集成;将我们写好的测试用例使用git仓库管理,事先在Jenkins创建好任务,发布新版本之后,直接运行任务,自动部署版本包,下载自动化测试用例并执行,生成报告,这样的一条流水线,在当今敏捷开发模式下效率是很高的。

 

参考:https://www.cnblogs.com/andrew209/p/10091841.html

标签:封装,AW,框架,测试用例,测试,自动化
From: https://www.cnblogs.com/klb561/p/18108709

相关文章

  • APP跨平台开发框架Flutter
    Flutter是Google打造的高性能、跨平台的UI框架。它可以给开发者提供简单、高效的方式来构建和部署跨平台、高性能移动应用;给用户提供漂亮、无平台区分的app体验。Flutter是如何做到这一点的呢?它的框架结构是怎么样的呢?接下来,我将写一系列的文章分析Flutter的框架层,结合源码分析Fl......
  • ShadowToy-Smooth Mouse Drawing
    ShadowToy-SmoothMouseDrawing源码分析简概SmoothMouseDrawing源码分析学习。源码Image//Arecreationofhttps://lazybrush.dulnan.net///Controls://-Mousetodraw//-L:togglebetweenquadraticbeziercurvesandlinesegments//-S:toggleSDFv......
  • 基于SSM框架云趣科技客户管理系统论文
    摘要现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本客户管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,......
  • 【Vue3】toRaw和markRow
    toRaw作用用于获取一个响应式对象的原始对象,toRaw返回的对象不再是响应式的,不会触发视图更新。toRaw()可以返回由reactive()、readonly()、shallowReactive()或者shallowReadonly()创建的代理对应的原始对象。注意:这是一个可以用于临时读取而不引起代理访问/跟踪开......
  • 推荐一个GoWeb框架 Fiber
    Fiber是一个基于Fasthttp(Go最快的HTTP引擎)构建的GoWeb框架。它旨在简化零内存分配和性能的情况,以便快速开发,比Gin框架快10倍官网地址https://docs.gofiber.io/packagemainimport("log""github.com/gofiber/fiber/v2")funcmain(){app:=fiber.New()......
  • Udemy AWS SAA - Intro and IAM
    HowtochooseanAWSRegionifyouneedtolaunchanewappCompliance:withdatagovernanceandlegalrequirement,dataneverleavesaregionw/oyourexplicitpermissionProximity:tocustomers,toreducelatencyAvailableservices:someregiondoesn&#......
  • JavaWeb学习笔记——第十一天
    SpringBootWeb案例(二)新增员工实现EmpController:@PostMappingpublicResultadd(@RequestBodyEmpemp){log.info("新增员工:{}",emp);empService.add(emp);returnResult.success();}EmpService:voidadd(Empemp);EmpServiceImpl:@Overri......
  • App自动化测试:高级控件交互技巧
    简介APP的控件元素不仅涵盖了基础用户界面操作,还包括用户与应用程序中更复杂、功能丰富的空间之间的互动。这种交互远不止于简单的按钮或输入框。通过借助Appium的Actions,能够完成对应用程序进行手势识别的交互。这意味着可以通过各种手势,如滑动、缩放、长按等,实现更灵活、直......
  • DMA Engine框架(二)
    参考资料:Linux内核4.14版本——DMAEngine框架分析(3)_dmacontroller驱动_dma_cookie_status-CSDN博客linux内核之dmaengine_dmaengine总线地址-CSDN博客  structdma_device:structdma_device{structkrefref;unsignedintchancnt;un......
  • 【前端】layui前端框架学习笔记
    【前端目录贴】参考视频:LayUI参考笔记:https://blog.csdn.net/qq_61313896/category_12432291.html1.介绍官网:http://layui.apixx.net/index.html国人16年开发的框架,拿来即用,门槛低…2.LayUi的安装及使用Layui是一套开源的WebUI组件库,采用自身轻量级模块......