用于仓单页面的分布式测试方法及装置与流程

文档序号:18822517发布日期:2019-10-09 01:00阅读:157来源:国知局
用于仓单页面的分布式测试方法及装置与流程
本发明涉及计算机
技术领域
,尤其涉及一种用于仓单页面的分布式测试方法及装置。
背景技术
:uirecorder是一款零成本ui自动化录制工具,支持主流浏览器如(chrome、ie、firefox、safari)本机录制脚本结束后执行脚本需要启动selenium-standaloneserver,需要本地安装并selenium-standaloneserver运行,造成本机负载过大,无法实现多浏览器同步执行测试脚本。目前,对于仓储云平台使用第三方yigo框件开发,已有selenium自动化框架需要抓取页面元素数据,页面元素在yigo框件内被重写,这就导致无法通过以上方式获得。对于管库管理项目属于供应链产品,流程审批较长,造成单个testcase代码数量较大。例如,图2展示的只是登录的一个页面的元素,而仓单页面所要执行的并完成动作的元素多大几十个,会衍生出大量的元素定位代码。f2etest是一个面向前端、测试、产品等岗位的多浏览器兼容性测试整体解决方案。官方推荐与uirercoder使用,其中用的组件为(guacamole:开源的html5远程解决方案、windowsserver最大化复用机器资源、hostsshare跨浏览器,跨服务器的hosts共享)。f2etest的优势是:a、10倍以上硬件利用率:传统webdriver1台执行机仅能跑1个job,一台机器可以高并发跑n个job,这个n取决于机器配置,理论上硬件利用率相当于传统节点的10倍以上。b、支持独立hosts绑定:每次申请节点时,可以指定不同的hosts绑定,保证同一台机器上不同节点的job不会相互干扰。c、所有节点支持远程在线调试:利用guacamole的在线远程功能,当自动化出现问题时,能非常便利的对自动化进展进行即时监控和调试。然而,f2etest同样存在比较明显的劣势:一方面,它需要至少3台独立服务器,且安装配置步骤非常多,无运维基础的测试人员难以搭建成功。另一方面,它的日常维护繁琐,且不稳定。技术实现要素:针对现有技术中的问题,本发明实施例提供一种用于仓单页面的分布式测试方法及装置。第一方面,本发明实施例提供了一种用于仓单页面的分布式测试方法,包括:利用uirecorder在本地进行仓单页面的自动化测试脚本录制;在服务器安装docker,并基于docker构建seleniumgrid工具以部署分布式测试环境;将所述测试脚本发送给所述seleniumgrid工具,以使所述seleniumgrid工具中的hub节点和node节点执行所述测试脚本;在本地接收所述seleniumgrid工具发送的脚本执行结果。进一步地,所述利用uirecorder在本地进行仓单页面的自动化测试脚本录制,具体包括:在本地安装uirecorder;将整个待测试的仓单流程切割成多个仓单页面;在浏览器分别输入每个仓单页面的统一资源定位符url,利用uirecorder录制对应仓单页面的测试脚本。进一步地,所述在服务器安装docker,并基于docker构建seleniumgrid工具以部署分布式测试环境,具体包括:在服务器安装docker,并基于docker配置seleniumgrid工具的测试环境容器镜像;执行docker-composeup–d行命令完成部署,并启动所述seleniumgrid工具中的hub节点和node节点。进一步地,所述将所述测试脚本发送给所述seleniumgrid工具,以使所述seleniumgrid工具中的hub节点和node节点执行所述测试脚本,具体包括:将所述测试脚本发送给所述seleniumgrid工具的hub节点,以使所述hub节点将所述测试脚本转发给位于不同浏览器环境下的node节点执行所述测试脚本。第二方面,本发明实施例提供了一种用于仓单页面的分布式测试装置,包括:录制模块,用于利用uirecorder在本地进行仓单页面的自动化测试脚本录制;部署模块,用于在服务器安装docker,并基于docker构建seleniumgrid工具以部署分布式测试环境;执行模块,用于将所述测试脚本发送给所述seleniumgrid工具,以使所述seleniumgrid工具中的hub节点和node节点执行所述测试脚本;接收模块,用于在本地接收所述seleniumgrid工具发送的脚本执行结果。进一步地,所述录制模块,具体用于:在本地安装uirecorder;将整个待测试的仓单流程切割成多个仓单页面;在浏览器分别输入每个仓单页面的统一资源定位符url,利用uirecorder录制对应仓单页面的测试脚本。进一步地,所述部署模块,具体用于:在服务器安装docker,并基于docker配置seleniumgrid工具的测试环境容器镜像;执行docker-composeup–d行命令完成部署,并启动所述seleniumgrid工具中的hub节点和node节点。进一步地,所述执行模块,具体用于:将所述测试脚本发送给所述seleniumgrid工具的hub节点,以使所述hub节点将所述测试脚本转发给位于不同浏览器环境下的node节点执行所述测试脚本。第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述用于仓单页面的分布式测试方法的步骤。第四方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述用于仓单页面的分布式测试方法的步骤。由上面技术方案可知,本发明实施例提供的用于仓单页面的分布式测试方法及装置,利用uirecorder在本地进行仓单页面的自动化测试脚本录制,从而不但可以解决仓单页面元素抓取困难的问题,还可以切割整个仓单流程,使其更专注于某个功能点的自动化验证。进一步地,本发明实施例在服务器安装docker并基于docker构建seleniumgrid工具以部署分布式测试环境,从而使得仓单页面测试过程可以采用分布式部署测试环境的方式进行,从而使得处理速度较快,效率较高,不占用本机资源,且基于现有的仓单交易程序,不需要交易重构,改造简单,只需部署维护一条命令即可。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明一实施例提供的用于仓单页面的分布式测试方法的流程图;图2为现有技术中登录页面的元素定位代码示意图;图3为本发明一实施例提供的seleniumgrid框架示意图;图4为本发明一实施例提供的docker容器的虚拟化技术架构示意图;图5为本发明一实施例提供的用于仓单页面的分布式测试方法的实现原理示意图;图6为本发明一实施例提供的通过执行docker-composeup–d行命令完成部署过程的示意图;图7为本发明一实施例提供的seleniumgridconsole测试环境构建完成示意图;图8为本发明一实施例提供的配置config.json文件的示意图;图9为本发明一实施例提供的脚本执行结果示意图;图10为本发明一实施例提供的本地查看执行结果的示意图;图11为本发明一实施例提供的用于仓单页面的分布式测试装置的结构示意图;图12为本发明一实施例提供的电子设备的结构示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在对本发明实施例进行介绍之前,先对本发明实施例中涉及的名词进行简单介绍。selenium是一个基于浏览器的自动化工具,它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。selenium主要包括三部分:seleniumide、seleniumwebdriver和seleniumgrid:seleniumide:firefox的一个扩展,它可以进行录制回放,并可以把录制的操作以多种语言(例如java,python等)的形式导出成测试用例。seleniumwebdriver:提供web自动化所需的api,主要用作浏览器控制、页面元素选择和调试。不同的浏览器需要不同的webdriver。seleniumgrid:提供了在不同机器的不同浏览器上运行selenium测试的能力。uirecorder是一款零成本ui自动化录制工具,类似于seleniumide,uirecorder要比seleniumide更加强大。docker是一个开源的应用容器引擎,基于go语言并遵从apache2.0协议开源。docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。在介绍完上面具体概念后,下面将通过具体实施例本发明提供的方案进行详细解释说明。图1示出了本发明实施例提供的用于仓单页面的分布式测试方法的流程图。如图1所示,本发明实施例提供的用于仓单页面的分布式测试方法包括如下步骤:步骤101:利用uirecorder在本地进行仓单页面的自动化测试脚本录制。在本步骤中,由于仓单流程复杂,故导致仓单管理系统中涉及的仓单页面较多。此外,对于每个仓单页面来说,其涉及的页面元素也较多,针对该问题,本实施例利用uirecorder在本地进行仓单页面的自动化测试脚本录制,由于uirecorder能够根据url针对单个页面的脚本录制,且其在页面元素读取方面具有天然优势,故本实施例利用uirecorder在本地进行仓单页面的自动化测试脚本录制,不但可以解决仓单页面元素抓取困难的问题,还可以切割整个仓单流程,使其更专注于某个功能点的自动化验证。在本步骤中,利用uirecorder在本地进行仓单页面的自动化测试脚本录制时,需要先在本地安装uirecorder,然后再将整个待测试的仓单流程切割成多个仓单页面,最后在浏览器分别输入每个仓单页面的统一资源定位符url,利用uirecorder录制对应仓单页面的测试脚本。步骤102:在服务器安装docker,并基于docker构建seleniumgrid工具以部署分布式测试环境。在本步骤中,在基于docker构建seleniumgrid工具以部署分布式测试环境时,需要先基于docker配置seleniumgrid工具的测试环境容器镜像,然后再执行docker-composeup–d行命令完成部署,同时启动所述seleniumgrid工具中的hub节点和node节点。步骤103:将所述测试脚本发送给所述seleniumgrid工具,以使所述seleniumgrid工具中的hub节点和node节点执行所述测试脚本。在本步骤中,具体地,将所述测试脚本发送给所述seleniumgrid工具的hub节点,以使所述hub节点将所述测试脚本转发给位于不同浏览器环境下的node节点执行所述测试脚本。步骤104:在本地接收所述seleniumgrid工具发送的脚本执行结果。在本步骤中,可以在本地接收所述seleniumgrid工具发送的脚本执行结果,随时进行查看。此外,还可以依托mochawesome-uirecorder插件可以配置执行错误脚本在本地生成截图。在本实施例中,需要说明的是,上述步骤101-104的执行主体为展示有仓单页面的客户端。下面结合图3-图10对本实施例提供的用于仓单页面的分布式测试方法进行解释说明。图3为seleniumgrid的框架示意图,一个grid框架包含一个hub节点和若干个node节点。hub节点是管理所有node节点的注册和状态等信息,是一个中心控制节点。也就是说hub节点一接收到用户的测试用例执行请求,就会把这个请求转给node这类工作节点,node节点便会在相应的环境及浏览器中执行由hub下发的测试用例。由此可见,node越多的话,该测试环境自动化执行效率就会越高。图4为本发明一实施例提供的docker容器的虚拟化技术架构示意图。由于docker可以提供轻量级,低投入的分布式测试环境,所以seleniumgrid与docker的结合使用,才能真正使测试用例在分布式环境中更自如的运行。docker创建的容器在seleniumgrid里可以看做是一个个node工作节点,而不是传统的虚拟机拿来当node工作节点,这样让节点管理控制起来就变的很容易。而且用docker来做浏览器自动化测试还有一个优势,就是它可以同时执行多个不同版本的浏览器。假设说要用到不同版本的chrome浏览器,但是在同一个环境里只会驱动一个版本的浏览器,但是用docker就可以避免这样的问题。同时seleniumgrid框架中的hub节点和node节点是分布在不同的环境和浏览器里,大量的容器集群就需要相应的管理工具去维护与管理。docker支持分布式集群应用,就能强而有力的解决这些问题。docker容器的虚拟化技术架构示意图如图4所示。由于仓单管理系统大都是基于b/s模式开发实施的,这就需要对产品进行大量的兼容性测试,针对不同的用户群体模拟不同的适用场景,这会带来很大的工作量。selenium是支持多种浏览器多个编程语言的一个自动化测试工具。而seleniumgrid是一种可以让用户在不同的环境和不同的浏览器上并行运行web测试用例的框架。换而言之,使用seleniumgrid可以在分布式测试环境下执行测试,例如windows,linux,macos,andoid/ios等等,这样可以大大减少重复的工作量,提高测试的工作效率,减少重复性工作,把工作重点更加foucs在测试工程中。图5为本实施例提供的用于仓单页面的分布式测试方法的实现原理示意图。本实施例选择开源软件uirecorder录制基于web开发的软件产品,执行脚本依托基于docker和seleniumgird构建的server完成执行过程,最终在本地产出报告。其具体实现过程如下所示:s1:docker-compose自动构建浏览器测试环境容器,docker-compose.yml文件内容如下所示:s2:只需执行docker-composeup–d一行命令即可完成部署,如图6所示,查看服务是否启动dockerps–a。s3:查看seleniumgridconsole测试环境是否已构建完毕。如图7所示,可以看到有3个job已经处于ready状态。s4:已完成的uirecorder脚本,配置config.json文件,如图8所示。s5:执行uirecorder脚本回放,本机命令npmtest,执行效果如图9所示。s6:查看执行结果,本地生成,随时可看执行结果,如图10所示。依托mochawesome-uirecorder插件可以配置执行错误脚本在本地生成截图,效果极其强大。通过上面描述可知,本实施例将仓单业务特点与uirecorder、seleniumgrid分布式测试框架、docker和执行脚本部署方式相结合,与现有技术相比,具有如下优势:不占用本机资源,采用分布式部署测试环境的方式进行,处理速度较快,效率较高,基于现有的仓单交易程序,不需要交易重构,改造简单,部署维护一条命令即可。而现有技术的方案:需要至少3台独立服务器,且安装配置步骤非常多,无运维基础的测试人员难以搭建成功,日常维护繁琐,且不稳定,占用大量本机资源,影响处理速度慢,效率低下。为验证本实施例这种用于仓单页面的分布式测试方法的运行效率,在本地进行了一定规模的自动化测试脚本100个进行测试,采取相同的脚本,分别就本地执行和dockerseleniumgird部署云端执行两种方式进行了测试。经数据采样,对比结果如下表1所示:表1本地执行模式分布式执行模式总运行时间5327.641s1127.356s10个自动化脚本230.646s101.535s50个自动化脚本2789.258s430.675s100个自动化脚本5327.641s1127.356s从上面运行结果分析数据可以看出,以本机运行时,时间消耗在浏览器启动加载执行脚本过程中,失败脚本因频繁重启浏览器而出现无响应,造成测试结果与实际不符。对于本地执行模式,不适于大量脚本执行。而分布式测试执行效果明显,执行脚本全在云端,且根据各个job繁忙程序随机挑选,当前只开了3个job,如果加载更多job时间上还会节约。数据结果对比明显使用docker部署seleniumgird方式执行效率与准确率更高。综上所述,分布式部署模式的最大优势为简化了调用过程,避免了测试脚本消耗本地资源,从而提升效率。由上面技术方案可知,本发明实施例提供的用于仓单页面的分布式测试方法及装置,利用uirecorder在本地进行仓单页面的自动化测试脚本录制,从而不但可以解决仓单页面元素抓取困难的问题,还可以切割整个仓单流程,使其更专注于某个功能点的自动化验证。进一步地,本发明实施例在服务器安装docker并基于docker构建seleniumgrid工具以部署分布式测试环境,从而使得仓单页面测试过程可以采用分布式部署测试环境的方式进行,从而使得处理速度较快,效率较高,不占用本机资源,且基于现有的仓单交易程序,不需要交易重构,改造简单,只需部署维护一条命令即可。图11示出了本发明实施例提供的用于仓单页面的分布式测试装置的结构示意图。如图11所示,本发明实施例提供的用于仓单页面的分布式测试装置包括:录制模块21、部署模块22、执行模块23和接收模块24,其中:录制模块21,用于利用uirecorder在本地进行仓单页面的自动化测试脚本录制;部署模块22,用于在服务器安装docker,并基于docker构建seleniumgrid工具以部署分布式测试环境;执行模块23,用于将所述测试脚本发送给所述seleniumgrid工具,以使所述seleniumgrid工具中的hub节点和node节点执行所述测试脚本;接收模块24,用于在本地接收所述seleniumgrid工具发送的脚本执行结果。进一步地,基于上述实施例的内容,在本实施例中,所述录制模块21,具体用于:在本地安装uirecorder;将整个待测试的仓单流程切割成多个仓单页面;在浏览器分别输入每个仓单页面的统一资源定位符url,利用uirecorder录制对应仓单页面的测试脚本。进一步地,基于上述实施例的内容,在本实施例中,所述部署模块22,具体用于:在服务器安装docker,并基于docker配置seleniumgrid工具的测试环境容器镜像;执行docker-composeup–d行命令完成部署,并启动所述seleniumgrid工具中的hub节点和node节点。进一步地,基于上述实施例的内容,在本实施例中,所述执行模块23,具体用于:将所述测试脚本发送给所述seleniumgrid工具的hub节点,以使所述hub节点将所述测试脚本转发给位于不同浏览器环境下的node节点执行所述测试脚本。由于本发明实施例提供的用于仓单页面的分布式测试装置,可以用于执行上述实施例所述的用于仓单页面的分布式测试方法,其工作原理和有益效果类似,故此处不再详述,具体内容可参见上述实施例的介绍。基于相同的发明构思,本发明又一实施例提供了一种电子设备,参见图12,所述电子设备具体包括如下内容:处理器301、存储器302、通信接口303和通信总线304;其中,所述处理器301、存储器302、通信接口303通过所述通信总线304完成相互间的通信;所述处理器301用于调用所述存储器302中的计算机程序,所述处理器执行所述计算机程序时实现上述用于仓单页面的分布式测试方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:利用uirecorder在本地进行仓单页面的自动化测试脚本录制;在服务器安装docker,并基于docker构建seleniumgrid工具以部署分布式测试环境;将所述测试脚本发送给所述seleniumgrid工具,以使所述seleniumgrid工具中的hub节点和node节点执行所述测试脚本;在本地接收所述seleniumgrid工具发送的脚本执行结果。基于相同的发明构思,本发明又一实施例提供了一种非暂态计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述用于仓单页面的分布式测试方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:利用uirecorder在本地进行仓单页面的自动化测试脚本录制;在服务器安装docker,并基于docker构建seleniumgrid工具以部署分布式测试环境;将所述测试脚本发送给所述seleniumgrid工具,以使所述seleniumgrid工具中的hub节点和node节点执行所述测试脚本;在本地接收所述seleniumgrid工具发送的脚本执行结果。此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的用于仓单页面的分布式测试方法。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1