基于RobotFramework自动化测试数据化改造的平台的制作方法

文档序号:20186471发布日期:2020-03-27 19:08阅读:503来源:国知局
基于RobotFramework自动化测试数据化改造的平台的制作方法

本专利涉及自动化测试技术领域,主要是针对自动化测试框架robotframework进行数据化改造。



背景技术:

软件测试是用来保证软件产品的完整性、正确性、稳定性和安全性,它是一个不断迭代的验证过程。在软件爆发的时代,软件的开发周期越来越短,需求多而变化快,软件的迭代周期短,这对软件短时间内高质量的发布是一个艰巨的挑战,手工测试已经不能满足时间性的要求,因此对自动化测试提出了需求。在软件的测试过程中,对于功能完备、成熟的软件,其每一轮迭代大部分功能与上一轮相似或者完全相同,测试过程中执行的测试脚本和步骤具有一致性和可重复性。这样的测试很适合做自动化测试,其不仅能够提高提测效率和保障软件质量,而且能够解放一部分劳动力,提高公司资源的利用率。

软件的自动化测试经历了以下三个发展阶段:1、脚本录制/回放阶段:该阶段的测试过程就是通过自动化测试工具录制人工操作被测产品的过程,并记录整个过程的数据,从而形成自动化测试脚本,通过回放录制的脚本来重复操作之前的操作,以达到自动化测试的效果。该方法的优点是脚本生成简单,无需手工编写,每个用例对应一个脚本,将脚本按照用例层次管理起来即可。但是界面操作和维护成本太高,页面元素的控件修改之后,维护起来成本非常高。2、数据驱动阶段:该阶段的测试方法就是从数据文件中读取用户输入的数据,然后通过对变量进行参数化,最后将测试数据传输给测试脚本。该方法的优点:测试数据与脚本相互分离,从而可重用性一定程度上提高,使得一个脚本能组成多个测试用例,缺点是仍然是没有测试解决需求变更带来的维护成本,脚本编写技术要求较高。3、关键字驱动阶段:该阶段的测试方法是按照关键字进行分解,从而形成一系列的关键字用于测试。包含被操作对象、操作、参数和返回值四大类。他的优点是数据、脚本实现及对象、关键字三者全部分离,因此受被测对象需求变更影响变更较小,当被测对象变更时只需要更新对应关键字即可。

随着数据驱动,关键字驱动等概念的提出,众多的自动化测试开源框架和工具给自动化测试带来前所未有的发展,其中开源的robotframework支持关键字驱动模式,易于扩展,支持多种测试库,以此为基础的自动化测试可以较好的满足多数公司对于自动化测试系统的要求,一跃成为业界最受欢迎的自动化测试框架。但对于大型企业来说随着支持的接口和业务的增加,自动化框架越来越庞大,配置越来越复杂,robotframework的缺点也开始暴露。1、文件化管理,脚本数据共享不便、统计复杂。2、ride编辑器界面操作过于复杂,工作效率低,且存在性能缺陷。3、调度执行需配合第三方工具,如jenkins、seleniumgrid等,环境配置复杂,效率较低。

本方法就是基于robotframework框架进行改造优化。将robotframework的测试用例使用数据库存储,通过平台的集成即可实现自动化测试的服务化,即将单机上运行的自动化测试工具功能通过网络化提供服务。实现自动化测试服务化管理,可以加速自动化测试的普及,降低测试成本;服务化的测试模式还能发挥规模优势,合理配置资源,增强可维护性;服务化可以为管理提供更准确的统计数据,与测试管理平台协同工作,提高管理效率



技术实现要素:

研究自动化测试的国内外发展现状,对比各个框架的优缺点,针对现有框架的不足,利用当下最流行的前后端javaweb开发技术开发一个通用的、便捷的自动化测试平台。

基于robotframework自动化测试数据化改造的平台,包含系统管理模块、自动化测试管理模块和资源管理模块三个模块:

系统管理模块包含用户管理、角色管理、权限管理和测试项目管理4部分内容。

用户管理:包含用户名密码注册等信息;

角色管理:角色管理区分管理角色和项目角色,其中管理角色的负责系统管理、公共资源管理,而项目角色必须跟测试任务相关,负责测试流程中的工作节点。

权限管理:权限点可以根据需求定义,其颗粒度也可根据需要定制,定义好权限点后,权限点关联相关的资源,再将权限点分配给角色,角色下对应的用户在申请资源的同时,根据权限关系在服务端过滤。

项目管理:测试项目外部系统同步或手工创建两种模式,为所有测试流程根源数据。

自动化测试管理模块包含测试任务、测试用例、测试执行和缺陷管理4部分内容。

测试任务:当前测试任务下测试用例,可根据测试任务-产品的映射关系,从产品用例库中选择。测试任务完成后,系统会自动检测检测,若在此任务中修改且执行成功的用例,会自动更新产品库中的新版本。

测试用例:测试人员使用该系统编写测试用例,测试用例支持手工测试与自动化两种展现形式,可将两种类型作为统一对象进行管理。

测试执行:测试执行中的测试用例为并发执行,并无执行顺序、执行数据、执行机控制。行过程中,客户端会实时将rf结果文件上传至数据库,平台提供链接直接展示rf结果文本。并且支持生成测试报告。

测试资源管理模块包含执行机管理,关键字查询、产品线管理和模板配置4部分内容。

执行机管理:使用jenkins执行机,此功能支持对执行机的修改配置。

关键字查询:可以对自动化用例的关键字进行查询,包含系统公共资源关键字和私有资源关键字。

模板配置:测试执行jar包模板配置。

定义自动化测试关键字驱动的格式,编写关键字映射函数,解析关键字实现自动化测试。对robotframework框架进行数据化改造,使用例的存储由文本存储变为数据库存储,提高用例的读取速度,实现用例共享。

附图说明

图1:关键字驱动思想的应用模块图。

图2:系统构架图。

图3:系统结构图。

具体实施方式

以下结合附图和实施例对本发明进行详细说明。

系统前端设计:前端采用纯web实现用户界面功能,使用kendoui+jquery框架构建,系统使用kendoui+jquery的前端框架组合开发用户界面,确保前端开发效率的同时,提供优秀的用户体验。前端系统使用jquery的ajax技术与服务层restfulapi进行通讯,完成数据的读写操作。

业务处理层:使用springboot框架,repository、service、restcontroller三层结构,最终通过restcontroller开放restfulapi,前端通过ajax方式访问restful服务。

数据库选择与设计:数据库使用mysql数据库和redis数据库。mysql数据库用来存储所有的表信息,redis作为内存读取的数据库,用来存储用户信息作为缓存数据库,提高系统性能;并且系统集成mybatis框架,使数据的读取效率更高。

测试任务分发服务:利用遗传算法实现任务的分发调度和执行机的选择。

rf改造方案

robotframework工作原理:rf是一个通用的测试框架,在自动化测试系统中常作为测试执行工具,与被测对象没有业务逻辑上的联系,rf按照测试用例中的测试步骤执行关键字。rf的模块有内置关键字模块,文件解析模块,关键字执行木块和监控记录模块。

robotframework内置built-in关键字库,包含常用的基础关键字,用于循环控制、检测变量值和逻辑判断等功能。用例编辑模块用户可以通过ride客户端对用例进行页面化操作,也可以通过idea,txt文本等直接编写用例。文本解析模块负责对文本进项解析,完成测试数据到测试用例中关键字的参数的映射,rf支持tct、html和tsv格式的测试文件,每个文件由4部分组成,分别是setting、variable、testcase和keywords。其中,setting用于变量文件、资源文件的导入;variable用于定义变量,testcase用于存储测试用例表格,keyword用于用户创建高级关键字。

用例执行模块中rf通过对用户命令进行解析,用户也可以使用参数选项有选择的执行测试用例。rf提供了三种命令接口:pybot,jybot和customscript供测试人员调用。执行模块根据参数的不同选择调度测试用例,按照测试用例中的测试步骤,调用关键字对应的底层代码,执行对被测对象的操作。

监控记录模块在测试执行时负责检测各个关键字的执行情况并记录报告output.xml中,主要保存关键字的执行状态,执行时间,关键字参数,返回结果和失败时的截图和现场信息;用例执行完毕之后报告处理模块会根据监控记录的文件生成测试报告report.html和log.htnl。

rf虽然支持关键字驱动,有扩展,但是对于大型项目,rf的缺点也开始逐渐暴露:1、工具的下载,安装,配置,调试浪费了大量的人力物力,也打消了潜在使用者的热情。2、文件的共享需通过svn、git等工具实现,框架的更新和用例的增加对于大多数不熟悉此类工具机制的测试人员来说很难适应。3、很难实现关键字、测试用例的统计、搜索、复用等,无法满足更高要求的统筹与管理。4、自动执行、持续验证的部署和配置无法实现自动化,成为持续集成、持续交付的瓶颈。

robotframework改造方案:前端采用html来实现,用户可以直接在浏览器页面上对用例进行操作,并且不用在本地安装配置,直接打开浏览器,通过url的方式去访问即可。后台用例存储部分修改为数据库存储,用数据库存储用例的基本对象testsuit、testcase、resource、keywords。testsuit中存储用例集信息,包含用例的用例的编号,名称,用例集的外部依赖信息;testcase用来存储脚本的基本信息,用例脚本使用json方式存储,使得用例的步骤为不定长的可修改的;resource存储用例外部依赖的资源,keyword存储系统中所有的关键字信息,包含系统关键字,用户关键字,类库关键字三类,并对每一类关键字进行标识,使得在前端页面显示为不同的演的,提高交互体验。当用例执行之后将用例的id传递给rf执行机,执行机通过pymysql去数据库中读取脚本信息,得到脚本信息反序列化为脚本对象,然后通过关键字执行器去服务器上找到对应的关键字去执行用例。

与现有技术相比较,本发明实现脚本数据化:将robotframework的文本化存储修改使用数据库存储,提高性能。调度分发支持:重新设计并实现脚本执行的调度分发功能,并提供对执行资源的管理。结果及数据管理优化:解析存储结构并优化测试报告,优化rf过于复杂的对象关系,并提供便捷的测试数据管理。

改造中基本的存储对象:testcase,testsuit,keywords。改造后的数据通过接收前端输入的用例步骤组装后存入数据库中,改变了使用ride客户端本地文件存储的方式,用例编辑也可以直接在web网页编辑,提高性能。用例执行也直接用数据库中读取解析,且提供jenkins执行机接口,执行完毕后生成测试报告。

在存储中通过读取页面的数据将测试用例步骤拼接为json字符串,存储在数据库中。

在解析的时候从数据库中读取,解析json字符串,重新组装。

选择空闲的jenkins执行机执行任务,并生成测试报告。

数据库设计:testcase对应robot中的测试用例基本信息、testcasescript主要存储测试用例的详细信息,包含测试步骤,参数设置,变量设置等、keywords对应robot关键字,包含用户关键字,系统关键字。

其中testcase主要字段为:tc_sid用例编号,tc_name用例名称,tc_summary,tc_parent_sid用例父节点编号、tc_type用例类型(区分testcase、testsuit)等

testcasescript主要字段为:tcs_tc_sid测试用例的id,tcs_step_script用例步骤,tcs_setting_script设置,tcs_import_script导入资源与类库,tcs_metadata_script元数据,tcs_variable_script变量

keywords表主要字段为:kw_sid关键字id,kw_name关键字名称,kw_arguments关键字参数,kw_source关键字所属类库,kw_type关键字类型(区分类库关键字和用户关键字)

自动化测试流程:

首先在web页面上输入测试用例名称,描述,步骤等;

后台发送请求将测试用例步骤组装为json字符串,存进数据库;

勾选需要执行的用例,点击测试执行,即可发送请求到后台;

根据测试用例的id,从数据库中读取测试用例的信息,对测试用例内容进行解析组装;

将解析好的数据参数发送至jenkins执行机执行,并生成测试报告。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1