CN112306884B - 程序测试控制、执行方法及其相应的装置、设备、介质 - Google Patents
程序测试控制、执行方法及其相应的装置、设备、介质 Download PDFInfo
- Publication number
- CN112306884B CN112306884B CN202011244552.9A CN202011244552A CN112306884B CN 112306884 B CN112306884 B CN 112306884B CN 202011244552 A CN202011244552 A CN 202011244552A CN 112306884 B CN112306884 B CN 112306884B
- Authority
- CN
- China
- Prior art keywords
- test
- function
- program
- tested
- execution
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 120
- 238000012360 testing method Methods 0.000 claims abstract description 245
- 238000004891 communication Methods 0.000 claims abstract description 58
- 238000004458 analytical method Methods 0.000 claims abstract description 16
- 230000006870 function Effects 0.000 claims description 232
- 238000013507 mapping Methods 0.000 claims description 60
- 230000008569 process Effects 0.000 claims description 37
- 230000015654 memory Effects 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 14
- 230000005540 biological transmission Effects 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 7
- 230000002441 reversible effect Effects 0.000 claims description 6
- 230000000694 effects Effects 0.000 claims description 5
- 238000012795 verification Methods 0.000 claims description 5
- 230000003993 interaction Effects 0.000 abstract description 30
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 239000012085 test solution Substances 0.000 abstract description 2
- 238000011161 development Methods 0.000 description 12
- 238000009434 installation Methods 0.000 description 11
- 230000009471 action Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 238000010998 test method Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000006978 adaptation Effects 0.000 description 4
- 239000000243 solution Substances 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 238000013522 software testing Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013497 data interchange Methods 0.000 description 1
- 238000007306 functionalization reaction Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
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
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/3696—Methods or tools to render software testable
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
本申请公开一种程序测试控制、执行方法及其相应的装置、设备、介质,所述控制方法包括如下步骤:控制多个受测设备启动其中已安装的目标程序;启动对测试脚本的解析执行,以实施其中所描述的测试流程;根据所述测试流程的执行语句而向各受测设备分别传输所述目标程序的原生函数的调用指令,以控制其中至少两台受测设备的目标程序通过远程服务器相互交换通信数据以实施测试。本申请可以基于SDK层面对应用程序实施自动化测试,同时实现了应用程序的业务交互逻辑的自动化测试解决方案,有助于提高受测应用程序的自动化测试效率。
Description
技术领域
本申请涉及计算机软件测试领域,尤其涉及一种程序测试控制方法、装置及其相应的电子设备和非易失性存储介质,也涉及一种程序测试执行方法、装置,及其相应的电子设备和非易失性存储介质。
背景技术
互联网业务诸如网络直播、即时通信等,其提供给客户端实施人机交互和通信的应用程序和各种中间件更新迭代非常频繁。面对高速迭代的各个开发版本,项目往往需要除黑盒测试外更加可靠的质量保障,而采用基于流程的自动化单元测试周期性对项目进行函数级别的回归,以便在良好的覆盖率下能够持续维护代码逻辑,从而支持项目从容面对快速的版本更新。单元测试是参与项目开发的工程师在项目代码之外建立的白盒测试工程,用于执行项目中的目标函数并校验其状态或者结果。
直播类、即时通信类项目更是提供复杂的多人交互和严格的流程步骤,往往需要多人协作才能完成某一步流程,对于流程的可重现性往往很难,因此,单元测试对此类情况具有更高的适用性。目前常用于测试的现有技术方案中,比如以Junit4为代表的UIAutoMator,Robotium,Expresso,appium等工具,此类工具均停留在基于UI响应点击的自动化测试机制,测试功能受限,其先天上无法针对sdk层面实施接口单元测试。
另一方面,该些工具由于无法实现SDK层面的接口单元测试,仅仅通过UI响应点击的自动化测试机制无法协调多端受测终端设备进行高效业务交互,因此也无法满足开发中台为某些场景下多人互动流程实施逻辑验证的需求。
再一方面,不同的终端设备安装有不同的操作***,不同的操作***支持不同的相应原生语言开发的应用程序,并且,负责实施测试的服务器本身可能也与其他终端设备分别支持不同的语言,这些因素客观上导致测试人员无法统一测试用例编写规范,不利于提高测试用例的编写效率,从而客观上阻碍了实施测试的效率。
针对现有技术存在的影响软件测试的各种问题,有必要探索一些行之有效的解决方案。
发明内容
本申请的目的之一在于解决上述问题至少之一而提供一种程序测试控制方法及其相应的装置、电子设备、非易失性存储介质,以便控制多台受测设备互相配合实施应用程序测试。
本申请的另一目的在于配合前一目的的需要而提供一种程序测试执行方法及其相应的装置、电子设备、非易失性存储介质。
为满足本申请的各个目的,本申请采用如下技术方案:
适应本申请的目的之一而提供的一种程序测试控制方法,其包括如下步骤:
控制多个受测设备启动其中已安装的目标程序;
启动对测试脚本的解析执行,以实施其中所描述的测试流程;
根据所述测试流程的执行语句而向各受测设备分别传输所述目标程序的原生函数的调用指令,以控制其中至少两台受测设备的目标程序通过远程服务器相互交换通信数据以实施测试。
部分实施例中,根据所述测试流程的执行语句而向各受测设备传输所述目标程序的原生函数的调用指令时,针对每台受测设备执行如下具体步骤:
读取测试脚本中为该台受测设备预设的执行语句,从预设的映射表格中确定与该执行语句所指定的映射函数唯一对应的原生函数,以该原生函数携带该执行语句中预先给出的传递给该原生函数的参数值共同构成所述调用指令;
向该台受测设备传输所述调用指令,以驱动该受测设备调用执行其目标程序中由该调用指令指定的原生函数,以通过该原生函数的执行而使受测设备向所述远程服务器上传或下载用于交换的所述通信数据;
获取该原生函数执行后返回的结果数据进行校验,继续与该校验结果相适应的所述测试流程的分支流程。
更具体的实施例中,根据所述测试流程的执行语句而向各受测设备传输所述目标程序的原生函数的调用指令的过程中执行如下步骤的处理:
将该调用指令转换为字符串;
序列化该字符串以形成相应的字节流;
向受测设备传输该字节流以实现该调用指令的传输。
部分实施例中,根据所述测试流程的执行语句而向各受测设备分别传输所述目标程序的原生函数的调用指令的步骤,包括如下具体步骤:
根据所述测试流程中适应第一受测设备而预设的第一类分支流程中的多个执行语句,向第一受测设备传输多个其目标程序中原生函数的调用指令,以使该第一受测设备的目标程序以第一用户身份向远程服务器上传流媒体格式的通信数据;
根据所述测试流程中适应第二受测设备而预设的第二类分支流程中的多个执行语句,向第二受测设备传输多个其目标程序中原生函数的调用指令,以使该第二受测设备的目标程序以第二用户身份从远程服务器下载所述流媒体格式的通信数据。
较佳的实施例中,本方法还包括如下后置步骤:
输出所述测试流程中各受测设备执行其相应的调用指令返回的结果数据。
进一步的实施例中,本方法包括如下前置步骤:
提取所述目标程序的源代码中的注解信息,所述注解信息包含所述的原生函数的执行语句;
执行对所述注解信息的语法分析,根据所述原生函数的函数描述信息生成与其源代码中的原生函数相对应的语法树;
根据该语法树将所述原生函数对应转换为适于在所述测试脚本的执行语句中指代该原生函数的映射函数;
将该原生函数与该映射函数的映射关系数据存储于映射表格以供依据所述执行语句中的映射函数确定其相应的原生函数。
适应本申请的目的之一而提供的一种程序测试执行方法,其包括如下步骤:
启动当前受测设备中已安装的目标程序;
接收主控服务器的调用指令,将其反向为该目标程序的原生函数及该原生函数所对应携带的参数值,所述原生函数被注解为目标程序源代码的注解信息中的函数描述信息;
响应该调用指令而执行该目标程序中的所述原生函数,以所述参数值传参给所述原生函数,以使该目标程序通过远程服务器与其他受测设备交换通信数据以实施测试;
向主控服务器反馈该原生函数执行后获得的结果数据。
部分实施例中,接收主控服务器的调用指令,将其反向为该目标程序的原生函数及该原生函数所对应携带的参数值的步骤,包括如下具体步骤:
从包含该调用指令的数据报文中解析出其字节流;
将该字节流反序列化为字符串;
将所述字符串转换为该调用指令所包含的原生函数及传递给该原生函数的参数值。
进一步的实施例中,响应该调用指令而调用执行该目标程序中的所述原生函数的步骤中,以反射调用或映射调用的方式调用该原生函数。
适应本申请的目的之一而提供的一种程序测试控制装置,其包括:
远程启动模块,用于控制多个受测设备启动其中已安装的目标程序;
流程启动模块,用于启动对测试脚本的解析执行,以实施其中所描述的测试流程;
测试执行模块,用于根据所述测试流程的执行语句而向各受测设备分别传输所述目标程序的原生函数的调用指令,以控制其中至少两台受测设备的目标程序通过远程服务器相互交换通信数据以实施测试。
适应本申请的目的之一而提供的一种程序测试执行装置,其包括:
本地启动模块,用于启动当前受测设备中已安装的目标程序;
反向解析模块,用于接收主控服务器的调用指令,将其反向为该目标程序的原生函数及该原生函数所对应携带的参数值,所述原生函数被注解为目标程序源代码的注解信息中的函数描述信息;
调用执行模块,用于响应该调用指令调用执行该目标程序中的所述原生函数,以所述参数值传参给所述原生函数,以使该目标程序通过远程服务器与其他受测设备交换通信数据以实施测试;
结果反馈模块,用于向主控服务器反馈该原生函数执行后获得的结果数据。
适应本申请的目的之一而提供的一种电子设备,包括中央处理器和存储器,所述中央处理器用于调用运行存储于所述存储器中的计算机程序以执行本申请所述的程序测试控制方法/程序测试执行方法的步骤。
适应本申请的另一目的而提供的一种非易失性存储介质,其以计算机可读指令的形式存储有依据所述的程序测试控制方法/程序测试执行方法所实现的计算机程序,该计算机程序被计算机调用运行时,执行该方法所包括的步骤。
相对于现有技术,本申请的优势如下:
首先,本申请的技术方案适于按照Client/Server实施,当其被应用后,在测试脚本编制的测试流程的作用下,可以通过一台主控服务器分别向多台配合测试的受测设备传输受测设备中目标程序的原生函数的调用指令,通过该些调用指令在受测设备中被响应而控制目标程序相应的原生函数的执行,而得以控制多台受测设备协同测试目标程序的业务逻辑,以此实现对该目标程序的多人交互过程进行测试和校验。
其次,本申请通过在Server端(主控服务器)向Client端(受测设备)发送调用指令给Client端转译成目标程序对应的原生函数指令,便于受测设备反射或者映射调用执行该原生函数,从而模拟复杂的交互场景下用户行为对开发中台SDK的稳定性、可维护性、便利性等影响,为开发中台SDK质量发展指明方向。
此外,本申请允许测试人员将测试流程编写于测试脚本中,将测试流程中用到的原生函数调用指令表述为其中的执行语句,因此,测试人员可以通过编制测试脚本来实现对整个测试流程的把握,便于回归测试,可以快速高效进行繁琐测试,替代人手完成困难或者根本做不到的测试,具有结果一致性和可重复性,使开发中台SDK更有信任度,并且可在多操作***环境下执行。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为实施本申请的技术方案相关的一种典型的部署架构示意图;
图2为本申请的程序测试控制方法的典型实施例的流程示意图;
图3为本申请的程序测试控制方法中步骤S13适应单台受测设备所执行的具体过程的流程示意图;
图4为图3的基础上进一步完善后续步骤而形成的流程示意图;
图5为图3中步骤S132的具体执行过程的流程示意图;
图6为本申请的程序测试控制方法的另一实施例中由其所添加的前置步骤构成的流程示意图;
图7为本申请的程序测试执行方法的典型实施例的流程示意图;
图8为图7中步骤S22的具体过程所形成的流程示意图;
图9为本申请的程序测试控制装置的典型实施例的原理框图;
图10为本申请的程序测试执行装置的典型实施例的原理框图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本技术领域技术人员可以理解,这里所使用的“客户端”、“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,进行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他诸如个人计算机、平板电脑之类的通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;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的控制下执行相关测试。主控服务器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、Java等,其从逻辑上可以借助if、case之类的转向语句形成多个分支流程,从动作上则可通过执行语句来执行,例如通过执行语句来调用一个方法函数。作为其基本功能,这些执行语句的主要任务是负责按照测试流程的需要发起一连串的调用指令,通过将这些调用指令发送给各个相应的受测设备81、82而控制其中的目标程序按需运行从而配合测试。可以理解,测试脚本将繁复的人为操作转换成自动执行的操作命令,大大地减少了测试人员的重复性操作,提高了测试效率。
本领域技术人员对此应当知晓:本申请的各种方法,虽然基于相同的概念而进行描述而使其彼此间呈现共通性,但是,除非特别说明,否则这些方法都是可以独立执行的。同理,对于本申请所揭示的各个实施例而言,均基于同一发明构思而提出,因此,对于相同表述的概念,以及尽管概念表述不同但仅是为了方便而适当变换的概念,应被等同理解。
请参阅图2,本申请的一种程序测试控制方法,由主控服务器侧的应用程序负责执行体现,在其典型实施例中,其包括如下步骤:
步骤S11、控制多个受测设备启动其中已安装的目标程序:
负责运行实现了本方法的应用程序的主控服务器,可以由一部台式机充任,当其运行实现了本方法的应用程序之后,便可和与其连接的受测设备进行通信。
如果所述的受测设备并未安装所述的目标程序,适应这种情况而提供的一种实施例中,可以先行检测受测设备是否安装了所述的目标程序,只有检测到受测设备安装了该目标程序,才通过设备调试指令控制受测设备启动该目标程序;如果受测设备并未安装该目标程序,则需要通过设备调试指令向受测设备传输目标程序的安装包。
所述的设备调试指令,可以适应受测设备所运行的操作***而借助相应的***调试工具来执行,例如对于Android操作***而言,其为主控服务器提供adb调试工具来建立该主控服务器对受测设备的调试控制;对于IOS操作***而言,其同理为主控服务器提供ideviceinstaller工具来实现同等功能。
adb(Android Debug Bridge)是一个通用命令行工具,其允许充当主控服务器的计算机与模拟器实例或连接的Android设备进行通信,可为这些Android设备的管理和操作提供便利,如安装和调试受测设备上的应用程序等。关于利用adb所具有的设备调试命令与Android设备进行通信的具体操作方式,属于本领域技术人员熟知的技术内容,故此处恕不赘述。
同理,ideviceinstaller是一个命令行工具,主要运行于充当主控服务器的计算机,用于管理iOS设备上应用程序的安装与卸载。由于该工具是由操作***配备的开放工具,因此,本领域技术人员对其应用均已知晓,故亦恕不赘述。
此外,其他不同的操作***,一般也会提供类似的命令行工具,以便为充当主控服务器的计算机提供可操控运行该操作***的终端设备的手段。
在通信媒介上,目前多采用USB之类的数据线将所述的主控服务器与所述的受测设备直连的方式来实现,其中Android的adb也可支持无线连接甚至支持基于公共网络的远程连接,无论如何,主控服务器与受测设备通过彼此约定的某个端口例如9000端口之间形成的通信链路,来畅通双方的数据通信。
适应受测设备采用不同操作***的情况,在本步骤中便可采用相应的调试工具,启用通信链路,通过该通信链路向受测设备传输所述目标程序的安装包。
当确认所述安装包已经被受测设备成功接收之后,可以进一步调用安装命令,驱动受测设备执行所述安装包在其本机的安装。
应当理解,以上检测受测设备是否安装所述目标程序的过程,可以通过编程实现为自动化执行的程序代码,以便一旦受测设备成功接入并被识别后,即可响应于用户指令自动执行目标程序的安装包的传输和安装。当然,变通的实施例中,也可以为用户提供手动配置环节,以便用户自行输入各种关于受测设备的配置信息,然后依据这些配置信息建立和启用相应的通信链路,完成目标程序的传输和安装。对此类变通,本领域技术人员应当理解。
在受测设备已经安装了本申请的目标程序的基础上,便可由主控服务器控制受测设备启动该目标程序。举例而言,对于受测设备运行Android操作***的情况,可以通过adb的Start这一设备调试指令来启动该目标程序。为了便于确保本申请的顺利实施,对于各个接入主控服务器的受测设备而言,均可逐一控制这些受测设备启动所述的目标程序。
对于受测设备与主控服务器之间通过公共网络进行交互的情况,两者之间可以通过同一端口进行后续的交互。对于受测设备与主控服务器之间实施非经公共网络进行交互的情况,由于受测设备基于adb的通信通常工作在第一端口,例如向9000端口读取和写入数据,而主控服务器则打开第二端口例如9092端口用于读取和写入数据,因此,在这种情况下,打开受测设备的目标程序后,可以使用adb之类的调试工具的用于重定位的设备调试指令实现受测设备与主控服务器之间端口的重定向,建立起受测设备与主控服务器之间用于后续测试流程的通讯通道。
步骤S12、启动对测试脚本的解析执行,以实施其中所描述的测试流程:
当完成各受测设备中的目标程序的启动之后,主控服务器便可调用预先编写的测试脚本,启动对测试脚本的解析,使之执行其中的执行语句,从而实施其中所描述的测试流程。
由以上关于测试脚本的说明可以知晓,测试脚本本质上是一种由执行语句构成的程序文本,其需适应不同的测试流程进行个性化开发。另一方面,对于频繁迭代的应用程序而言,为其旧版本开发的测试脚本,如果相关业务流程未产生明显变化,通常也适用于对其新版本进行测试,因此,可以通过在主控服务器对测试脚本进行存储管理,来避免测试脚本的重复开发,从而提升软件工程管理效率。当主控服务器需要执行某种测试流程时,由测试人员从已存储的测试脚本库中调用相应的测试脚本即可。
所述的测试流程,主要通过测试脚本中的涉及条件的执行语句诸如if、case等语句来描述和组织,当这些条件语句被解析执行时,因应其条件判断结果的不同,便会相应执行不同的分支流程。正是通过各种条件执行语句的转向作用,测试人员可以依据目标程序在受测设备的运行情况来考察目标程序所设计的业务交互逻辑是否符合测试要求。由于条件执行语句能够依据具体情况而调用相应的分支流程,因此,测试脚本可以通过预设设计的编程思维实现兼容多种测试需求,且可以提升测试流程的容错能力,使得不同受测试的目标程序版本之间的一些细微的差异不至于影响整个测试流程的正常进行。
所述的测试脚本的执行语句,也包括用于产生后续述及的调用指令的一类语句,此类执行语句由测试脚本的开发人员参照目标程序的原生函数编写而成,至于所述原生函数的获取,可参考后续关于为本方法增加前置步骤的实施例的说明。
本步骤调用所述的测试脚本后,逐行解析并执行测试脚本中的执行语句,从而实施对受测设备中的目标程序的测试。
步骤S13、根据所述测试流程的执行语句而向各受测设备分别传输所述目标程序的原生函数的调用指令,以控制其中至少两台受测设备的目标程序通过远程服务器相互交换通信数据以实施测试:
请结合图1,在所述测试脚本被解析执行而实施所述测试流程的过程中,需要分别对多台受测设备发送所述的调用指令,以便控制各台受测设备的目标程序运行,以配合测试。测试流程中包括多个针对各台受测设备的分支流程,同一台受测设备可能由多个适应该台受测设备的同类分支流程发送调用指令实施控制,对于主控服务器而言,往往也需要要在需要彼此交互的受测设备之间来回切换其相应的分支流程,以便通过交叉控制各台受测设备使各台受测设备相互配合实施测试。因此,一台受测设备对应测试脚本中的多个分支流程,多个作用于同一受测设备的分支流程则构成独立的一类分支流程,整个测试流程中的同一类分支流程将作用于同一台受测设备。因此,对于第一受测设备81而言,测试脚本中编写的语句将可能在全文多处出现多个作用于该第一受测设备81的分支流程,所有这此作用于第一受测设备的分支流程便构成作用于第一受测设备81的第一类分支流程,其中的执行语句最终将作用于第一受测设备81。对于第二受测设备82也同理,可通过第二类分支流程对其进行控制。
因此,就所述测试流程的执行顺序而言,为了实现至少两台受测设备的目标程序通过远程服务器相互交换通信数据的效果,本步骤一般会表现出如下的具体步骤:
步骤A、根据所述测试流程中适应第一受测设备81而预设的第一类分支流程中的多个执行语句,向第一受测设备81传输多个其目标程序中原生函数的调用指令,以使该第一受测设备81的目标程序以第一用户身份向远程服务器上传流媒体格式的通信数据。例如,根据测试流程中的第一类分支流程中的第一个分支流程,主控服务器88发送的调用指令使得第一受测设备81的目标程序进行用户A的登录之后,后续会在第二个分支流程的作用下而使用户A作为播控用户进入网络直播开播的状态,开始向远程服务器80(主要是网络直播业务中的媒体服务器)上传其直播流作为用于交换的所述的通信数据,直播流为流媒体格式。当然,实际应用中可能会有更多的交互细节,例如与所述远程服务器80之间进行多次交互所需,这些交互细节有时也可能需要在所述调用指令的作用下才能完成,对于这种情况,自然也会作为相应的分支流程需要预先编写的执行语句而预先编制在测试脚本之中。
步骤B、根据所述测试流程中适应第二受测设备82而预设的第二类分支流程中的多个执行语句,向第二受测设备82传输多个其目标程序中原生函数的调用指令,以使该第二受测设备82的目标程序以第二用户身份从远程服务器下载所述流媒体格式的通信数据:本具体步骤与前一具体步骤同理,其不同之处主要在于第二受测设备82中目标程序由作为观众用户的用户B登录,用户B在所述第二类分支流程的作用下,向所述远程服务器下载由用户A上传的流媒体格式的通信数据,即用户A的直播流,将其在图形用户界面中播放显示。同理,第二受测设备82一般也需要通过第二类分支流程中的多个具体分支流程来配合完成以上的各项功能。
通过以上关于测试流程的具体执行顺序的一种示例性实施方式的揭示,可以知晓,整个测试流程是由测试脚本中的执行语句所定义的,并且,测试流程的各种执行顺序需要适配目标程序的具体业务交互逻辑来灵活安排,但概括而言,主控服务器一般都需要通过与各受测设备相对应的分别多个分支流程来交互执行来实现这些受测设备之间的交互业务逻辑的测试,至于交互过程中的先后顺序,则视目标程序自身固有的业务交互逻辑灵活定制即可。因此,测试流程的具体执行顺序,不至于对本申请的创造精神构成不良影响。不过,在本次揭示的示例性实施方式,是测试脚本描述测试流程的一种有代表性的实施方式,通过这种方式,按照这种方式实施,便可以实现控制多台受测设备中的目标程序相互配合实际关于业务交互逻辑的测试。
测试流程运行过程中,主控服务器88设置有针对每台受测设备的一次指令控制而发挥作用的控制过程,由此标准化以调用指令控制受测设备的过程,使每个涉及调用指令的执行语句被解析执行时,便可调用这一控制过程来向相应的受测设备传输相应的调用指令,从而控制受测设备81、82的目标程序运行而配合一个测试动作。具体而言,请参阅图3,主控服务器将适应每个涉及调用指令的执行语句的执行而针对相应的受测设备执行如下具体步骤:
步骤S131、读取测试脚本中为该台受测设备预设的执行语句,从预设的映射表格中确定与该执行语句所指定的映射函数唯一对应的原生函数,以该原生函数携带该执行语句中预先给出的传递给该原生函数的参数值共同构成所述调用指令:
如前所述,测试脚本所描述的测试流程包括多个分支流程,这些分支流程内部由多个执行语句构成,当测试脚本被运行时,便逐行读取,解析执行。所述的执行语句中,存在一类用于表示调用某台受测设备的目标程序的原生函数的描述信息的执行语句,但是,这一描述信息中,所述的原生函数并不是以目标程序中的原生函数文本形式表述的,而是以主控服务器所能识别的映射函数的文本形式表述的。此外,由于涉及到函数调用,一般需要传递参数值,因此,描述信息中一般也会包括这些参数值。因此,当主控服务器读取测试脚本中的一条为正在接受测试的受测设备预设的执行语句之后,便需要先解析出其中的映射函数及其中的参数值,以便将映射函数转换为该台受测设备中的目标程序的原生函数。
原生函数与映射函数之间的映射关系数据,存在在事先存储的映射表格中,通过查询该映射表格,便可依据一个映射函数查询到与其唯一性对应的原生函数。所述的映射表格可以由开发人员事先配置,由于开发人员、测试人员一般是同一项目的组成人员,因此关于目标程序的原生函数的数据是共享的,所以配置这一映射表格并不存在技术实施上的障碍。该映射表格使得无论受测设备中的原生函数是否符合测试脚本所用的开发语言的规范,只要映射函数所用的开发语言与测试所用的开发语言一致,即可通过所述的映射函数对应其相应的原生函数,从而在主控服务器中间接调用相应的原生函数。关于所述映射表格的制备方式,可以通过相关技术手段自动生成,涉及这些技术手段的介绍,将在后文的其他实施例中进一步揭示,此处暂且不表。
可以理解,主控服务器通过预设的映射表格确定出与其解析的执行语句所指定的映射函数唯一对应的原生函数之后,便可使用该原生函数,使其携带执行语句中给出的所述参数值,由该原生函数与所述参数值共同构成所述的调用指令。
步骤S132、向该台受测设备传输所述调用指令,以驱动该受测设备调用执行其目标程序中由该调用指令指定的原生函数,以通过该原生函数的执行而使受测设备向所述远程服务器上传或下载用于交换的所述通信数据:
当主控服务器构造好用于发送给该台受测设备的调用指令之后,便需要将其发给相应的受测设备,如前所述,主控服务器已经预先通过端口重定向具体与受测设备通信的通道,因此,主控服务器将调用指令写入相应的端口便可将调用指令传输给相应的受测设备。
为了提高测试过程中传输所述调用指令的安全性,一个可以灵活采用的实施例中,请参阅图5,可以采用如下具体步骤来将调用指令传输给相应的受测设备:
步骤S1321、将该调用指令转换为字符串:
可以将该调用指令转换为JSON字符串格式,JSON的全称是”JavaScript ObjectNotation”,即JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。理论上也可采用,XML数据交换格式,本实施例推荐前者。因为XML虽然可以作为跨平台的数据交换格式,但是在JS(JavaScript的简写)中处理XML非常不方便,同时XML标记比数据多,增加了交换产生的流量,而JSON没有附加的任何标记,在JS中可作为对象处理,目前支持Android操作***对Javascript友善的移动终端设备更为普遍,所以本申请更倾向于选择JSON来交换数据。无论采用哪一种格式,只要主控服务器与受测设备之间预先协议好数据交换格式即可。
步骤S1322、序列化该字符串以形成相应的字节流:
对字符串实施序列化可以把字符串所表述的对象转换成有序字节流,以便在网络上传输或。序列化后的字节流保存了Java对象的状态以及相关的描述信息。后续受测设备获得序列化后的对象字节流后,根据字节流中所保存的对象状态及描述信息,便可通过反序列化重建对象。本质上讲,序列化就是把实体对象状态按照一定的格式写入到有序字节流,反序列化就是从有序字节流重建对象,恢复对象状态。序列化机制的核心作用就是对象状态的保存与重建。
步骤S1323、向受测设备传输该字节流以实现该调用指令的传输:
当将调用指令转换为字节流形式后,主控服务器便可将该字节流写入相应的端口,通过主控服务器与该受测设备之间的通讯通道传输至所述的受测设备,从而对受测设备产生控制作用。
通过上述关于向受测设备传输调用指令的实施例的实施,将某一调用指令发送给相应的受测设备之后,受测设备便被该调用指令驱动而控制其中的目标程序的运行。具体而言,受测设备将对其接收到的字节流实施反向操作,将其反序列化成字符串,然后再以字符串构造出相应的函数对象即所述的原生函数,及其参数值,然后通过反射调用或映射调用,调用目标程序的进程中相应的原生函数,让该原生函数引用所述参数值而运行,最终获得相关运行结果数据。因为多台受测设备的目标程序在测试过程中通常是在同一业务交互逻辑的作用下进行交互,因此,其中的原生函数的运行,往往也可能向所述的远程服务器上传或下载相应的通信数据,包括流媒体数据、指令数据、信息数据等,本领域技术人员对此应当理解。
步骤S133、获取该原生函数执行后返回的结果数据进行校验,继续与该校验结果相适应的所述测试流程的分支流程:
某些情况下,需要借助一些if之类的条件转向语句对受测设备依据主控服务器发送的调用指令而执行目标程序的所述原生函数后,相应返回的结果数据进行校验,以便决定后续执行何一分支流程。此处所指的转向执行的分支流程,既可以是与作用于另一台受测设备所需的分支流程,也可以是测试脚本中预设的负责实施异常处理的分支流程,甚至也可以导致直接结束测试脚本的运行,视测试脚本对整个测试流程的设计而定。
由以上的揭示可知,本申请通过步骤S131至步骤S133的执行,将测试脚本中的一个执行语句所形成的调用指令发送至该执行语句所指定的受测设备中,控制所述受测设备执行该调用指令,最终获取相应的执行结果数据。
由以上关于步骤S13的各种情况的具体实施方式的揭示,可以理解,在测试脚本所规范的测试流程的作用下,主控服务器可以通过发送调用指令相继或交叉控制多台受测设备的目标程序相互配合测试该目标程序中设计的业务交互逻辑,整个测试过程通过对测试脚本的解析执行而自动化实施,大大提升测试效率,并且由于主控服务器所发送的调用指令包含了对目标程序的原生函数的指向,因此,主控服务器在测试过程中实现了基于SDK层面的测试控制,不再止步于基于界面点击的测试方式,使自动化测试目标程序内部更为复杂的业务交互逻辑成为可能。
除以上揭示的各种实施例之外,本申请的程序测试控制方法还可通过增设其他步骤来实施,如下继续介绍其他实施情况:
请参阅图4,一种为了利用受测设备执行调用指令后返回的结果数据的实施例中,本申请的程序测试控制方法包括如下后置步骤S134:输出所述测试流程中各受测设备执行其相应的调用指令返回的结果数据。
程序测试分析的工作有时候比较复杂,仅从受测设备的界面表现上有时候很难看出目标程序是否存在某些潜在的问题,因此,当主控服务器向受测设备传输调用指令,受测设备依据该调用指令执行目标程序的相应的原生函数,然后向主控服务器返回该原生函数的执行结果数据之后,主控服务器可以将该结果数据存储到一个本地文件或者远程文件中,以便测试人员后续通过考察该文件中的结果数据来发现问题,甚至可以进一步形成相关的报告,发送到预设的邮箱或即时通信工具的用户处。
另一实施例中,为了为本申请的程序测试控制方法提供前述映射表格,以便依据测试脚本执行语句中的映射函数查询确定其唯一性对应的原生函数,可参阅图6,为该方法增设如下前置步骤:
步骤S101、提取所述目标程序的源代码中的注解信息,所述注解信息包含所述的原生函数的函数描述信息:
所述目标程序在开发的过程中,开发人员可以在其源代码中为之添加注解信息,其中包括将来可能被主控服务器通过调用指令间接调用执行的原生函数的函数描述信息,这些函数描述信息通常包含与原生函数相对应的方法名、参数名列表、参数类型列表、返回值类型等函数描述信息。这些注解信息可以被独立为用于对外暴露源代码中的API的说明文档,由此可直接从该说明文档中提取其中的注解信息。
步骤S102、执行对所述注解信息的语法分析,根据所述原生函数的函数描述信息生成与原生函数相对应的语法树:
在提取所述注解信息的基础上,本步骤可基于语法分析编译原理,对所述注解信息进行分析,先生成相应的分析树,再优化成语法树,由此解析出与原生函数相对应的方法名、参数名列表、参数类型列表、返回值类型等函数描述信息。
步骤S103、根据该语法树将所述原生函数对应转换为适于在所述测试脚本的执行语句中指代该原生函数的映射函数:
开发人员可以预设一协议数据结构,在遵守此一协议数据结构的规范的约束下,将所述原生函数转换为相应的映射函数。由此,每一原生函数均可获得生成其相应的映射函数。由于该映射函数实质上指向其相应的原生函数,因此,后续在测试脚本的执行语句中引用该映射函数,其实质上便是对其相应的原生函数的间接调用。
步骤S104、将该原生函数与该映射函数的映射关系数据存储于映射表格以供依据所述执行语句中的映射函数确定其相应的原生函数:
步骤S101至步骤S103执行之后,便形成了原生函数与其映射函数之间的映射关系数据,将这一映射关系数据存储于一个映射表格中,便可提供给测试脚本在其运行时被引用,利用测试脚本中的执行语句所引用的映射函数查询该映射表格,便可唯一性确定其相对应的原生函数。
映射表格除了可以用于本申请的程序执行控制方法的执行之外,也可服务于测试脚本的开发过程,测试(开发)人员在编写测试脚本的过程中,可以将映射表格所存储的映射函数名称开放给测试人员查询,以便测试人员只需输入个别索引字符便可依据该些索引字符快速显示与该些索引字符相应的映射函数名称和引用方法供测试人员输入,从而提高其编程效率。
可见,通过为本申请的程序执行控制方法增设以上的前置步骤,不仅免于人工组织所述的映射函数,而且可以完善测试脚本的开发支持框架,进一步大大提升了测试脚本的开发效率。
本申请的一种程序测试执行方法,由配合本申请的程序测试控制方法实施的受测设备进行实施,以便配合完成所述目标程序的测试,其工作原理已通过前述关于服务器侧的实现加以披露,为更明晰其详情过程,此处进一步说明。
请参阅图7,本申请的一种程序测试执行方法,在其典型的实施例中,包括如下步骤:
步骤S21、启动当前受测设备中已安装的目标程序:
在本方法得以执行之前,受测设备已经安装了所述的目标程序,测试人员可以自行启动该目标程序,也可由主控服务器通过adb调试工具的设备调试指令来启动。当目标程序在受测设备中运行后,受测设备便可通过一个预设的后台进程接收并响应主控服务器发送的调用指令。
此外,如前一方法所述,受测设备在接受测试时,会按照前一方法的实施例所揭示,先通过有线或无线的方式与所述的主控服务器建立所述的通讯通道便可开始与主控服务器进行数据通信,因此可以接收所述的设备调试指令以受控启动所述的目标程序,以及使得所述后台进程可以接收和响应所述的调用指令。
步骤S22、接收主控服务器的调用指令,将其反向为该目标程序的原生函数及该原生函数所对应携带的参数值,所述原生函数被注解为目标程序源代码的注解信息中的函数描述信息:
受测设备预设的后台进程接收到主控服务器的调用指令之后,便如图8所示按照如下的具体步骤执行反向操作:
步骤S221、从包含该调用指令的数据报文中解析出其字节流:
当主控服务器向受测设备传输调用指令的字节流时,会依照主控服务器与受测设备之间使用的通信协议而封装为数据报文进行传输,因此,本步骤需要先根据这一通信协议将调用指令的字节流从该数据报文中解析出来。
步骤S222、将该字节流反序列化为字符串:
由于在主控设备中,所述字节流是由字符串经过序列化生成的,因此,本步骤需要将其对应反序列化,还原成字符串,例如前述的JSON数据格式的字符串。
步骤S223、将所述字符串转换为该调用指令所包含的原生函数及传递给该原生函数的参数值:
获得所述的字符串后,根据对JSON数据结构协定,便可知晓其中所包含的原生函数,以及传递给该原生函数的参数值,理论上便可据此构造对象,实施后续对目标程序的原生函数的调用。
可以看出,步骤S221至步骤S223的过程是与主控服务器中传输调用指令相反的过程,由此确保主控服务器传输的调用指令可被受测设备的后台进程正确获取。此外,如前所述,目标程序的源代码中一般也会包含各种注解信息,其中也包括所述原生函数的函数描述信息,以便主控服务器可依据该目标程序的安装包中的这些信息用于形成所述的映射表格。
步骤S23、响应该调用指令而执行该目标程序中的所述原生函数,以所述参数值传参给所述原生函数,以使该目标程序通过远程服务器与其他受测设备交换通信数据以实施测试:
后台进程从调用指令中获得所述的原生函数及其相应的参数值之后,便可调用目标程序进程中相应的原生函数,将所述的参数值传递给该原生函数的代码执行,最终获得相应的结果数据。
Android操作***支持Java,而Java支持对程序进程中的原生函数进行反射调用,因而,所述的后台进程可以以反射调用为手段,依据从调用指令获得的原生函数及参数值实施对原生函数的动态调用。
另一种可以代替反射调的方式中,如果目标程序存在函数映射机制,且调用指令给出的原生函数可被此一函数映射机制作为选用执行具体原生函数的依据,使得调用指令给出类似“function_1”这样的指代原生函数的信息,将其连同参数值传输给目标程序进程,目标程序进程依据这一事件,便调用与“function_1”相对应的具体原生函数,这种情况下,所起到的效果与反射调用相同。
步骤S24、向主控服务器反馈该原生函数执行后获得的结果数据:
如前所述,当受测设备完成一个调用指令所对应的原生函数的调用后,便可获得该原生函数运行后获得的运行结果数据,这些结果数据可能包括该原生函数的返回值,也可能包括该原生函数运行是否出错的状态值等,无论何种形式,均可作为所述的结果数据返回给所述的主控服务器,以便提供给测试人员考察调用指令的执行效果。
通过以上关于本申请的程序测试执行方法的揭示可以看出,每台受测设备预设的后台进程均可在主控服务器执行所述的程序测试控制方法的过程中接收主控服务器的调用指令而相应调用该调用指令所指向的目标程序原生函数,并且获得相应的结果。于是,在主控服务器的测试脚本所预设的整个测试流程的作用下,多台这样的受测设备便可交互接收主控服务器的调用指令而推进各自的目标程序的运行,而目标程序在这些控制机理的作用下运行的过程中,与为目标程序开放互联网业务的一个或多个远程服务器进行交互,有的上传其他受测设备的通信数据,有的下载其他受测设备的通信数据,先后交叉协作,形成一个复杂的业务交互流程,而测试人员恰恰可以通过这一由多台受测设备执行的业务交互流程的表现来考察目标程序中预设的业务交互逻辑是否正确,从而达到测试目标程序的目的。
进一步,可以通过将上述各实施例所揭示的方法中的各个步骤进行功能化,构造出本申请的一种程序测试控制装置,按照这一思路,请参阅图9,其中的一个典型实施例中,该装置包括:
远程启动模块11,用于控制多个受测设备启动其中已安装的目标程序;
流程启动模块12,用于启动对测试脚本的解析执行,以实施其中所描述的测试流程;
测试执行模块13,用于根据所述测试流程的执行语句而向各受测设备分别传输所述目标程序的原生函数的调用指令,以控制其中至少两台受测设备的目标程序通过远程服务器相互交换通信数据以实施测试。
进一步,可以通过将上述各实施例所揭示的方法中的各个步骤进行功能化,构造出本申请的一种程序测试执行装置,按照这一思路,请参阅图10,其中的一个典型实施例中,该装置包括:
本地启动模块21,用于启动当前受测设备中已安装的目标程序;
反向解析模块22,用于接收主控服务器的调用指令,将其反向为该目标程序的原生函数及该原生函数所对应携带的参数值,所述原生函数被注解为目标程序源代码的注解信息中的函数描述信息;
调用执行模块23,用于响应该调用指令调用执行该目标程序中的所述原生函数,以所述参数值传参给所述原生函数,以使该目标程序通过远程服务器与其他受测设备交换通信数据以实施测试;
结果反馈模块24,用于向主控服务器反馈该原生函数执行后获得的结果数据。
进一步,为便于本申请的执行,本申请提供一种电子设备,包括中央处理器和存储器,所述中央处理器用于调用运行存储于所述存储器中的计算机程序以执行如前所述的各实施例中所述程序测试控制方法/程序测试执行方法的步骤。
可以看出,存储器适宜采用非易失性存储介质,通过将前述的方法实现为计算机程序,安装到手机或计算机之类电子设备中,相关程序代码和数据便被存储到电子设备的非易失性存储介质中,进一步通过电子设备的中央处理器运行该程序,将其从非易性存储介质中调入内存中运行,便可实现本申请所期望的目的。因此,可以理解,本申请的一个实施例中,还可提供一种非易失性存储介质,其中存储有依据所述的程序测试控制方法/程序测试执行方法各个实施例所实现的计算机程序,该计算机程序被计算机调用运行时,执行该方法所包括的步骤。
综上所述,本申请可以基于SDK层面对应用程序实施自动化测试,同时实现了应用程序的业务交互逻辑的自动化测试解决方案,有助于提高受测应用程序的自动化测试效率。
本技术领域技术人员可以理解,本申请包括涉及用于执行本申请中所述操作、方法中的一项或多项的设备。这些设备可以为所需的目的而专门设计和制造,或者也可以包括通用计算机中的已知设备。这些设备具有存储在其存储器之内的计算机程序,这些计算机程序选择性地激活或重构。这样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指令并分别耦联到总线的任何类型的介质中,所述计算机可读介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随即存储器)、EPROM(ErasableProgrammable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(ElectricallyErasable Programmable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。
本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本申请公开的结构图和/或框图和/或流图的框或多个框中指定的方案。
本技术领域技术人员可以理解,本申请中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本申请中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本申请中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (11)
1.一种程序测试控制方法,其特征在于,应用于主控服务器,包括如下步骤:
控制多个受测设备启动其中已安装的目标程序;
启动对测试脚本的解析执行,以实施其中所描述的测试流程;
根据所述测试流程的执行语句而向各受测设备分别传输所述目标程序的原生函数的调用指令,以控制其中至少两台受测设备的目标程序通过远程服务器相互交换通信数据以实施测试,包括:
根据所述测试流程中适应第一受测设备而预设的第一类分支流程中的多个执行语句,向第一受测设备传输多个其目标程序中原生函数的调用指令,以使该第一受测设备的目标程序以第一用户身份向远程服务器上传流媒体格式的通信数据;
根据所述测试流程中适应第二受测设备而预设的第二类分支流程中的多个执行语句,向第二受测设备传输多个其目标程序中原生函数的调用指令,以使该第二受测设备的目标程序以第二用户身份从远程服务器下载所述流媒体格式的通信数据;
所述根据所述测试流程的执行语句而向各受测设备分别传输所述目标程序的原生函数的调用指令时,针对目标受测设备执行如下具体步骤:
读取测试脚本中为目标受测设备预设的执行语句,从预设的映射表格中确定与该执行语句所指定的映射函数唯一对应的原生函数,以该原生函数携带该执行语句中预先给出的传递给该原生函数的参数值共同构成所述调用指令;
向目标受测设备传输所述调用指令,以驱动目标受测设备调用执行其目标程序中由该调用指令指定的原生函数,以通过该原生函数的执行而使目标受测设备向所述远程服务器上传或下载用于交换的所述通信数据;
获取该原生函数执行后返回的结果数据进行校验,继续与该校验结果相适应的所述测试流程的分支流程。
2.根据权利要求1所述的方法,其特征在于,根据所述测试流程的执行语句而向各受测设备分别传输所述目标程序的原生函数的调用指令的过程中执行如下步骤的处理:
将该调用指令转换为字符串;
序列化该字符串以形成相应的字节流;
向受测设备传输该字节流以实现该调用指令的传输。
3.根据权利要求1所述的方法,其特征在于,还包括如下后置步骤:
输出所述测试流程中各受测设备执行其相应的调用指令返回的结果数据。
4.根据权利要求1至3中任意一项所述的方法,其特征在于,其包括如下前置步骤:
提取所述目标程序的源代码中的注解信息,所述注解信息包含所述的原生函数的函数描述信息;
执行对所述注解信息的语法分析,根据所述原生函数的函数描述信息生成与原生函数相对应的语法树;
根据该语法树将所述原生函数对应转换为适于在所述测试脚本的执行语句中指代该原生函数的映射函数;
将该原生函数与该映射函数的映射关系数据存储于映射表格以供依据所述执行语句中的映射函数确定其相应的原生函数。
5.一种程序测试执行方法,其特征在于,应用于受测设备,包括如下步骤:
受控于主控服务器而启动当前受测设备中已安装的目标程序,所述主控服务器应用如权利要求1至4中任意一项所述的程序测试控制方法;
接收主控服务器的调用指令,将其反向为该目标程序的原生函数及该原生函数所对应携带的参数值,所述原生函数被注解为目标程序源代码的注解信息中的函数描述信息;
响应该调用指令而执行该目标程序中的所述原生函数,以所述参数值传参给所述原生函数,以使该目标程序通过远程服务器与其他受测设备交换通信数据以实施测试;
向主控服务器反馈该原生函数执行后获得的结果数据。
6.根据权利要求5所述的方法,其特征在于,接收主控服务器的调用指令,将其反向为该目标程序的原生函数及该原生函数所对应携带的参数值的步骤,包括如下具体步骤:
从包含该调用指令的数据报文中解析出其字节流;
将该字节流反序列化为字符串;
将所述字符串转换为该调用指令所包含的原生函数及传递给该原生函数的参数值。
7.根据权利要求5所述的方法,其特征在于,响应该调用指令而调用执行该目标程序中的所述原生函数的步骤中,以反射调用或映射调用的方式调用该原生函数。
8.一种程序测试控制装置,其特征在于,应用于主控服务器,实现如权利要求1至4中任意一项所述的程序测试控制方法,包括:
远程启动模块,用于控制多个受测设备启动其中已安装的目标程序;
流程启动模块,用于启动对测试脚本的解析执行,以实施其中所描述的测试流程;
测试执行模块,用于根据所述测试流程的执行语句而向各受测设备分别传输所述目标程序的原生函数的调用指令,以控制其中至少两台受测设备的目标程序通过远程服务器相互交换通信数据以实施测试。
9.一种程序测试执行装置,其特征在于,应用于受测设备,实现如权利要求5至7中任意一项所述的程序测试控制方法,包括:
本地启动模块,用于受控于主控服务器而启动当前受测设备中已安装的目标程序;
反向解析模块,用于接收主控服务器的调用指令,将其反向为该目标程序的原生函数及该原生函数所对应携带的参数值,所述原生函数被注解为目标程序源代码的注解信息中的函数描述信息;
调用执行模块,用于响应该调用指令调用执行该目标程序中的所述原生函数,以所述参数值传参给所述原生函数,以使该目标程序通过远程服务器与其他受测设备交换通信数据以实施测试;
结果反馈模块,用于向主控服务器反馈该原生函数执行后获得的结果数据。
10.一种电子设备,包括中央处理器和存储器,其特征在于,所述中央处理器用于调用运行存储于所述存储器中的计算机程序以执行如权利要求1至7中任意一项所述的方法的步骤。
11.一种非易失性存储介质,其特征在于,其以计算机可读指令的形式存储有依据权利要求1至7中任意一项所述的方法所实现的计算机程序,该计算机程序被计算机调用运行时,执行相应的方法所包括的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011244552.9A CN112306884B (zh) | 2020-11-10 | 2020-11-10 | 程序测试控制、执行方法及其相应的装置、设备、介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011244552.9A CN112306884B (zh) | 2020-11-10 | 2020-11-10 | 程序测试控制、执行方法及其相应的装置、设备、介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112306884A CN112306884A (zh) | 2021-02-02 |
CN112306884B true CN112306884B (zh) | 2024-07-05 |
Family
ID=74325550
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011244552.9A Active CN112306884B (zh) | 2020-11-10 | 2020-11-10 | 程序测试控制、执行方法及其相应的装置、设备、介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112306884B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113051173B (zh) * | 2021-04-13 | 2024-04-19 | 广州虎牙科技有限公司 | 测试流程的编排执行方法、装置、计算机设备和存储介质 |
CN113535591B (zh) * | 2021-09-13 | 2021-12-14 | 季华实验室 | 机器人程序的验证方法、装置、电子设备及存储介质 |
CN113890825B (zh) * | 2021-09-16 | 2023-08-01 | 深圳Tcl新技术有限公司 | 设备的交互升级测试方法、装置、存储介质及电子设备 |
CN113849156B (zh) * | 2021-09-17 | 2022-06-28 | 中国科学院软件研究所 | OpenHarmony操作***应用的无代码智能开发***及其使用方法 |
CN115113613B (zh) * | 2022-08-22 | 2022-11-22 | 江苏邑文微电子科技有限公司 | 设备控制***测试方法、装置、电子设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144850A (zh) * | 2018-07-23 | 2019-01-04 | 上海携程商务有限公司 | 移动终端的交互通信的测试方法及*** |
CN110928775A (zh) * | 2019-11-12 | 2020-03-27 | 许继集团有限公司 | 一种iec61850一致性测试的测试脚本配置方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2539262A (en) * | 2015-06-12 | 2016-12-14 | Micro Focus Ip Dev Ltd | Testing interactive network systems |
CN110022238A (zh) * | 2018-01-08 | 2019-07-16 | 深圳市中兴微电子技术有限公司 | 一种以太网交换芯片的测试方法和装置 |
CN111045931B (zh) * | 2019-11-22 | 2021-01-01 | 腾讯科技(深圳)有限公司 | 应用程序测试方法、装置、设备及存储介质 |
-
2020
- 2020-11-10 CN CN202011244552.9A patent/CN112306884B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144850A (zh) * | 2018-07-23 | 2019-01-04 | 上海携程商务有限公司 | 移动终端的交互通信的测试方法及*** |
CN110928775A (zh) * | 2019-11-12 | 2020-03-27 | 许继集团有限公司 | 一种iec61850一致性测试的测试脚本配置方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112306884A (zh) | 2021-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112306884B (zh) | 程序测试控制、执行方法及其相应的装置、设备、介质 | |
CN107704395B (zh) | 一种基于Openstack下云平台自动化测试实施方法与*** | |
US7895220B2 (en) | Middleware method and apparatus and program storage device adapted for linking data sources to software applications | |
CN108196915B (zh) | 基于应用容器引擎的代码处理方法、设备及存储介质 | |
US9419899B2 (en) | Automated service interface optimization | |
CN107592238A (zh) | 接口的自动测试方法及***、服务终端、存储器 | |
US20170052877A1 (en) | Generic test automation for graphical user interface (gui) applications | |
CN111459539B (zh) | 基于镜像分层的持续集成流水线运行方法及装置 | |
CN103729189B (zh) | 基于lua的播放协议转换方法、***、终端 | |
CN109408247A (zh) | 交互数据处理方法及装置 | |
CN112306887A (zh) | 程序测试分发方法及其相应的装置、设备、介质 | |
CN112925559B (zh) | 资源打包方法、装置、介质及电子设备 | |
CN112114789B (zh) | 一种业务开发方法及设备 | |
US10579366B2 (en) | Data upgrade framework for distributed systems | |
CN113709243B (zh) | 设备远程控制方法及装置、电子设备和存储介质 | |
CN112015384A (zh) | 一种接口映射方法和装置 | |
CN113778897A (zh) | 接口的自动测试方法、装置、设备及存储介质 | |
CN111930625B (zh) | 基于云服务平台的日志获取方法、装置及*** | |
US10606569B2 (en) | Declarative configuration elements | |
CN112328257A (zh) | 代码转换方法及装置 | |
CN112199283A (zh) | 程序测试控制、执行方法及其相应的装置、设备、介质 | |
CN110548285B (zh) | 游戏通信控制方法及装置、介质及电子设备 | |
CN100456710C (zh) | 实现Tclsh指令远程调用的方法和*** | |
CN108920172A (zh) | 用于语音对话平台的程序发布和调用方法及*** | |
CN113505036B (zh) | 一种应用监控方法、客户端和服务器 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |