[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN113806206A - 基于shell进程的兼容测试方法、装置、设备及介质 - Google Patents

基于shell进程的兼容测试方法、装置、设备及介质 Download PDF

Info

Publication number
CN113806206A
CN113806206A CN202010540190.1A CN202010540190A CN113806206A CN 113806206 A CN113806206 A CN 113806206A CN 202010540190 A CN202010540190 A CN 202010540190A CN 113806206 A CN113806206 A CN 113806206A
Authority
CN
China
Prior art keywords
test
shell process
initialization
instruction
class
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
Application number
CN202010540190.1A
Other languages
English (en)
Inventor
李括
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN202010540190.1A priority Critical patent/CN113806206A/zh
Publication of CN113806206A publication Critical patent/CN113806206A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3668Testing of software
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3668Testing of software
    • G06F11/3672Test management
    • G06F11/3688Test 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

本发明公开了一种基于shell进程的兼容测试方法、装置、设备及介质,所述方法包括:在启动shell进程命令后,注册测试服务;在测试服务注册完成后,对自动化测试框架进行初始化;将初始化后的所述自动化测试框架形成为测试平台,并基于所述测试平台对所述自动化测试框架支持的待测功能进行兼容测试。本发明在执行shell命令后,通过注册测试服务和初始化自动化测试框架即可实现自动化框架更新前的测试,实现了更新前后的兼容测试。

Description

基于shell进程的兼容测试方法、装置、设备及介质
技术领域
本发明涉及测试技术领域,尤其涉及一种基于shell进程的兼容测试方法、装置、设备及介质。
背景技术
随着科学技术的发展,自动化测试推陈出新的速度也越来越快,如Google推出的用于UI(User Interface,用户界面)自动化测试的框架Uiautomator由1.0更新为2.0。随着自动化测试框架的更新,Google推出的Android R系统不再支持更新前的自动化测试框架Uiautomator1.0的测试。但是现存大量基于Uiautomator1.0的测试,该类测试难以在短时间内更新为Uiautomator2.0。因此,如何实现基于Uiautomator1.0的兼容测试是亟待解决的技术问题。
发明内容
本发明的主要目的在于提供一种基于shell进程的兼容测试方法、装置、设备及介质,旨在解决现有技术中如何实现基于Uiautomator1.0的兼容测试的技术问题。
为实现上述目的,本发明提供一种基于shell进程的兼容测试方法,所述基于shell进程的兼容测试方法应用于测试平台,所述测试平台包括测试端,以及异步通信的前端和后端,所述基于shell进程的兼容测试方法包括以下步骤:
在启动shell进程命令后,注册测试服务;
在测试服务注册完成后,对自动化测试框架进行初始化;
将初始化后的所述自动化测试框架形成为测试平台,并基于所述测试平台对所述自动化测试框架支持的待测功能进行兼容测试。
可选地,所述在启动shell进程命令后,注册测试服务的步骤包括:
在启动shell进程命令后,根据自动化构造方法,获取自动化测试对象;
基于所述自动化测试对象的预设连接方法连接测试服务,以注册测试服务。
可选地,所述在测试服务注册完成后,对自动化测试框架进行初始化的步骤包括:
在测试服务注册完成后,对与所述自动化测试框架对应的合法设备对象进行设备初始化;
基于设备初始化建立所述合法设备对象和所述自动化测试对象之间的关联关系,完成对自动化测试框架的初始化。
可选地,所述对与所述自动化测试框架对应的合法设备对象进行设备初始化的步骤包括:
获取所述自动化测试框架中未初始化的合法设备对象,并基于反射技术获取预设参数类的目标对象;
获取与所述合法设备对象对应的初始化方法,并基于所述目标对象和所述合法设备对象激活所述初始化方法,以基于所述初始化方法对所述合法设备对象进行设备初始化。
可选地,所述基于反射技术获取预设参数类的目标对象的步骤包括:
基于反射技术确定所述合法设备对象与所述预设参数类对应的源码,并确定与所述源码对应的构造方法;
基于所述构造方法,获取所述源码中类的位置和类的类型,并将所述类的位置和所述类的类型封装为参数集合;
根据所述参数集合,确定所述类的运行构造方法,并将所述类的参数值传入所述运行构造方法,获得所述目标对象。
可选地,所述基于所述目标对象和所述合法设备对象激活所述初始化方法的步骤包括:
接收对所述初始化方法的访问属性进行设置的指令,并根据所述指令将所述访问属性设置为预设属性;
在所述访问属性为预设属性后,将所述目标对象和合法设备对象传输到预设激活命令,以激活所述初始化方法。
可选地,所述接收对所述初始化方法的访问属性进行设置的指令的步骤之后包括:
判断所述指令是否有效,若所述指令有效,则执行根据所述指令将所述访问属性设置为预设属性的步骤;
若所述指令无效,则输出提示信息。
可选地,所述基于所述测试平台对所述自动化测试框架支持的待测功能进行兼容测试的步骤包括:
在所述测试平台中启用反射技术,并基于所述反射技术注册辅助功能;
基于辅助功能获取页面信息,并根据页面信息获取所述待测功能的待测信息;
根据所述测试平台中与自动化测试对象关联的合法设备对象和所述待测信息,对所述待测功能进行兼容测试。
可选地,所述根据所述测试平台中与自动化测试对象关联的合法设备对象和所述待测信息,对所述待测功能进行兼容测试的步骤包括:
基于合法设备对象对所述待测信息进行识别,确定所述待测功能对应的页面显示位置;
基于所述页面显示位置触发测试指令,并获取与所述测试指令对应的页面变化信息;
根据所述页面变化信息,确定所述待测功能的测试结果,完成对所述待测功能的兼容测试。
可选地,所述待测功能包含多项待测子功能,所述基于所述测试平台对所述自动化测试框架支持的待测功能进行兼容测试的步骤之前包括:
接收调整指令,并根据所述调整指令对多项所述待测子功能的排列顺序进行调整,以更新所述待测功能。
进一步地,为实现上述目的,本发明还提供一种基于shell进程的兼容测试装置,所述基于shell进程的兼容测试装置包括:
注册模块,用于在启动shell进程命令后,注册测试服务;
初始化模块,用于在测试服务注册完成后,对自动化测试框架进行初始化;
测试模块,用于将初始化后的所述自动化测试框架形成为测试平台,并基于所述测试平台对所述自动化测试框架支持的待测功能进行兼容测试。
可选地,所述注册模块还包括:
第一获取单元,用于在启动shell进程命令后,根据自动化构造方法,获取自动化测试对象;
连接单元,用于基于所述自动化测试对象的预设连接方法连接测试服务,以注册测试服务。
可选地,所述初始化模块还包括:
初始化单元,用于在测试服务注册完成后,对与所述自动化测试框架对应的合法设备对象进行设备初始化;
建立单元,用于基于设备初始化建立所述合法设备对象和所述自动化测试对象之间的关联关系,完成对自动化测试框架的初始化。
可选地,所述初始化单元还用于:
获取所述自动化测试框架中未初始化的合法设备对象,并基于反射技术获取预设参数类的目标对象;
获取与所述合法设备对象对应的初始化方法,并基于所述目标对象和所述合法设备对象激活所述初始化方法,以基于所述初始化方法对所述合法设备对象进行设备初始化。
可选地,所述初始化单元还用于:
基于反射技术确定所述合法设备对象与所述预设参数类对应的源码,并确定与所述源码对应的构造方法;
基于所述构造方法,获取所述源码中类的位置和类的类型,并将所述类的位置和所述类的类型封装为参数集合;
根据所述参数集合,确定所述类的运行构造方法,并将所述类的参数值传入所述运行构造方法,获得所述目标对象。
可选地,所述初始化单元还用于:
接收对所述初始化方法的访问属性进行设置的指令,并根据所述指令将所述访问属性设置为预设属性;
在所述访问属性为预设属性后,将所述目标对象和合法设备对象传输到预设激活命令,以激活所述初始化方法。
可选地,所述初始化单元还用于:
判断所述指令是否有效,若所述指令有效,则执行根据所述指令将所述访问属性设置为预设属性的步骤;
若所述指令无效,则输出提示信息。
可选地,所述测试模块还包括:
注册单元,用于在所述测试平台中启用反射技术,并基于所述反射技术注册辅助功能;
第二获取单元,用于基于辅助功能获取页面信息,并根据页面信息获取所述待测功能的待测信息;
测试单元,用于根据所述测试平台中与自动化测试对象关联的合法设备对象和所述待测信息,对所述待测功能进行兼容测试。
进一步地,为实现上述目的,本发明还提供一种基于shell进程的兼容测试设备,所述基于shell进程的兼容测试设备包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的基于shell进程的兼容测试程序,所述基于shell进程的兼容测试程序被所述处理器执行时实现如上述所述的基于shell进程的兼容测试方法的步骤。
进一步地,为实现上述目的,本发明还提供一种介质,所述介质上存储有基于shell进程的兼容测试程序,所述基于shell进程的兼容测试程序被处理器执行时实现如上所述的基于shell进程的兼容测试方法的步骤。
本发明的基于shell进程的兼容测试方法、装置、设备和介质,通过执行shell进程命令,来实现基于Uiautomator1.0的兼容测试。在启动shell进程命令后,对测试服务进行注册,并在测试服务注册完成后,对自动化测试框架进行初始化;该初始化完成后的自动化测试框架即形成兼容测试的测试平台,依据该测试平台对自动化测试框架支持的待测功能进行兼容测试。自动化测试框架支持的待测功能即为基于Uiautomator1.0生成的测试,在执行shell命令后,通过注册测试服务和初始化自动化测试框架即可实现自动化框架更新前的测试,避免了因更新自动化测试框架而不支持更新前的测试的问题,实现了更新前后的兼容测试。
附图说明
图1为本发明基于shell进程的兼容测试设备实施例方案涉及的设备硬件运行环境的结构示意图;
图2为本发明基于shell进程的兼容测试方法第一实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明提供一种基于shell进程的兼容测试设备,参照图1,图1为本发明基于shell进程的兼容测试设备实施例方案涉及的设备硬件运行环境的结构示意图。
如图1所示,该基于shell进程的兼容测试设备可以包括:处理器1001,例如CPU,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储设备。
本领域技术人员可以理解,图1中示出的基于shell进程的兼容测试设备的硬件结构并不构成对基于shell进程的兼容测试设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及基于shell进程的兼容测试程序。其中,操作系统是管理和控制基于shell进程的兼容测试设备与软件资源的程序,支持网络通信模块、用户接口模块、基于shell进程的兼容测试程序以及其他程序或软件的运行;网络通信模块用于管理和控制网络接口1004;用户接口模块用于管理和控制用户接口1003。
在图1所示的基于shell进程的兼容测试设备硬件结构中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;处理器1001可以调用存储器1005中存储的基于shell进程的兼容测试程序,并执行以下操作:
在启动shell进程命令后,注册测试服务;
在测试服务注册完成后,对自动化测试框架进行初始化;
将初始化后的所述自动化测试框架形成为测试平台,并基于所述测试平台对所述自动化测试框架支持的待测功能进行兼容测试。
进一步地,所述在启动shell进程命令后,注册测试服务的步骤包括:
在启动shell进程命令后,根据自动化构造方法,获取自动化测试对象;
基于所述自动化测试对象的预设连接方法连接测试服务,以注册测试服务。
进一步地,所述在测试服务注册完成后,对自动化测试框架进行初始化的步骤包括:
在测试服务注册完成后,对与所述自动化测试框架对应的合法设备对象进行设备初始化;
基于设备初始化建立所述合法设备对象和所述自动化测试对象之间的关联关系,完成对自动化测试框架的初始化。
进一步地,所述对与所述自动化测试框架对应的合法设备对象进行设备初始化的步骤包括:
获取所述自动化测试框架中未初始化的合法设备对象,并基于反射技术获取预设参数类的目标对象;
获取与所述合法设备对象对应的初始化方法,并基于所述目标对象和所述合法设备对象激活所述初始化方法,以基于所述初始化方法对所述合法设备对象进行设备初始化。
进一步地,所述基于反射技术获取预设参数类的目标对象的步骤包括:
基于反射技术确定所述合法设备对象与所述预设参数类对应的源码,并确定与所述源码对应的构造方法;
基于所述构造方法,获取所述源码中类的位置和类的类型,并将所述类的位置和所述类的类型封装为参数集合;
根据所述参数集合,确定所述类的运行构造方法,并将所述类的参数值传入所述运行构造方法,获得所述目标对象。
进一步地,所述基于所述目标对象和所述合法设备对象激活所述初始化方法的步骤包括:
接收对所述初始化方法的访问属性进行设置的指令,并根据所述指令将所述访问属性设置为预设属性;
在所述访问属性为预设属性后,将所述目标对象和合法设备对象传输到预设激活命令,以激活所述初始化方法。
进一步地,所述接收对所述初始化方法的访问属性进行设置的指令的步骤之后,处理器1001可以调用存储器1005中存储的基于shell进程的兼容测试程序,并执行以下操作:
判断所述指令是否有效,若所述指令有效,则执行根据所述指令将所述访问属性设置为预设属性的步骤;
若所述指令无效,则输出提示信息。
进一步地,所述基于所述测试平台对所述自动化测试框架支持的待测功能进行兼容测试的步骤包括:
在所述测试平台中启用反射技术,并基于所述反射技术注册辅助功能;
基于辅助功能获取页面信息,并根据页面信息获取所述待测功能的待测信息;
根据所述测试平台中与自动化测试对象关联的合法设备对象和所述待测信息,对所述待测功能进行兼容测试。
进一步地,所述根据所述测试平台中与自动化测试对象关联的合法设备对象和所述待测信息,对所述待测功能进行兼容测试的步骤包括:
基于合法设备对象对所述待测信息进行识别,确定所述待测功能对应的页面显示位置;
基于所述页面显示位置触发测试指令,并获取与所述测试指令对应的页面变化信息;
根据所述页面变化信息,确定所述待测功能的测试结果,完成对所述待测功能的兼容测试。
进一步地,所述待测功能包含多项待测子功能,所述基于所述测试平台对所述自动化测试框架支持的待测功能进行兼容测试的步骤之前,处理器1001可以调用存储器1005中存储的基于shell进程的兼容测试程序,并执行以下操作:
接收调整指令,并根据所述调整指令对多项所述待测子功能的排列顺序进行调整,以更新所述待测功能。
本发明基于shell进程的兼容测试设备的具体实施方式与下述基于shell进程的兼容测试方法各实施例基本相同,在此不再赘述。
本发明还提供一种基于shell进程的兼容测试方法。
参照图2,图2为本发明基于shell进程的兼容测试方法第一实施例的流程示意图。
本发明实施例提供了基于shell进程的兼容测试方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。具体地,本实施例基于shell进程的兼容测试方法包括:
步骤S10,在启动shell进程命令后,注册测试服务;
本实施例中的基于shell进程的兼容测试方法应用于测试服务器,适用于测试服务器在执行shell进程命令后,通过注册测试服务和初始化自动化测试框架来实现自动化框架更新前的兼容UI测试(User interface testing,用户界面测试)。其中,shell是命令行界面的解析器,其自身是一个进程,可以解析命令行,比如分析命令的语法,将变量替换成命令中的值,分析管道符号并创建管道等。shell进程在解析完每个命令行后执行命令,先fork一个子shell进程,然后exec调用命令程序,程序加载后会对子shell进程进行替换,子shell进程因命令出现的进程替换而消失。在通过shell将调用的程序运行之后,进程和内核交互,在进程执行完后,接收进程的退出状态码,避免子进程变成永久的僵尸进程。本实施例的shell进程命令可以是“app_process/system/bin launcher”,在启动执行该shell进程命令后,通过反射调用自动化构造方法,对测试服务进行注册。具体地,在启动shell进程命令后,注册测试服务的步骤包括:
步骤S11,在启动shell进程命令后,根据自动化构造方法,获取自动化测试对象;
步骤S12,基于所述自动化测试对象的预设连接方法连接测试服务,以注册测试服务。
进一步地,在检测到shell进程命令启动之后,先初始化HandlerThread与UiAutomationConnection对象。HandlerThread是轻量级的异步类,用于实现可以实现多线程,避免多次开启线程,并且主要用于实现主线程到子线程的通信。UiAutomationConnection对象是远程对象,从shell中传递给Instrumentation,用于控制某些特权操作,使得shell具有操作权限,但Instrumentation不具有操作权限。该类特权操作需要实现UiAutomation,通过模拟用户动作和执行屏幕检测来实现跨应用的测试。此处的shell实际上是运行am.jar的进程,当通过shell命令运行一个测试时,启动一个shell进程,以调用runInstrument触发测试过程。
更进一步地,在HandlerThread与UiAutomationConnection对象初始化完成后,通过反射技术调用自动化构造方法,以由自动化构造方法,来获取自动化测试对象。其中反射技术(Reflection)是.NET中的重要机制,通过反射技术,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等;还可以获得每个成员的名称、限定符和参数等。在对象的类型编译时未知的情况下,若获得构造函数的信息,即可通过构造函数直接创建对象。本实施例通过反射技术来获得构造函数,并由构造函数形成为构造方法。构造方法是与类同名且无返回值类型的方法,用于对象的创建,完成对象的初始化。本实施例形成的构造方法为自动化构造方法,即UiAutomation构造方法,根据该构造方法传入HandlerThread和UiAutomationConnection对象,即可获得自动化测试对象。并且,该自动化测试对象用UiAutomation对象表示。
进一步地,依据自动化测试对象的预设连接方法来连接测试服务,其中预设连接方法优选为UiAutomation对象的connect方法。通过该预设连接方法来连接测试服务,完成shell进程的测试服务初始化,实现测试服务注册。连接测试服务,完成初始化后,通过自动化构造方法所获得的自动化测试对象,即UiAutomation对象,来实现UI测试操作。
其中,上述注册测试服务的过程,可通过以下代码实现:
Figure BDA0002537845740000101
Figure BDA0002537845740000111
步骤S20,在测试服务注册完成后,对自动化测试框架进行初始化;
更进一步地,在测试服务注册完成后,即对自动化测试框架UiAutomator1.0进行初始化。因UiAutomator 1.0测试框架是通过UIDevice来实现自动化测试,因此可通过在Shell进程内部初始化合法的UIDevice对象,来实现UiAutomator1.0接口的正常调用,以此实现自动化测试框架的初始化。其中,UiDevice在测试中可以通过UiDevice对象来模拟对设备的控制,如点亮屏幕、锁屏、旋转方向、截图等,或者触发home键、back键、menu键等。但对UIDevice初始化的方法以及初始化所需参数的构造方法都是隐藏的,故本实施通过反射技术来对UIDevice初始化,由UIDevice的初始化,实现自动化测试框架的初始化,对UiAutomator1.0接口的正常调用。通过调用UiAutomator1.0接口实现测试流程,进行兼容测试。
步骤S30,将初始化后的所述自动化测试框架形成为测试平台,并基于所述测试平台对所述自动化测试框架支持的待测功能进行兼容测试。
进一步地,在自动化测试框架初始化完成后,将自动化测试框架形成为测试平台,进而通过测试平台对自动化测试框架所支持的待测功能进行兼容测试。自动化测试框架支持的待测功能即为基于Uiautomator1.0生成的测试,通过测试平台对该类测试进行测试,实现对自动化测试框架更新前后的兼容测试。
可理解地,测试涉及的内容众多,各项内容之间可能具有逻辑关系,也可能不具有逻辑关系,如登录操作和浏览网页操作之间即不具有逻辑关系,但登录操作和修改登录信息之间则具有逻辑关系。对于具有逻辑关系的内容测试,测试的前后顺序不能变化,即只有在登录操作测试成功后,才能进行修改登录信息的测试。但是对于不具有逻辑关系的内容测试,则测试的前后顺序可以依据需求调整;如先测试登录操作后测试浏览网页操作,或者先测试浏览网页操作后测试登录操作等。将具有测试需求的各项内容作为待测功能所包含的多项待测子功能,在依据测试平台对待测功能进行兼容测试前,先判断是否具有对待测功能中各项待测子功能的调整需求。具体地,基于测试平台对自动化测试框架支持的待测功能进行兼容测试的步骤之前包括:
步骤S31,接收调整指令,并根据所述调整指令对多项所述待测子功能的排列顺序进行调整,以更新所述待测功能。
进一步地,设定预设间隔时间,判断在该预设时间内是否接收到调整指令。若接收到调整指令,表征对各项待测子功能之间测试前后顺序具有调整需求时,先依据调整指令对各项待测子功能的排列顺序进行调整,通过调整对待测功能进行更新,再对更新后的各项待测子功能进行测试。排列在前的待测子功能先测试,排列在后的待测子功能后测试,用排列顺序体现测试顺序。若未接收到调整指令,则默认不需要对各项待测子功能的测试顺序进行调整,以各项待测子功能原始的排列顺序进行测试。此外,也可通过输出提示信息的方式来触发调整指令,提示信息以对话框的方式输出,至少包含需要调整和不需要调整两个选项。若选择需要调整选项则触发调整指令,依据调整指令对各项待测子功能的排列顺序调整,实现对待测功能更新后进行测试。反之若选择不需要调整选项则不触发调整指令,以各项待测子功能原始的排列顺序进行测试。
本发明的基于shell进程的兼容测试方法,通过执行shell进程命令,来实现基于Uiautomator1.0的兼容测试。在启动shell进程命令后,对测试服务进行注册,并在测试服务注册完成后,对自动化测试框架进行初始化;该初始化完成后的自动化测试框架即形成兼容测试的测试平台,依据该测试平台对自动化测试框架支持的待测功能进行兼容测试。自动化测试框架支持的待测功能即为基于Uiautomator1.0生成的测试,在执行shell命令后,通过注册测试服务和初始化自动化测试框架即可实现自动化框架更新前的测试,避免了因更新自动化测试框架而不支持更新前的测试的问题,实现了更新前后的兼容测试。
进一步地,基于本发明基于shell进程的兼容测试方法的第一实施例,提出本发明基于shell进程的兼容测试方法第二实施例。
所述基于shell进程的兼容测试方法第二实施例与所述基于shell进程的兼容测试方法第一实施例的区别在于,所述在测试服务注册完成后,对自动化测试框架进行初始化的步骤包括:
步骤S21,在测试服务注册完成后,对与所述自动化测试框架对应的合法设备对象进行设备初始化;
本实施通过反射技术实现对自动化框架的初始化。具体地,因自动化测试框架的初始化,可通过在Shell进程内部初始化合法的UIDevice对象,来正常调用UiAutomator1.0接口实现。故将合法的UIDevice对象作为与自动化测试框架对应的合法设备对象,在测试服务注册完成后,通过对该合法设备对象的设备初始化,来实现自动化测试框架的初始化。具体地,对与自动化测试框架对应的合法设备对象进行设备初始化的步骤包括:
步骤S211,获取所述自动化测试框架中未初始化的合法设备对象,并基于反射技术获取预设参数类的目标对象;
进一步地,通过UiDevice的静态方法getInstance(),获取自动化测试框架中未初始化的合法设备对象,即合法的UIDevice对象。进而通过反射技术获取构造方法,由构造方法确定初始化需求的参数,由参数确定预设参数类的目标对象进行初始化。具体地,基于反射技术获取预设参数类的目标对象的步骤包括:
步骤a1,基于反射技术确定所述合法设备对象与所述预设参数类对应的源码,并确定与所述源码对应的构造方法;
步骤a2,基于所述构造方法,获取所述源码中类的位置和类的类型,并将所述类的位置和所述类的类型封装为参数集合;
步骤a3,根据所述参数集合,确定所述类的运行构造方法,并将所述类的参数值传入所述运行构造方法,获得所述目标对象。
更进一步地,将参数ShellUiAutomatorBridge作为预设参数类,通过反射技术获取其对象object作为目标对象。具体地,通过反射基础确定合法设备对象在预设参数类型上的源码,进而查找该源码的构造方法。通过查找到的构造方法,对源码中类的位置以及类的类型进行获取,并对获取的类的位置和类的类型进行封装,得到参数集合。进而依据参数集合,对源码运行时的构造方法进行确定,并将该源码运行时的构造方法设为类的运行构造方法,进而将类的参数值传入到运行构造方法中,得到目标对象。
其中,上述对目标对象的获取,可通过以下代码实现:
Class[]parameterTypes=new Class[1];
Object[]parameterValues=new Object[1];
//构造方法的参数集合
parameterTypes[0]=UiAutomation.class;
//构造方法的参数值
parameterValues[0]=mUiAutomation;
//通过类名获取类对象
Class clazz=
Class.forName("com.android.uiautomator.core.ShellUiAutomatorBridge");
//通过反射获取构造方法,并调用构造方法获取对象实例(即目标对象)
final Object object=
clazz.getConstructor(parameterTypes).newInstance(parameterValues);
步骤S212,获取与所述合法设备对象对应的初始化方法,并基于所述目标对象和所述合法设备对象激活所述初始化方法,以基于所述初始化方法对所述合法设备对象进行设备初始化。
进一步地,将UiDevice的initialize方法作为与合法设备对象对应的初始化方法进行获取。在获取过程中,先获取该方法参数列表,再获取方法参数值,该参数值其实质为目标对象。进而通过该方法的参数列表来获取初始化方法。此后,结合目标对象和合法设备对象激活该初始化方法,通过激活的初始化方法对合法设备对象进行设备初始化。其中,通过目标对象和合法设备对象对初始化方法的激活,其实质为将目标对象和合法设备对象传输到预设激活命令中,对初始化方法进行参数化的过程。并且,预设激活命令优选为预先设定的invoke命令。具体地,基于目标对象和合法设备对象激活初始化方法的步骤包括:
步骤b1,接收对所述初始化方法的访问属性进行设置的指令,并根据所述指令将所述访问属性设置为预设属性;
步骤b2,在所述访问属性为预设属性后,将所述目标对象和合法设备对象传输到预设激活命令,以激活所述初始化方法。
更进一步地,在对初始化方法进行参数化之前,先对初始化方法的访问属性进行设置。具体地,接收对初始化方法的访问属性进行设置的指令,并依据该指令将访问属性设置为预设属性,预设属性为true属性。即指令为携带true属性的指令,通过该指令将访问属性设置为true。在将访问属性设置为预设属性后,将目标对象和合法设备对象传输到预设激活命令中,通过预设激活命令对初始化方法激活,即实现初始化方法的参数化。
可理解地,兼容测试过程中对访问属性所设置的预设属性为特定的true属性,其他的属性并不能实现兼容测试,对于此本实施例设置对指令中所携带预设属性的有效性进行检测的机制。具体地,接收对初始化方法的访问属性进行设置的指令的步骤之后包括:
步骤c1,判断所述指令是否有效,若所述指令有效,则执行根据所述指令将所述访问属性设置为预设属性的步骤;
步骤c2,若所述指令无效,则输出提示信息。
进一步地,通过检测指令中所携带预设属性是否为true属性来判断指令的有效性;若携带的预设属性为true属性,则判定指令有效,则根据该指令将访问属性设置为预设属性,即true属性。若携带的预设属性非true属性,则判定指令无效,输出提示信息,以提醒对访问属性进行有效性设置,将访问属性设置为预设属性,以在预设属性的基础上,对初始化方法进行参数化。
其中,上述对合法设备对象进行设备初始化的过程,可通过以下代码实现:
//获取方法参数列表
parameterTypes[0]=
Class.forName("com.android.uiautomator.core.UiAutomatorBridge");
//获取方法参数值
parameterValues[0]=object;
//使用方法参数获取初始化方法
Method initMetho=
uiDevice.getClass().getMethod("initialize",parameterTypes);
//设置访问属性为true
initMetho.setAccessible(true);
//使用方法参数值和uiDevice对象调用方法
initMetho.invoke(uiDevice,parameterValues);
步骤S22,基于设备初始化建立所述合法设备对象和所述自动化测试对象之间的关联关系,完成对自动化测试框架的初始化。
更进一步地,在对合法设备对象进行设备初始化,即初始化合法的UIDevice对象之后,在合法设备对象和自动化测试对象之间建立关联关系,即建立合法的UIDevice对象与UiAutomation对象之间的关联关系。以此,在将自动化测试对象连接测试服务后,通过自动化测试框架中经设备初始化的合法设备对象和自动化测试对象之间的关联关系,将自动化测试框架中合法设备对象连接到测试服务,以便于通过合法设备对象进行测试,完成对自动化测试框架的初始化。测试过程中,由与合法设备对象关联的自动化测试对象,调用UiAutomator1.0接口,实现兼容测试。
本实施通过反射技术实现自动化框架的初始化,以便于初始化完成后形成测试平台,对自动化测试框架更新前支持的待测功能进行兼容测试。测试时使用Android系统app_process命令启动apk文件,通过指定实现main方法的launcher类运行程序。命令中将/system/framework/uiautomator.jar信息添加到CLASSPATH中,以便于加载uiautomator测试依赖。在执行命令时,从launcher类的静态main方法开始执行,在main方法内部先进行Shell进程注册测试服务,再进行Shell进程初始化自动化测试框架操作,进而调用业务测试用例即可实现兼容测试。
进一步地,基于本发明基于shell进程的兼容测试方法的第一或第二实施例,提出本发明基于shell进程的兼容测试方法第三实施例。
所述基于shell进程的兼容测试方法第三实施例与所述基于shell进程的兼容测试方法第一或第二实施例的区别在于,所述基于所述测试平台对所述自动化测试框架支持的待测功能进行兼容测试的步骤包括:
步骤S31,在所述测试平台中启用反射技术,并基于所述反射技术注册辅助功能;
步骤S32,基于辅助功能获取页面信息,并根据页面信息获取所述待测功能的待测信息;
步骤S33,根据所述测试平台中与自动化测试对象关联的合法设备对象和所述待测信息,对所述待测功能进行兼容测试。
本实施在将自动化测试框架形成为测试平台后,通过测试平台进行兼容测试。具体地,通过由自动化测试框架所形成的测试平台启动反射技术,并通过反射技术来注册辅助功能(AccessibilityService)。辅助功能是Android系统提供的服务,本身是继承Service类的,服务提供了增强的用户界面。提供的功能包括查找界面元素和实现模拟点击,本实施例通过提供的查找节点与模拟点击相关的接口实现权限节点的查找与点击,进而实现自动测试。
进一步地,通过注册的辅助功能中的查找界面元素功能来获取页面信息,并且获取的页面信息至少包括页面结构信息和页面视图组建的属性信息。其中,对于页面结构,由各个具体视图组件按照层级方式进行组合显示,属于xml结构化信息。对于视图组件,包含具体属性信息,比如页面显示的文本信息(text)、程序指定的资源id(resource-id)、应用程序包名(package)、组件类名(class)、描述信息(content-desc)、屏幕坐标信息(bounds)、操作属性等。通过该类页面信息查找所需要测试功能的坐标位置、包含的文本信息等,将查找的该类信息作为待测功能的待测信息进行获取。进而依据测试平台中与自动化测试对象关联的合法设备对象和待测信息,对待测功能进行测试。具体地,根据测试平台中与自动化测试对象关联的合法设备对象和待测信息,对待测功能进行兼容测试的步骤包括:
步骤S331,基于合法设备对象对所述待测信息进行识别,确定所述待测功能对应的页面显示位置;
步骤S332,基于所述页面显示位置触发测试指令,并获取与所述测试指令对应的页面变化信息;
步骤S333,根据所述页面变化信息,确定所述待测功能的测试结果,完成对所述待测功能的兼容测试。
更进一步地,通过合法设备对象对待测信息进行识别,识别出待测信息中包含的坐标位置,并依据该坐标位置确定待测功能在显示界面中的页面显示位置。进而通过对该页面显示位置模拟点击来触发测试指令,同时获取显示界面对测试指令响应,得到与测试指令对应的页面变化信息。此外,预先针对待测功能设置预期响应信息,将页面变化信息和预期响应信息进行对比。若两者之间的相似度大于预设阈值,则判定实际响应与预期响应之间的差异性较小,待测功能的测试成功。反之若页面变化信息与预期响应信息之间的相似度小于预设阈值,则判定实际响应与预期响应之间的差异性较大,待测功能的测试失败。以此实现依据页面变化信息,确定待测功能的测试结果,完成对待测功能的兼容测试。
本实施例在形成测试平台后,通过反射技术所注册的辅助功能,实现了自动化的兼容测试,支持更新前自动化测试框架的测试,有利于更新前后自动化框架的兼容使用。
本发明还提供一种基于shell进程的兼容测试装置。所述基于shell进程的兼容测试装置包括:
注册模块,用于在启动shell进程命令后,注册测试服务;
初始化模块,用于在测试服务注册完成后,对自动化测试框架进行初始化;
测试模块,用于将初始化后的所述自动化测试框架形成为测试平台,并基于所述测试平台对所述自动化测试框架支持的待测功能进行兼容测试。
进一步地,所述注册模块还包括:
第一获取单元,用于在启动shell进程命令后,根据自动化构造方法,获取自动化测试对象;
连接单元,用于基于所述自动化测试对象的预设连接方法连接测试服务,以注册测试服务。
进一步地,所述初始化模块还包括:
初始化单元,用于在测试服务注册完成后,对与所述自动化测试框架对应的合法设备对象进行设备初始化;
建立单元,用于基于设备初始化建立所述合法设备对象和所述自动化测试对象之间的关联关系,完成对自动化测试框架的初始化。
进一步地,所述初始化单元还用于:
获取所述自动化测试框架中未初始化的合法设备对象,并基于反射技术获取预设参数类的目标对象;
获取与所述合法设备对象对应的初始化方法,并基于所述目标对象和所述合法设备对象激活所述初始化方法,以基于所述初始化方法对所述合法设备对象进行设备初始化。
进一步地,所述初始化单元还用于:
基于反射技术确定所述合法设备对象与所述预设参数类对应的源码,并确定与所述源码对应的构造方法;
基于所述构造方法,获取所述源码中类的位置和类的类型,并将所述类的位置和所述类的类型封装为参数集合;
根据所述参数集合,确定所述类的运行构造方法,并将所述类的参数值传入所述运行构造方法,获得所述目标对象。
进一步地,所述初始化单元还用于:
接收对所述初始化方法的访问属性进行设置的指令,并根据所述指令将所述访问属性设置为预设属性;
在所述访问属性为预设属性后,将所述目标对象和合法设备对象传输到预设激活命令,以激活所述初始化方法。
进一步地,所述初始化单元还用于:
判断所述指令是否有效,若所述指令有效,则执行根据所述指令将所述访问属性设置为预设属性的步骤;
若所述指令无效,则输出提示信息。
进一步地,所述测试模块还包括:
注册单元,用于在所述测试平台中启用反射技术,并基于所述反射技术注册辅助功能;
第二获取单元,用于基于辅助功能获取页面信息,并根据页面信息获取所述待测功能的待测信息;
测试单元,用于根据所述测试平台中与自动化测试对象关联的合法设备对象和所述待测信息,对所述待测功能进行兼容测试。
进一步地,所述测试单元还用于:
基于合法设备对象对所述待测信息进行识别,确定所述待测功能对应的页面显示位置;
基于所述页面显示位置触发测试指令,并获取与所述测试指令对应的页面变化信息;
根据所述页面变化信息,确定所述待测功能的测试结果,完成对所述待测功能的兼容测试。
进一步地,所述待测功能包含多项待测子功能,所述基于shell进程的兼容测试装置还包括:
接收模块,用于接收调整指令,并根据所述调整指令对多项所述待测子功能的排列顺序进行调整,以更新所述待测功能。
本发明基于shell进程的兼容测试装置具体实施方式与上述基于shell进程的兼容测试方法各实施例基本相同,在此不再赘述。
此外,本发明实施例还提出一种介质。
介质上存储有基于shell进程的兼容测试程序,基于shell进程的兼容测试程序被处理器执行时实现如上所述的基于shell进程的兼容测试方法的步骤。
本发明介质可以为计算机可读存储介质,其具体实施方式与上述基于shell进程的兼容测试方法各实施例基本相同,在此不再赘述。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,这些均属于本发明的保护之内。

Claims (10)

1.一种基于shell进程的兼容测试方法,其特征在于,所述基于shell进程的兼容测试方法包括以下步骤:
在启动shell进程命令后,注册测试服务;
在测试服务注册完成后,对自动化测试框架进行初始化;
将初始化后的所述自动化测试框架形成为测试平台,并基于所述测试平台对所述自动化测试框架支持的待测功能进行兼容测试。
2.如权利要求1所述的基于shell进程的兼容测试方法,其特征在于,所述在启动shell进程命令后,注册测试服务的步骤包括:
在启动shell进程命令后,根据自动化构造方法,获取自动化测试对象;
基于所述自动化测试对象的预设连接方法连接测试服务,以注册测试服务。
3.如权利要求2所述的基于shell进程的兼容测试方法,其特征在于,所述在测试服务注册完成后,对自动化测试框架进行初始化的步骤包括:
在测试服务注册完成后,对与所述自动化测试框架对应的合法设备对象进行设备初始化;
基于设备初始化建立所述合法设备对象和所述自动化测试对象之间的关联关系,完成对自动化测试框架的初始化。
4.如权利要求3所述的基于shell进程的兼容测试方法,其特征在于,所述对与所述自动化测试框架对应的合法设备对象进行设备初始化的步骤包括:
获取所述自动化测试框架中未初始化的合法设备对象,并基于反射技术获取预设参数类的目标对象;
获取与所述合法设备对象对应的初始化方法,并基于所述目标对象和所述合法设备对象激活所述初始化方法,以基于所述初始化方法对所述合法设备对象进行设备初始化。
5.如权利要求4所述的基于shell进程的兼容测试方法,其特征在于,所述基于反射技术获取预设参数类的目标对象的步骤包括:
基于反射技术确定所述合法设备对象与所述预设参数类对应的源码,并确定与所述源码对应的构造方法;
基于所述构造方法,获取所述源码中类的位置和类的类型,并将所述类的位置和所述类的类型封装为参数集合;
根据所述参数集合,确定所述类的运行构造方法,并将所述类的参数值传入所述运行构造方法,获得所述目标对象。
6.如权利要求4所述的基于shell进程的兼容测试方法,其特征在于,所述基于所述目标对象和所述合法设备对象激活所述初始化方法的步骤包括:
接收对所述初始化方法的访问属性进行设置的指令,并根据所述指令将所述访问属性设置为预设属性;
在所述访问属性为预设属性后,将所述目标对象和合法设备对象传输到预设激活命令,以激活所述初始化方法。
7.如权利要求6所述的基于shell进程的兼容测试方法,其特征在于,所述接收对所述初始化方法的访问属性进行设置的指令的步骤之后包括:
判断所述指令是否有效,若所述指令有效,则执行根据所述指令将所述访问属性设置为预设属性的步骤;
若所述指令无效,则输出提示信息。
8.一种基于shell进程的兼容测试装置,其特征在于,所述基于shell进程的兼容测试装置包括:
注册模块,用于在启动shell进程命令后,注册测试服务;
初始化模块,用于在测试服务注册完成后,对自动化测试框架进行初始化;
测试模块,用于将初始化后的所述自动化测试框架形成为测试平台,并基于所述测试平台对所述自动化测试框架支持的待测功能进行兼容测试。
9.一种基于shell进程的兼容测试设备,其特征在于,所述基于shell进程的兼容测试设备包括测试端、以及异步通信的前端和后端,还包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的基于shell进程的兼容测试程序,所述基于shell进程的兼容测试程序被所述处理器执行时实现如权利要求1-7中任一项所述的基于shell进程的兼容测试方法的步骤。
10.一种介质,其特征在于,所述介质上存储有基于shell进程的兼容测试程序,所述基于shell进程的兼容测试程序被处理器执行时实现如权利要求1-7中任一项所述的基于shell进程的兼容测试方法的步骤。
CN202010540190.1A 2020-06-12 2020-06-12 基于shell进程的兼容测试方法、装置、设备及介质 Pending CN113806206A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010540190.1A CN113806206A (zh) 2020-06-12 2020-06-12 基于shell进程的兼容测试方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010540190.1A CN113806206A (zh) 2020-06-12 2020-06-12 基于shell进程的兼容测试方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN113806206A true CN113806206A (zh) 2021-12-17

Family

ID=78892312

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010540190.1A Pending CN113806206A (zh) 2020-06-12 2020-06-12 基于shell进程的兼容测试方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN113806206A (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104484176A (zh) * 2014-12-16 2015-04-01 北京奇虎科技有限公司 一种安卓系统窗口对象获取方法和装置
CN106021101A (zh) * 2016-05-16 2016-10-12 北京奇虎科技有限公司 对移动终端进行测试的方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104484176A (zh) * 2014-12-16 2015-04-01 北京奇虎科技有限公司 一种安卓系统窗口对象获取方法和装置
CN106021101A (zh) * 2016-05-16 2016-10-12 北京奇虎科技有限公司 对移动终端进行测试的方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
榴莲ALICE: ""Android自动化测试框架UIAutomator原理浅析"", pages 1, Retrieved from the Internet <URL:《https://www.cnblogs.com/aliceyang/p/11962718.html》> *
聆风牧雨: ""Uiautomator1.0与Uiautomator2.0测试项目搭建与运行原理"", pages 3 - 21, Retrieved from the Internet <URL:《https://www.cnblogs.com/walker-world/p/12521079.html》> *

Similar Documents

Publication Publication Date Title
US11960912B2 (en) Methods for user interface generation and application modification
US7908580B2 (en) Connecting an integrated development environment with an application instance
US6668370B1 (en) Synchronous execution of object-oriented scripts and procedural code from within an interactive test facility
US8640104B2 (en) Computer method and apparatus for debugging in a dynamic computer language
US8850388B2 (en) Controlling application features
US8108834B2 (en) Defining and executing processes using declarative programming language constructs
US20030149799A1 (en) System supporting unified event handling in ECMAScript
US8543994B2 (en) Developing java server components without restarting the application server
US8515876B2 (en) Dry-run design time environment
US7882492B2 (en) Intelligent computer program debugger, and system and method for implementing the same
US8615750B1 (en) Optimizing application compiling
US10209968B2 (en) Application compiling
CN110187910B (zh) 一种热更新方法、装置、设备及计算机可读存储介质
US20090089756A1 (en) Visual debugger for declarative/data-flow applications
US10949220B2 (en) Object-oriented programming system and library
KR20140023971A (ko) 고도로 동시적인 처리 작업들의 등록 및 실행
CN110765746B (zh) 基于事件代理的表单自动生成方法和系统
CN111880804A (zh) 应用程序代码的处理方法及装置
US7533114B2 (en) Mobile device having extensible software for presenting server-side applications, software and methods
CN113760397A (zh) 接口调用的处理方法、装置、设备及存储介质
CN113806206A (zh) 基于shell进程的兼容测试方法、装置、设备及介质
CN100419711C (zh) 一种服务调试命令发射器及其处理方法
Rasche et al. Dynamic updates of graphical components in the. Net framework
Neeft models help testers finding bugs?
CN118113545A (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