CN114428735A - 一种用于自动化测试的方法、设备、介质及程序产品 - Google Patents
一种用于自动化测试的方法、设备、介质及程序产品 Download PDFInfo
- Publication number
- CN114428735A CN114428735A CN202210066620.XA CN202210066620A CN114428735A CN 114428735 A CN114428735 A CN 114428735A CN 202210066620 A CN202210066620 A CN 202210066620A CN 114428735 A CN114428735 A CN 114428735A
- Authority
- CN
- China
- Prior art keywords
- test
- key
- native
- configuration file
- value pair
- 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
- 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/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
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自动化测试,相比于手工测试,自动化测试更方便可靠,可运行更多、更繁琐的测试,且快速高效,能够执行一些手工测试执行相当困难或者做不到的测试,如大量的用户并发,能够更好的利用资源,具有一致性和可重复性的特点,自动化测试脚本完全可复用。
发明内容
本申请的一个目的是提供一种用于自动化测试的方法、设备、介质及程序产品。
根据本申请的一个方面,提供了一种用于自动化测试的方法,该方法包括:
在基于自动化测试服务的第一测试脚本中获得第一设备对象,将一个或多个测试用例中的每个测试用例对应的配置文件引入所述第一设备对象,其中,所述配置文件包括一个或多个键值对字符串,所述一个或多个键值对字符串对应关于该测试用例的一个或多个原生测试表达式,所述第一设备对象用于初始化与所述第一设备连接的第二设备对应的第二设备对象;
通过所述第一设备对象将所述配置文件转换成基于所述第二设备对象对所述一个或多个原生测试表达式的调用;
运行所述第一测试脚本,以执行所述一个或多个原生测试表达式对应的测试操作。
根据本申请的一个方面,提供了一种用于自动化测试的第一设备,该设备包括:
一一模块,用于在基于自动化测试服务的第一测试脚本中获得第一设备对象,将一个或多个测试用例中的每个测试用例对应的配置文件引入所述第一设备对象,其中,所述配置文件包括一个或多个键值对字符串,所述一个或多个键值对字符串对应关于该测试用例的一个或多个原生测试表达式,所述第一设备对象用于初始化与所述第一设备连接的第二设备对应的第二设备对象;
一二模块,用于通过所述第一设备对象将所述配置文件转换成基于所述第二设备对象对所述一个或多个原生测试表达式的调用;
一三模块,用于运行所述第一测试脚本,以执行所述一个或多个原生测试表达式对应的测试操作。
根据本申请的一个方面,提供了一种用于自动化测试的计算机设备,包括存储器、处理器及存储在存储器上的计算机程序,其中,所述处理器执行所述计算机程序以实现如上所述任一方法的操作。
根据本申请的一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如上所述任一方法的操作。
根据本申请的一个方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上所述任一方法的步骤。
与现有技术相比,本申请通过在基于自动化测试服务的第一测试脚本中获得第一设备对象,将一个或多个测试用例中的每个测试用例对应的配置文件引入所述第一设备对象,其中,所述配置文件包括一个或多个键值对字符串,所述一个或多个键值对字符串对应关于该测试用例的一个或多个原生测试表达式,所述第一设备对象用于初始化与所述第一设备连接的第二设备对应的第二设备对象;通过所述第一设备对象将所述配置文件转换成基于所述第二设备对象对所述一个或多个原生测试表达式的调用;运行所述第一测试脚本,以执行所述一个或多个原生测试表达式对应的测试操作,从而通过把自动化测试脚本设计为配置文件(例如,json配置文件),测试人员在配置文件中维护流程化的界面元素和操作方法即可完成测试执行,相比于传统的自动化测试脚本(例如,python脚本),本方案为APP自动化测试的用例写法,提供了新的方式可供选择,更具灵活性,通过测试用例配置化,实现部分业务代码(功能块,比如:登录流程,登出流程,充值流程,提现流程,绑卡流程,等等)和配置文件的剥离,可拓展性强,如需特殊处理,直接复制修改一份配置文件,即可满足特定的业务功能需求,测试用例通过配置文件来维护,非常方便后期更改。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个实施例的一种用于自动化测试的方法流程图;
图2示出根据本申请一个实施例的一种用于自动化测试的第一设备结构图;
图3示出可被用于实施本申请中所述的各个实施例的示例性系统。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(例如,中央处理器(Central Processing Unit,CPU))、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RandomAccess Memory,RAM)和/或非易失性内存等形式,如只读存储器(Read Only Memory,ROM)或闪存(Flash Memory)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(Phase-Change Memory,PCM)、可编程随机存取存储器(Programmable Random Access Memory,PRAM)、静态随机存取存储器(Static Random-Access Memory,SRAM)、动态随机存取存储器(Dynamic Random AccessMemory,DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、数字多功能光盘(Digital Versatile Disc,DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
本申请所指设备包括但不限于终端、网络设备、或终端与网络设备通过网络相集成所构成的设备。所述终端包括但不限于任何一种可与用户进行人机交互(例如通过触摸板进行人机交互)的移动电子产品,例如智能手机、平板电脑等,所述移动电子产品可以采用任意操作系统,如Android操作系统、iOS操作系统等。其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑器件(Programmable Logic Device,PLD)、现场可编程门阵列(Field ProgrammableGate Array,FPGA)、数字信号处理器(Digital Signal Processor,DSP)、嵌入式设备等。所述网络设备包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。优选地,所述设备还可以是运行于所述终端、网络设备、或终端与网络设备、网络设备、触摸终端或网络设备与触摸终端通过网络相集成所构成的设备上的程序。
当然,本领域技术人员应能理解上述设备仅为举例,其他现有的或今后可能出现的设备如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
在本申请的描述中,“多个”的含义是两个或者更多,除非另有明确具体的限定。
图1示出根据本申请一个实施例的一种用于自动化测试的方法流程图,该方法包括步骤S11、步骤S12和步骤S13。在步骤S11中,第一设备在基于自动化测试服务的第一测试脚本中获得第一设备对象,将一个或多个测试用例中的每个测试用例对应的配置文件引入所述第一设备对象,其中,所述配置文件包括一个或多个键值对字符串,所述一个或多个键值对字符串对应关于该测试用例的一个或多个原生测试表达式,所述第一设备对象用于初始化与所述第一设备连接的第二设备对应的第二设备对象;在步骤S12中,第一设备通过所述第一设备对象将所述配置文件转换成基于所述第二设备对象对所述一个或多个原生测试表达式的调用;在步骤S13中,第一设备运行所述第一测试脚本,以执行所述一个或多个原生测试表达式对应的测试操作。
在步骤S11中,第一设备在基于自动化测试服务的第一测试脚本中获得第一设备对象,将一个或多个测试用例中的每个测试用例对应的配置文件引入所述第一设备对象,其中,所述配置文件包括一个或多个键值对字符串,所述一个或多个键值对字符串对应关于该测试用例的一个或多个原生测试表达式,所述第一设备对象用于初始化与所述第一设备连接的第二设备对应的第二设备对象。在一些实施例中,第一设备是指测试设备,用于维护和运行自动化测试脚本,包括但不限于手机、电脑等终端,可以是网络设备(服务器),也可以是用户设备,第二设备是指被测试的设备,包括但不限于手机、平板电脑等移动终端,通常是用户设备。在一些实施例中,第一设备可以通过有线方式(例如,usb)连接第二设备,或者,第一设备还可以通过无线方式(例如,wifi)连接第二设备。在一些实施例中,自动化测试服务包括但不限于任何通过自动化控制被测设备来对被测设备进行测试的服务,例如UiAutomator服务,UiAutomator是Google提供的用来做安卓自动化测试的一个Java库,需要运行在安卓手机上,基于Accessibility服务,可以对手机上的App进行测试,获取手机屏幕上任意一个APP的任意一个控件,并对其进行任意操作。在一些实施例中,在第二设备上安装并运行了一个http远程调用服务(即http rpc服务),该http rpc服务封装了UiAutomator服务,将UiAutomator中的功能开放出来,屏蔽不同用户设备的系统差异,开放出统一的http接口供使用,然后再将这些http接口封装成Python库(例如,UiAutomato r2服务),通过在第一设备上安装UiAutomator2服务,UiAutomator2服务会将用户基于该Python库编写的自动化测试脚本所执行每个测试操作转换成一个对http rpc服务的http请求,http rpc服务接收并解析这些http请求,然后调用UiAutomator的api来实现对第二设备的自动控制。在一些实施例中,在第一设备上安装自动化控制服务前,需要先在该第一设备上搭建python环境。在一些实施例中,需要在第二设备上安装atx-agent(守护进程),然后通过atx-agent启动http rpc服务并进行监听,监听第一设备发送过来的http请求并将其转发给http rpc服务。在一些实施例中,需要在自动化测试脚本中创建第一设备对象,该第一设备对象对与第一设备连接的第二设备对应的第二设备对象进行了封装,在该第一设备对象中会创建并初始化该第二设备对象,具体地,通过调用UiAutomator2服务提供的connect方法,将第二设备的设备标识信息传入该connect方法,该connect方法的输出结果就是第二设备对应的第二设备对象,其中,若第二设备通过wifi连接第一设备,则可以将第二设备的IP地址作为第二设备的设备标识信息,若第二设备通过usb连接第一设备,则可以将第二设备的设备序列号作为第二设备的设备标识信息。在一些实施例中,一个测试用例对应一个功能流程或一个业务页面,每个测试对应一个配置文件,例如,json配置文件。在一些实施例中,配置文件可以存放在测试项目的data文件夹下。在一些实施例中,每个配置文件中包括一个或多个键值对字符串,每个键值对字符串中包括至少一个键(key)及每个键对应的值(value),例如,键值对字符串可以是“"do":"click_exists","element":{"resourceId":"com.snda.wifilocating:id/wifipay_enter_advert_close"}”。在一些实施例中,配置文件中会将每个键值对字符串用预定的符号(例如,大括号)括起来,以区分不同的键值对字符串。在一些实施例中,还会通过换行的方式来区分不同的键值对字符串,即配置文件中的每行最多只有一个键值对字符串,不同的键值对字符串位于配置文件中的不同行。在一些实施例中,可以直接在配置文件中创建该一个或多个键值对字符串。在一些实施例中,第一测试脚本是自动化测试脚本,通常是python脚本,自动化测试脚本中可以包括原生测试表达式即原生python脚本语言,该自动化测试脚本是基于自动化测试服务(例如,UiAutomator2服务)的,即该自动化测试脚本可以通过调用自动化测试服务所提供或开放的接口,来完成自动化测试的功能,即通过自动化控制第二设备来对第二设备进行测试。在一些实施例中,可以在自动化测试脚本中调用该第一设备对象提供的第一预定接口,将每个测试用例对应的配置文件通过该第一预定接口传入或引入第一设备对象,其中,可以根据实际的测试业务逻辑需要执行一个或多个测试用例。在一些实施例中,某个测试用例对应的配置文件中的每个键值对字符串对应关于该测试用例的一个原生测试表达式,其中,原生测试表达式是指通过调用UiAutomator2服务编写的原生python表达式,例如,原生测试表达式可以是“d(resourceId="com.snda.wifilocating:id/wifipay_enter_advert_close").click_exists()”,该原生测试表达式所对应的键值对字符串为“"do":"click_exists","element":{"resourceId":"com.snda.wifilocating:id/wifipay_enter_advert_close"}”。
在步骤S12中,第一设备通过所述第一设备对象将所述配置文件转换成基于所述第二设备对象对所述一个或多个原生测试表达式的调用。在一些实施例中,可以通过调用该第一设备对象提供的第二预定接口(例如,do_element接口),该第二预定接口的输入参数为键值对字符串,从而将该配置文件中的每个键值对字符串转换成基于第二设备对象对该键值对字符串所对应的原生测试表达式的调用,例如,可以直接在自动化测试脚本中调用该第二预定接口,或者,还可以在第一预定接口(例如,actions接口)的内部实现中调用该第二预定接口。例如,配置文件中的某个键值对字符串为“element":{"resourceId":"com.snda.wifilocating:id/wifipay_enter_advert_close"}”,通过第一设备对象提供的接口,将该键值对字符串转换成基于第二设备对象调用该该键值对字符串所对应的原生测试表达式的可执行代码,例如“d(resourceId="com.snda.wifilocating:id/wifipay_enter_advert_close").click_exists()”,其中,d为第二设备对象。
在步骤S13中,第一设备运行所述第一测试脚本,以执行所述一个或多个原生测试表达式对应的测试操作。在一些实施例中,在第一设备上运行该自动化测试脚本,以执行一个或多个测试用例中的每个测试用例所对应的一个或多个原生测试表达式对应的测试操作,该测试操作用于获取第二设备当前屏幕上所呈现的至少一个控件,并针对该至少一个控件进行至少一个自动化操作。在一些实施例中,自动化测试脚本会在自动化平台后端代码调用下有序的执行测试操作。本申请通过把自动化测试脚本设计为配置文件(例如,json配置文件),测试人员在配置文件中维护流程化的界面元素和操作方法即可完成测试执行,相比于传统的自动化测试脚本(例如,python脚本),本方案为APP自动化测试的用例写法,提供了新的方式可供选择,更具灵活性,通过测试用例配置化,实现部分业务代码(功能块,比如:登录流程,登出流程,充值流程,提现流程,绑卡流程,等等)和配置文件的剥离,可拓展性强,如需特殊处理,直接复制修改一份配置文件,即可满足特定的业务功能需求,测试用例通过配置文件来维护,非常方便后期更改。
在一些实施例中,所述方法还包括:第一设备基于所述自动化测试服务,创建所述一个或多个测试用例中的每个测试用例对应的一个或多个原生测试表达式;将所述一个或多个原生测试表达式转换成该测试用例对应的配置文件。在一些实施例中,先创建每个测试用例对应的一个或多个原生测试表达式,其中,原生测试表达式是指通过调用UiAutomator2服务编写的原生python表达式。在一些实施例中,响应于测试用户针对该一个或多个原生测试表达式发起的转换操作,将该一个或多个原生测试表达式转换成该测试用例对应的配置文件,其中,该配置文件中包括一个或多个键值对字符串,每个键值对字符串对应该一个或多个原生测试表达式中的其中一个原生测试表达式。
在一些实施例中,所述基于所述自动化测试服务,创建所述一个或多个测试用例中的每个测试用例对应的一个或多个原生测试表达式,包括:在基于所述自动化测试服务的第二测试脚本中创建所述一个或多个测试用例中的每个测试用例对应的一个或多个原生测试表达式;其中,所述将所述一个或多个原生测试表达式转换成该测试用例对应的配置文件包括:对所述第二测试脚本进行转换,得到该测试用例对应的配置文件,其中,所述配置文件包括一个或多个键值对字符串,每个键值对字符串对应一个原生测试表达式。在一些实施例中,可以先创建一个python测试脚本文件(第二测试脚本),每个测试用例对应一个python测试脚本文件,然后在该python测试脚本文件中创建该测试用例对应的一个或多个原生测试表达式,响应于测试用户针对该python测试脚本文件发起的转换操作,将该python测试脚本文件转换成该测试用例对应的配置文件,其中,该配置文件中包括一个或多个键值对字符串,每个键值对字符串对应该python测试脚本文件中的其中一个原生测试表达式。
在一些实施例中,所述将所述一个或多个原生测试表达式转换成该测试用例对应的配置文件,包括:对于所述一个或多个原生测试表达式中的每个原生测试表达式,基于该原生测试表达式向预定的转换接口发起请求;接收所述转换接口返回的该原生测试表达式对应的键值对字符串;根据所述每个原生测试表达式对应的键值对字符串,生成该测试用例对应的配置文件。在一些实施例中,对于一个或多个原生测试表达式中的每个原生测试表达式,基于该原生测试表达式向预定的转换接口发起请求,例如,该转换接口可以是“local_ip:6666/convertJson”。在一些实施例中,若该转换接口是get请求接口,则可以直接将该原生测试表达式添加到该转换接口的URL地址的后面,例如“local_ip:6666/convertJson?expression=原生测试表达式”,若该转换接口是post请求接口,则可以将该原生测试表达式添加到该转换接口的请求体(request body)中。在一些实施例中,该转换接口会返回该原生测试表达式对应的键值对字符串,然后根据每个原生测试表达式对应的键值对字符串,生成该测试用例对应的配置文件,其中,该配置文件中包括一个或多个键值对字符串,每个键值对字符串对应该一个或多个原生测试表达式中的其中一个原生测试表达式。
在一些实施例中,所述转换接口用于对该原生测试表达式进行正则匹配得到一个或多个匹配对象,通过对所述一个或多个匹配对象进行解析,得到至少一个键信息及对应的至少一个值信息,通过对所述至少一个键信息及所述至少一个值信息进行组装,得到该原生测试表达式对应的键值对字符串。在一些实施例中,该转换接口用于对该原生测试表达式进行正则匹配得到一个或多个匹配对象,例如,该原生测试表达式为“d(resourceId="com.snda.wi filocating:id/wk_et_input_phonenumber").set_text(“15121163862”)”,通过对该原生测试表达式进行正则匹配得到的匹配对象包括“resourceId="com.snda.wifilocating:id/wk_et_input_phonenumber"”、“.set_text”、“15121163862”,通过对这几个匹配对象进行解析,得到至少一个键信息及对应的至少一个值信息,该至少一个键信息包括“element”、“do”、“args”,“element”对应的值信息为“{“resourceId”:“com.snda.wifilocating:id/wk_et_input_phonenumber”}”,“do”对应的值信息为“set_text”,“args”对应的值信息为“15121163862”,然后过对该至少一个键信息及该至少一个值信息进行组装,得到该原生测试表达式对应的键值对字符串,例如“{“do”:“set_text”,“element”:{“resourceId”:“com.snda.wifilocating:id/wk_et_input_phonenumber”},“args”:“15121163862”}”。
在一些实施例中,所述至少一个键信息包括元素类型键信息、操作类型键信息和/或操作参数键信息。在一些实施例中,元素类型键信息为一个预定的字符,例如“element”,若识别到该原生测试表达式中包括预定的关键词(例如,text、textContains、textMatches、textStartsWith、className、className Matches、resourceId,、resourceIdMatches、instance、xpath),则可以确定该至少一个键信息包括元素类型键信息“element”,“element”对应的值信息为该原生测试表达式中该关键词所对应的字符信息,例如,该原生测试表达式为“d(resourceId="com.snda.wifilocating:id/wk_et_input_phonenumber").set_text(“15121163862”)”,由于该原生测试表达式中包括关键词“resourceId”,因此该原生测试表达式对应的至少一个键信息包括元素类型键信息“element”,“element”对应的值信息为该原生测试表达式中“resourceId”所对应的字符信息即“com.snda.wifilocating:id/wk_et_input_phonenumber”。在一些实施例中,操作类型键信息为一个预定的字符,例如“do”,若识别到该原生测试表达式中包括预定的方法(例如,click、click_exists、click_gone、clear_text、send_keys、set_text、swipe、sleep、scroll、fling,、keyboard_keys),则可以该至少一个键信息包括操作类型键信息“do”,“do”对应的值信息即为该方法的方法名,例如,该原生测试表达式为“d(resourceId="com.snda.wifilocating:id/wk_et_input_phonenumber").set_text(“15121163862”)”,由于该原生测试表达式中包括方法“set_text”,因此该原生测试表达式对应的至少一个键信息包括操作类型键信息“do”,“do”对应的值信息为“set_text”。在一些实施例中,操作参数键信息为一个预定的字符,例如“args”,若识别到该原生测试表达式中包括预定的方法,且该方法是带参方法,即该方法是包含传入参数的,则可以确定该至少一个键信息包括操作参数键信息“args”,“args”对应的值信息即为该方法的传入参数,例如,该原生测试表达式为“d(resourceId="com.snda.wifilocating:id/wk_et_input_phonenumber").set_text(“15121163862”)”,由于该原生测试表达式中包括方法“set_text”,且该方法包含传入参数“15121163862”,因此该原生测试表达式对应的至少一个键信息包括操作参数键信息“args”,“do”对应的值信息为“15121163862”。
在一些实施例中,所述将一个或多个测试用例中的每个测试用例对应的配置文件引入所述第一设备对象,包括:通过调用所述第一设备对象的第一方法,将一个或多个测试用例中的每个测试用例对应的配置文件引入所述第一设备对象,其中,所述第一方法的输入为所述配置文件的文件标识信息。在一些实施例中,可以通过调用该第一设备对象提供的第一方法(例如,actions方法),该第一方法的输入参数为配置文件的文件标识信息(例如,文件名称,或者,文件路径),从而将每个测试用例对应的配置文件引入第一设备对象,例如,Driver.actions(“login.json”),其中,Driver为第一设备对象,login.json是某个测试用例对应的配置文件的文件名称。
在一些实施例中,所述在基于自动化测试服务的第一测试脚本中获得第一设备对象,包括:在基于自动化测试服务的第一测试脚本中创建第一设备对象。在一些实施例中,需要在自动化测试脚本中创建第一设备对象,例如,第一设备对象的类名为“AndroidDriver”,则可以在自动化测试脚本中通过“Driver=AndroidDriver()”来创建第一设备对象Driver。
在一些实施例中,所述在基于自动化测试服务的第一测试脚本中获得第一设备对象,包括:从基于自动化测试服务的第一测试脚本的全局变量中获取第一设备对象;其中,所述方法还包括:第一设备在所述第一测试脚本中创建所述第一设备对象,并将所述第一设备对象存入所述第一测试脚本的全局变量中。在一些实施例中,可以先在自动化测试脚本中创建第一设备对象,然后将该第一设备对象存入该自动化测试脚本的全局变量中,后续需要获取该第一设备对象的时候可以直接从该自动化测试脚本的全局变量中取出该第一设备对象。例如,第一设备对象的类名为“AndroidDriver”,则可以在自动化测试脚本中通过“Driver=AndroidDriver()”来创建第一设备对象Driver,并通过“set_Driver(Driver)”将该第一设备对象Driver存入全局变量,后续需要获取该第一设备对象的时候可以通过“Driver=get_Driver()”来从全局变量中取出该第一设备对象Driver。在一些实施例中,这里的set_Driver()和get_Driver()方法定义在测试项目的framework公共方法库中供测试项目调用。
在一些实施例中,所述步骤S12包括:第一设备通过所述第一设备对象加载所述配置文件中的一个或多个键值对字符串,通过对所述一个或多个键值对字符串进行解析,将所述一个或多个键值对字符串转换成基于所述第二设备对象对所述一个或多个原生测试表达式的调用。在一些实施例中,可以在第一设备对象中依次加载该配置文件中的每个键值对字符串,并基于预定的解析规则对每个键值对字符串进行解析,根据解析结果将该键值对字符串转换成基于第二设备对象调用该该键值对字符串所对应的原生测试表达式的可执行代码,例如,键值对字符串为“"do":"click_exists","element":{"resour ceId":"com.snda.wifilocating:id/wifipay_enter_advert_close"}””,该键值对字符串对应的可执行代码为“d(resourceId="com.snda.wifilocating:id/wifipay_enter_advert_close").click_exists()”,其中,d为第二设备对象。
在一些实施例中,所述通过对所述一个或多个键值对字符串进行解析,将所述一个或多个键值对字符串转换成基于所述第二设备对象对所述一个或多个原生测试表达式的调用,包括:对于所述一个或多个键值对字符串中的每个键值对字符串,通过对该键值对字符串进行解析,从该键值对字符串中获得至少一个键信息及对应的至少一个值信息;基于所述第二设备对象,根据所述至少一个键信息及所述至少一个值信息,将该键值对字符串转换成对一个原生测试表达式的调用。在一些实施例中,每个键值对字符串中包括至少一个键值对,即至少一个键(key)及每个键对应的值(value)。在一些实施例中,从每个键值对字符串中解析出至少一个键信息及对应的至少一个值信息,然后基于该第二设备对象,并根据该至少一个键信息及该至少一个值信息,将该键值对字符串转换成基于第二设备对象调用该该键值对字符串所对应的原生测试表达式的可执行代码,例如,键值对字符串为“"do":"click_exists","element":{"resourceId":"com.snda.wifilocating:id/wifipay_enter_advert_close"}”,从该键值对字符串解析出键信息“do”及其对应的值信息“click_exists”、键信息“element”及其对应的值信息“{"resourceId":"com.snda.wifilocating:id/wifipay_enter_advert_close"}”,然后基于第二设备对象d,并根据该两个键信息及每个键信息对应的值信息,将该键值对字符串转换成基于第二设备对象调用该该键值对字符串所对应的原生测试表达式的可执行代码,例如“d(resourceId="com.snda.wifilocating:id/wifipay_enter_advert_close").click_exists()”。
在一些实施例中,所述至少一个键信息包括元素类型键信息、操作类型键信息和/或操作参数键信息;其中,所述基于所述第二设备对象,根据所述至少一个键信息及所述至少一个值信息,将该键值对字符串转换成对一个原生测试表达式的调用,包括:基于所述第二设备对象,根据所述元素类型键信息对应的第一值信息,获得对应的UI组件对象;基于所述UI组件对象,根据所述操作类型键信息对应的第二值信息和/或所述操作参数键信息对应的第三值信息,将该键值对字符串转换成针对所述UI组件对象调用目标方法,其中,所述目标方法的方法名为所述第二值信息,所述目标方法的传入参数为所述第三值信息。在一些实施例中,元素类型键信息为一个预定的字符,例如“element”,操作类型键信息为一个预定的字符,例如“do”,操作参数键信息为一个预定的字符,例如“args”。在一些实施例中,键值对字符串为“{“do”:“set_text”,“element”:{“resourceId”:“com.snda.wifilocating:id/wk_et_input_phonenumber”},“args”:“15121163862”}”,从该键值对字符串解析出键信息“do”及其对应的值信息“set_text”、键信息“element”及其对应的值信息“{“resourceId”:“com.snda.wifilocating:id/wk_et_input_phonenumber”}”、键信息“args”及其对应的值信息“15121163862”。在一些实施例中,基于第二设备对象d,根据元素类型键信息“element”对应的第一值信息“{“resourceId”:“com.snda.wifilocating:id/wk_et_input_phonenumber”}”,获得对应的UI组件对象,例如,通过“d(resourceId="com.snda.wifilocating:id/wk_et_input_phonenumber")”来获得对应的UI组件对象,然后基于该UI组件对象,根据操作类型键信息“do”对应的第二值信息“set_text”及操作参数键信息“args”对应的第三值信息“15121163862”,将该该键值对字符串转换成针对该UI组件对象调用目标方法的可执行代码,目标方法的方法名为“set_text”,目标方法的传入参数为“15121163862”,即该可执行代码为“d(resourceId="com.snda.wifilocating:id/wk_et_input_phonenumber").set_text(“15121163862”)”。在一些实施例中,若该至少一个键信息中不包括操作参数键信息(例如,“args”),则基于所述UI组件对象,仅根据所述操作类型键信息对应的第二值信息,将该键值对字符串转换成针对所述UI组件对象调用目标方法,其中,所述目标方法的方法名为所述第二值信息,所述目标方法为无参方法,即所述目标方法不存在传入参数,例如,键值对字符串为“"do":"click_exists","element":{"resourceId":"com.snda.wifilocating:id/wifipay_enter_advert_close"}”,从该键值对字符串解析出操作类型键信息“do”及其对应的值信息“click_exists”、元素类型键信息“element”及其对应的值信息“{"resourceId":"com.snda.wifilocating:id/wifipay_enter_advert_close"}”,然后基于第二设备对象d,根据元素类型键信息“element”对应的第一值信息“{"resourceId":"com.snda.wifilocating:id/wifipay_enter_advert_close"}”,获得对应的UI组件对象,例如,通过“d(resourceId="com.snda.wifilocating:id/wifipay_enter_advert_close")”来获得对应的UI组件对象,然后基于该UI组件对象,根据操作类型键信息“do”对应的第二值信息“click_exists”,将该该键值对字符串转换成针对该UI组件对象调用目标方法的可执行代码,目标方法的方法名为“click_exists”,目标方法为无参方法,即该可执行代码为“d(resourceId="com.snda.wifilocating:id/wifipay_enter_advert_close").click_exists()”。
在一些实施例中,所述方法还包括:第一设备在所述第一测试脚本中执行对应的准备工作;其中,所述方法还包括:第一设备在所述第一测试脚本中执行对应的收尾工作。在一些实施例中,在将一个或多个测试用例对应的配置文件引入所述第一设备对象之前,需要在该自动化测试脚本中执行对应的准备工作,该准备工作包括但不限于部署第二设备端自动化服务代理、连接第二设备、解锁点亮第二设备、在第二设备上打开有/无缓存的被测试应用、线程化开启提前维护好的应用内的watcher监控。在一些实施例中,在完成该一个或多个测试用例对应的测试操作之后,需要在该自动化测试脚本中执行对应的收尾工作,该收尾工作包括但不限于关闭被测试应用、关闭watcher监控、关闭与第一设备连接的第二设备对应的第二设备对象Driver、关闭自动化服务代理。
图2示出根据本申请一个实施例的一种用于自动化测试的第一设备结构图,该设备包括一一模块11、一二模块12和一三模块13。一一模块11,用于在基于自动化测试服务的第一测试脚本中获得第一设备对象,将一个或多个测试用例中的每个测试用例对应的配置文件引入所述第一设备对象,其中,所述配置文件包括一个或多个键值对字符串,所述一个或多个键值对字符串对应关于该测试用例的一个或多个原生测试表达式,所述第一设备对象用于初始化与所述第一设备连接的第二设备对应的第二设备对象;一二模块12,用于通过所述第一设备对象将所述配置文件转换成基于所述第二设备对象对所述一个或多个原生测试表达式的调用;一三模块13,用于运行所述第一测试脚本,以执行所述一个或多个原生测试表达式对应的测试操作。
一一模块11,用于在基于自动化测试服务的第一测试脚本中获得第一设备对象,将一个或多个测试用例中的每个测试用例对应的配置文件引入所述第一设备对象,其中,所述配置文件包括一个或多个键值对字符串,所述一个或多个键值对字符串对应关于该测试用例的一个或多个原生测试表达式,所述第一设备对象用于初始化与所述第一设备连接的第二设备对应的第二设备对象。在一些实施例中,第一设备是指测试设备,用于维护和运行自动化测试脚本,包括但不限于手机、电脑等终端,可以是网络设备(服务器),也可以是用户设备,第二设备是指被测试的设备,包括但不限于手机、平板电脑等移动终端,通常是用户设备。在一些实施例中,第一设备可以通过有线方式(例如,usb)连接第二设备,或者,第一设备还可以通过无线方式(例如,wifi)连接第二设备。在一些实施例中,自动化测试服务包括但不限于任何通过自动化控制被测设备来对被测设备进行测试的服务,例如UiAutomator服务,UiAutomator是Google提供的用来做安卓自动化测试的一个Java库,需要运行在安卓手机上,基于Accessibility服务,可以对手机上的App进行测试,获取手机屏幕上任意一个APP的任意一个控件,并对其进行任意操作。在一些实施例中,在第二设备上安装并运行了一个http远程调用服务(即http rpc服务),该http rpc服务封装了UiAutomator服务,将UiAutomator中的功能开放出来,屏蔽不同用户设备的系统差异,开放出统一的http接口供使用,然后再将这些http接口封装成Python库(例如,UiAutomator2服务),通过在第一设备上安装UiAutomator2服务,UiAutomator2服务会将用户基于该Python库编写的自动化测试脚本所执行每个测试操作转换成一个对http rpc服务的http请求,http rpc服务接收并解析这些http请求,然后调用UiAutomator的api来实现对第二设备的自动控制。在一些实施例中,在第一设备上安装自动化控制服务前,需要先在该第一设备上搭建python环境。在一些实施例中,需要在第二设备上安装atx-agent(守护进程),然后通过atx-agent启动http rpc服务并进行监听,监听第一设备发送过来的http请求并将其转发给http rpc服务。在一些实施例中,需要在自动化测试脚本中创建第一设备对象,该第一设备对象对与第一设备连接的第二设备对应的第二设备对象进行了封装,在该第一设备对象中会创建并初始化该第二设备对象,具体地,通过调用UiAutomator2服务提供的connect方法,将第二设备的设备标识信息传入该connect方法,该connect方法的输出结果就是第二设备对应的第二设备对象,其中,若第二设备通过wifi连接第一设备,则可以将第二设备的IP地址作为第二设备的设备标识信息,若第二设备通过usb连接第一设备,则可以将第二设备的设备序列号作为第二设备的设备标识信息。在一些实施例中,一个测试用例对应一个功能流程或一个业务页面,每个测试对应一个配置文件,例如,json配置文件。在一些实施例中,配置文件可以存放在测试项目的data文件夹下。在一些实施例中,每个配置文件中包括一个或多个键值对字符串,每个键值对字符串中包括至少一个键(key)及每个键对应的值(value),例如,键值对字符串可以是“"do":"click_exists","element":{"resourceId":"com.snda.wifilocating:id/wifipay_enter_advert_close"}”。在一些实施例中,配置文件中会将每个键值对字符串用预定的符号(例如,大括号)括起来,以区分不同的键值对字符串。在一些实施例中,还会通过换行的方式来区分不同的键值对字符串,即配置文件中的每行最多只有一个键值对字符串,不同的键值对字符串位于配置文件中的不同行。在一些实施例中,可以直接在配置文件中创建该一个或多个键值对字符串。在一些实施例中,第一测试脚本是自动化测试脚本,通常是python脚本,自动化测试脚本中可以包括原生测试表达式即原生python脚本语言,该自动化测试脚本是基于自动化测试服务(例如,UiAutomator2服务)的,即该自动化测试脚本可以通过调用自动化测试服务所提供或开放的接口,来完成自动化测试的功能,即通过自动化控制第二设备来对第二设备进行测试。在一些实施例中,可以在自动化测试脚本中调用该第一设备对象提供的第一预定接口,将每个测试用例对应的配置文件通过该第一预定接口传入或引入第一设备对象,其中,可以根据实际的测试业务逻辑需要执行一个或多个测试用例。在一些实施例中,某个测试用例对应的配置文件中的每个键值对字符串对应关于该测试用例的一个原生测试表达式,其中,原生测试表达式是指通过调用UiAutomator2服务编写的原生python表达式,例如,原生测试表达式可以是“d(resourceId="com.snda.wifilocating:id/wifipay_enter_advert_close").click_exists()”,该原生测试表达式所对应的键值对字符串为“"do":"click_exists","element":{"resourceId":"com.snda.wifilocating:id/wifipay_enter_advert_close"}”。
一二模块12,用于通过所述第一设备对象将所述配置文件转换成基于所述第二设备对象对所述一个或多个原生测试表达式的调用。在一些实施例中,可以通过调用该第一设备对象提供的第二预定接口(例如,do_element接口),该第二预定接口的输入参数为键值对字符串,从而将该配置文件中的每个键值对字符串转换成基于第二设备对象对该键值对字符串所对应的原生测试表达式的调用,例如,可以直接在自动化测试脚本中调用该第二预定接口,或者,还可以在第一预定接口(例如,actions接口)的内部实现中调用该第二预定接口。例如,配置文件中的某个键值对字符串为“element":{"resourceId":"com.snda.wifilocating:id/wifipay_enter_advert_close"}”,通过第一设备对象提供的接口,将该键值对字符串转换成基于第二设备对象调用该该键值对字符串所对应的原生测试表达式的可执行代码,例如“d(resourceId="com.snda.wifilocating:id/wifipay_enter_advert_close").click_exists()”,其中,d为第二设备对象。
一三模块13,用于运行所述第一测试脚本,以执行所述一个或多个原生测试表达式对应的测试操作。在一些实施例中,在第一设备上运行该自动化测试脚本,以执行一个或多个测试用例中的每个测试用例所对应的一个或多个原生测试表达式对应的测试操作,该测试操作用于获取第二设备当前屏幕上所呈现的至少一个控件,并针对该至少一个控件进行至少一个自动化操作。在一些实施例中,自动化测试脚本会在自动化平台后端代码调用下有序的执行测试操作。本申请通过把自动化测试脚本设计为配置文件(例如,json配置文件),测试人员在配置文件中维护流程化的界面元素和操作方法即可完成测试执行,相比于传统的自动化测试脚本(例如,python脚本),本方案为APP自动化测试的用例写法,提供了新的方式可供选择,更具灵活性,通过测试用例配置化,实现部分业务代码(功能块,比如:登录流程,登出流程,充值流程,提现流程,绑卡流程,等等)和配置文件的剥离,可拓展性强,如需特殊处理,直接复制修改一份配置文件,即可满足特定的业务功能需求,测试用例通过配置文件来维护,非常方便后期更改。
在一些实施例中,所述设备还用于:基于所述自动化测试服务,创建所述一个或多个测试用例中的每个测试用例对应的一个或多个原生测试表达式;将所述一个或多个原生测试表达式转换成该测试用例对应的配置文件。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
在一些实施例中,所述基于所述自动化测试服务,创建所述一个或多个测试用例中的每个测试用例对应的一个或多个原生测试表达式,包括:在基于所述自动化测试服务的第二测试脚本中创建所述一个或多个测试用例中的每个测试用例对应的一个或多个原生测试表达式;其中,所述将所述一个或多个原生测试表达式转换成该测试用例对应的配置文件包括:对所述第二测试脚本进行转换,得到该测试用例对应的配置文件,其中,所述配置文件包括一个或多个键值对字符串,每个键值对字符串对应一个原生测试表达式。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
在一些实施例中,所述将所述一个或多个原生测试表达式转换成该测试用例对应的配置文件,包括:对于所述一个或多个原生测试表达式中的每个原生测试表达式,基于该原生测试表达式向预定的转换接口发起请求;接收所述转换接口返回的该原生测试表达式对应的键值对字符串;根据所述每个原生测试表达式对应的键值对字符串,生成该测试用例对应的配置文件。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
在一些实施例中,所述转换接口用于对该原生测试表达式进行正则匹配得到一个或多个匹配对象,通过对所述一个或多个匹配对象进行解析,得到至少一个键信息及对应的至少一个值信息,通过对所述至少一个键信息及所述至少一个值信息进行组装,得到该原生测试表达式对应的键值对字符串。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
在一些实施例中,所述至少一个键信息包括元素类型键信息、操作类型键信息和/或操作参数键信息。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
在一些实施例中,所述将一个或多个测试用例中的每个测试用例对应的配置文件引入所述第一设备对象,包括:通过调用所述第一设备对象的第一方法,将一个或多个测试用例中的每个测试用例对应的配置文件引入所述第一设备对象,其中,所述第一方法的输入为所述配置文件的文件标识信息。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
在一些实施例中,所述在基于自动化测试服务的第一测试脚本中获得第一设备对象,包括:在基于自动化测试服务的第一测试脚本中创建第一设备对象。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
在一些实施例中,所述在基于自动化测试服务的第一测试脚本中获得第一设备对象,包括:从基于自动化测试服务的第一测试脚本的全局变量中获取第一设备对象;其中,所述设备还用于:在所述第一测试脚本中创建所述第一设备对象,并将所述第一设备对象存入所述第一测试脚本的全局变量中。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
在一些实施例中,所述一二模块12用于:通过所述第一设备对象加载所述配置文件中的一个或多个键值对字符串,通过对所述一个或多个键值对字符串进行解析,将所述一个或多个键值对字符串转换成基于所述第二设备对象对所述一个或多个原生测试表达式的调用。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
在一些实施例中,所述通过对所述一个或多个键值对字符串进行解析,将所述一个或多个键值对字符串转换成基于所述第二设备对象对所述一个或多个原生测试表达式的调用,包括:对于所述一个或多个键值对字符串中的每个键值对字符串,通过对该键值对字符串进行解析,从该键值对字符串中获得至少一个键信息及对应的至少一个值信息;基于所述第二设备对象,根据所述至少一个键信息及所述至少一个值信息,将该键值对字符串转换成对一个原生测试表达式的调用。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
在一些实施例中,所述至少一个键信息包括元素类型键信息、操作类型键信息和/或操作参数键信息;其中,所述基于所述第二设备对象,根据所述至少一个键信息及所述至少一个值信息,将该键值对字符串转换成对一个原生测试表达式的调用,包括:基于所述第二设备对象,根据所述元素类型键信息对应的第一值信息,获得对应的UI组件对象;基于所述UI组件对象,根据所述操作类型键信息对应的第二值信息和/或所述操作参数键信息对应的第三值信息,将该键值对字符串转换成针对所述UI组件对象调用目标方法,其中,所述目标方法的方法名为所述第二值信息,所述目标方法的传入参数为所述第三值信息。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
在一些实施例中,所述设备还用于:在所述第一测试脚本中执行对应的准备工作;其中,所述设备还用于:在所述第一测试脚本中执行对应的收尾工作。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
除上述各实施例介绍的方法和设备外,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机代码,当所述计算机代码被执行时,如前任一项所述的方法被执行。
本申请还提供了一种计算机程序产品,当所述计算机程序产品被计算机设备执行时,如前任一项所述的方法被执行。
本申请还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个计算机程序;
当所述一个或多个计算机程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如前任一项所述的方法。
图3示出了可被用于实施本申请中所述的各个实施例的示例性系统;
如图3所示在一些实施例中,系统300能够作为各所述实施例中的任意一个设备。在一些实施例中,系统300可包括具有指令的一个或多个计算机可读介质(例如,系统存储器或NVM/存储设备320)以及与该一个或多个计算机可读介质耦合并被配置为执行指令以实现模块从而执行本申请中所述的动作的一个或多个处理器(例如,(一个或多个)处理器305)。
对于一个实施例,系统控制模块310可包括任意适当的接口控制器,以向(一个或多个)处理器305中的至少一个和/或与系统控制模块310通信的任意适当的设备或组件提供任意适当的接口。
系统控制模块310可包括存储器控制器模块330,以向系统存储器315提供接口。存储器控制器模块330可以是硬件模块、软件模块和/或固件模块。
系统存储器315可被用于例如为系统300加载和存储数据和/或指令。对于一个实施例,系统存储器315可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,系统存储器315可包括双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM)。
对于一个实施例,系统控制模块310可包括一个或多个输入/输出(I/O)控制器,以向NVM/存储设备320及(一个或多个)通信接口325提供接口。
例如,NVM/存储设备320可被用于存储数据和/或指令。NVM/存储设备320可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HD D)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。
NVM/存储设备320可包括在物理上作为系统300被安装在其上的设备的一部分的存储资源,或者其可被该设备访问而不必作为该设备的一部分。例如,NVM/存储设备320可通过网络经由(一个或多个)通信接口325进行访问。
(一个或多个)通信接口325可为系统300提供接口以通过一个或多个网络和/或与任意其他适当的设备通信。系统300可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信。
对于一个实施例,(一个或多个)处理器305中的至少一个可与系统控制模块310的一个或多个控制器(例如,存储器控制器模块330)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器305中的至少一个可与系统控制模块310的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP)。对于一个实施例,(一个或多个)处理器305中的至少一个可与系统控制模块310的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器305中的至少一个可与系统控制模块310的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(SoC)。
在各个实施例中,系统300可以但不限于是:服务器、工作站、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)。在各个实施例中,系统300可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,系统300包括一个或多个摄像机、键盘、液晶显示器(LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC)和扬声器。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。本领域技术人员应能理解,计算机程序指令在计算机可读介质中的存在形式包括但不限于源文件、可执行文件、安装包文件等,相应地,计算机程序指令被计算机执行的方式包括但不限于:该计算机直接执行该指令,或者该计算机编译该指令后再执行对应的编译后程序,或者该计算机读取并执行该指令,或者该计算机读取并安装该指令后再执行对应的安装后程序。在此,计算机可读介质可以是可供计算机访问的任意可用的计算机可读存储介质或通信介质。
通信介质包括藉此包含例如计算机可读指令、数据结构、程序模块或其他数据的通信信号被从一个系统传送到另一系统的介质。通信介质可包括有导的传输介质(诸如电缆和线(例如,光纤、同轴等))和能传播能量波的无线(未有导的传输)介质,诸如声音、电磁、RF、微波和红外。计算机可读指令、数据结构、程序模块或其他数据可被体现为例如无线介质(诸如载波或诸如被体现为扩展频谱技术的一部分的类似机制)中的已调制数据信号。术语“已调制数据信号”指的是其一个或多个特征以在信号中编码信息的方式被更改或设定的信号。调制可以是模拟的、数字的或混合调制技术。
作为示例而非限制,计算机可读存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动的介质。例如,计算机可读存储介质包括,但不限于,易失性存储器,诸如随机存储器(RAM,DRAM,SRAM);以及非易失性存储器,诸如闪存、各种只读存储器(ROM,PRO M,EPROM,EEPROM)、磁性和铁磁/铁电存储器(MRAM,FeRAM);以及磁性和光学存储设备(硬盘、磁带、CD、DVD);或其它现在已知的介质或今后开发的能够存储供计算机系统使用的计算机可读信息/数据。
在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (15)
1.一种用于自动化测试的方法,应用于第一设备,其中,该方法包括:
在基于自动化测试服务的第一测试脚本中获得第一设备对象,将一个或多个测试用例中的每个测试用例对应的配置文件引入所述第一设备对象,其中,所述配置文件包括一个或多个键值对字符串,所述一个或多个键值对字符串对应关于该测试用例的一个或多个原生测试表达式,所述第一设备对象用于初始化与所述第一设备连接的第二设备对应的第二设备对象;
通过所述第一设备对象将所述配置文件转换成基于所述第二设备对象对所述一个或多个原生测试表达式的调用;
运行所述第一测试脚本,以执行所述一个或多个原生测试表达式对应的测试操作。
2.根据权利要求1所述的方法,其中,所述方法还包括:
基于所述自动化测试服务,创建所述一个或多个测试用例中的每个测试用例对应的一个或多个原生测试表达式;
将所述一个或多个原生测试表达式转换成该测试用例对应的配置文件。
3.根据权利要求2所述的方法,其中,所述基于所述自动化测试服务,创建所述一个或多个测试用例中的每个测试用例对应的一个或多个原生测试表达式,包括:
在基于所述自动化测试服务的第二测试脚本中创建所述一个或多个测试用例中的每个测试用例对应的一个或多个原生测试表达式;
其中,所述将所述一个或多个原生测试表达式转换成该测试用例对应的配置文件,包括:
对所述第二测试脚本进行转换,得到该测试用例对应的配置文件,其中,所述配置文件包括一个或多个键值对字符串,每个键值对字符串对应一个原生测试表达式。
4.根据权利要求2所述的方法,其中,所述将所述一个或多个原生测试表达式转换成该测试用例对应的配置文件,包括:
对于所述一个或多个原生测试表达式中的每个原生测试表达式,基于该原生测试表达式向预定的转换接口发起请求;
接收所述转换接口返回的该原生测试表达式对应的键值对字符串;
根据所述每个原生测试表达式对应的键值对字符串,生成该测试用例对应的配置文件。
5.根据权利要求4所述的方法,其中,所述转换接口用于对该原生测试表达式进行正则匹配得到一个或多个匹配对象,通过对所述一个或多个匹配对象进行解析,得到至少一个键信息及对应的至少一个值信息,通过对所述至少一个键信息及所述至少一个值信息进行组装,得到该原生测试表达式对应的键值对字符串。
6.根据权利要求5所述的方法,其中,所述至少一个键信息包括元素类型键信息、操作类型键信息和/或操作参数键信息。
7.根据权利要求1所述的方法,其中,所述将一个或多个测试用例中的每个测试用例对应的配置文件引入所述第一设备对象,包括:
通过调用所述第一设备对象的第一方法,将一个或多个测试用例中的每个测试用例对应的配置文件引入所述第一设备对象,其中,所述第一方法的输入为所述配置文件的文件标识信息。
8.根据权利要求1所述的方法,其中,所述在基于自动化测试服务的第一测试脚本中获得第一设备对象,包括:
在基于自动化测试服务的第一测试脚本中创建第一设备对象。
9.根据权利要求1所述的方法,其中,所述在基于自动化测试服务的第一测试脚本中获得第一设备对象,包括:
从基于自动化测试服务的第一测试脚本的全局变量中获取第一设备对象;
其中,所述方法还包括:
在所述第一测试脚本中创建所述第一设备对象,并将所述第一设备对象存入所述第一测试脚本的全局变量中。
10.根据权利要求1所述的方法,其中,所述通过所述第一设备对象将所述配置文件转换成基于所述第二设备对象对所述一个或多个原生测试表达式的调用,包括:
通过所述第一设备对象加载所述配置文件中的一个或多个键值对字符串,通过对所述一个或多个键值对字符串进行解析,将所述一个或多个键值对字符串转换成基于所述第二设备对象对所述一个或多个原生测试表达式的调用。
11.根据权利要求10所述的方法,其中,所述通过对所述一个或多个键值对字符串进行解析,将所述一个或多个键值对字符串转换成基于所述第二设备对象对所述一个或多个原生测试表达式的调用,包括:
对于所述一个或多个键值对字符串中的每个键值对字符串,通过对该键值对字符串进行解析,从该键值对字符串中获得至少一个键信息及对应的至少一个值信息;
基于所述第二设备对象,根据所述至少一个键信息及所述至少一个值信息,将该键值对字符串转换成对一个原生测试表达式的调用。
12.根据权利要求11所述的方法,其中,所述至少一个键信息包括元素类型键信息、操作类型键信息和/或操作参数键信息;
其中,所述基于所述第二设备对象,根据所述至少一个键信息及所述至少一个值信息,将该键值对字符串转换成对一个原生测试表达式的调用,包括:
基于所述第二设备对象,根据所述元素类型键信息对应的第一值信息,获得对应的UI组件对象;
基于所述UI组件对象,根据所述操作类型键信息对应的第二值信息和/或所述操作参数键信息对应的第三值信息,将该键值对字符串转换成针对所述UI组件对象调用目标方法,其中,所述目标方法的方法名为所述第二值信息,所述目标方法的传入参数为所述第三值信息。
13.一种用于自动化测试的计算机设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现如权利要求1至12中任一项所述方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现如权利要求1至12中任一项所述方法的步骤。
15.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至12中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210066620.XA CN114428735A (zh) | 2022-01-20 | 2022-01-20 | 一种用于自动化测试的方法、设备、介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210066620.XA CN114428735A (zh) | 2022-01-20 | 2022-01-20 | 一种用于自动化测试的方法、设备、介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114428735A true CN114428735A (zh) | 2022-05-03 |
Family
ID=81312613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210066620.XA Pending CN114428735A (zh) | 2022-01-20 | 2022-01-20 | 一种用于自动化测试的方法、设备、介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114428735A (zh) |
-
2022
- 2022-01-20 CN CN202210066620.XA patent/CN114428735A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11010283B2 (en) | Mock-based unit test(s) for an end-to-end test of a code snippet | |
JP2018139106A (ja) | クラウド接続された自動テスティング | |
US10019298B2 (en) | Middleware interface and middleware interface generator | |
US8510712B1 (en) | Testing in-container software objects | |
US10162605B2 (en) | Code snippet content recommendation to define an object literal | |
US10474479B1 (en) | Preventing framework conflicts for multi-OS applications | |
US10261844B2 (en) | Generic language application programming interface interpreter | |
WO2019127904A1 (zh) | 应用程序运行方法、装置、计算机设备和存储介质 | |
CN107045475B (zh) | 测试方法和装置 | |
US20140250428A1 (en) | Automatically customizing a computer-executable application at runtime | |
US20230401058A1 (en) | Semantic functional wrappers of services | |
US8904346B1 (en) | Method and system for automated load testing of web applications | |
CN113076253A (zh) | 一种测试方法和测试装置 | |
CN112114789B (zh) | 一种业务开发方法及设备 | |
US10353700B1 (en) | Code base sharing between standalone and web-based versions of an application via an emulated network communication channel | |
CN115309657A (zh) | 一种用于提供测试用例的方法、设备、介质及程序产品 | |
US20110246967A1 (en) | Methods and systems for automation framework extensibility | |
CN116795679A (zh) | 一种Web应用测试方法、装置、电子设备及存储介质 | |
CN114428735A (zh) | 一种用于自动化测试的方法、设备、介质及程序产品 | |
CN112506781B (zh) | 测试监控方法、装置、电子设备、存储介质及程序产品 | |
CN114995871A (zh) | 一种软件版本适配方法、装置、电子设备和存储介质 | |
CN113050956B (zh) | 用于自动安装应用的方法、设备、介质及程序产品 | |
CN112068814A (zh) | 可执行文件的生成方法、装置、系统及介质 | |
WO2022237826A1 (zh) | 用户界面的测试方法、系统、集群、介质及程序产品 | |
CN116339865A (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 |