CN113672502A - 程序多系统测试方法及其相应的装置、设备、介质 - Google Patents
程序多系统测试方法及其相应的装置、设备、介质 Download PDFInfo
- Publication number
- CN113672502A CN113672502A CN202110885591.5A CN202110885591A CN113672502A CN 113672502 A CN113672502 A CN 113672502A CN 202110885591 A CN202110885591 A CN 202110885591A CN 113672502 A CN113672502 A CN 113672502A
- Authority
- CN
- China
- Prior art keywords
- test
- target program
- task
- operating system
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开一种程序多系统测试方法及其相应的装置、设备、介质,所述方法包括如下步骤:将目标程序的不同操作系统版本的测试任务对应添加至为不同操作系统分别配置的不同测试队列;响应于任意一个所述的测试队列中测试任务的出列事件,获取相应操作系统版本的所述目标程序的安装包及测试脚本,发送到安装有相应操作系统的受测设备中;启动对所述目标程序在受测设备的自动测试流程,以使所述目标程序在受测设备安装后运行过程中应用所述测试脚本而采集埋点数据提交至数据服务器;从数据服务器拉取所述的埋点数据,将其格式化结果发送给预设的通信接口。本申请能适应程序的多操作系统版本测试的需要,按不同操作系统提供全程自动化的高效测试服务。
Description
技术领域
本申请涉及网络直播测试领域,尤其涉及一种程序多系统测试方法、装置及其相应的电子设备和非易失性存储介质。
背景技术
开发完成后的终端设备的应用程序(APP),需要经过测试才予以发布,以测试应用程序在终端设备中运行过程中的各种表现,及时发现潜在的各种运行问题,例如弹窗是否正常、业务逻辑是否正确、人机交互功能是否顺畅、是否出现异常等。
终端设备侧的应用程序的测试需求,一方面希望能够通过自动化来实现多种操作系统、多种复杂机型情况下的触控响应测试,另一方面是考虑到时效而要求能够快速完成测试,再一方面是希望尽量实现统一业务逻辑的集中测试。为了满足这些需求,业内提出了一些自动化的解决方案,例如2021年2月2日公开的CN112306887A号专利申请中,其提出一个能够实现自动化实施应用程序在终端设备的测试的方案。
尽管如此,程序测试效率仍有提升空间,表现在程序自动化测试系统是一种集中式处理大量应用程序的测试工作的系统,其源源不断地根据测试任务去针对不同应用程序实施测试,并且需要及时掌握各个应用程序的测试结果,这种情况下,自动化测试系统的任务响应机制容易构成发挥其系统效率的瓶颈,因此,如何优化现有的自动化测试系统,使其提升自动化测试效率,成为自动化测试系统可以进一步提升的空间。
发明内容
本申请的目的在于解决上述问题至少之一而提供一种程序多系统测试方法及其相应的装置、计算机设备、非易失性存储介质,以便对应用程序实施自动化分发测试。
为满足本申请的各个目的,本申请采用如下技术方案:
适应本申请的目的之一而提供的一种程序多系统测试方法,其包括如下步骤:
将目标程序的不同操作系统版本的测试任务对应添加至为不同操作系统分别配置的不同测试队列;
响应于任意一个所述的测试队列中测试任务的出列事件,获取相应操作系统版本的所述目标程序的安装包及测试脚本,发送到安装有相应操作系统的受测设备中;
启动对所述目标程序在受测设备的自动测试流程,以使所述目标程序在受测设备安装后运行过程中应用所述测试脚本而采集埋点数据提交至数据服务器;
从数据服务器拉取所述的埋点数据,将其格式化结果发送给预设的通信接口。
具体的实施例中,将目标程序的不同操作系统版本的测试任务对应添加至为不同操作系统分别配置的不同测试队列,包括如下步骤:
响应目标程序的测试任务启动事件,生成第一操作系统和第二操作系统相对应的第一测试任务和第二测试任务;
将所述第一测试任务添加到第一测试队列,将所述第二测试任务添加到第二测试队列;
启动对所述第一测试队列和第二测试队列的出列事件的监听。
具体的实施例中,响应于任意一个所述的测试队列中测试任务的出列事件,获取相应操作系统版本的所述目标程序的安装包及测试脚本,发送到安装有相应操作系统的受测设备中,包括如下步骤:
接受受测设备与本机建立通信连接,标记各受测设备所安装的操作系统;
响应于任意一个所述的测试队列中测试任务的出列事件,根据该测试队列预关联的操作系统向安装包服务器获取所述目标程序的安装包,向安装有相应操作系统的受测设备发送所述安装包以完成其在该受测设备的安装;
根据该测试队列预关联的操作系统从本地数据库中获取所述目标程序的测试脚本,向已安装所述目标程序的受测设备发送所述测试脚本。
具体的实施例中,启动对所述目标程序在受测设备的自动测试流程之后,所述受测设备执行如下步骤:
解析执行预先接收的测试脚本,以仿真连串作用于所述目标程序的运行界面的操作事件而实现对该目标程序的测试,根据所述测试脚本的埋点指令采集埋点数据提交至数据服务器;
根据测试脚本的指令控制,监测到所述目标程序处于弹窗阻塞状态时,检测所述弹窗中包含多个特定文本中任意之一的控件,触发该控件的点击事件以消除该弹窗。
较佳的实施例中,解析执行预先接收的测试脚本的步骤,包括:
根据所述测试脚本的指令中所指定的控件的原始标识,查询随附于所述安装包的对象映射表格,确定与该控件的原始标识相对应的加密标识,以该加密标识代替该原始标识而执行该指令。
具体的实施例中,从数据服务器拉取所述的埋点数据,将其格式化结果发送给预设的通信接口,包括如下步骤:
从数据服务器拉取所述的埋点数据;
对所述埋点数据进行统计分析,获得分析结果;
将所述分析结果进行格式化,获得格式化结果;
将所述格式化结果发送给预设的通信接口。
扩展的实施例中,本申请程序多系统测试方法还包括如下步骤:
接收受测设备返回的表征完成测试的通知,向该受测设备发送清理指令,以清理在先发送至该受测设备的目标程序的安装包及测试脚本且卸载该目标程序。
适应本申请的目的之一而提供的一种程序多系统测试装置,其包括任务分流模块、任务预备模块、任务执行模块、任务报告模块,其中:所述任务分流模块,用于将目标程序的不同操作系统版本的测试任务对应添加至为不同操作系统分别配置的不同测试队列;所述任务预备模块,用于响应于任意一个所述的测试队列中测试任务的出列事件,获取相应操作系统版本的所述目标程序的安装包及测试脚本,发送到安装有相应操作系统的受测设备中;所述任务执行模块,用于启动对所述目标程序在受测设备的自动测试流程,以使所述目标程序在受测设备安装后运行过程中应用所述测试脚本而采集埋点数据提交至数据服务器;所述任务报告模块,用于从数据服务器拉取所述的埋点数据,将其格式化结果发送给预设的通信接口。
具体的实施例中,所述任务分流模块包括任务创建子模块,用于响应目标程序的测试任务启动事件,生成第一操作系统和第二操作系统相对应的第一测试任务和第二测试任务;任务入列子模块,用于将所述第一测试任务添加到第一测试队列,将所述第二测试任务添加到第二测试队列;任务监听子模块,用于启动对所述第一测试队列和第二测试队列的出列事件的监听。
具体的实施例中,所述任务预备子模块包括:设备接入子模块,用于接受受测设备与本机建立通信连接,标记各受测设备所安装的操作系统;出列安装子模块,用于响应于任意一个所述的测试队列中测试任务的出列事件,根据该测试队列预关联的操作系统向安装包服务器获取所述目标程序的安装包,向安装有相应操作系统的受测设备发送所述安装包以完成其在该受测设备的安装;用例传送子模块,用于根据该测试队列预关联的操作系统从本地数据库中获取所述目标程序的测试脚本,向已安装所述目标程序的受测设备发送所述测试脚本。
具体的实施例中,所述受测设备被配置为包括:解析执行预先接收的测试脚本,以仿真连串作用于所述目标程序的运行界面的操作事件而实现对该目标程序的测试,根据所述测试脚本的埋点指令采集埋点数据提交至数据服务器;根据测试脚本的指令控制,监测到所述目标程序处于弹窗阻塞状态时,检测所述弹窗中包含多个特定文本中任意之一的控件,触发该控件的点击事件以消除该弹窗。
较佳的实施例中,所述受测设备被配置为包括:根据所述测试脚本的指令中所指定的控件的原始标识,查询随附于所述安装包的对象映射表格,确定与该控件的原始标识相对应的加密标识,以该加密标识代替该原始标识而执行该指令。
具体的实施例中,所述任务报告模块包括:数据拉取子模块,用于从数据服务器拉取所述的埋点数据;统计分析子模块,用于对所述埋点数据进行统计分析,获得分析结果;结果处理子模块,用于将所述分析结果进行格式化,获得格式化结果;结果通知子模块,用于将所述格式化结果发送给预设的通信接口。
扩展的实施例中,本申请程序多系统测试装置还包括预后清理模块,用于接收受测设备返回的表征完成测试的通知,向该受测设备发送清理指令,以清理在先发送至该受测设备的目标程序的安装包及测试脚本且卸载该目标程序。
适应本申请的目的之一而提供的一种计算机设备,包括中央处理器和存储器,所述中央处理器用于调用运行存储于所述存储器中的计算机程序以执行本申请所述的程序多系统测试方法的步骤。
适应本申请的另一目的而提供的一种非易失性存储介质,其以计算机可读指令的形式存储有依据所述的程序多系统测试方法所实现的计算机程序,该计算机程序被计算机调用运行时,执行该方法所包括的步骤。
相对于现有技术,本申请的优势如下:
本申请适应同一目标程序在不同操作系统的受测设备上实施测试的测试需求,通过为不同操作系统的受测设备一一对应构建测试队列,每一测试队列用于有序处理同一操作系统的不同目标程序的排队调度测试,对于有序出列的目标程序测试任务,可以应用相对应的测试脚本进行及时高效的测试,提升了自动化测试系统服务于海量的目标程序的集中测试的能力,使得大量的目标程序的不同操作系统版本的集中测试更为有序高效,使自动化测试系统具备平台化部署并提供统一接口服务的能力,大大提升了软件测试工程的实现效率。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为实施本申请的技术方案相关的一种典型的部署架构示意图;
图2为本申请的程序多系统测试方法的典型实施例的流程示意图;
图3为本申请的程序多系统测试方法利用两个测试队列实现并行测试的流程示意图;
图4为本申请的程序多系统测试方法中为测试任务配置受测设备的过程的流程示意图;
图5为本申请的受测设备启动自动测试流程的过程的流程示意图;
图6为本申请的程序多系统测试方法处理埋点数据过程的流程示意图;
图7为本申请的程序多系统测试方法另一实施例的流程示意图;
图8为本申请的程序多系统测试装置的典型实施例的原理框图;
图9为本申请所采用的一种计算机设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本技术领域技术人员可以理解,这里所使用的“客户端”、“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,进行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他诸如个人计算机、平板电脑之类的通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS(PersonalCommunications Service,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;PDA(Personal Digital Assistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(Global PositioningSystem,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“客户端”、“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“客户端”、“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(Mobile Internet Device,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。
本申请所称的“服务器”、“客户端”、“服务节点”等名称所指向的硬件,本质上是具备个人计算机等效能力的电子设备,为具有中央处理器(包括运算器和控制器)、存储器、输入设备以及输出设备等冯诺依曼原理所揭示的必要构件的硬件装置,计算机程序存储于其存储器中,中央处理器将存储在外存中的程序调入内存中运行,执行程序中的指令,与输入输出设备交互,借此完成特定的功能。
需要指出的是,本申请所称的“服务器”这一概念,同理也可扩展到适用于服务器机群的情况。依据本领域技术人员所理解的网络部署原理,所述各服务器应是逻辑上的划分,在物理空间上,这些服务器既可以是互相独立但可通过接口调用的,也可以是集成到一台物理计算机或一套计算机机群的。本领域技术人员应当理解这一变通,而不应以此约束本申请的网络部署方式的实施方式。
请参阅图1,本申请相关技术方案实施时所需的硬件基础可按图中所示的架构进行部署,其各部分的作用及功能揭示如下:
本申请所称的远程服务器80可以作为一个前端的应用服务器,负责进一步连接起相关数据服务器,以此构成逻辑上相关联的服务机群,来为相关的终端设备例如图中所示的智能手机81、82和个人计算机提供服务。所述的智能手机81、82和个人计算机均可通过公知的网络接入方式与远程服务器80建立数据通信链路。
本申请的远程服务器80适于提供网络直播、即时通信之类的互联网业务,通过运行服务而向相应的终端设备提供相应的互联网业务,由此,不同用户通过各自的终端设备使用远程服务器80的服务,便可实现用户之间的通信数据的交换。例如,一个用户可以通过该远程服务器80获取另一个用户的视频流、信息、指令等。
本申请的终端设备配备有相关操作系统,例如IOS、HMS(鸿蒙)、Android以及其他提供同等功能的操作系统,在此类操作系统的支持下,远程服务器80与终端设备之间可以通过彼此约定的通信链路进行数据通信,而为这些操作系统适应性开发的应用程序也得以在终端设备中正常运行,正是借助这些应用程序的运行,使得终端设备可以实现人机交互、远程交互以及通过远程服务器与其他终端实现各种间接交互。
本申请所称的主控服务器88,其作为独立设备,主要用于实施本申请的程序多系统测试方法,以便控制本申请的受测设备81、82进行测试。本申请所称的受测设备81、82即为所述的终端设备,主要负责实施本申请中与主控服务器相互配合的后台进程,以便配合主控服务器所执行的程序多系统测试方法,在受测设备中测试其中的目标程序。主控服务器88与终端设备工作于Server/Client模式,主控服务器88作为Server端实施控制,受测设备81、82作为Client端接受测试,两者之间可以采用物理有线连接或无线连接建立通信链路,甚至在操作系统支持的前提下,还可通过公网上的第三方服务器来建立这种通信机制。根据本申请的原理,主控服务器88通过控制多台受测设备81、82实施测试,各受测设备81、82在主控服务器88的控制下通过所述远程服务器进行通信数据交换,由此便可实现多台受测设备81、82的交互业务流程的测试。
需要指出的是,为了支持主控服务器88与受测设备81、82之间形成C/S架构,主控服务器88将按照本申请的程序多系统测试方法实现相应的应用程序以便在其运行后可以实施该方法而构成Server端,而受测设备81、82中也会被植入用于与Server端通信并负责执行Server端的指令的后台程序,这一后台程序依据与本申请的程序多系统测试方法相配合以实施测试的方式而实现,在该后台程序运行时接收Server端的各种指令而执行相应的功能,从而使受测设备81、82发Client端的作用。
本申请所称的应用程序,其通称意义是指运行于服务器或终端设备之类的电子设备的应用程序,这些应用程序采用编程的方式实现了本申请的相关技术方案,其程序代码可被以计算机可执行指令的形式保存于计算机能识别的非易失性存储介质中,并被中央处理器调入内存中运行,通过该应用程序在计算机的运行而构造出本申请的相关装置。其中,本申请所称的目标程序,是接受测试的应用程序,其将运行于所述的受测设备81、82中,通过其运行而与远程服务器交互,使用远程服务器开放的服务。
不同受测设备81、82可能运行于不同的操作系统,例如IOS、Android等,因此其中所安装的目标程序可能也是以不同的操作系统原生语言开发的,但由于通常同一目标程序无论其运行环境如何,均会遵照一定的功能逻辑开发,只是其所使用的语言不同,因而,这种情况并不影响本申请的实施。同理,主控服务器88中与本申请相关的应用程序与受测设备81、82中与本申请相关的目标程序也可能是以不同原生语言开发的,也不影响本申请的实施。
本申请所称的测试脚本,用于描述一个适用于对目标程序实施测试的测试流程,其通过计算机高级语言编写而成,一般是主控服务器88中与负责实施本申请的应用程序可以支持的语言,例如Python、JavaScript等,其从逻辑上可以借助if、case之类的转向语句形成多个分支流程,从动作上则可通过执行语句来执行,例如通过执行语句来触发一个操作事件或者调用一个方法函数。作为其基本功能,这些执行语句的主要任务是负责按照测试流程的需要仿真一连串的作用于目标程序的运行界面的操作事件,或者发起一连串用于调用目标程序的原生函数的调用指令,通过将将测试脚本发送给受测设备81、82解析而触发这些操作事件,或者通过这些调用指令发送给各个相应的受测设备81、82而控制其中的目标程序按需执行原生函数从而配合测试。可以理解,测试脚本将繁复的人为操作转换成自动执行的操作命令,大大地减少了测试人员的重复性操作,提高了测试效率。
本领域技术人员对此应当知晓:本申请的各种方法,虽然基于相同的概念而进行描述而使其彼此间呈现共通性,但是,除非特别说明,否则这些方法都是可以独立执行的。同理,对于本申请所揭示的各个实施例而言,均基于同一发明构思而提出,因此,对于相同表述的概念,以及尽管概念表述不同但仅是为了方便而适当变换的概念,应被等同理解。
本申请即将揭示的各个实施例,除非明文指出彼此之间的相互排斥关系,否则,各个实施例所涉的相关技术特征可以交叉结合而灵活构造出新的实施例,只要这种结合不背离本申请的创造精神且可满足现有技术中的需求或解决现有技术中的某方面的不足即可。对此变通,本领域技术人员应当知晓。
请参阅图2,本申请的一种程序多系统测试方法,由主控服务器侧的应用程序负责执行体现,在其典型实施例中,其包括如下步骤:
步骤S11、将目标程序的不同操作系统版本的测试任务对应添加至为不同操作系统分别配置的不同测试队列:
对于同一目标程序,开发团队通常预备有适配于不同的操作系统的安装包,以便在不同操作系统的终端设备中运行所述的目标程序。所述安装包可以上传到主控服务器,也可以由主控服务器远程获取,以便测试时调用。所述的安装包,其文件格式依据其所适应的终端设备操作系统而定,例如Android操作系统中为APK后缀的文件,IOS操作系统中通常为IPA后缀的文件。当然,还可以包括其他操作系统相应的安装包。
为了支持应用程序的集中统一测试,主控服务器以不同安装包所适配的不同操作系统为依据,预构建多个测试队列,各测试队列均基于先进先出原则进行访问,每个测试队列均用于存储与该测试队列所关联的操作系统相适配的测试任务。例如,第一测试队列为Android操作系统专用,第二测试队列为IOS操作系统专用,第三测试队列为HMS(鸿蒙)操作系统专用……诸如此类。对应的,第一测试队列用于存放目标程序的Android版本的安装包的测试任务,第二测试队列用于存放目标程序的IOS版本的安装包的测试任务,第三测试队列用于存放目标程序的HMS版本的安装包的测试任务。
所述的测试任务可以是定时任务系统触发的定时任务,也可以是手动预先添加的任务,其用于触发针对某一目标程序的自动测试流程。当一个测试任务被从相应的测试队列中出列之后,便可触发所述的自动测试流程。
当目标程序需要测试时,开发人员可以为其创建测试任务,本申请将自动适应该测试任务,检测其当前是否存在适应多个操作系统的安装包版本,适应每一安装包版本派生出一个对应的测试任务,即第一操作系统相对应的第一测试任务、第二操作系统相对应的第二测试任务等。然后,适应测试任务与测试队列基于同一操作系统进行对应的关系,将所述第一测试任务添加到第一测试队列中,将所述第二测试任务添加到第二测试队列中。由于两个测试队列均是基于先进先出原则进行调度的,因此,最先进入测试队列的测试任务将被优选出列。
步骤S12、响应于任意一个所述的测试队列中测试任务的出列事件,获取相应操作系统版本的所述目标程序的安装包及测试脚本,发送到安装有相应操作系统的受测设备中:
多个所述的测试队列,分别按照先进先出原则进行对其中的测试任务进行出列操作,每一次出列操作都导致触发一个出列事件。因此,当服务于Android操作系统的第一测试队列调度一个测试任务时,将导致针对安装有Android操作系统的受测设备实施自动测试的相关准备工作,同理,当服务于IOS操作系统的第二测试队列调度一个测试任务时,将导致针对安装有IOS操作系统的受测设备实施自动测试的相关准备工作。
故而,响应于任意一个所述的测试队列中测试任务的出列事件,可以识别出测试任务相关联的操作系统,为此,便可根据所关联的操作系统去获取所述目标程序的相应版本。
目标程序通常适应不同操作系统开发有不同的安装包版本,对于不同类型的安装包,可以存储于同一安装包服务器中,彼此可以相同文件名加上不同后缀相区别。当需要获取一个目标程序的不同操作系统下的安装包时,向安装包服务器下载该目标程序对应的文件名下所有后缀的文件,即可获取各个相应操作系统版本的安装包。
同理,在本机的存储单元中,存储为所述目标程序预先定制的所述的测试脚本,可以通过查询一个预设的脚本映射表格,根据目标程序的文件名来查询到其相应的测试脚本。所述测试脚本同理可根据其所适用的操作系统而附上相应的标识,以便识别不同操作系统相适配的测试脚本。
当主控服务器完成对目标程序的安装包及测试脚本的获取之后,可以将目标程序的安装包及测试脚本发送至安装有该测试任务相关联的操作系统的受测设备。
所述的受测设备,被预先接入至主控服务器中,可以利用受测设备的操作系统相适配的系统调试工具所定义的设备调试指令,实现将所述安装包和测试脚本传输到受测设备,并控制其在受测设备中的应用。
所述的系统调试工具,是受测设备所运行的操作系统提供的,可以在主控服务器中调用这些系统调试工具所提供的所述设备调试指令,来建立主控服务器与受测设备之间的通信链路,实现在主控服务器中控制所述的受测设备。不同的终端设备操作系统提供的系统调试工具不同,例如对于Android操作系统而言,其为主控服务器提供adb调试工具来建立该主控服务器对受测设备的调试控制;对于IOS操作系统而言,其同理为主控服务器提供ideviceinstaller工具来实现同等功能。
adb(Android Debug Bridge)是一个通用命令行工具,其允许充当主控服务器的计算机与模拟器实例或连接的Android设备进行通信,可为这些Android设备的管理和操作提供便利,如安装和调试受测设备上的应用程序等。关于利用adb所具有的设备调试命令与Android设备进行通信的具体操作方式,属于本领域技术人员熟知的技术内容,故此处恕不赘述。
同理,ideviceinstaller是一个命令行工具,主要运行于充当主控服务器的计算机,用于管理iOS设备上应用程序的安装与卸载。由于该工具是由操作系统配备的开放工具,因此,本领域技术人员对其应用均已知晓,故亦恕不赘述。
此外,其他不同的操作系统,一般也会提供类似的命令行工具,以便为充当主控服务器的计算机提供可操控运行该操作系统的终端设备的手段。
在通信媒介上,目前多采用USB之类的数据线将所述的主控服务器与所述的受测设备直连的方式来实现,这些系统调试工具理论上也可在主控服务器与终端设备之间建立无线连接或者基于公共网络远程连接的情况下发挥作用,无论如何,主控服务器与受测设备可以通过彼此约定的某个端口构造形成通信链路,必要时结合端口重定位手段,来畅通主控服务器与终端设备双方的数据通信。
具体而言,对于受测设备与主控服务器之间通过公共网络进行交互的情况,两者之间可以通过数据报文进行后续的交互。对于受测设备与主控服务器之间实施非经公共网络进行交互的情况,由于受测设备基于adb的通信通常工作在第一端口,例如向9000端口读取和写入数据,而主控服务器则打开第二端口例如9092端口用于读取和写入数据,因此,在这种情况下,打开受测设备的目标程序后,可以使用adb之类的调试工具的用于重定位的设备调试指令实现受测设备与主控服务器之间端口的重定向,建立起受测设备与主控服务器之间用于后续测试流程的通讯通道。
适应受测设备采用不同操作系统的情况,在本步骤中便可采用相应的调试工具,启用通信链路,通过该通信链路向受测设备传输所述目标程序的安装包。通过向已经选定的多台受测设备分别传输所述的目标程序的安装包,便实现了该安装包的分发。
当确认所述安装包已经被受测设备成功接收之后,可以进一步借助系统调试工具调用安装命令,驱动受测设备执行所述安装包在其本机的安装。
在受测设备已经安装了本申请的目标程序的基础上,便可由主控服务器控制受测设备启动该目标程序。举例而言,对于受测设备运行Android操作系统的情况,可以通过adb的Start这一设备调试指令来启动该目标程序。为了便于确保本申请的顺利实施,对于各个接入主控服务器的受测设备而言,均可逐一控制这些受测设备启动所述的目标程序。
主控服务器通过维护一个脚本池来存储各种目标程序的测试脚本,这些测试脚本可以是基于不同的测试流程而编写的,同一目标程序也可能存储有多个基于不同测试流程的测试脚本,测试人员可以通过诸如数据库、文件索引架构之类的技术手段构造出该脚本池,在实施对目标程序的测试时调用相应的测试脚本对其实施测试,以实现对所述测试脚本的复用。
另以借用数据库(例如前述的映射关系表格)构造所述的脚本池为例,为了对多种目标程序的多份测试脚本进行存储管理,可建立一数据库,用该数据库维护目标程序的唯一性特征(例如前述的文件名)与其测试脚本引用地址之间的映射关系,一个测试脚本的引用地址与其相应的目标程序的唯一性特征信息共同形成该数据库的一条数据记录,以此,后续便可利用某一待测试的应用程序的唯一性特征,从该数据库中查询获取与该应用程序相关联的一个或多个测试脚本用于后续对该应用程序进行测试。一般而言,应用程序的包名即为其唯一性特征,可作为所述的唯一性特征信息用于与测试脚本的引用地址关联存储。所述数据库可以存储于主控服务器本地或主控服务器可触达访问其他设备中,也可存储到云端部署的其他服务器中,只要可供本申请的主控服务器所调用即可。由此可见,本申请不仅有助于实现对应用程序的自动化测试,而且适于提升软件工程的管理能力,对于负责开发大量的应用程序的开发团队或组织而言,通过本申请的脚本池对测试脚本进行管理,可以大大提升整个组织应对其旗下大量软件产品的测试需求的能力,进一步大大节省其技术开发成本。
基于前述所揭示的脚本池的实现方案,本步骤可以适应即将实施测试的目标程序,利用其包名之类的唯一特征,从数据库中确定相应的测试脚本的引用地址,获取相应的测试脚本发送至相应的受测设备,以该测试脚本在受测设备的解析运行而在各个受测设备中启动并实施对目标程序的测试。
主控服务器负责维护一个设备池,用于存储参与应用程序测试的终端设备的唯一性特征信息(设备UID或网络地址加端口等)及其相关运行环境信息(例如操作系统类型),以便主控服务器实施本方法时,可以依据所述的唯一性特征信息实施对终端设备的具体指定、利用所述的运行环境信息而选择适于运行所述安装包的终端设备。测试人员可以预先配置多台终端设备专用于程序测试,在终端设备中安装配合后台程序,通过后台管理页面将这些终端设备所述的唯一性特征信息及其运行环境信息添加到所述的设备池中。
所述的设备池还用于存储各个终端设备上报的测试任务载荷信息,具体而言,所述终端设备可以通过所述的后台程序的运行,而实时监控该终端设备作为受测设备实施程序测试的任务执行状态,将当前任务执行状态下用于表示其本机正在执行的测试任务相关的载荷信息持续上报给主控服务器,主控服务器于是便可以通过这些测试任务载荷信息及时动态掌握各个终端设备的任务执行状态,从而用于优选更为高效的终端设备用做所述的受测设备。
为此,在本申请的一个丰富了技术手段的实施例中,除允许人工上报各个终端设备的测试任务载荷信息这种技术手段的适用之外,也增设一个用于自动化采集所述的测试任务载荷信息的并发步骤,在该步骤中,主控服务器接收各个终端设备上报的所述测试任务载荷信息,然后将其存储到所述的设备池中,并与相应的唯一性特征信息关联存储。
所述的测试任务载荷信息,根据本申请的需要而定,其表现形式可以灵活,在功能上,主要包括两类数据,其一是其所属的终端设备中正在执行的测试任务数量,其二是其测试任务执行完成的剩余时间。关于所述的正在执行的测试任务数量这一参数,主要是考虑到专用于程序测试的终端设备可能需要排队处理多个不同目标程序的测试,因此,该参数越大,表明该台终端设备越忙碌,否则相对较闲。显然,单独根据这一参数调度终端设备用作某个目标程序的受测设备时,应优先选择该参数最低的终端设备。关于正在执行的测试任务执行完成的剩余时间这一参数,主要是考虑到终端设备只有在完成了当前正在执行的测试任务之后,才能腾出时间和空间处理新增的测试任务,因此,同理可以理解,当单独以该参数调度终端设备时,也应优先选择该参数最低的终端设备用作受测设备。
实践中,对于测试任务载荷信息由多少个参数、哪些具体形式的参数构成,本质上是关于终端设备的调度策略的制定,而这种调度策略本身是可由本领域技术人员灵活实施的。例如,本申请推荐实施的典型实施例中,在主控服务器优选用于测试目标程序的终端设备时,会同时考虑上述的两种参数,选择正在执行的测试任务数量最少、并且正在执行的测试任务的剩余时间最小者,将这样的终端设备优选为该目标程序的受测设备。可见,关于终端设备的调度策略,只影响受测设备的选用效果,并不影响本申请技术方案的实施。
步骤S13、启动对所述目标程序在受测设备的自动测试流程,以使所述目标程序在受测设备安装后运行过程中应用所述测试脚本而采集埋点数据提交至数据服务器:
所述测试脚本由主控服务器发送给各个受测设备进行解析和执行,主要借助本领域技术人员公知的Appium技术架构来辅助实施。Appium是一个开源测试自动化框架,可用于原生、混合和移动Web应用程序测试,其使用WebDriver协议驱动iOS,Android和Windows应用程序。Appium可以跨平台同时支持Android、iOS,支持多种语言:java、python、php、Ruby等等。Appium提供服务器侧的Server组件及客户端侧的Clients组件(IOS中为WebDriverAgent,Android中为UiAutomator),因此,适于分别在主控服务器和受测设备处运行相应的进程而使两者可以配合实施程序测试。
由于Appium这一测试框架是基于仿真被测试程序的运行界面的点击操作事件而实现的,因此,测试脚本只能在受测设备端中被解析执行,当主控服务器确认该受测脚本被传输给某台受测设备之后,便可借助系统调试工具,向该受测设备发送启动指令,使该受测设备的后台进程响应于该启动指令而开始解析执行所述的测试脚本。
这种情况下,所述的测试脚本内部的执行语句,除用于描述测试脚本所要遵守的测试流程外,其对目标程序产生作用的执行语句,主要是用于仿真受测设备的目标程序运行界面的操作事件的描述语句。并且,出于测试流程需要包含连串操作的需要,通常需要借助多个执行语句仿真出一连串的所述的操作事件以配合测试。显然,受测设备应当能够识别这些操作事件,从而使目标程序的进程能够对相应的操作事件做出进一步的响应而使目标程序能够按照测试流程运行。可以理解,测试脚本将繁复的人为界面操作转换成自动执行的操作命令,大大地减少了测试人员的重复性操作,提高了测试效率。
可以采取多种方式对所述操作事件在测试脚本的执行语句中实施仿真,一种实施方式是向系统广播事件消息,例如在Android系统中广播一个触控事件相关的消息,将导致其被相应的目标程序进程所识别并触发该进程中相应的代码的执行;另一种方式中,由于当需要仿真某一操作事件时,实际上是要执行响应于该操作事件的方法(函数),因此,可以通过借助勾子技术(Hook)直接监控受测的目标程序的进程的运行,在需要仿真某一操作事件时,直接调用响应于该操作事件的方法(函数)即可。不同的操作系统和开发工具可能允许不同的技术手段用于实现这一仿真手段,甚至可能不局限于以上给出的两种方式,本领域技术人员可以根据此处的揭示灵活适用该些由操作系统或操作工具提供的技术手段,实现仿真的目的即可。
受测设备中的后台进程启动对测试脚本的解析后,解析执行各个执行语句,按照测试脚本所描述的测试流程仿真一连串多个操作事件,作用于目标程序的运行界面,使目标程序从一个运行界面切换到另一个运行界面,由此实施对目标程序的测试。
同步接受测试的其他受测设备以相同的方式进行测试,相关测试效果可被测试人员观察,同时,测试脚本中通常可写入向数据服务器提交执行语句被执行后返回的结果数据,或者写入其他主动上报的埋点数据等。这些各种类型的数据均可视为结果数据,由受测设备的后台进程提交给数据服务器。
步骤S14、从数据服务器拉取所述的埋点数据,将其格式化结果发送给预设的通信接口:
如前所述,受测设备在实施自动化测试过程中,依据测试脚本内部的埋点指令,会将其所采集的埋点数据提交到所述的数据服务器,因此,本申请的主控服务器可以从所述数据服务器获取到所述目标程序相对应的埋点数据,可以理解,这些埋点数据也是关联于不同操作系统进行存储的,因此可以根据不同操作系统分别形成相关的结果数据实现格式化,将结果数据发送给预设的通信接口,这些通信接口可以是预设的邮箱地址、手机短信发送接口、即时通信接口或者其他类似的手段。
请参阅图3,具体化的实施例中,所述步骤S11,包括如下步骤:
步骤S111、响应目标程序的测试任务启动事件,生成第一操作系统和第二操作系统相对应的第一测试任务和第二测试任务:
后台管理用户可以触发一个测试任务启动事件,该启动事件包含对目标程序的指定信息,据此,针对示例的两个操作系统分别生成第一测试任务、第二测试任务。其中,第一测试任务对应的操作系统为Android,第二测试任务对应的操作系统为IOS。
步骤S112、将所述第一测试任务添加到第一测试队列,将所述第二测试任务添加到第二测试队列:
将所述第一测试任务添加到为Android操作系统预设的第一测试队列,同理,将所述第二测试任务添加到为IOS而设的第二测试队列。两个测试队列存在各自的任务,按照自身固有的排队逻辑对其队列内的多个测试任务进行出列。
步骤S113、启动对所述第一测试队列和第二测试队列的出列事件的监听:
完成任务添加后,便可实施对该测试任务在任意一个测试队列中的出列事件的监听,以便适应任意一个测试队列针对该测试任务的出列事件而相应触发自动测试流程。
本实施例主要针对常用的两种操作系统提供测试队列的部署方案,利用两个测试队列对两个操作系统的测试任务进行排队,可以使计算机任务处理逻辑更为明晰,从而获得高效的执行效率。由于如前所述受测设备自身信息可以预先存储到所述的设备池中,因此,利用测试队列进行排队,结合受测设备自身的信息,可以为每个测试任务更精准地适配相关受测设备。
请参阅图4,具体化的实施例中,所述步骤S12,包括如下步骤:
步骤S121、接受受测设备与本机建立通信连接,标记各受测设备所安装的操作系统:
如前所述,可以利用USB或其他多种方式建立起多台受测设备与本机即主控服务器的物理连接,在此基础上,基于操作系统相适配的工具建立起受测设备与本机的通信连接,然后借助所述的受测设备自身报告的设备信息,存储于设备池中,让主控服务器获知该受测设备上所安装的操作系统,由此,通过所述的设备信息实现了对受测设备所安装的操作系统的标记,后续可以通过查询所述的设备信息,来筛选出安装有与测试任务所对应的操作系统的受测设备参与测试。可以理解,一个测试队列由此关联于一批具有相应操作系统的受测设备。
步骤S122、响应于任意一个所述的测试队列中测试任务的出列事件,根据该测试队列预关联的操作系统向安装包服务器获取所述目标程序的安装包,向安装有相应操作系统的受测设备发送所述安装包以完成其在该受测设备的安装:
当任意一个所述的测试队列中的一个测试任务出列时,便触发所述的出列事件,响应该出列事件,便启动对目标程序的安装包的获取,然后按照前文实施例揭示的过程,将安装包传输至操作系统相适配的受测设备中进行安装。
步骤S123、根据该测试队列预关联的操作系统从本地数据库中获取所述目标程序的测试脚本,向已安装所述目标程序的受测设备发送所述测试脚本:
同理,响应于所述出列事件,还将从前文实施例所述的脚本池中获取相应的测试脚本,该测试脚本是为所述目标程序的相应操作系统版本而开发的,因此,其适于被发送至前一步骤已经安装目标程序的受测设备,以便被受测设备解析执行。
本实施例规范了出列事件响应流程,根据这一流程,能够有序地确定一个出列事件被正确响应,确保多目标程序、多操作系统、多测试任务情况下,集中统一实施的自动化测试流程能够高效且有序地运转,让主控服务器的计算机运行资源效率最大化。
请参阅图5,具体化的实施例中,启动对所述目标程序在受测设备的自动测试流程之后,所述受测设备执行如下步骤:
步骤S21、解析执行预先接收的测试脚本,以仿真连串作用于所述目标程序的运行界面的操作事件而实现对该目标程序的测试,根据所述测试脚本的埋点指令采集埋点数据提交至数据服务器:
如前文典型实施例所述,测试脚本包含各种可被解析执行的指令,当其被解析执行时,适于仿真连串作用于所述目标程序的运行界面的操作事件,从而实现对该目标程序的测试,然后,在测试脚本的埋点指令的作用下,采集相关埋点数据,提交至数据服务器。
步骤S22、根据测试脚本的指令控制,监测到所述目标程序处于弹窗阻塞状态时,检测所述弹窗中包含多个特定文本中任意之一的控件,触发该控件的点击事件以消除该弹窗:
为了避免弹窗阻塞对目标程序的测试流程,所述的测试脚本在编程时便被实现为对目标程序的弹窗阻塞状态进行检测,当检测到弹窗阻塞时,进而检测当前弹窗中是否包含多个特定文本之一,例如是否包含“同意”、“确定”等文本,当存在这些文本时,进一步仿真一个针对这些文本所在的控件的触控事件,使该弹窗得到响应而消除,从而确保目标程序的自动测试流程能够正常进行。
本实施例通过兼顾弹窗处理逻辑,进一步确保了测试流程的智能自动化,这对于批量多测试任务来说尤为重要,通过及时消除弹窗来确保测试流程连续性,可以实现全程无人干预。
进一步的实施例中,所述步骤S21,包括:根据所述测试脚本的指令中所指定的控件的原始标识,查询随附于所述安装包的对象映射表格,确定与该控件的原始标识相对应的加密标识,以该加密标识代替该原始标识而执行该指令:
对于Android安装包,通常会做加固处理,由此,在获取安装包时往往也需要一并获取到其中的对象映射表格,并发送至受测设备一侧供所述的测试脚本调用,以便后续测试用例被解析执行时根据对象映射表格顺利调用各个对象及其接口。
所述的对象映射表格包含安装包的源代码中各个控件的原始标识到该源代码被加固并混淆后形成的加密标识之间的映射关系数据,当目标程序被运行时,需要借助加密标识对其中的控件或称对象实例进行访问,因此,当测试脚本被解析执行时,可以先对所述的对象映射表格进行查表,确定其所需调用的控件的原始标识相对应的加密标识,以该加密标识代替原始标识来指代对象实例而实现对控件的调用。
本实施例进一步适应Android系统对安装包进行加固处理的情况进行了兼容,使得针对Android版本的目标程序的测试流程的潜在障碍被进一步消除,进一步确保自动化测试流程的顺利执行。
请参阅图6,具体化的实施例中,所述步骤S14,包括如下步骤:
步骤S141、从数据服务器拉取所述的埋点数据:
如前所述,测试脚本被受测设备执行后,其所采集的埋点数据为了管理的便利,可被上传到预先指定的一个数据服务器处存储。因此,本申请的主控服务器便可从该数据服务器处拉取某个目标程序相对应的所述埋点数据。
步骤S142、对所述埋点数据进行统计分析,获得分析结果:
针对同一个目标程序,经多系统测试,便存在多个操作系统相对应的埋点数据,为了便于开发人员高效理解测试结果,此处可对该目标程序的各个操作系统版本所采集的埋点数据,按照操作系统、或埋点类型等进行统计分析,以便获得更直观的分析结果。
步骤S143、将所述分析结果进行格式化,获得格式化结果:为了进一步提升可读性,可对所述的分析结果进行格式化。
步骤S144、将所述格式化结果发送给预设的通信接口:一般将格式化结果发送到预设的邮箱和某些即时通信接口中,以便及时提醒开发人员。
请参阅图7,扩展的实施例中,本申请程序多系统测试方法还包括如下步骤:
步骤S15、接收受测设备返回的表征完成测试的通知,向该受测设备发送清理指令,以清理在先发送至该受测设备的目标程序的安装包及测试脚本且卸载该目标程序:
考虑到受测设备长时间持续地服务于多个目标程序的测试,而受测设备的存储空间是有限的,因此,为了确保利用本申请部署获得一个高度智能化的自动化测试系统,而增设自动清理的步骤。
具体而言,要求受测设备在完成测试脚本的运行之后,向主控服务器发送一个表征完成测试的通知,或者由主控服务器自动检测某一受测设备已经完成了一个测试任务,根据表征完成测试的通知,本申请的主控服务器可以向提供该通知的受测设备发送一个清理指令,而受测设备则响应该清理指令而执行对刚完成测试的所述目标程序的安装包及测试脚本的卸载,从而完成清理。
进一步,受测设备可以在未完成一个目标程序的清理之前,停止响应新的测试任务,当然,清理与响应新测试任务也可并行处理。
本实施例考虑到受测设备存储空间有限的问题,实现受测设备的存储空间的循环复用,进一步通过丰富清理手段来完善自动化测试流程,由此,充分确保以本申请所部署实现的程序自动测试系统能够高效持续地服务于应用程序的自动化测试,甚至可以作为公共服务平台进行开放。
进一步,可以通过将上述各实施例所揭示的方法中的各个步骤进行功能化,构造出本申请的一种程序多系统测试装置,按照这一思路,请参阅图8,其中的一个典型实施例中,该装置包括任务分流模块11、任务预备模块12、任务执行模块13、任务报告模块14,其中:所述任务分流模块11,用于将目标程序的不同操作系统版本的测试任务对应添加至为不同操作系统分别配置的不同测试队列;所述任务预备模块12,用于响应于任意一个所述的测试队列中测试任务的出列事件,获取相应操作系统版本的所述目标程序的安装包及测试脚本,发送到安装有相应操作系统的受测设备中;所述任务执行模块13,用于启动对所述目标程序在受测设备的自动测试流程,以使所述目标程序在受测设备安装后运行过程中应用所述测试脚本而采集埋点数据提交至数据服务器;所述任务报告模块14,用于从数据服务器拉取所述的埋点数据,将其格式化结果发送给预设的通信接口。
具体的实施例中,所述任务分流模块11包括任务创建子模块,用于响应目标程序的测试任务启动事件,生成第一操作系统和第二操作系统相对应的第一测试任务和第二测试任务;任务入列子模块,用于将所述第一测试任务添加到第一测试队列,将所述第二测试任务添加到第二测试队列;任务监听子模块,用于启动对所述第一测试队列和第二测试队列的出列事件的监听。
具体的实施例中,所述任务预备子模块12包括:设备接入子模块,用于接受受测设备与本机建立通信连接,标记各受测设备所安装的操作系统;出列安装子模块,用于响应于任意一个所述的测试队列中测试任务的出列事件,根据该测试队列预关联的操作系统向安装包服务器获取所述目标程序的安装包,向安装有相应操作系统的受测设备发送所述安装包以完成其在该受测设备的安装;用例传送子模块,用于根据该测试队列预关联的操作系统从本地数据库中获取所述目标程序的测试脚本,向已安装所述目标程序的受测设备发送所述测试脚本。
具体的实施例中,所述受测设备被配置为包括:解析执行预先接收的测试脚本,以仿真连串作用于所述目标程序的运行界面的操作事件而实现对该目标程序的测试,根据所述测试脚本的埋点指令采集埋点数据提交至数据服务器;根据测试脚本的指令控制,监测到所述目标程序处于弹窗阻塞状态时,检测所述弹窗中包含多个特定文本中任意之一的控件,触发该控件的点击事件以消除该弹窗。
较佳的实施例中,所述受测设备被配置为包括:根据所述测试脚本的指令中所指定的控件的原始标识,查询随附于所述安装包的对象映射表格,确定与该控件的原始标识相对应的加密标识,以该加密标识代替该原始标识而执行该指令。
具体的实施例中,所述任务报告模块14包括:数据拉取子模块,用于从数据服务器拉取所述的埋点数据;统计分析子模块,用于对所述埋点数据进行统计分析,获得分析结果;结果处理子模块,用于将所述分析结果进行格式化,获得格式化结果;结果通知子模块,用于将所述格式化结果发送给预设的通信接口。
扩展的实施例中,本申请程序多系统测试装置还包括预后清理模块,用于接收受测设备返回的表征完成测试的通知,向该受测设备发送清理指令,以清理在先发送至该受测设备的目标程序的安装包及测试脚本且卸载该目标程序。
为解决上述技术问题,本申请实施例还提供计算机设备。如图9所示,计算机设备的内部结构示意图。该计算机设备包括通过系统总线连接的处理器、非易失性存储介质、存储器和网络接口。其中,该计算机设备的非易失性存储介质存储有操作系统、数据库和计算机可读指令,数据库中可存储有控件信息序列,该计算机可读指令被处理器执行时,可使得处理器实现一种程序多系统测试方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该计算机设备的存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行本申请的程序多系统测试方法。该计算机设备的网络接口用于与终端连接通信。本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本实施方式中处理器用于执行图8中的各个模块及其子模块的具体功能,存储器存储有执行上述模块或子模块所需的程序代码和各类数据。网络接口用于向用户终端或服务器之间的数据传输。本实施方式中的存储器存储有本申请的程序多系统测试装置中执行所有模块/子模块所需的程序代码及数据,服务器能够调用服务器的程序代码及数据执行所有子模块的功能。
本申请还提供一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行本申请任一实施例的程序多系统测试方法的步骤。
本领域普通技术人员可以理解实现本申请上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
综上所述,本申请能适应应用程序的多操作系统版本测试的需要,按不同操作系统提供全程自动化的高效测试服务。
本技术领域技术人员可以理解,本申请中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本申请中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本申请中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种程序多系统测试方法,其特征在于,包括如下步骤:
将目标程序的不同操作系统版本的测试任务对应添加至为不同操作系统分别配置的不同测试队列;
响应于任意一个所述的测试队列中测试任务的出列事件,获取相应操作系统版本的所述目标程序的安装包及测试脚本,发送到安装有相应操作系统的受测设备中;
启动对所述目标程序在受测设备的自动测试流程,以使所述目标程序在受测设备安装后运行过程中应用所述测试脚本而采集埋点数据提交至数据服务器;
从数据服务器拉取所述的埋点数据,将其格式化结果发送给预设的通信接口。
2.根据权利要求1所述的方法,其特征在于,将目标程序的不同操作系统版本的测试任务对应添加至为不同操作系统分别配置的不同测试队列,包括如下步骤:
响应目标程序的测试任务启动事件,生成第一操作系统和第二操作系统相对应的第一测试任务和第二测试任务;
将所述第一测试任务添加到第一测试队列,将所述第二测试任务添加到第二测试队列;
启动对所述第一测试队列和第二测试队列的出列事件的监听。
3.根据权利要求1所述的方法,其特征在于,响应于任意一个所述的测试队列中测试任务的出列事件,获取相应操作系统版本的所述目标程序的安装包及测试脚本,发送到安装有相应操作系统的受测设备中,包括如下步骤:
接受受测设备与本机建立通信连接,标记各受测设备所安装的操作系统;
响应于任意一个所述的测试队列中测试任务的出列事件,根据该测试队列预关联的操作系统向安装包服务器获取所述目标程序的安装包,向安装有相应操作系统的受测设备发送所述安装包以完成其在该受测设备的安装;
根据该测试队列预关联的操作系统从本地数据库中获取所述目标程序的测试脚本,向已安装所述目标程序的受测设备发送所述测试脚本。
4.根据权利要求1所述的方法,其特征在于,启动对所述目标程序在受测设备的自动测试流程之后,所述受测设备执行如下步骤:
解析执行预先接收的测试脚本,以仿真连串作用于所述目标程序的运行界面的操作事件而实现对该目标程序的测试,根据所述测试脚本的埋点指令采集埋点数据提交至数据服务器;
根据测试脚本的指令控制,监测到所述目标程序处于弹窗阻塞状态时,检测所述弹窗中包含多个特定文本中任意之一的控件,触发该控件的点击事件以消除该弹窗。
5.根据权利要求4所述的方法,其特征在于,解析执行预先接收的测试脚本的步骤中,包括:
根据所述测试脚本的指令中所指定的控件的原始标识,查询随附于所述安装包的对象映射表格,确定与该控件的原始标识相对应的加密标识,以该加密标识代替该原始标识而执行该指令。
6.根据权利要求1所述的方法,其特征在于,从数据服务器拉取所述的埋点数据,将其格式化结果发送给预设的通信接口,包括如下步骤:
从数据服务器拉取所述的埋点数据;
对所述埋点数据进行统计分析,获得分析结果;
将所述分析结果进行格式化,获得格式化结果;
将所述格式化结果发送给预设的通信接口。
7.根据权利要求1所述的方法,其特征在于,本方法还包括如下步骤:
接收受测设备返回的表征完成测试的通知,向该受测设备发送清理指令,以清理在先发送至该受测设备的目标程序的安装包及测试脚本且卸载该目标程序。
8.一种程序多系统测试装置,其特征在于,其包括:
任务分流模块,用于将目标程序的不同操作系统版本的测试任务对应添加至为不同操作系统分别配置的不同测试队列;
任务预备模块,用于响应于任意一个所述的测试队列中测试任务的出列事件,获取相应操作系统版本的所述目标程序的安装包及测试脚本,发送到安装有相应操作系统的受测设备中;
任务执行模块,用于启动对所述目标程序在受测设备的自动测试流程,以使所述目标程序在受测设备安装后运行过程中应用所述测试脚本而采集埋点数据提交至数据服务器;
任务报告模块,用于从数据服务器拉取所述的埋点数据,将其格式化结果发送给预设的通信接口。
9.一种计算机设备,包括中央处理器和存储器,其特征在于,所述中央处理器用于调用运行存储于所述存储器中的计算机程序以执行如权利要求1至7中任意一项所述的程序多系统测试方法的步骤。
10.一种非易失性存储介质,其特征在于,其以计算机可读指令的形式存储有依据权利要求1至7中任意一项所述的方法所实现的计算机程序,该计算机程序被计算机调用运行时,执行相应程序多系统测试的方法所包括的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110885591.5A CN113672502A (zh) | 2021-08-03 | 2021-08-03 | 程序多系统测试方法及其相应的装置、设备、介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110885591.5A CN113672502A (zh) | 2021-08-03 | 2021-08-03 | 程序多系统测试方法及其相应的装置、设备、介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113672502A true CN113672502A (zh) | 2021-11-19 |
Family
ID=78541213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110885591.5A Pending CN113672502A (zh) | 2021-08-03 | 2021-08-03 | 程序多系统测试方法及其相应的装置、设备、介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113672502A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114185812A (zh) * | 2022-01-17 | 2022-03-15 | 创优数字科技(广东)有限公司 | 测试数据构造方法、装置、计算机设备和存储介质 |
CN114416668A (zh) * | 2022-03-29 | 2022-04-29 | 杭州默安科技有限公司 | 一种pkg诱饵文件生成方法和系统 |
CN115934573A (zh) * | 2023-02-28 | 2023-04-07 | 深圳开鸿数字产业发展有限公司 | 自动化测试方法、设备、系统及存储介质 |
-
2021
- 2021-08-03 CN CN202110885591.5A patent/CN113672502A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114185812A (zh) * | 2022-01-17 | 2022-03-15 | 创优数字科技(广东)有限公司 | 测试数据构造方法、装置、计算机设备和存储介质 |
CN114416668A (zh) * | 2022-03-29 | 2022-04-29 | 杭州默安科技有限公司 | 一种pkg诱饵文件生成方法和系统 |
CN114416668B (zh) * | 2022-03-29 | 2022-07-08 | 杭州默安科技有限公司 | 一种pkg诱饵文件生成方法和系统 |
CN115934573A (zh) * | 2023-02-28 | 2023-04-07 | 深圳开鸿数字产业发展有限公司 | 自动化测试方法、设备、系统及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109302522B (zh) | 测试方法、装置以及计算机系统和介质 | |
CN109933522B (zh) | 一种自动化用例的测试方法、测试系统及存储介质 | |
CN113672502A (zh) | 程序多系统测试方法及其相应的装置、设备、介质 | |
US9886375B2 (en) | Automated execution of functional test scripts on a remote system within a unit testing framework | |
US10067863B1 (en) | Feature targeting of test automation lab machines | |
US20150100832A1 (en) | Method and system for selecting and executing test scripts | |
US20150100829A1 (en) | Method and system for selecting and executing test scripts | |
CN107302476B (zh) | 一种测试异步交互系统的自动化测试方法与系统 | |
CN107608901B (zh) | 基于Jmeter的测试方法及装置、存储介质、电子设备 | |
US8855961B2 (en) | Binary definition files | |
CN112306887B (zh) | 程序测试分发方法及其相应的装置、设备、介质 | |
US20150100830A1 (en) | Method and system for selecting and executing test scripts | |
US20150100831A1 (en) | Method and system for selecting and executing test scripts | |
CN109977012B (zh) | 系统的联调测试方法、装置、设备及计算机可读存储介质 | |
CN112631919B (zh) | 一种对比测试方法、装置、计算机设备及存储介质 | |
CN110851471A (zh) | 分布式日志数据处理方法、装置以及系统 | |
CN112199284A (zh) | 程序自动化测试方法及其相应的装置、设备、介质 | |
CN110908708B (zh) | 一种代码发布方法、装置和系统 | |
CN110928796A (zh) | 一种自动化测试平台 | |
CN112199283A (zh) | 程序测试控制、执行方法及其相应的装置、设备、介质 | |
CN111930625A (zh) | 基于云服务平台的日志获取方法、装置及系统 | |
CN113094266B (zh) | 一种容器数据库的故障测试方法、平台及设备 | |
CN112214407B (zh) | 数据校验控制、执行方法及其相应的装置、设备、介质 | |
CN112596750B (zh) | 应用测试方法、装置、电子设备及计算机可读存储介质 | |
CN110795330A (zh) | 一种Monkey压力测试的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |