CN111563050A - 用于移动设备的自动化测试方法 - Google Patents
用于移动设备的自动化测试方法 Download PDFInfo
- Publication number
- CN111563050A CN111563050A CN202010671729.7A CN202010671729A CN111563050A CN 111563050 A CN111563050 A CN 111563050A CN 202010671729 A CN202010671729 A CN 202010671729A CN 111563050 A CN111563050 A CN 111563050A
- Authority
- CN
- China
- Prior art keywords
- test
- script
- party
- package
- dependency
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 201
- 238000013515 script Methods 0.000 claims abstract description 143
- 238000000034 method Methods 0.000 claims description 76
- 230000001419 dependent effect Effects 0.000 claims description 22
- 238000001514 detection method Methods 0.000 claims description 8
- 230000000977 initiatory effect Effects 0.000 claims description 8
- 230000008569 process Effects 0.000 description 53
- 230000003993 interaction Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 13
- 238000012423 maintenance Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 241000208306 Apium Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000012858 packaging process Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000000275 quality assurance Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
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
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
技术领域
本公开涉及计算机技术领域,更具体地,涉及一种用于移动设备的自动化测试方法、装置、电子设备和计算机可读介质。
背景技术
软件自动化测试已经被证实可以节省大量人力成本、节省大量的回归测试时间,同时由机器设备取代人力测试可以提升运行结果的准确性和可靠性。自动化测试产生的数据为测试过程、测试质量保证提供大量可以衡量的质量指标。
常规的自动化测试一般都是简单的依赖开源自动化测试框架,依靠人力堆叠自动化测试相关脚本,然后将内容脚本交给自动化测试框架运行,对于自动化测试的细节和运行过程的控制比较弱。
发明内容
有鉴于此,本发明提供了一种移动端软件自动化测试方案,通过此方案基本上达到了从编写脚本到产生质量报告的完整的全自动化的过程,参与人员只需要关心实际的测试用例对应的自动化测试脚本即可,可以做到只要有脚本就可以得到测试对象的质量情况,并且可以大规模、快速的执行自动化测试,在很大程度上满足了自动化测试需求。
根据本发明的第一方面,提供了一种用于移动设备的自动化测试方法,包括:提供针对移动设备的测试脚本;检测所述测试脚本的第三方依赖包是否存在更新,如果有更新,下载更新后的第三方依赖包到本地;使用所述第三方依赖包动态编译所述测试脚本,通过反射产生脚本实例对象;启动测试服务,根据移动设备的类型动态获取对应的驱动对象,将所述驱动对象反射注入到所述脚本实例对象;运行经注入的脚本实例对象以测试所述移动设备。
在一个可能的实施例中,所述提供针对移动设备的测试脚本可以包括:在测试脚本中声明需要使用的驱动对象;和,定义约定的结果集合,包括测试步骤、图片、检查点和日志。
在一个可能的实施例中,所述检测所述测试脚本的第三方依赖包是否存在更新,具体可以包括:从第三方依赖库下载依赖库版本信息并与本地依赖包版本信息进行比较;如果所述依赖库版本信息的时间戳更大,确定第三方依赖包存在更新。
在一个可能的实施例中,所述启动测试服务可以包括:动态配置所述测试服务的参数,包括启动端口、socket交换端口、设备序列号、超时时间配置中的一项或多项;和动态配置所述驱动对象的参数,包括Appium版本信息、平台信息、平台版本、设备名、命令超时设置、启动超时设置、位置服务认证中的一项或多项。
在一个可能的实施例中,所述方法还可以包括:在测试所述移动设备的过程中将测试结果写入到测试步骤、图片、检查点和日志中,并保存以生成质量报告。
根据本发明的第二方面,提供了一种用于移动设备的自动化测试装置,包括:脚本提供单元,被配置用于提供针对移动设备的测试脚本;检测单元,被配置用于检测所述测试脚本的第三方依赖包是否存在更新,如果有更新,下载更新后的第三方依赖包到本地;编译单元,被配置用于使用所述第三方依赖包动态编译所述测试脚本,通过反射产生脚本实例对象;测试启动单元,被配置用于启动测试服务,根据移动设备的类型动态获取对应的驱动对象,将所述驱动对象反射注入到所述脚本实例对象;运行单元,被配置用于运行经注入的脚本实例对象以测试所述移动设备。
在一个可能的实施例中,所述脚本提供单元还可以被配置用于:在测试脚本中声明需要使用的驱动对象;和,定义约定的结果集合,包括测试步骤、图片、检查点和日志。
在一个可能的实施例中,所述检测单元还可以被配置用于:从第三方依赖库下载依赖库版本信息并与本地依赖包版本信息进行比较;如果所述依赖库版本信息的时间戳更大,确定第三方依赖包存在更新。
在一个可能的实施例中,测试启动单元还可以被配置用于:动态配置所述测试服务的参数,包括启动端口、socket交换端口、设备序列号、超时时间配置中的一项或多项;和,动态配置所述驱动对象的参数,包括Appium版本信息、平台信息、平台版本、设备名、命令超时设置、启动超时设置、位置服务认证中的一项或多项。
在一个可能的实施例中,所述运行单元还可以被配置用于:在测试所述移动设备的过程中将测试结果写入到测试步骤、图片、检查点和日志中,并保存以生成质量报告。
根据本发明的第三方面,还提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如第一方面所述的方法。
根据本发明的第四方面,还提供了一种计算机可读介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行如第一方面所述的方法。
相比于其他的自动化测试方案,本发明具有如下优点:
交互灵活、维护方便、过程可控:自动化测试脚本是代码级别的运行,这样显著的降低了交互成本,直接通过代码模型进行数据交互,既简单轻便又可灵活的交互数据;在维护方面结合测试用例直接维护 Java 代码即可,如果通过第三方平台如 gitlab 等进行托管,效果更佳;在脚本运行过程中还可以实时的和运行脚本进行交互,整个测试过程也是可以控制的,这样可以很方便快速的运行测试任务,调试测试任务。
规模运行稳定:自动化测试脚本是代码级别的运行,整个运行过程和交互都在内存中完成,这提高了交互的稳定性,测试任务运行的稳定性,然后通过平台的设备规模,自动化框架的多设备支持,多线程运行自动化测试任务,很大程度上降低了测试成本。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。
图1示出了根据本发明实施例的自动化测试方法的整体流程图。
图2示出了根据本发明另一实施例的自动化测试方法的示意流程图。
图3示出了根据本发明实施例的自动化测试方法的关于依赖处理的流程图。
图4示出了根据本发明实施例的依赖处理的示意图。
图5示出了根据本发明实施例的用于依赖处理的依赖包仓库的界面示意图。
图6示出了根据本发明实施例的一种用于移动设备的自动化测试方法的示意流程图。
图7示出了根据本发明实施例的一种用于移动设备的自动化测试装置的示意框图。
图8示出了用于实现本发明实施例的电子设备的结构示意图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。这里使用的词语“一”、“一个(种)”和“该”等也应包括“多个”、“多种”的意思,除非上下文另外明确指出。此外,在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
通常情况下,随着测试过程参与的人员越来越多,测试周期的拉长,会形成一定规模的自动化平台。平台只负责测试资料的执行,参与人员只需要按照不同的测试类型提供不同规则的测试资料。这种自动化测试平台具有如下的缺点。
一、触发交互不灵活、维护麻烦。在执行可执行自动化测试文件中一般情况下都需要一定的交互,这种交互一般表现为数据、操作等,对于执行文件来讲交互数据的修改,交互规则的变化都需要修改平台和可执行文件的生成规则,不太灵活。同时维护测试资料和生成可执行文件必然需要自动化编译打包的过程,维护这一系列过程也比较麻烦。
二、运行过程较重并不可控。可执行文件在执行的过程中很难可以操作或改变执行过程的走向,基本上很难实现实时的交互操作,比如自动化测试过程中需要根据外部数据改变测试过程,同时文件的执行和文件中封装的内容大都存在重复的依赖,这样的编写、编译、打包、下载、运行、第三方交互结果整个过程很重,并且无法控制运行的过程。
三、运行过程数据、控制交互性比较差。对于测试过程来说,快速拿到可靠的测试数据是比较重要的,测试过程、结果产生的数据对于可执行文件来讲只有通过网络请求、文件交互等外部方式来交互数据,会受到各类异常环境的影响,同时数据的交互也需要约定一定的交互格式,也无形中提高了维护成本。
本发明的实施例通过Java代码加上全自动化的测试过程得到想要的质量报告结果,在某种意义上和通过 Android 代码加编译过程得到 Android 应用、Object-c /Swift 代码加编译过程得到 iOS 应用比较类似,整个中间的过程都通过此方案实现了全部自动化。
图1示出了根据本发明实施例的自动化测试方法100的整体流程图。整个测试流程包括如下步骤:编写脚本101、完成脚本调试102、通过表单/接口提交到云测试平台103,然后多个不同的设备同时运行脚本104,在全部运行完毕之后通知到公司(比如,即时通信IM)105,通过通知的地址获取到测试的质量报告106。
在图1的103,脚本通过表单和接口提交到平台,然后在104,多脚本并发执行脚本开始测试,执行的细节过程如图2所示。
图2示出了根据本发明另一实施例的自动化测试方法200的示意流程图。脚本通过表单和接口提交到平台,多脚本并发执行脚本开始测试,执行的细节过程如下。在步骤201,文本组装,即编写和组装测试脚本,然后通过例如socket接口上传到服务器,整个脚本数据传递过程中都是以文本的形式存储的。在步骤202,服务器上的运行引擎拿到 Java 脚本后动态编译生成 class 对象。在执行动态编译的过程中,需要经由步骤203进行编译依赖检测。根据传统的技术,编译后将直接产生可执行文件,导致无法适应多平台测试的需求,与之不同,本发明提供基于java的脚本设计,java脚本编译后形成字节码文件,获取反射对象,可以与安装包集成并部署到多设备平台。以下描述根据本发明实施例的基于Java的脚本设计。脚本是自动化测试过程的基础单元,以 iOS 基础脚本为例:
Public class IOSFront extends IOSScriptProxy Implement Runnable {
@Override
Public void run() {
ElementToolselementTools = ElementTools.INSTANCE;
elementTools.safeClick(elementTools.element(iosDriver, By.xpath(“//*[@name***]”)));
}
}
脚本需要继承基础的协议类并实现线程的Runnable 类,通过继承可以拿到父类的一些基础数据和一些自动化测试的通用的便捷的方法,很显然脚本中的iosDriver 就是通过继承获得,这样的话脚本只需要关心具体的自动化测试业务逻辑即可,实现 Runnable 类主要是便于在运行时可以封装 Thread 多线程运行测试用例。以下示出了另一部分脚本。
/**
IOS自动化脚本的基类,主要用于在iosDriver的基础上进行统一业务能力扩展
**/
public class IOSScriptProxy extends AppiumScript {
/**
* 留空驱动方法,平台运行时自动化调用@setDriver的方式进行反射注入,本地测试可以自行赋值进行测试
*/
public IOSDriver<WebElement>iosDriver;
/**
* 平台和本地脚本编写约定的结果集合,主要包括步骤、图片、检查点、日志等数据
*/
public ScriptResult result = new ScriptResult();
在父类中声明了Appium的IOSDriver,平台运行时会进行反射注入,同时还有约定的返回结果集合,主要包括测试步骤、图片、预期结果的检查点以及测试过程中的运行日志,其他的一些功能都会在父类的基础上进行业务能力扩展。反射机制是指,在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。根据本发明实施例,例如,为了获得类对象的属性,必须先要获取到该类的字节码文件对象。
在动态编译完成后,在步骤204,获取反射对象,即反射拿到脚本实例化后的对象,在步骤205,结合待测试的安装包206,将脚本实例对象封装到线程中等待调用执行。
在步骤207,根据设备的基础信息分别启动不同的Appium hub服务并拿到对应的Appium驱动driver,将driver对象反射注入到脚本的实例对象中,这样在步骤208启动Appiumhub,在步骤209,脚本就可以通过driver操作对应的设备进行自动化测试。运行完毕之后,在步骤210拿到结果数据,进行回收解析,在步骤211,存储结果,同时关闭Appium的hub服务,结束测试过程。
以上描述根据本发明实施例的自动化测试的流程。在自动化测试过程中,脚本、平台环境、依赖、数据都是动态变化的,实践中注意到多个关键的地方,如动态编译时如何解决依赖相关的问题,Appium hub服务启动时如何对应设备动态生成,如何动态初始化Appium driver,如下是分别说明。
图3示出了根据本发明实施例的自动化测试方法的关于依赖处理的流程图。如图3所示,在Java脚本编写过程中,脚本的依赖和公共脚本的抽取需要涉及到第三方的依赖,而脚本在编译的过程中需要动态的利用这些依赖,所以在Java脚本动态编译时需要检测脚本是否有依赖需要动态更新。相比于图1,图3还包括抽象公共脚本第三方依赖107、抽象公共方法108、从持续集成CI模块获取和使用新方法109的步骤。
在完成编写脚本101之后,需要检测脚本中的第三方依赖,以便脚本可以调用和使用最新的方法。因此,在步骤107,抽象公共脚本的第三方依赖,从中提取到当前脚本中的依赖关系,然后在步骤108,抽象当前脚本的公共方法,以便向作为第三方的持续集成CI模型查新是否有公共方法的最新版本。需要注意的是,持续集成CI是自动完成,其包括合并云测工程、云测工程发版、云工程引入新版本以及在线更新新版本。在检测新的公共方法的情况下,在步骤109使用新方法,将其集成到所编写的脚本。
图4示出了根据本发明实施例的依赖处理的示意图。在脚本编译前从NexusOSS私有仓库(一种maven仓库管理器)中检测是否有依赖包存在更新,如果需要更新则下载依赖包到本地加入依赖然后进行动态编译操作,这样保证运行脚本在编译时依赖库的完整,同时另一边在维护依赖包时,通过CI操作将更新过代码的依赖包上传到NexusOSS私有仓库,并更新依赖包的版本数据提供检测下载。
图5示出了根据本发明实施例的用于依赖处理的依赖包仓库的界面示意图。该依赖包仓库可以是例如上述的NexusOSS。通过解析依赖包仓库中的元数据文件,例如,maven-metadata.xml(图5所示的依赖关系表),可以获取到依赖包是否有更新的最新信息。图5还示出了jar文件格式的最新依赖包(图5所示的最新的依赖库文件),该依赖包可以在需要时被加载到编写的脚本,使得脚本在动态编译时使用最新的依赖包。
以下描述在Appium hub服务启动时如何对应设备动态生成,如何动态初始化Appium driver。设备控制自动化测试过程中整个Java脚本运行过程是利用Appium提供的Appium-client Jar 包,通过Appium Driver 调用Appium hub服务来控制移动端设备的行为,包括移动设备的基础操作,这一部分可以利用Appium自动化测试的开源解决方案。
在自动化测试运行前,需要启动Appium hub 服务,针对每一台设备会启动唯一的hub服务,这样避免了不同设备之间的干扰,进行具体的参数化过程。例如,把启动服务的主要参数如启动端口、socket 交互端口、设备序列号、超时时间配置等通过外部传递参数的方式传递进来达到动态控制Appium hub服务启停的目的。
另外,在Appium driver动态参数化的过程中,会根据移动设备、app的基础信息动态生成。例如,这些动态参数化可以包括Appium版本信息、平台信息、平台版本、设备名、命令超时设置、启动超时设置、app包、位置服务等等。
由于整个测试过程都是在代码级别上运行,在自动化测试脚本运行过程中,可以随时通过脚本生成的Java对象和脚本步骤进行实时交互。
根据本发明实施例,还提供了一种结果内容设计方案,例如,可以提供了基于Java的ScripResult类,结果内容设计方案可以包括在脚本中添加的业务步骤日志、脚本运行日志、其中,调试问题和记录过程,其不同于steps,该数据主要关注脚本运行过程,step是主要标记脚本关注的业务步骤日志。此外,结果内容设计方案还包括检查点的预期结果、预计结果说明、预期结果是否正确的信息、以及脚本截图数据等等。因此,自动化测试的结果主要包括业务步骤、预期结果、检测点、过程截图等数据,脚本在运行过程中动态的将数据放入这些数据结构中,运行完毕之后将数据保存到服务器中生成质量报告。
除了结果内容设计方案,本发明实施例还提供了脚本交互设计方案。 在脚本运行过程中可能需要动态的控制脚本的运行走向,获取脚本的实时运行状态,最典型的比如实时展示脚本的运行步骤、运行状态等数据。根据本发明实施例,提供了诸如“运行时日志(runtimeLog)”的数据对象,可以通过这样的数据实时获取脚本运行情况并作出交互动作。
图6示出了根据本发明实施例的一种用于移动设备的自动化测试方法600,包括:在步骤610,提供针对移动设备的测试脚本,该脚本例如可以是基于java的脚本,其被编译后产生字节码文件。在一个可能的实施例中,可以在测试脚本中声明需要使用的驱动对象,定义约定的结果集合,包括测试步骤、图片、检查点和日志等。
在步骤620,检测所述测试脚本的第三方依赖包是否存在更新,如果有更新,下载更新后的第三方依赖包到本地。例如,可以解析第三方依赖包所在的数据仓库的元数据文件,获取最新的依赖包。在一个可能实施例中,检测具体还可以包括:从第三方依赖库下载依赖库版本信息并与本地依赖包版本信息进行比较;如果所述依赖库版本信息的时间戳更大,确定第三方依赖包存在更新。
然后,在步骤630,使用所述第三方依赖包动态编译所述测试脚本,通过反射产生脚本实例对象。
在产生了脚本实例对象后,在步骤640启动测试服务,根据移动设备的类型动态获取对应的驱动对象,将所述驱动对象反射注入到所述脚本实例对象。在一个可能实施例中,启动测试服务可以包括:动态配置所述测试服务的参数,包括:启动端口、socket交换端口、设备序列号、超时时间配置中的一项或多项;还可以动态配置所述驱动对象的参数:包括Appium版本信息、平台信息、平台版本、设备名、命令超时设置、启动超时设置、位置服务认证中的一项或多项。
配置完成后,在步骤650,运行经注入的脚本实例对象以测试所述移动设备。在测试过程中,可以将测试结果写入到测试步骤、图片、检查点和日志中,并保存以生成质量报告。
图7示出了根据本发明实施例的一种用于移动设备的自动化测试装置700,包括:脚本提供单元710,被配置用于提供针对移动设备的测试脚本。在一个可能的实施例中,所述脚本提供单元710还可以被配置用于:在测试脚本中声明需要使用的驱动对象;和定义约定的结果集合,包括测试步骤、图片、检查点和日志。
自动化测试装置700还包括检测单元720,被配置用于检测所述测试脚本的第三方依赖包是否存在更新,如果有更新,下载更新后的第三方依赖包到本地。在一个可能的实施例中,所述检测单元720还被配置用于:从第三方依赖库下载依赖库版本信息并与本地依赖包版本信息进行比较;如果所述依赖库版本信息的时间戳更大,确定第三方依赖包存在更新。
自动化测试装置700还包括编译单元730,被配置用于使用所述第三方依赖包动态编译所述测试脚本,通过反射产生脚本实例对象。
自动化测试装置700还包括测试启动单元740,被配置用于启动测试服务,根据移动设备的类型动态获取对应的驱动对象,将所述驱动对象反射注入到所述脚本实例对象。在一个可能的实施例中,测试启动单元740还被配置用于动态配置所述测试服务的参数,包括启动端口、socket交换端口、设备序列号、超时时间配置中的一项或多项;动态配置所述驱动对象的参数,包括Appium版本信息、平台信息、平台版本、设备名、命令超时设置、启动超时设置、位置服务认证中的一项或多项。
动化测试装置700还包括运行单元750,被配置用于运行经注入的脚本实例对象以测试移动设备。运行单元750还可以被配置用于:在测试所述移动设备的过程中将测试结果写入到测试步骤、图片、检查点和日志中,并保存以生成质量报告。
图8示出了用于实现本发明实施例的电子设备的结构示意图。如图8所示,电子设备800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有电子设备800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,包括承载指令的在计算机可读介质,在这样的实施例中,该指令可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该指令被中央处理单元(CPU)801执行时,执行本发明中描述的各个方法步骤。
以上描述了本发明的示例实施例。在自动化测试过程中,通过本发明的技术方案基本上达到了从编写脚本到质量报告的完整的全自动化的过程,参与人员只需要关心实际的测试用例对应的自动化测试脚本即可,可以做到只要有脚本就可以得到测试对象的质量情况,并且可以大规模、快速的执行自动化测试,在很大程度上满足了自动化测试需求。相比于其他的自动化测试方案,本发明具有如下这些优势。
交互灵活、维护方便、过程可控:自动化测试脚本是代码级别的运行,这样显著的降低了交互成本,直接通过代码模型进行数据交互,既简单轻便又可灵活的交互数据;在维护方面结合测试用例直接维护 Java 代码即可,如果通过第三方平台如 gitlab 等进行托管,效果更佳;在脚本运行过程中还可以实时的和运行脚本进行交互,整个测试过程也是可以控制的,这样可以很方便快速的运行测试任务,调试测试任务。
规模运行稳定:自动化测试脚本是代码级别的运行,整个运行过程和交互都在内存中完成,这提高了交互的稳定性,测试任务运行的稳定性,然后通过平台的设备规模,自动化框架的多设备支持,多线程运行自动化测试任务,很大程度上降低了测试成本。
尽管已经描述了示例实施例,但是对于本领域技术人员来说显而易见的是,在不脱离本发明构思的精神和范围的情况下,可以进行各种改变和修改。因此,应当理解,上述示例实施例不是限制性的,而是说明性的。
Claims (12)
1.一种用于移动设备的自动化测试方法,包括:
提供针对移动设备的测试脚本;
检测所述测试脚本的第三方依赖包是否存在更新,如果有更新,下载更新后的第三方依赖包到本地;
使用所述第三方依赖包动态编译所述测试脚本,通过反射产生脚本实例对象;
启动测试服务,根据移动设备的类型动态获取对应的驱动对象,将所述驱动对象反射注入到所述脚本实例对象;
运行经注入的脚本实例对象以测试所述移动设备。
2.如权利要求1所述的自动化测试方法,其中,所述提供针对移动设备的测试脚本包括:
在测试脚本中声明需要使用的驱动对象;和
定义约定的结果集合,包括测试步骤、图片、检查点和日志。
3.如权利要求1所述的自动化测试方法,其中,所述检测所述测试脚本的第三方依赖包是否存在更新,具体包括:
从第三方依赖库下载依赖库版本信息并与本地依赖包版本信息进行比较;
如果所述依赖库版本信息的时间戳更大,确定第三方依赖包存在更新。
4.如权利要求1所述的自动化测试方法,所述启动测试服务包括:
动态配置所述测试服务的参数,包括启动端口、socket交换端口、设备序列号、超时时间配置中的一项或多项;和
动态配置所述驱动对象的参数,包括Appium版本信息、平台信息、平台版本、设备名、命令超时设置、启动超时设置、位置服务认证中的一项或多项。
5.如权利要求1所述的自动化测试方法,还包括:
在测试所述移动设备的过程中将测试结果写入到测试步骤、图片、检查点和日志中,并保存以生成质量报告。
6.一种用于移动设备的自动化测试装置,包括:
脚本提供单元,被配置用于提供针对移动设备的测试脚本;
检测单元,被配置用于检测所述测试脚本的第三方依赖包是否存在更新,如果有更新,下载更新后的第三方依赖包到本地;
编译单元,被配置用于使用所述第三方依赖包动态编译所述测试脚本,通过反射产生脚本实例对象;
测试启动单元,被配置用于启动测试服务,根据移动设备的类型动态获取对应的驱动对象,将所述驱动对象反射注入到所述脚本实例对象;
运行单元,被配置用于运行经注入的脚本实例对象以测试所述移动设备。
7.如权利要求6所述的自动化测试装置,其中,所述脚本提供单元还被配置用于:
在测试脚本中声明需要使用的驱动对象;和
定义约定的结果集合,包括测试步骤、图片、检查点和日志。
8.如权利要求6所述的自动化测试装置,其中,所述检测单元还被配置用于:
从第三方依赖库下载依赖库版本信息并与本地依赖包版本信息进行比较;
如果所述依赖库版本信息的时间戳更大,确定第三方依赖包存在更新。
9.如权利要求6所述的自动化测试装置,测试启动单元还被配置用于:
动态配置所述测试服务的参数,包括启动端口、socket交换端口、设备序列号、超时时间配置中的一项或多项;和
动态配置所述驱动对象的参数,包括Appium版本信息、平台信息、平台版本、设备名、命令超时设置、启动超时设置、位置服务认证中的一项或多项。
10.如权利要求6所述的自动化测试装置,所述运行单元还配置用于:在测试所述移动设备的过程中将测试结果写入到测试步骤、图片、检查点和日志中,并保存以生成质量报告。
11.一种电子设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1至5中任一项所述的方法。
12.一种计算机可读介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行如权利要求1至5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010671729.7A CN111563050A (zh) | 2020-07-14 | 2020-07-14 | 用于移动设备的自动化测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010671729.7A CN111563050A (zh) | 2020-07-14 | 2020-07-14 | 用于移动设备的自动化测试方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111563050A true CN111563050A (zh) | 2020-08-21 |
Family
ID=72068887
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010671729.7A Pending CN111563050A (zh) | 2020-07-14 | 2020-07-14 | 用于移动设备的自动化测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111563050A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111833351A (zh) * | 2020-09-11 | 2020-10-27 | 湖北公众信息产业有限责任公司 | 基于图像数据处理的交通视频监控管理控制系统 |
CN113342377A (zh) * | 2021-06-23 | 2021-09-03 | 深圳兆日科技股份有限公司 | 第三方软件包的备份方法、装置及计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7512039B1 (en) * | 2003-05-27 | 2009-03-31 | Oracle International Corporation | Method for enhancing functionality of an automated testing tool |
CN104699604A (zh) * | 2015-02-28 | 2015-06-10 | 百度在线网络技术(北京)有限公司 | 用于测试基于定制浏览内核的安卓应用的方法及装置 |
CN105760296A (zh) * | 2016-01-21 | 2016-07-13 | 深圳市同创国芯电子有限公司 | 自动化测试控制方法、装置及终端 |
CN107122293A (zh) * | 2016-12-05 | 2017-09-01 | 北京小度信息科技有限公司 | 软件性能测试方法、装置、服务器及系统 |
CN108536587A (zh) * | 2018-03-21 | 2018-09-14 | 轻客智能科技(江苏)有限公司 | 一种基于Appium的自动化测试方法及系统 |
-
2020
- 2020-07-14 CN CN202010671729.7A patent/CN111563050A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7512039B1 (en) * | 2003-05-27 | 2009-03-31 | Oracle International Corporation | Method for enhancing functionality of an automated testing tool |
CN104699604A (zh) * | 2015-02-28 | 2015-06-10 | 百度在线网络技术(北京)有限公司 | 用于测试基于定制浏览内核的安卓应用的方法及装置 |
CN105760296A (zh) * | 2016-01-21 | 2016-07-13 | 深圳市同创国芯电子有限公司 | 自动化测试控制方法、装置及终端 |
CN107122293A (zh) * | 2016-12-05 | 2017-09-01 | 北京小度信息科技有限公司 | 软件性能测试方法、装置、服务器及系统 |
CN108536587A (zh) * | 2018-03-21 | 2018-09-14 | 轻客智能科技(江苏)有限公司 | 一种基于Appium的自动化测试方法及系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111833351A (zh) * | 2020-09-11 | 2020-10-27 | 湖北公众信息产业有限责任公司 | 基于图像数据处理的交通视频监控管理控制系统 |
CN113342377A (zh) * | 2021-06-23 | 2021-09-03 | 深圳兆日科技股份有限公司 | 第三方软件包的备份方法、装置及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107577607B (zh) | 用户界面自动化测试方法、装置、电子设备、存储介质 | |
US8910166B2 (en) | Automatic transcoding and semantic adaptation between scripting and workflow systems | |
US11392393B2 (en) | Application runtime configuration using design time artifacts | |
US8515876B2 (en) | Dry-run design time environment | |
US8615750B1 (en) | Optimizing application compiling | |
US10209968B2 (en) | Application compiling | |
CN110013672B (zh) | 用于机器运行的游戏的自动化测试的方法、设备、装置以及计算机可读存储介质 | |
EP2290540A1 (en) | Dynamic configuration system | |
US20100191690A1 (en) | Framework for delta analysis during automated builds | |
CN109471768B (zh) | 业务问题的监控方法、装置以及电子设备 | |
CN110673837B (zh) | 代码修复方法及装置、电子设备、计算机可读存储介质 | |
CN111563050A (zh) | 用于移动设备的自动化测试方法 | |
WO2014035737A1 (en) | Obtaining metadata set by imperative statement | |
US9047100B2 (en) | Abstract syntax tree transformation | |
US9141517B2 (en) | Public solution model test automation framework | |
US7743367B1 (en) | Registration method for supporting bytecode modification | |
US20150339219A1 (en) | Resilient mock object creation for unit testing | |
US8875089B2 (en) | Workspace model for interrelated projects | |
EP2885712B1 (en) | Imperative attribution for elements in managed runtimes | |
KR101449201B1 (ko) | 철강 공정용 소프트웨어 자동 테스트 시스템 | |
CN115509913A (zh) | 软件自动化测试方法、装置、机器可读介质及设备 | |
CN113094267B (zh) | 一种测试结果收集方法及装置 | |
Challita et al. | Model-based cloud resource provisioning with TOSCA and OCCI | |
CN116339843A (zh) | 一种鸿蒙系统的驱动适配方法、装置、设备及介质 | |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200821 |
|
RJ01 | Rejection of invention patent application after publication |