(12)发明专利申请
(10)申请公布号 CN 110851356 A(43)申请公布日 2020.02.28
(21)申请号 201911044666.6(22)申请日 2019.10.30
(71)申请人 河海大学
地址 210024 江苏省南京市鼓楼区西康路1
号(72)发明人 石爱业 彭克
(74)专利代理机构 南京纵横知识产权代理有限
公司 32224
代理人 董建林(51)Int.Cl.
G06F 11/36(2006.01)G06F 8/20(2018.01)
权利要求书2页 说明书6页 附图4页
CN 110851356 A(54)发明名称
一种基于Selenium的Web应用自动化测试框架及其构建方法、系统(57)摘要
本发明公开了一种构建基于Selenium的Web应用自动化测试框架的方法,步骤a,实现基本功
测试报道、失败用例能层的构建:包括执行日志、
截图和失败用例重跑功能;步骤b,实现页面元素层的构建,包括元素名称、元素定位方式和元素定位表达式;步骤c,实现页面对象层的构建,用于创建各个页面类;步骤d,实现测试用例层的构建,用于开发测试用例脚本;步骤e,搭建分布式环境来执行测试用例;步骤f,将框架与持续集成工具Jenkins集成,实现框架的触发性构建及实施反馈。本发明还公开了一种基于Selenium的Web应用自动化测试框架及其构建系统。本发明的一种基于Selenium的Web应用自动化测试框架及其构建方法、系统,可以契合被测系统,能够实现高度自动化以及提高测试效率和质量。
CN 110851356 A
权 利 要 求 书
1/2页
1.一种构建基于Selenium的Web应用自动化测试框架的方法,其特征在于:包括以下步骤:
步骤a,实现基本功能层的构建:包括执行日志、测试报道、失败用例截图和失败用例重跑功能;
步骤b,实现页面元素层的构建,包括元素名称、元素定位方式和元素定位表达式;步骤c,实现页面对象层的构建,用于创建各个页面类;步骤d,实现测试用例层的构建,用于开发测试用例脚本;步骤e,搭建分布式环境来执行测试用例;步骤f,将框架与持续集成工具Jenkins集成,实现框架的触发性构建及实施反馈。2.根据权利要求1所述的一种构建基于Selenium的Web应用自动化测试框架的方法,其特征在于:步骤a中,包括以下具体步骤:
步骤a1:基于log4j2组件,实现框架运行过程中日志的记录。步骤a2:实现失败用例截图功能:创建一个截图类,然后在监听类的失败用例方法中调用截图方法,并且附到测试报告中去。
步骤a3:实现失败用例重跑功能:实现监听器接口,在其中设置最大重跑次数,如果在最大重跑次数之前运行成功,则要删除之前的执行失败信息,保留最后一次执行成功的信息。
步骤a4:测试报告美化:基于ReportNG专业的报告组件,添加运行结果的饼状图,以及失败用例的日志信息及截图的功能。
3.根据权利要求1所述的一种构建基于Selenium的Web应用自动化测试框架的方法,其特征在于:步骤b具体步骤为:将涉及到的待测试页面的元素定位方式、元素定位表达式信息存放在存放在xml文件中,这个文件与页面类同名,通过元素的id、class、xpath属性定位。
4.根据权利要求1所述的一种构建基于Selenium的Web应用自动化测试框架的方法,其特征在于:步骤c具体步骤为:在基类的构造方法中定义通过类的全限定名获取具体类的页面元素信息的集合,通过获得该页面中的所有元素定位信息,然后再进行该页面操作元素方法的开发。
5.根据权利要求1所述的一种构建基于Selenium的Web应用自动化测试框架的方法,其特征在于:步骤d具体步骤为:首先要初始化测试环境,选择驱动浏览器的类型,然后根据测试需求创建相关的页面类对象,通过调用相关页面类中的操作方法实现测试逻辑,对于需要有数据输入的操作方法要从外部文件中获取测试数据,最后通过断言来判断测试实际输出结果与预期输出结果是否一致,以此来确定测试用例是否被成功执行。
6.根据权利要求1所述的一种构建基于Selenium的Web应用自动化测试框架的方法,其特征在于:步骤e具体步骤为:在各机器上安装好相关Jar包后,通过命令首先启动Hub节点,然后将各个Node节点的信息注册到Hub节点上,包括平台类型,浏览器类型及版本等,然后Hub节点会将部署过来的测试用例按照平台及浏览器驱动的需求将用例分配到各个节点执行,最后将各节点的执行结果汇总。
7.一种构建基于Selenium的Web应用自动化测试框架的系统,其特征在于:包括基本功能模块、页面管理模块、用例脚本管理模块和用例执行模块,所述基本功能模块用于生成执
2
CN 110851356 A
权 利 要 求 书
2/2页
行日志、生成测试报告、失败用例截图和失败用例重跑,所述页面管理模块用于页面元素定位、封装操作方法和创建页面类,所述用例脚本管理模块用于封装常用逻辑、开发测试脚本和获取测试数据,所述用例执行模块用于配置执行文件、持续集成管理和分布式执行用例。
8.一种基于Selenium的Web应用自动化测试框架,其特征在于:包括:基本功能层,汇集执行日志、测试报道、失败用例截图和失败用例重跑功能;页面对象层,用于汇集页面类对象;页面元素层,包括元素名称、定位方式和定位表达式;测试用例层,用于测试用例脚本的开发;测试数据,包括CSV文件和Excel文件。
3
CN 110851356 A
说 明 书
1/6页
一种基于Selenium的Web应用自动化测试框架及其构建方法、
系统
技术领域
[0001]本发明具体涉及一种基于Selenium的Web应用自动化测试框架及其构建方法、系统,属于软件测试技术领域。背景技术
[0002]Web应用因其操作灵活简单、扩展维护方便等特点日益成为各企业信息系统开发和实施的主要选择,这些Web应用系统的正常运行对企业的生产运转发挥着不可或缺的作用,其质量与可靠性越来越受到人们的重视。软件测试是保障软件质量最有效的手段,传统的手工测试花费时间长、工作效率低,已经无法满足测试需求,这种情况下,自动化测试就成了必然选择。自动化测试避免了大量的重复性劳动及人为失误,保证了测试结果的可靠性。自动化测试的种种优势对于企业节约时间及人力成本,缩短产品的发布周期等方面有着很大的吸引力。
[0003]自动化测试就是让机器执行事先编写好的脚本命令,替代手工测试中的人为操作,在自动化测试过程中无需人为干涉可以自动进行功能验证。自动化测试框架的应用则是为了更好的支持自动化测试,框架往往包含一些先进的设计模式、开发思想、以及最佳实践策略等。现阶段,应用较为广泛的自动化测试框架有:将数据数组或者测试数据文件作为测试过程输入的数据驱动的自动化测试框架;将被操作的元素对象、操作方法和操作的数据值作为测试过程输入的关键字驱动的自动化测试框架;将关键字驱动的测试框架中加入了数据驱动功能的混合自动化测试框架。这些框架技术的不足是不能切实解决实际项目中的测试问题。虽然市面上有一些自动化测试工具,例如QTP、RF等,但是都无法完全解决合同管理测试的问题,例如数据的处理,流程的审批,具体业务逻辑的处理等等。发明内容
[0004]本发明要解决的技术问题是,克服现有技术的缺陷,提供一种基于Selenium的Web应用自动化测试框架及其构建方法、系统,针对合同管理系统的特点,根据系统的业务逻辑提供一整套的测试方案,可以契合被测系统,能够实现高度自动化以及提高测试效率和质量。
[0005]为解决上述技术问题,本发明采用的技术方案为:
[0006]一种构建基于Selenium的Web应用自动化测试框架的方法,包括以下步骤:[0007]步骤a,实现基本功能层的构建:包括执行日志、测试报道、失败用例截图和失败用例重跑功能;[0008]步骤b,实现页面元素层的构建,包括元素名称、元素定位方式和元素定位表达式;[0009]步骤c,实现页面对象层的构建,用于创建各个页面类;[0010]步骤d,实现测试用例层的构建,用于开发测试用例脚本;[0011]步骤e,搭建分布式环境来执行测试用例;
4
CN 110851356 A[0012]
说 明 书
2/6页
步骤f,将框架与持续集成工具Jenkins集成,实现框架的触发性构建及实施反馈。
[0013]步骤a中,包括以下具体步骤:[0014]步骤a1:基于log4j2组件,实现框架运行过程中日志的记录。[0015]步骤a2:实现失败用例截图功能:创建一个截图类,然后在监听类的失败用例方法中调用截图方法,并且附到测试报告中去。[0016]步骤a3:实现失败用例重跑功能:实现监听器接口,在其中设置最大重跑次数,如果在最大重跑次数之前运行成功,则要删除之前的执行失败信息,保留最后一次执行成功的信息。
[0017]步骤a4:测试报告美化:基于ReportNG专业的报告组件,添加运行结果的饼状图,以及失败用例的日志信息及截图的功能。[0018]步骤b具体步骤为:将涉及到的待测试页面的元素定位方式、元素定位表达式信息存放在存放在xml文件中,这个文件与页面类同名,通过元素的id、class、xpath属性定位。[0019]步骤c具体步骤为:在基类的构造方法中定义通过类的全限定名获取具体类的页面元素信息的集合,通过获得该页面中的所有元素定位信息,然后再进行该页面操作元素方法的开发。
[0020]步骤d具体步骤为:首先要初始化测试环境,选择驱动浏览器的类型,然后根据测试需求创建相关的页面类对象,通过调用相关页面类中的操作方法实现测试逻辑,对于需要有数据输入的操作方法要从外部文件中获取测试数据,最后通过断言来判断测试实际输出结果与预期输出结果是否一致,以此来确定测试用例是否被成功执行。[0021]步骤e具体步骤为:在各机器上安装好相关Jar包后,通过命令首先启动Hub节点,然后将各个Node节点的信息注册到Hub节点上,包括平台类型,浏览器类型及版本等,然后Hub节点会将部署过来的测试用例按照平台及浏览器驱动的需求将用例分配到各个节点执行,最后将各节点的执行结果汇总。
[0022]一种构建基于Selenium的Web应用自动化测试框架的系统,包括基本功能模块、页面管理模块、用例脚本管理模块和用例执行模块,所述基本功能模块用于生成执行日志、生成测试报告、失败用例截图和失败用例重跑,所述页面管理模块用于页面元素定位、封装操作方法和创建页面类,所述用例脚本管理模块用于封装常用逻辑、开发测试脚本和获取测试数据,所述用例执行模块用于配置执行文件、持续集成管理和分布式执行用例。[0023]一种基于Selenium的Web应用自动化测试框架,包括:基本功能层,汇集执行日志、测试报道、失败用例截图和失败用例重跑功能;页面对象层,用于汇集页面类对象;页面元素层,包括元素名称、定位方式和定位表达式;测试用例层,用于测试用例脚本的开发;测试数据,包括CSV文件和Excel文件。[0024]本发明的有益效果:本发明提供的一种基于Selenium的Web应用自动化测试框架及其构建方法、系统,框架的开发采用页面对象模型及数据驱动的分层思想,提高了框架的可维护性及脚本的复用性;框架实现了分布式环境部署功能,测试用例可以在多台机器上并发执行,从而缩减了测试用例的执行时间;框架与持续集成工具Jenkins集成,实现了框架的触发性构建以及测试结果的实时反馈。
5
CN 110851356 A
说 明 书
3/6页
附图说明
[0025]图1是本发明中自动化测试框架功能模块图;[0026]图2是本发明中自动化测试框架分层结构设计图;[0027]图3是本发明中自动化测试框架文件体系设计图;[0028]图4是本发明中自动化测试框架物理结构设计框图;[0029]图5是本发明中自动化测试框架开发流程图;
[0030]图6是本发明中自动化测试框架构建完成后自动发送邮件的页面截图;[0031]图7是本发明自动化测试框架构建完成后自动发送邮件的页面截图。
具体实施方式
[0032]下面结合附图对本发明作进一步描述,以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。[0033]图1是本发明自动化测试框架功能模块图。其中包括基本功能模块、页面管理模块、用例脚本管理模块以及用例执行模块四个模块。具体地,基本功能模块包括以下部分:[0034]生成执行日志:日志信息对于用例执行过程中问题排查具有重要的作用,开发测试用例脚本时,重要步骤尤其是断言的结果都应该生成日志被记录下来,本框架日志模块基于log4j2组件根据实际需要进行了定制开发。[0035]生成测试报告:测试报告是对测试结果的直观展现,相比于日志,其对于不熟悉开发技术的测试人员更加友好。本框架测试报告模块是基于ReportNG组件的定制开发,测试用例执行完毕之后,会在指定目录下生成测试报告文件,测试报告包括测试用例的通过率,每个用例执行用时长短,失败用例截图等信息。[0036]失败用例截图:在程序执行过程中,如果断言失败,也即操作结果不符合预期,就对当前页面进行截图保存,并展示在测试报告中,结合日志信息及页面截图可以帮助测试人员更方便的定位问题,该模块是基于TestNG框架的TestListenerAdapter等监听接口实现。
[0037]失败用例重跑:由于测试机网络、内存等外部因素的影响而非脚本错误导致的用例执行失败会影响测试结果的可靠性。自动化测试框架会对失败用例进行指定次数的重新运行,以减少外部因素的干扰,该模块是基于TestNG框架的IRetryAnalyzer等监听接口实现。
[0038]具体地,页面管理模块包括以下部分:[0039]页面元素定位:Web页面上的所有内容都被称为页面元素,做自动化测试首先应该定位到测试页面的元素,然后通过对元素执行各种操作实现相应的测试逻辑。对于页面元素的定位,Selenium提供了包括id、class、name、XPath等定位方式,其中XPath方式是框架开发过程中使用最频繁的元素定位方式,基本可以定位页面中的所有元素。不过无论哪种定位方式,能够成功定位的思想就是确保选用的定位方式及定位表达式要能够唯一代表该元素或者是页面中第一个符合条件的元素。页面元素的信息被独立存放在与页面类同名的XML文件中,如果页面发生了调整导致页面元素信息产生变动,只需要在XML文件中修改变动元素的定位信息,而不需要修改页面类中的源码,便于对页面类的维护。[0040]封装操作方法:Selenium本身提供了一些基本的操作元素的方法来完成简单的测
6
CN 110851356 A
说 明 书
4/6页
试逻辑,例如click()方法用来点击页面元素或者选中单选按钮、下拉框等。根据实际测试业务的需要可以将这些常用的方法二次封装在顶层的页面基类中,方便开发具体页面类直接使用。[0041]创建页面类:将待测系统中的主要待测页面都封装成独立的类,每个页面的页面元素定位和页面元素的操作均在各自的页面类中管控,在开发测试用例脚本时可以根据测试需求创建相应的页面类的对象,通过调用页面类中的逻辑操作实现具体的测试场景。[0042]具体地,用例脚本管理模块包括以下部分:[0043]封装常用逻辑:对Web系统进行测试时有一些通用常用的逻辑,例如系统登录登出、文件上传下载、页面截图等功能,将这些功能独立的封装起来,在开发自动化测试脚本时,就可以直接调用以简化脚本的开发。[0044]开发测试脚本:测试用例脚本的开发借助于单元测试框架TestNG,利用其提供的丰富的注解支持可以大大提高开发效率。例如@BeforeClass注解会在所有测试用例执行前执行,可以用于实现加载驱动、初始化浏览器等执行测试前的准备工作。@AfterClass注解是在所有用例执行之后执行,可以用于实现清理测试环境、关闭浏览器等测试用例执行完毕后的操作。再结合页面对象模型的开发模式,通过对封装好的页面类及常用逻辑操作及断言的调用,可以简便的完成测试用例脚本的开发。[0045]获取测试数据:Web系统有很多功能是通过处理表单请求来实现的,对于同一张表单,需要输入不同的测试数据进行测试,如果直接将每次的测试数据放在用例脚本里,就会造成硬编码。所以自动化测试框架的开发采取数据驱动的设计思想:就是将测试用例脚本所需要的数据存放在外部文件中,在脚本开发时,通过@DataProvider注解将数据传递到相应的测试方法中,从而实现将测试数据与测试业务逻辑相分离,这样可以在不改变测试用例脚本源码的情况下,通过修改数据文件中的测试数据来满足不同的测试需求,提高了测试用例的可用性。[0046]具体地,用例执行模块包括以下部分:[0047]配置执行文件:使用TestNG框架开发测用例脚本可以生成一个管控测试用例执行的配置文件testng.xml。在该配置文件中,可以根据业务流程需要通过相关的配置管理测试用例的执行顺序,以及选择性批量执行某些测试用例。自动化测试框架使用Maven管理与构建项目,所以testng.xml文件配置完成后要将其添加到核心配置文件pom.xml中。[0048]持续集成管理:自动化测试框架可以手动实现测试用例的执行,但是为了实现完全意义上的自动化测试,框架开发完成后将其交予持续集成工具Jenkins管理。通过在Jenkins中进行相应的配置,可以实现测试框架在合同管理系统构建成功后触发性构建或者定时构建,测试用例执行完毕之后Jenkins会自动将自动化测试框架的构建情况及测试报告通过邮件发送给测试人员。[0049]分布式执行用例:当测试用例比较多时,仅仅在一台机器上执行会花费较长的时间,Selenium Grid组件可以实现测试用例在不同机器上分布式执行。分布式执行测试用例不仅可以缩减用例执行时间,而且可以检验框架对不同的操作系统及不同浏览器的兼容性。
[0050]如图2所示,本发明的框架的开发基于页面对象模型的分层思想,就是将待测试系统涉及到的每个Web页面封装成一个独立的类,类中定义页面元素以及操作元素的方法,那
7
CN 110851356 A
说 明 书
5/6页
么在开发测试脚本时只需要根据测试需求创建相关页面类的对象,然后调用其中的操作方法就可以实现测试需求。具体开发时就是将页面元素、页面类对象、测试用例各分一层,这样即使系统中Web页面发生变动也只需要在页面元素层作相应的修改,而不用变动测试用例脚本及页面类代码,提高了框架的可维护性。[0051]如图3所示,本发明的数据驱动的设计思想实现了测试数据与测试用例脚本的分离,这些测试数据独立的存放于外部文件中,降低了框架的耦合性。另外,自动化测试框架中还包含一些其它的配置文件,这些配置文件的使用能够让自动化测试框架避免硬编码,便于维护。页面元素的定位信息存放在独立的XML文件中。pom.xml文件是Maven项目的核心配置文件,其中配置了框架开发所需的各种依赖包、控制台的输出编码格式、测试用例执行的配置文件等。testng.xml文件中配置了测试用例的执行权限:执行哪些用例、执行的先后顺序、执行用例类中的哪些方法等,担任着测试用例执行的总调度;同时,testng.xml中配置了各种监听器,例如失败用例重跑,生成自定义格式的测试报告等等。config.properties文件中包含一些常用的基本常量,例如待测系统的地址、驱动浏览器的种类、元素操作显示等待时间等。[0052]如图4所示,本发明的自动化测试框架通过Git工具完成代码的版本管理。框架开发人员将调试好的框架代码提交到Git服务器,也可以从Git服务器上获取框架各个版本的代码。通过持续集成工具Jenkins完成框架的自动化构建、部署以及测试用例的执行、测试结果的管理等工作。在用例执行阶段,利用Selenium Grid实现测试用例在两台或多台机器上分布式执行,首先设置一个Hub节点用来接收测试用例脚本并且管理各个Node节点的注册信息和状态,然后将用例脚本分配给符合条件的Node节点去执行,执行完毕后,各节点会将各自的执行结果都提交到Hub节点,经Hub节点汇总整合后会将构建的结果以及完整的测试报告通过邮件的方式发送给测试人员。[0053]图5自动化测试框架开发流程图。(1)根据测试需求制定测试计划,搭建开发环境,然后根据测试计划准备相应页面类元素的定位信息以及所需的测试数据,然后进行页面类以及测试用例脚本的开发。测试用例脚本在本地调试完毕之后将框架项目提交到Git服务器上(2)将自动化测试框架交予持续集成工具Jenkins管理,在Jenkins中进行相关的配置来实现自动化测试框架的自动构建、部署及用例执行。(3)测试用例执行结束之后,根据测试报告及日志来排查问题,如果是因为测试用例脚本的原因,则继续调试脚本,否则将问题反馈给系统开发人员。
[0054]框架通过分层开发思想,对自动化测试框架的基本功能层、页面元素层、页面对象层、测试用例层进行逐层实现。自动化测试框架开发完成之后,使用持续集成工具Jenkins对其进行管理,并且部署分布式执行环境实现测试用例的分布式并发执行。[0055]步骤1:基本功能层的实现[0056]步骤1.1:基于log4j2组件,实现框架运行过程中日志的记录。[0057]步骤1.2:实现失败用例截图功能:创建一个截图类,然后在监听类的失败用例方法中调用截图方法,并且附到测试报告中去。[0058]步骤1.3:实现失败用例重跑功能:实现监听器接口,在其中设置最大重跑次数,如果在最大重跑次数之前运行成功,则要删除之前的执行失败信息,保留最后一次执行成功的信息。
8
CN 110851356 A[0059]
说 明 书
6/6页
步骤1.5:测试报告美化:基于ReportNG专业的报告组件,添加了运行结果的饼状
图,以及失败用例的日志信息及截图的功能。[0060]步骤2:页面元素层的实现:将涉及到的待测试页面的元素定位方式、元素定位表达式等信息存放在存放在xml文件中,这个文件与页面类同名,可以通过元素的id、class、xpath等属性定位。[0061]步骤3:页面对象层的实现:主要是创建各个页面类,因为页面中会有一些相同的操作,例如清除文本框,输入文本等所以抽象出一个顶级的基类BasePage类,其它所有页面类均继承自该类,在基类的构造方法中定义了通过类的全限定名获取具体类的页面元素信息的集合,所以每当具体页面刚被创建,就可以获得该页面中的所有元素定位信息,然后再进行该页面操作元素方法的开发。[0062]步骤4:测试用例层的实现:主要是测试用例脚本的开发,首先要初始化测试环境,选择驱动浏览器的类型,然后根据测试需求创建相关的页面类对象,通过调用相关页面类中的操作方法实现测试逻辑,对于需要有数据输入的操作方法要从外部文件中获取测试数据,最后通过断言来判断测试实际输出结果与预期输出结果是否一致,以此来确定测试用例是否被成功执行。[0063]步骤5:搭建分布式环境来执行测试用例,在各机器上安装好相关Jar包后,通过命令首先启动Hub节点,然后将各个Node节点的信息注册到Hub节点上,包括平台类型,浏览器类型及版本等,然后Hub节点会将部署过来的测试用例按照平台及浏览器驱动的需求将用例分配到各个节点执行,最后将各节点的执行结果汇总。[0064]步骤6:将框架与持续集成工具Jenkins集成,实现框架的触发性构建及实施反馈,测试结果会以邮件发送给相关人员。[0065]如图6所示,本发明最终应用到江苏院合同管理系统的回归测试中,图中可以发现测试用例全部通过,测试结果以邮件的方式自动发送给相关的测试人员,如图7所示,本发明自动化测试框架构建完成后自动发送邮件。[0066]以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
9
CN 110851356 A
说 明 书 附 图
1/4页
图1
图2
10
CN 110851356 A
说 明 书 附 图
2/4页
图3
图4
11
CN 110851356 A
说 明 书 附 图
3/4页
图5
图6
12
CN 110851356 A
说 明 书 附 图
图7
13
4/4页
因篇幅问题不能全部显示,请点此查看更多更全内容