一种基于数据分离原则的UI测试框架的制作方法

文档序号:14175254阅读:546来源:国知局
本发明涉及对于webui的自动化测试的流程改进。当前业内对于webui的自动化测试流程为:打开页面,寻找指定的页面元素,然后进行相应的操作,如点击、输入、下拉菜单选择、单选、复选等。本发明具体提出了一种基于数据分离原则的ui测试框架。
背景技术
::当前业内对于webui的自动化测试用例设计普遍为粗放的使用webdriver或其他开源框架,现有的自动化测试框架架构图中测试用例和web操作的功能强耦合在一起,导致自动化测试没有层次处理或层次不清晰,易将测试逻辑代码和寻找页面元素的表达式夹杂在一起,且对于页面的管理没有较好的分类方式,且大多数不支持视频录像。将测试逻辑代码和寻找页面元素的表达式夹杂在一起,会带来以下问题:寻找页面元素的表达式可长可短,有时候为了能成功定位一个较复杂的页面元素,所写的表达式非常长,这会导致这个测试框架的代码非常不易读,给其他需要维护或者使用该框架的程序员带来较大的代码阅读困难;修改测试用例困难,因为代码理解较为困难,使得修改测试用例的效率非常低下。没有较好的分类方式,会导致:由于多个页面的功能写在一个类里或者同一个功能重复在不同的类里,使得已写过测试用例很难复用;加之,测试数据和测试场景的强耦合使用,如果新增测试用例便需要重写整个测试用例,使得新增测试用例的效率较低下。webui测试过程不支持录像,会给后期问题定位带来一定的困难。综上所述,现有方法的缺点及本发明要解决的技术问题:1、ui元素定位数据和测试框架逻辑强耦合在一起,导致修改及复用测试用例复杂;2、框架无分层或分层粗放,代码粘性太大,大部分的功能都夹杂在一起,导致新增测试用例的便捷性、可扩展性和可移植性均较差;3、问题定位不直观,只能通过log和页面截图定位问题,导致bug定位耗时较长。技术实现要素:针对之前粗略的使用webdriver等开源框架做ui自动化测试,本测试框架采用了两个维度的数据分离原则。本方法将测试框架划分为用例层、功能层、工具层、基础层,从而减少了程序员对测试框架的维护成本,方便测试用例扩展,进而提高了测试用例编写效率。在工具层提供了其他框架缺乏的录像功能,为后期问题定位提供了直观参考依据。最后,结合这些技术特色,提出并完成了数据即用例的概念,即每一条数据视为一个测试用例,极大的提高了qa开发测试用例效率。附图说明图1是本发明的测试框架架构图。图2是现有的自动化测试框架架构图。图1中,将测试框架划分为用例层、功能层、工具层、基础层,并且四个层次中又分别包含了各种子模块。图2中,现有的测试框架仅分为用例层和基础层,层次划分不清晰且测试效率低下。用例层从本发明的架构图可以看出,用例层包含测试数据、测试逻辑和数据分离控制这三个模块。测试逻辑模块用于管理测试场景(即测试用例),该模块只关注于测试场景的逻辑实现。测试数据负责数据的存储和管理,数据存储采用csv文件形式,csv文件命名规则和数据存储规则如下:1、csv文件命名必须存放在与测试用例java类名同名的文件夹内,并且csv文件必须与其对应的方法保持一致。比如,如果测试用例java类为test.java,包含一个测试用例方法为get_user_info,则csv文件必须存在于文件夹test内,且csv文件名为get_user_info.csv。csv文件内的每行即为一个测试用例,每行的数据参数可以由数据管理模块指定。比如,起始5个参数为测试用例运行所需的参数,后3位为测试用例运行结果判定的校验数据,诸如此类,各个参数的作用可由数据分离控制模块自行设定。数据分离控制模块通过继承testngdataprovider类和自行编写csv文件处理方法完成测试数据的管理功能,运行时通过java反射得到类的名字和具体执行的方法的名字并与csv文件的名字形成关联,每个方法都有自己的数据,这样将数据和测试逻辑分离,从而使得代码清晰易读,另外对于数据的改变,qa则可以只修改数据文件而无需对逻辑代码进行关注,从而做到了易维护。功能层功能层是用来将web的每个页面封装成一个java类,为框架上层的用例层提供web页面的类支持。功能层包含四个子模块:web页面类、页面元素功能、ui元素定位表达式、数据分离控制模块。web页面类为web页面java类的实现及管理。web页面划分成java类的原则是将每个操作页面封装成一个java类。比如,登陆页面为登陆类,首页页面为首页类,其他各个子页面为其他相应的java类,这样做的优点是无论哪个qa写了页面,其他qa均可以快速复用,无需重新开发。java类的实现需要谨慎考虑,类实现不好对于类的复用将会非常麻烦,之前
背景技术
:中提到过现在常见的测试框架的一个弊端就是类的实现较随意,如类的逻辑、基本元素的功能逻辑、元素定位表达式三者强耦合。这样做会带来后期维护的麻烦,并使得其他使用者对策划框架的理解不易,导致修改测试用例困难。类的复用成本较高,如果涉及到测试框架本身的问题定位则是一个非常痛苦的过程。本测试框架基于以上的痛进行改进,采用web页面的java类负责组织页面元素,只关注于页面的逻辑功能。页面元素功能即页面元素的基本功能类,如button类、textbox类、frame类、table类等分别关注各个基本功能,该模块负责各个元素类的封装,以便于web页面类的使用。ui元素定位表达式是页面元素定位的表达式数据,用xml存储,方便以后的数据更新。数据通过以下规则存储在xml中:1、每条数据为一个节点;2、xml节点命名为定位元素的关键字描述;3、xml节点属性为元素定位的表达式;举例:<entrykey="pre-selectbutton">//div[contains(text(),"待筛选")]</entry>数据分离控制模块用来将存储在xml中的ui元素定位表达式和页面元素功能关联。关联的原理如下:1、xml文件以web页面java类的名字命名,即如果javaweb类文件为hrhomepage.java,则xml文件名为hrhomepage.xml。2、java运行时通过反射原理得到java页面类的名字,进而通过该类名的字符串组合成xml文件的名字,从而找到对应的数据文件。通过数据分离控制模块既解决了类的逻辑、基本元素的功能逻辑、元素定位表达式三者强耦合,又方便快捷的建立了三者间的联系。这种方式的优点是,对于web页面元素经常变换的特性,qa程序员只需要修改xml中元素定位的表达式,而无需修改java类中的代码,实现最小代价的用例更改。工具层框架的工具层包含三个子模块:录像工具、页面处理工具、java工具集合。其本质是为功能层和用例层提供方便可复用的工具,减少代码重复,提高编码效率。其中的录像工具子模块提供了测试过程实时录像工具,其他框架无此项功能。该工具是基于开源模块montescreenrecorder进行的应用封装,加入到本框架中大大的改善了后期问题定位的方便程度,使qa和直观的定位web页面发生的问题。鉴于目前其他框架无此功能,故本框架中采用此工具来改善web页面问题的定位为其独有特色。页面处理工具子模块包含web页面处理常用小工具,如等待页面元素,切换页面的frames和windows等。java工具集合子模块包含java常用的工具,如字符串处理、文件处理、数据库处理、url访问、json处理等。基础层框架的最底层的基础层是测试框架采用的开源技术,maven负责java包的管理和测试用例的运行,testng用来管理测试用例,webdriver用来支持web页面的操作,java编程语言用来实现测试框架的代码编写,常用工具类针对开发过程中一些常用的工具,如文档处理、webdriver页面处理工具、录像工具等,本框架创建了不同的java类,用于提高开发效率。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1