CN115705296A - 应用测试方法、装置以及计算机可读存储介质 - Google Patents
应用测试方法、装置以及计算机可读存储介质 Download PDFInfo
- Publication number
- CN115705296A CN115705296A CN202110943468.4A CN202110943468A CN115705296A CN 115705296 A CN115705296 A CN 115705296A CN 202110943468 A CN202110943468 A CN 202110943468A CN 115705296 A CN115705296 A CN 115705296A
- Authority
- CN
- China
- Prior art keywords
- tested
- data
- component
- command
- running
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请实施例公开了一种应用测试方法、装置以及计算机可读存储介质;可以基于预设的应用服务环境,接收目标应用通过可视化界面发送的待处理数据;基于预设的数据模型对象,将待处理数据转换为参数集合;基于参数集合,确定待测试组件、对应的待加载数据,以及从预设测试命令集合中确定待测试组件对应的待执行命令;根据待加载数据更新待测试组件的运行任务;根据待执行命令和运行任务对待测试组件进行测试,得到测试结果。以此,实现对应用程序中待测试组件的数据加载场景进行模拟,以基于模拟的场景进行测试,无需人为对应用程序进行操作,提高了应用程序的开发或测试的效率。
Description
技术领域
本申请涉及计算机领域,具体涉及一种应用测试方法、装置以及计算机可读存储介质。
背景技术
随着计算机技术的发展,终端上的应用程序的功能层出不穷,给用户带来了各种体验。然而,在应用程序的开发或测试阶段,需要对应用程序进行兼容性测试,以确定应用程序是否存在异常。相关技术在对应用程序进行兼容性测试时,相关人员手动进入应用程序的相关页面,并进行测试,以获悉应用程序的兼容性。
在对现有技术的研究和实践过程中,本申请的发明人发现对于现有的对应用程序进行兼容性测试时,需要相关人员通过人为方式对应用程序进行操作,需要耗费大量的人力资源,且降低了应用程序的开发或测试的效率。
发明内容
本申请实施例提供一种应用测试方法、装置以及计算机可读存储介质。可节省人力资源,提高应用程序的开发或测试的效率。
本申请实施例提供一种应用测试方法,包括:
基于预设的应用服务环境,接收目标应用通过可视化界面发送的待处理数据;
基于预设的数据模型对象,将待处理数据转换为参数集合;
基于所述参数集合,确定待测试组件、对应的待加载数据,以及从预设测试命令集合中确定所述待测试组件对应的待执行命令;
根据所述待加载数据更新所述待测试组件的运行任务;
根据所述待执行命令和运行任务对所述待测试组件进行测试,得到测试结果。
相应的,本申请实施例提供一种应用测试装置,包括:
接收单元,用于基于预设的应用服务环境,接收目标应用通过可视化界面发送的待处理数据;
转换单元,用于基于预设的数据模型对象,将待处理数据转换为参数集合;
确定单元,用于基于所述参数集合,确定待测试组件、对应的待加载数据,以及从预设测试命令集合中确定所述待测试组件对应的待执行命令;
更新单元,用于根据所述待加载数据更新所述待测试组件的运行任务;
测试单元,用于根据所述待执行命令和运行任务对所述待测试组件进行测试,得到测试结果。
在一些实施例中,所述接收单元,还用于:
获取应用服务环境对应的内存地址信息;
将所述内存地址信息更新至子线程套接字,得到更新后的子线程套接字;
通过预设的创建线程函数运行所述更新后的子线程套接字,得到所述预设的应用服务环境。
在一些实施例中,所述转换单元,还用于:
对所述待处理数据进行解析,得到命令标识、待测试组件信息以及待加载数据;
基于预设的数据模型对象,将所述命令标识、待测试组件信息以及待加载数据转换为所述待处理数据对应的参数集合。
在一些实施例中,所述确定单元,还用于:
从所述参数集合中获取命令标识;
从预设测试命令集合中匹配所述命令标识对应的待执行命令,其中,所述待执行命令由预设命令标记规则对所述待测试组件的初始执行命令进行标记处理得到。
在一些实施例中,所述更新单元,还用于:
检测所述待测试组件的运行状态;
当检测到所述待测试组件的运行状态为加载数据状态时,获取所述待测试组件的任务队列;
根据所述待加载数据更新所述任务队列中的运行任务。
在一些实施例中,所述更新单元,还用于:
当检测到所述待测试组件的运行状态为关闭状态时,启动所述待测试组件;
根据所述待加载数据更新启动后的待测试组件的运行任务。
在一些实施例中,所述测试单元,还用于:
获取所述待执行命令对应的运行函数;
通过所述运行函数运行所述待执行命令,得到目标测试指令;
根据所述目标测试指令控制所述待测试组件对所述运行任务进行处理,得到测试结果。
在一些实施例中,所述应用测试装置还包括检测单元,用于:
当检测到所述测试结果中包含所述待执行命令对应的多个运行记录时,从所述测试结果中获取每一运行记录对应的运行时间;
将所述多个运行记录中运行时间相邻的两个运行记录确定为运行记录对,并获取所述运行记录对的运行时间差;
当检测到所述运行记录对的运行时间差小于预设运行时间差阈值时,将所述待执行命令的多个运行记录及所述每一运行记录对应的运行时间更新至属性表文件。
此外,本申请实施例还提供一种计算机设备,包括处理器和存储器,所述存储器存储有应用程序,所述处理器用于运行所述存储器内的应用程序实现本申请实施例提供的应用测试方法中的步骤。
此外,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本申请实施例所提供的任一种应用测试方法中的步骤。
此外,本申请实施例还提供一种计算机程序,所述计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例所提供的任一种应用测试方法中的步骤。
本申请实施例可以基于预设的应用服务环境,接收目标应用通过可视化界面发送的待处理数据;基于预设的数据模型对象,将待处理数据转换为参数集合;基于参数集合,确定待测试组件、对应的待加载数据,以及从预设测试命令集合中确定待测试组件对应的待执行命令;根据待加载数据更新待测试组件的运行任务;根据待执行命令和运行任务对待测试组件进行测试,得到测试结果。由此可得,本申请实施例通过接收目标应用发送的待处理数据,以根据待处理数据对应的数据模型对象确定待测试组件、待执行命令及待加载数据,进而根据待执行命令对执行待加载数据的待测试组件进行测试,以此,使得应用程序中待测试组件模拟加载数据时的场景,以基于模拟的场景进行测试,无需人为对应用程序进行操作,提高了应用程序的开发或测试的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的应用测试系统的场景示意图;
图2是本申请实施例提供的应用测试方法的步骤流程示意图;
图3是本申请实施例提供的应用测试方法的又一步骤流程示意图;
图4是本申请实施例提供的目标应用的可视化界面的结构示意图;
图5是本申请实施例提供的应用测试方法的方框流程示意图;
图6是本申请实施例提供的应用测试装置的结构示意图;
图7是本申请实施例提供的计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种应用测试方法、装置以及计算机可读存储介质。具体地,本申请实施例将从应用测试装置的角度进行描述,该应用测试装置具体可以集成在计算机设备中,该计算机设备可以是服务器,也可以是终端等设备。其中,该服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
本申请实施例提供的方案涉及人工智能的应用测试等技术,具体通过如下实施例进行说明:
例如,参见图1,为本申请实施例提供的应用测试系统的场景示意图。该场景包括测试设备10和被测试设备20,该测试设备10与被测试设备20之间通过无线通信连接,实现数据交互。
用户在测试设备10上的目标应用可视化界面的指令编辑区域选取或输入指令内容,并选取待测试组件的标识/信息、待测试组件的待加载数据及其他参数,以根据指令内容、待测试组件的标识/信息、待加载数据及其他参数等生成对应的待处理数据;进而,通过测试设备10的目标应用将待处理数据发送至被测试设备20,以使得被测试设备20做出响应。
被测试设备20可以基于预设的应用服务环境,接收目标应用通过可视化界面发送的待处理数据;基于预设的数据模型对象,将待处理数据转换为参数集合;基于参数集合,确定待测试组件、对应的待加载数据,以及从预设测试命令集合中确定待测试组件对应的待执行命令;根据待加载数据更新待测试组件的运行任务;根据待执行命令和运行任务对待测试组件进行测试,得到测试结果。进一步的,被测试设备还可以将测试结果返回测试设备10。
其中,应用测试可以包括接收待处理数据、转换待处理数据、确定待测试组件和待执行命令和待加载数据、更新待测试组件的运行任务、对待测试组件进行测试等处理方式。
以下分别进行详细说明。需说明的是,以下实施例的顺序不作为对实施例优选顺序的限定。
在本申请实施例中,将从应用测试装置的角度进行描述,以该应用测试装置具体可以集成在计算机设备如终端或服务器中。参见图2,图2为本申请实施例提供的一种应用测试方法的步骤流程示意图,本申请实施例以信息处理装置具体集成在终端上为例,终端上的处理器执行信息处理方法对应的程序时,具体流程如下:
101、基于预设的应用服务环境,接收目标应用通过可视化界面发送的待处理数据。
其中,该应用服务环境可以是在应用程序上构建的模拟服务器或应用服务器(phonesever)环境,可用于接收相同设备上其他应用程序或其他设备上的应用程序发送过来的数据信息,以实现该应用程序与其他应用程序之间的数据交互。
其中,该目标应用可以是与接收数据信息的应用程序处于同一终端上的应用程序,还可以是与接收数据信息的应用程序处于不同终端的应用程序,即处于其他终端上的应用程序。需要说明的是,该目标应用可包含可视化界面,该可视化界面可保卡指令编辑区、加载数据选择区及待测试组件选择区等,用户可通过目标应用的可视化界面进行选择或输入相应的数据,以根据用户选择或输入的数据、参数、指令等生待处理数据,并发送至当前应用接收端。
其中,该待处理数据可以是由包含命令标识的测试指令及待加载数据组成的数据,该待处理数据用于对应用程序接收端进行控制、测试等。该目标应用可以理解为测试应用端,即测试指令发送端。例如,在申请实施中,目标应用为了对当前应用接收端进行测试,在生成待处理数据后,将该待处理数据发送至当前应用接收端,使得当前应用接收端执行待处理数据对应的指令(命令)、待加载数据等,以实现通过目标应用对当前应用接收端进行测试。
为了便于理解及描述,本申请实施例将当前应用接收端作为待测试应用或待测试的应用程序,以便于理解。
为了对待测试的应用程序进行测试,本申请实施例中,待测试的应用程序需要接收目标应用发送的待处理数据,以便于后续根据待处理数据进行应用程序的功能、兼容性等测试。
需要说明的是,为了使得待测试的应用程序能够接收目标应用(测试指令应用端)发送的待处理数据,本申请实施例需要在待测试的应用程序侧预先建立应用服务环境。具体的,通过多线程框架的目标接口来创建应用侧的模拟服务器,并启动该应用侧的模拟服务器,得到应用服务环境。
在一些实施方式中,步骤“基于预设的应用服务环境,接收目标应用通过可视化界面发送的待处理数据”之前,可以包括:
(1)获取应用服务环境对应的内存地址信息。
其中,该内存地址信息可以是模拟服务器环境在待测试的应用程序中的内存地址,通过该内存地址可以开拓并维护模拟服务器环境的资源空间,以支撑模拟服务器的运行。例如,可以在该内存地址信息对应内存上存储模拟服务器环境在运行时所产生的数据等,以及存储模拟服务器在更新时产生的组件、代码等。
为了获取应用服务环境对应的内存地址信息,本申请实施例可以获取应用服务环境的组件的标识信息,根据该标识信息确定应用服务环境对应的内存地址信息。
(2)将内存地址信息更新至子线程套接字,得到更新后的子线程套接字。
其中,该子线程套接字可以是待测试的应用程序与目标应用之间进行通信的端点,可以用于实现待测试的应用程序接收目标应用发送的待处理数据。
为了在待测试的应用程序上创建应用服务环境,以接收目标应用发送的待处理数据,本申请实施例需要对应用服务环境进行初始化。具体的,应用服务环境的初始化过程可以是:对子线程套接字的对象进行初始化,该对象可以是模拟服务器,以此,实现应用服务环境的初始化。其中,对子线程套接字的对象进行初始化过程可以是:将内存地址信息更新至子线程套接字,以将应用服务环境对应的内存地址信息传输至子线程套接字,实现对子线程套接字的对象初始化。以此,实现对应用服务环境的初始化。
(3)通过预设的创建线程函数运行更新后的子线程套接字,得到预设的应用服务环境。
其中,该创建线程函数可以是运行/执行/生成子线程的函数或程序,可以用于创建主线程或子线程。例如,在本申请实施例中,可以通过该创建线程函数创建待测试的应用程序的其他子线程,以用于其他组件或子程序的运行。
为了使得待测试的应用程序具有对应的应用服务环境,本申请实施例通过启动初始化后模拟服务器,以使得待测试的应用程序具有应用服务环境。具体的,启动初始化后模拟服务器的过程可以包括:通过预设的创建线程函数运行包含内存地址信息的子线程套接字,得到预设的应用服务环境。
在一些实施方式中,步骤“通过预设的创建线程函数运行更新后的子线程套接字,得到预设的应用服务环境”,可以包括:
(3.1)根据更新后的子线程套接字生成运行子任务,并将运行子任务添加至异步执行队列。
(3.2)基于异步执行队列,通过预设的创建线程函数运行更新后的子线程套接字,得到预设的应用服务环境。
其中,该异步执行队列可以是对待执行任务进行实时响应的队列,用于对加入该队列的子任务依序进行实时运行,以使得多个子任务通过并行执行。需要说明的是,该异步执行队列与子线程对应的,
需要说明的是,主要通过主进程实现待测试的应用程序的数据加载或运行自身参数等,为了减少对应用服务环境进行初始化时的时间,本申请实施例通过将更新后的子线程套接字对应的运行子任务加入(子线程对应的)异步执行队列,以实时通过预设的创建线程函数运行更新后的子线程套接字,得到预设的应用服务环境。
通过以上方式,通过启动应用服务环境,并基于应用服务环境,实现待测试的应用程序接目标应用发送的待处理数据,以便于后续根据待处理数据进行应用程序的功能、兼容性等测试。
102、基于预设的数据模型对象,将待处理数据转换为参数集合。
其中,该数据模型对象可以是对不同类型的数据进行转换的模型对象,用于将不同类型的数据转换为应用程序能够识别的数据。例如,在本申请实施例中,基于数据模型对象,将待处理数据中各类型的数据转换为待测试的应用程序能够识别的数据集合,该数据集合可以包括携带有的命令标识的测试指令、待测试组件的信息、待加载数据等参数。
其中,该参数集合可以是包含一个或多个测试参数的集合,每一测试参数用于指示待测试的应用程序在进行测试时做出相应的响应或进程。例如,该参数集合可以包含命令标识、待测试组件信息、待加载数据等,具体的,命令标识用于确定待测试的应用程序相应的待执行命令,待测试组件信息用于指示待测试的应用程序确定相应的目标组件,待加载数据用于确定待测试的应用程序的目标组件的加载数据任务。
在一些实施方式中,步骤“基于预设的数据模型对象,将待处理数据转换为参数集合”,可以包括:
(1)对待处理数据进行解析,得到命令标识、待测试组件信息以及待加载数据;
(2)基于预设的数据模型对象,将命令标识、待测试组件信息以及待加载数据转换为待处理数据对应的参数集合。
其中,该命令标识可以是测试指令所携带的指令标识,用于从待测试的应用程序的预设命令库中匹配对应的命令或指令。
其中,待测试组件信息可以是待测试的应用程序中待测试的组件的标识、参数等信息。
其中,待加载数据可以是在对待测试应用程序中的待测试组件进行测试时所加载的数据,用于在对待测试的应用程序进行测试时,设定待测试组件的数据运行任务。
为了得到待测试的应用程序能够直接识别的参数集合,本申请实施例在接收到待处理数据后,需要将待处理数据转换为应用程序能够直接识别的一个或多个参数,即得到待处理数据对应的参数集合,具体的,该数据转换过程可以为:对待处理数据进行解析,得到命令标识、待测试组件信息、待测试组件在测试时所加载的数据等,并在解析完成后,创建数据模型对象,通过该数据模型对象将命令标识、待测试组件信息及待加载数据等转换为相应数据格式的参数,如将二进制/字符串/Json串等数据转化为应用程序能够识别的数据参数,得到包含多个应用程序能够识别的参数的集合。
通过以上方式,在对待处理数据进行处理时,先对待处理数据进行解析,以便于获悉在对待测试的应用程序中的待测试组件进行测试时所需要执行的参数,进一步的,通过数据模型对象将各个参数进行参数转化,以便于在面向应用程序的对象编程中进行直接识别,对参数进行直接调用,有利于应用程序在运行过程中对数据进行获取,避免应用程序无法识别而导致待处理数据中部分数据失效,以此,确保待处理数据的传递效率,提高应用测试的成功率和效率。
103、基于参数集合,确定待测试组件、对应的待加载数据,以及从预设测试命令集合中确定待测试组件对应的待执行命令。
其中,该待测试组件可以是待测试的应用程序中的组件,如在进行应用测试时所需要测试的组件。例如,该待测试组件可以是视频播放器组件、音频播放组件等。
其中,待执行命令可以是对应用程序进行测试的执行命令,用于对应用程序中的待测试组件进行控制。
为了获悉在进行应用测试时所需要测试的组件,本申请实施例在得到待处理数据对应的参数集合后,可以基于参数集合,确定待测试组件。具体的,确定待测试组件的过程可以是:从参数集合中获取待测试组件信息;根据待测试组件信息确定对应的待测试组件。以此,以便于后续对应用程序中所确定的待测试组件进行测试。
为了确定在对待测试组件进行测试时的待执行命令,本申请实施例可以根据参数集合确定对待测试组件进行测试时的待执行命令。具体的,从参数集合中获取命令标识;从预设测试命令集合中匹配命令标识对应的待执行命令,其中,待执行命令由预设命令标记规则对待测试组件的初始执行命令进行标记处理得到。以此,获取对语义程序中的待测试组件进行测试时所需的待执行命令,以便于后续根据该待执行命令对待测试组件进行测试。
需要说明的是,预设测试命令集合包含应用程序的多个可执行命令,该可执行命令可以是经过转换得到的命令,具体的,该可执行命令的转换过程可以是:在检测到应用服务环境时,获取待测试组件的初始执行命令;根据预设命令标记规则对初始执行命令进行标记处理,得到每一初始执行命令对应的可执行命令。其中,该预设命令标记规则可以是限定待执行命令的格式规则,对待执行命令进行标记处理。
通过以上方式,确定待测试组件、待测试组件在测试的所需要加载的待加载数据及在对待测试组件进行测试的待执行命令,以便于根据以上参数对应用程序进行测试。
104、根据待加载数据更新待测试组件的运行任务。
其中,该运行任务可以是应用程序中相应组件对数据进行加载的任务,用于指示应用程序中相应组件在测试时进行相关的数据加载。
由于待测试的应用程序在测试之前,其内置的待测试组件可能已经具有相应的运行任务,或待测试组件不包含任何运行任务,此时,为了使得待测试组件在测试时能够按照确定的待加载数据进行加载,需要对待测试组件的运行任务进行设定。在本申请实施例中,根据该待加载数据更新待测试组件的运行任务,以使得待加载组件能够根据待执行命令进行数据加载。
在一些实施方式中,步骤“根据待加载数据更新待测试组件的运行任务,得到更新后的待测试组件”,可以包括:
(1)检测待测试组件的运行状态。
其中,该运行状态可以是组件的状态,组件的运行状态可以包括加载状态(加载数据状态)、关闭状态等。
为了能够设定待测试组件的运行任务,本申请实施例需要先检测待测试组件的状态。具体的,获取待测试的应用程序的任务进程队列;提取任务进程队列中所包含的组件进程标识,得到组件进程标识集合;基于组件进程标识集合,确定待测试组件信息对应的目标组件的运行状态。可以理解的是,当检测到组件进程标识集合包含与待检测组件信息匹配的组件进程标识时,确定待测试组件对应的目标组件处于加载状态;当检测到组件进程标识集合不包含与待检测组件信息匹配的组件进程标识时,待测试组件对应的目标组件处于关闭状态。
通过以上方式,确定待测试组件信息对应的待测试组件的运行状态,以便于后续设定运行任务,并进行应用测试。
(2)当检测到待测试组件的运行状态为加载数据状态时,获取待测试组件的任务队列。
(3)根据待加载数据更新任务队列中的运行任务。
其中,该任务队列可以是记录待测试组件的运行任务的队列,用于对运行任务进行管理或寄存,以使得待测试组件根据任务队列中的运行任务进行数据加载或其他处理。
为了使得待测试组件在测试时能够按照确定的待加载数据进行加载,本申请实施例在检测到待测试组件当前的运行状态处于加载数据的状态时,更新处于加载数据状态下的待测试组件的运行任务,以得到更新后的待测试组件。
具体的,待测试组件的运行任务更新过程可以是:停止待测试组件的数据加载状态,并删除待测试组件的任务队列中的运行任务,得到删除后的任务队列;在任务队列中生成待加载数据对应的运行任务,得到更新后的待测试组件。
此外,待测试组件的运行任务更新过程还可以是:控制待测试组件对任务队列中的第一运行任务进行暂停;在待测试组件的任务队列中生成待加载数据对应的运行任务;将待加载数据对应的运行任务更新为任务队列中的第一运行任务,得到更新后的待测试组件。
通过以上方式,可以对待测试的应用程序中处于加载数据状态的待测试组件进行运行任务更新,以便于后续待测试组件在测试时能够按照确定的待加载数据进行加载,贴合应用测试需求,提高应用测试的准确性。
此外,步骤“根据待加载数据更新待测试组件的运行任务,得到更新后的待测试组件”,还可以包括:
(3)当检测到待测试组件的运行状态为关闭状态时,启动待测试组件;
(4)根据待加载数据更新启动后的待测试组件的运行任务。
为了确保待测试组件在测试时能够满足测试需求,本申请实施例在检测到待测试组件的运行状态为关闭状态时,需要启动该待测试组件,以确保后续在测试时能够及时响应;进一步的,在启动后的待测试组件中生成待加载数据对应的运行任务,得到更新后的待测试组件。以此,使得后续在待测试组件对待加载数据进行加载时,对处于加载数据状态的待测试组件进程测试。
通过以上方式,可以对应用程序中的处于加载数据状态或关闭状态的待测试组件的运行任务进行更新,以得到更新后的待测试组件,以便于后续对待测试组件进行测试,提高测试准确性和效率。
105、根据待执行命令和运行任务对待测试组件进行测试,得到测试结果。
为了对待测试的应用程序进行测试,本申请实施例主要是通过对待测试的应用程序中的目标组件进行测试,如对待测试组件进行测试,以确定待测试组件在运行相关运行任务时的功能情况。具体的,通过待执行命令对具有待加载数据对应的运行任务的待测试组件进行测试,以获取测试结果。
在一些实施方式中,步骤“根据待执行命令和运行任务对待测试组件进行测试,得到测试结果”,可以包括:
(1)获取待执行命令对应的运行函数。
其中,该运行函数可以是待测试组件在运行对应的可执行命令的函数,后续可通过该运行函数运行待执行命令,以对待测试组件进行测试。
为了获取待执行命令对应的运行函数,本申请实施例获取待执行命令对应的运行函数的过程可以是:根据待执行命令对应的命令标识获取待测试组件中目标函数指针,根据目标函数指针查找对应的可执行命令的运行函数。以此,使得后续通过该运行函数运行待执行命令,以获取测试结果。
(2)通过运行函数运行待执行命令,得到目标测试指令。
需要说明的是,该运行函数可以包含命令指针,该命令指针可以包含当前运行函数与待测试组件相应的初始执行命令或对应的待执行命令之间的映射关系,该命令指针可以指向对应的待执行命令,以使得运行函数运行对应的待执行命令。
为了获取待测试组件在加载运行任务时的测试指令,本申请实施例在获取运行函数后,通过该运行函数运行待执行命令,得到目标测试指令。具体的,获取待执行命令的目标命令代码,通过运行函数运行目标命令代码,得到目标测试指令,以便于后续根据该目标测试指令对处于加载运行任务的待测试组件进行测试。
在一些实施方式中,步骤“通过运行函数运行待执行命令,得到目标测试指令”之前,可以包括:获取运行函数中命令指针对应的执行命令的目标标识;在检测到命令指针所指向的目标命令标识与待执行命令的命令标识一致时,通过运行函数运行待执行命令,得到目标测试指令。以此,在通过运行函数执行运行任务之前,根据运行函数所包含命令指针确定运行函数与待执行命令之间是否对应,当运行函数与待执行命令对应时,可通过运行函数运行待执行命令,以确保待执行命令能够正常运行,提高后续对应用程序进行测试的效率。
可以理解的是,在检测到命令指针所指向的目标命令标识与待执行命令的命令标识不一致时,重新获取待执行命令对应的运行函数,如获取与待执行命令之间匹配度较高的运行函数,并将重新获取的运行函数的命令指针所指向的目标命令标识与待执行命令的命令标识对比,若一致,则通过运行函数运行待执行命令,得到目标测试指令。以此,可确保待执行命令能够正常运行,提高后续对应用程序进行测试的效率
通过以上方式,通过运行函数运行待执行命令,以便于后续根据得到的目标测试指令对处于加载运行任务的待测试组件进行测试。
(3)根据目标测试指令控制待测试组件对运行任务进行处理,得到测试结果。
为了对待测试组件进行测试,本申请实施例在得到目标测试指令后,基于该目标测试指令,对待测试组件进行控制,具体为控制待测试组件对运行任务进行处理,得到测试结果。
例如,以待测试应用程序为视频播放应用为例,待测试组件为播放器组件,当目标测试指令为播放指令时,控制播放器组件对运行任务对应的视频数据进行加载处理;当目标测试指令为暂停指令时,控制播放器组件对运行任务对应的视频数据进行暂停加载;当目标测试指令为停止播放指令时,控制播放器组件对运行任务对应的视频数据进行结束加载;当目标测试指令为读取本地播放数据时,控制播放器组件对运行任务对应的视频数据进行切换处理,具体为将运行任务对应的视频数据切换为本地播放数据,并对本地播放数据进行加载;当目标测试指令为调整播放进度指令时,控制播放器组件对运行任务对应的视频数据进行数据加载进度调整,等等。进一步的,实时获取以上测试场景中待测试组件的响应情况,如待测试组件在响应目标测试指令时的响应时长等测试结果。以上仅为示例,本申请实施例还可以应该于音频应用程序及其他等同的应用程序的测试场景。
在一些实施方式中,步骤“根据待执行命令对更新后的待测试组件进行测试,得到测试结果”之后,可以包括:读取测试结果中目标测试指令的生成时间及响应时间;根据目标测试指令的生成时间及响应时间确定待测试组件的反应时长;在检测到反应时长大于预设反应时间阈值时,判定待测试组件处于目标测试指令对应的响应异常状态;将目标测试指令对应的响应异常状态更新至属性表文件。
需要说明的是,测试结果可以包括目标测试指令的生成时间以及待测试组件在响应的目标测试指令时的响应时间,由于目标测试指令在生成后通常是即刻进行响应,因此,待测试组件响应目标测试指令所花费的时间为可反映待测试组件是否存在异常。
为了测试待测试组件是否存在异常,在本申请实施例中,可以通过读取测试结果中包含的目标测试指令的生成时间和响应时间,以根据生成时间和响应时间确定待测试组件当前的反应时长,进一步的,当反应时长大于预设反应时间阈值时,即可确认待测试组件处于目标测试指令对应的响应异常状态,将目标测试指令对应的响应异常状态更新至属性表文件。以此,使得后续可将该属性表文件反馈给目标应用,以供相关人员获悉。
在一些实施方式中,步骤“根据待执行命令对更新后的待测试组件进行测试,得到测试结果”之后,可以包括:
A、当检测到测试结果中包含待执行命令对应的多个运行记录时,从测试结果中获取每一运行记录对应的运行时间;
B、将多个运行记录中运行时间相邻的两个运行记录确定为运行记录对,并获取运行记录对的运行时间差;
C、当检测到运行记录对的运行时间差小于预设运行时间差阈值时,将待执行命令的多个运行记录及每一运行记录对应的运行时间更新至属性表文件。
需要说明的是,在本实施方式中,在对待测试组件进行自动化测试时,当待测试组件无法实时根据待执行命令作出响应,如由于待测试组件运行紊乱或出错而无法响应,会执行多次待执行命令,直至待测试组件作出响应或达到对应的命令执行次数。因此,当测试结果包含待执行命令的连续多个运行记录且相邻两次执行命令的运行时间差过小时,可以判定待测试组件存在响应异常。
为了测试待测试组件是否存在异常,在本申请实施例中,在根据待执行命令对更新后的待测试组件进行测试之后,当检测到测试结果中包含待执行命令对应的多个运行记录时,可以获取每一运行记录对应的运行时间,并获取任意两个运行时间相邻的两个运行记录之间的运行时间差,当运行时间差小于预设运行时间差阈值时,说明待测试组件可能包含存在异常。进一步的,将待执行命令的多个运行记录及每一运行记录对应的运行时间更新至属性表文件,以便于后续将该属性表文件反馈给目标应用,以供相关人员获悉。
在本申请实施例中,为了实现对终端上的应用程序进行自动化测试,如通过自动化测试对终端上的应用程序进行操作模拟,以获悉待测试的应用程序中待测试组件的响应情况。具体的,待测试的应用程序可启动应用服务环境,以实现对其他设备端(发送端)上目标应用通过可视化界面发送的待处理数据进行接收。以此,可使得相关用户可通过目标应用的可视化界面进行待处理数据相关的操作,并发送至待测试的应用程序,以实现通过目标应用对待测试的应用程序进行测试,提高测试效率及便捷性。
进一步的,待测试的应用程序在接收到目标应用通过可视化界面发送过来的待处理数据后,通过创建的数据模型对象对待处理数据进行转换,得到包含多个参数的参数集合,以使得待测试的应用程序能够直接对转换得到的参数进行识别,提高待处理数据对应的指令或信息的传递效率,以及提高待测试的应用程序对相关参数或指令的识别率,具有可靠性。
此外,基于转换得到的参数集合,确定待测试的应用程序中待测试组件、待加载数据以及当前测试过程所需要执行的待执行命令,并根据待加载数据更新待测试组件的运行任务,以使得待测试组件在测试时能够按照确定的待加载数据进行加载,以使得应用程序中的待测试组件模拟加载数据时的场景,进而使得测试过程达到预期的测试环境,使得后续的测试结果更真实。在更新待测试组件的运行任务后,根据待执行命令及运行任务对待测试组件进行测试,以得到测试结果,通过该测试结果可以获悉待测试组件的情况,以了解待测试组件是否存在异常。通过以上方式,可以实现基于应用加载数据的模拟场景进行测试,无需人为对应用程序进行操作,提高了应用程序的开发或测试的效率。
由上可知,本申请实施例可以基于预设的应用服务环境,接收目标应用通过可视化界面发送的待处理数据;基于预设的数据模型对象,将待处理数据转换为参数集合;基于参数集合,确定待测试组件、对应的待加载数据,以及从预设测试命令集合中确定待测试组件对应的待执行命令;根据待加载数据更新待测试组件的运行任务;根据待执行命令和运行任务对待测试组件进行测试,得到测试结果。由此可得,本申请实施例通过接收目标应用发送的待处理数据,以根据待处理数据对应的数据模型对象确定待测试组件、待执行命令及待加载数据,进而根据待执行命令对执行待加载数据的待测试组件进行测试,以此,使得应用程序中待测试组件模拟加载数据时的场景,以基于模拟的场景进行测试,无需人为对应用程序进行操作,提高了应用程序的开发或测试的效率。
根据上面实施例所描述的方法,以下将举例作进一步详细说明。
本申请实施例以应用测试为例,对本申请实施例提供的应用测试方法作进一步叙述。
参见图3,图3是本申请实施例提供的应用测试方法的另一步骤流程示意图,图4是本申请实施例提供的目标应用的可视化界面的结构示意图,图5是本申请实施例提供的应用测试方法的方框流程示意图;为了便于理解,请一并结合图3、图4和图5,对本申请实施例进行描述。
在本申请实施例中,将从应用测试装置的角度进行描述,该应用测试装置具体可以集成在计算机设备中,其中,该计算机设备可以分别是测试终端和待测试终端等设备,其中,测试终端上包含目标应用,待测试终端上包含的待测试应用。测试终端或待测试终端上的处理器执行应用测试方法对应的程序时,该应用测试方法的具体流程如下:
201、目标应用获取可视化界面中生成的数据集合,并根据获取的数据集合确定待处理数据。
其中,数据集合可以是包含多种类型或多个数据的集合,数据集合中的数据由用户在可视化界面中输入或选择产生。
例如,如图4所示,在目标应用的可视化界面40不限于包含指令编辑区41、加载数据选择区42和待测试组件选择区43。用户可通过指令编辑区41输入或选择控制指令,该控制指令可以携带有命令标识,以用于在待测试应用程序确定相应的待执行命令;用户可通过加载数据选择区42选择或设定待加载数据的类型,以便于待测试的应用程序根据待加载数据设定待测试组件的加载任务;用户可通过待测试组件选择区43选择或设定待测试组件信息(如标识),以用于在待测试应用程序中确定待测试组件。以上仅为示例,本申请实施例还可包括其他数据。
202、目标应用通过的可视化界面发送待处理数据至待测试的应用程序。
在本申请实施例中,在目标应用根据可视化界面中生成的数据集合确定待处理数据后,需要将该待处理数据发送至待测试的应用程序端。
例如,用户通过目标应用通过点击可视化界面中的“发送指令”按钮后,测试终端的目标应用会扫描待测试终端的待测试应用程序的应用服务环境(PhoneServer)的端口号,并选择目标端口号对应待测试应用程序进行数据发送,以对待测试应用程序进行测试。
203、待测试的应用程序基于应用服务环境,接收目标应用通过可视化界面发送的待处理数据。
其中,该应用服务环境可以是在应用程序上构建的模拟服务器或应用服务器(Phonesever)环境,可用于接收相同设备上其他应用程序或其他设备上的应用程序发送过来的数据信息,以实现该应用程序与其他应用程序之间的数据交互。
其中,该目标应用可以是与接收数据信息的应用程序处于同一终端上的应用程序,还可以是与接收数据信息的应用程序处于不同终端的应用程序,即处于其他终端上的应用程序。需要说明的是,该目标应用可包含可视化界面,该可视化界面可保卡指令编辑区、加载数据选择区及待测试组件选择区等,用户可通过目标应用的可视化界面进行选择或输入相应的数据,以根据用户选择或输入的数据、参数、指令等生待处理数据,并发送至当前应用接收端。
为了对待测试的应用程序进行测试,本申请实施例中,待测试的应用程序需要接收目标应用发送的待处理数据,以便于后续根据待处理数据进行应用程序的功能、兼容性等测试。
例如,通过多线程(pthread)框架相关接口(API)在待测试应用程序上搭建应用服务环境(PhoneServer)。其中,启动该接收服务的过程和执行测试的过程都在子线程进行,采用多核编程(Grand Central Dispath Apple,GCD)来开启子线程,具体如下:
需要说明的是,待测试的应用程序在处理用户的事件例如滑动,点击,捏合和页面的渲染都是在主线程进行,为了提高测试效率,本申请实施例通过开启子线程,以通过子线程进行应用程序测试。
具体的,创建应用服务环境的过程可以是:获取应用服务环境对应的内存地址信息,将内存地址信息更新至子线程套接字,得到更新后的子线程套接字,通过预设的创建线程函数运行更新后的子线程套接字,得到预设的应用服务环境。例如,通过函数初始化thread_ret套接字。该套接字需要初始化pthread_attr_t类的对象attr来描述服务属性,调用pthread_attr_init,传入attr的地址,即可完成attr对象的初始化。设置attr为SCHED_RR(轮询)。把最终生成的attr地址传入到thread_ret即可完成PhoneServer的初始化,在应用程序启动时调用PhoneServer的start方法即可开始检测特定端口的数据输入。
通过以上方式,通过启动应用服务环境,并基于应用服务环境,实现待测试的应用程序接目标应用发送的待处理数据,以便于后续根据待处理数据进行应用程序的功能、兼容性等测试。
204、待测试的应用程序对待处理数据进行解析,得到命令标识、待测试组件信息以及待加载数据。
其中,该命令标识可以是测试指令所携带的指令标识,用于从待测试的应用程序的预设命令库中匹配对应的命令或指令。
其中,待测试组件信息可以是待测试的应用程序中待测试的组件的标识、参数等信息。
其中,待加载数据可以是在对待测试应用程序中的待测试组件进行测试时所加载的数据,用于在对待测试的应用程序进行测试时,设定待测试组件的数据运行任务。
在本申请实施例中,通过对待处理数据进行解析,以得到在对待测试的应用程序中的待测试组件进行测试时所需要执行的参数,如,得到命令标识、待测试组件信息以及待加载数据。
例如,待测试的应用程序可以包括数据分析模块(DataParse),通过数据分析模块(DataParse)将接收到的原始的待处理数据进行解析成指令和相关的参数。在一些示例中,可以创建属性表文件(plist),然后对待处理数据进行解析,得到执行的参数,如命令标识、待测试组件信息以及待加载数据等,进而,将命令标识、待测试组件信息以及待加载数据加入属性表文件(plist),以此,实现对待处理数据的plist格式化。
此外,数据分析模块(DataParse)在对待处理数据的plist格式化后,还可以增加日志字段写入属性表文件(plist)。例如,以视频客户端作为待测试的应用程序为例,以播放器组件为待测试组件,该日志字段可以包含businessType(播放器组件的业务类型)、page_number(页面所属编号,每个播放页面加载后都会按顺序进行编号,通过这个字段可以直接索引到播放页面)、cachePlay(是否使用缓存数据,在开发、测试过程中有些播放资源是在本地的,若本地存在且cachePlay为true,则加载本地资源)、pageData(页面元素数据,泛指页面中其它标签元素)、controlData(控制播放的接口数据,包括调用播放器组件的执行命令的标识,传入的参数等)。以此,以便于后续对属性表文件(plist)中的数据进行调用。
205、待测试的应用程序基于预设的数据模型对象,将命令标识、待测试组件信息以及待加载数据转换为待处理数据对应的参数集合。
其中,该数据模型对象可以是对不同类型的数据进行转换的模型对象,用于将不同类型的数据转换为应用程序能够识别的数据。例如,在本申请实施例中,基于数据模型对象,将待处理数据中各类型的数据转换为待测试的应用程序能够识别的数据集合,该数据集合可以包括携带有的命令标识的测试指令、待测试组件的信息、待加载数据等参数。
为了得到待测试的应用程序能够直接识别的参数集合,本申请实施例在对待处理数据进行解析后,创建数据模型对象,通过该数据模型对象将命令标识、待测试组件信息及待加载数据等转换为相应数据格式的参数,例如,将二进制/字符串/Json串等数据转化为应用程序能够识别的数据参数,得到包含多个应用程序能够识别的参数的集合。
通过以上方式,使得在面向应用程序的对象编程中进行直接识别,对参数进行直接调用,有利于应用程序在运行过程中对数据进行获取,避免应用程序无法识别而导致待处理数据中部分数据失效,以此,确保待处理数据的传递效率,提高应用测试的成功率和效率。
206、待测试的应用程序基于参数集合,确定待测试组件、对应的待加载数据。
其中,该待测试组件可以是待测试的应用程序中的组件,如在进行应用测试时所需要测试的组件。例如,该待测试组件可以是视频播放器组件、音频播放组件等。
为了获悉在进行应用测试时所需要测试的组件,本申请实施例在得到待处理数据对应的参数集合后,可以基于参数集合,确定待测试组件。具体的,确定待测试组件的过程可以是:从参数集合中获取待测试组件信息;根据待测试组件信息确定对应的待测试组件。以此,以便于后续对应用程序中所确定的待测试组件进行测试。
207、待测试的应用程序基于参数集合,从预设测试命令集合中确定待测试组件对应的待执行命令。
其中,待执行命令可以是对应用程序进行测试的执行命令,用于对应用程序中的待测试组件进行控制。
为了确定在对待测试组件进行测试时的待执行命令,本申请实施例可以根据参数集合确定对待测试组件进行测试时的待执行命令。具体的,从参数集合中获取命令标识;从预设测试命令集合中匹配命令标识对应的待执行命令,其中,待执行命令由预设命令标记规则对待测试组件的初始执行命令进行标记处理得到。以此,获取对语义程序中的待测试组件进行测试时所需的待执行命令,以便于后续根据该待执行命令对待测试组件进行测试。
需要说明的是,预设测试命令集合包含应用程序的多个可执行命令,该可执行命令可以是经过转换得到的命令,具体的,该可执行命令的转换过程可以是:在检测到应用服务环境时,获取待测试组件的初始执行命令;根据预设命令标记规则对初始执行命令进行标记处理,得到每一初始执行命令对应的可执行命令。其中,该预设命令标记规则可以是限定待执行命令的格式规则,对待执行命令进行标记处理。例如,待测试的应用程序可以包括钩子函数模块(hook模块),通过该钩子函数模块(hook模块)实现对待测试组件的原有的初始执行命令的hook,生成原有类带有“_”开头前缀的可执行命令;其中,待测试组件的原有的初始执行命令包含如下:
初始执行命令 | 说明 |
startPlay | 开播 |
pausePlay | 暂停 |
stopPlay | 停止播放 |
continuePlay | 续播 |
readCachePlayData | 读取本地播放数据 |
clearPlayData | 清除播放数据 |
playNextItem | 播放下个视频 |
initWithSource | 通过资源路径初始化播放器 |
seekTimeIn | 调整播放进度 |
通过钩子函数模块(hook模块)对以上初始执行命令进行转换,得到相应的可执行命令,并存储至预设测试命令集合,以便于后续根据参数集合中的命令标识从预设测试命令集合中确定待测试组件对应的待执行命令。
208、待测试的应用程序根据待加载数据更新待测试组件的运行任务。
其中,该运行任务可以是应用程序中相应组件对数据进行加载的任务,用于指示应用程序中相应组件在测试时进行相关的数据加载。
由于待测试的应用程序在测试之前,其内置的待测试组件可能已经具有相应的运行任务,或待测试组件不包含任何运行任务,此时,为了使得待测试组件在测试时能够按照确定的待加载数据进行加载,需要对待测试组件的运行任务进行设定。
在本申请实施例中,需要检测待测试组件的运行状态,当检测到待测试组件的运行状态为加载数据状态时,则需要根据待加载数据更新待测试组件的运行任务;当检测到待测试组件的运行状态为关闭状态时,启动待测试组件,根据待加载数据更新启动后的待测试组件的运行任务。
例如,以视频客户端作为待测试的应用程序为例,视频客户端可包含多个播放器组件,以播放器组件A为待测试组件,则在确定需要测试的播放器组件A后,需要判断当前的视频客户端是否打开/启动播放器组件A。若视频客户端已经打开/启动播放器组件A,则可根据待加载数据刷新播放器组件A的播放数据,如待加载数据可以是某个视频数据或视频数据对应的播放页面数据,即可以根据某个视频数据或视频数据对应的某一播放页面数据(page_number)刷新播放器组件A。若视频客户端未打开/未启动播放器组件A,则启动播放器组件A,并根据某个视频数据或视频数据对应的某一播放页面数据(page_number)刷新播放器组件A。
209、待测试的应用程序根据待执行命令和运行任务对待测试组件进行测试,得到测试结果。
本申请实施例主要是通过对待测试的应用程序中的目标组件进行测试,如对待测试组件进行测试,以确定待测试组件在运行相关运行任务时的功能情况。
具体的,测试过程可以为:获取待执行命令对应的运行函数,如根据待执行命令对应的命令标识获取待测试组件中目标函数指针,根据目标函数指针查找对应的可执行命令的运行函数;通过运行函数运行待执行命令,得到目标测试指令,需要说明的是,该运行函数可以包含命令指针,该命令指针可以包含当前运行函数与待测试组件相应的初始执行命令或对应的待执行命令之间的映射关系,该命令指针可以指向对应的待执行命令,以使得运行函数运行对应的待执行命令;进一步的,根据目标测试指令控制待测试组件对运行任务进行处理,得到测试结果。
例如,以视频客户端作为待测试的应用程序为例,以播放器组件为待测试组件,通过对象调用方法函数(objc_getMethod)获取到播放器组件中的与待执行命令匹配的初始执行命令的目标函数指针(IMP),该IMP指针可以意为初始执行命令的地址,可以基初始执行命令的地址间接获取到初始执行命令的运行函数列表和初始执行命令的属性,因此,通过IMP指针可以查找初始执行命令对应的运行函数,具体可以先从基类中进行查找,若在基类中未查找到,则继续从父类中进行查找,直至查找到所要调用的运行函数。进一步的,通过运行函数运行待执行命令,以对在执行运行任务时的播放器组件进行测试,例如,通过hook的调用,使得运行函数的命令指针(isa)指向待执行命令中的目标命令代码,例如,当发生hook调用时,在“_”开头的“_startPlay”中,通过运行函数的命令指针(isa)指向“startPlay”,以实现调用self命令,以此,能够保证原有方法功能可以正常执行的基础上进行代码的插桩。
示例性的,以待测试应用程序为视频播放应用为例,待测试组件为播放器组件,当目标测试指令为播放指令时,控制播放器组件对运行任务对应的视频数据进行加载处理;当目标测试指令为暂停指令时,控制播放器组件对运行任务对应的视频数据进行暂停加载;当目标测试指令为停止播放指令时,控制播放器组件对运行任务对应的视频数据进行结束加载;当目标测试指令为读取本地播放数据时,控制播放器组件对运行任务对应的视频数据进行切换处理,具体为将运行任务对应的视频数据切换为本地播放数据,并对本地播放数据进行加载;当目标测试指令为调整播放进度指令时,控制播放器组件对运行任务对应的视频数据进行数据加载进度调整,等等。进一步的,实时获取以上测试场景中待测试组件的响应情况,如待测试组件在响应目标测试指令时的响应时长等测试结果。以上仅为示例,本申请实施例还可以应该于音频应用程序及其他等同的应用程序的测试场景。
210、待测试的应用程序将测试结果更新至属性表文件,并将更新后的属性表文件反馈至目标应用,使得目标应用通过可视化界面对更新后的属性表文件进行展示。
其中,测试结果可以包括目标测试指令的生成时间以及待测试组件在响应的目标测试指令时的响应时间,由于目标测试指令在生成后通常是即刻进行响应,因此,待测试组件响应目标测试指令所花费的时间为可反映待测试组件是否存在异常。
例如,为了测试待测试组件是否存在异常,可以通过读取测试结果中包含的目标测试指令的生成时间和响应时间,以根据生成时间和响应时间确定待测试组件当前的反应时长,进一步的,当反应时长大于预设反应时间阈值时,即可确认待测试组件处于目标测试指令对应的响应异常状态,将目标测试指令对应的响应异常状态更新至属性表文件。以此,使得后续可将该属性表文件反馈给目标应用,以供相关人员获悉。
例如,在对待测试组件进行自动化测试时,当待测试组件无法实时根据待执行命令作出响应,如由于待测试组件运行紊乱或出错而无法响应,会执行多次待执行命令,直至待测试组件作出响应或达到对应的命令执行次数。因此,当测试结果包含待执行命令的连续多个运行记录且相邻两次执行命令的运行时间差过小时,可以判定待测试组件存在响应异常。具体的,在根据待执行命令对更新后的待测试组件进行测试之后,当检测到测试结果中包含待执行命令对应的多个运行记录时,可以获取每一运行记录对应的运行时间,并获取任意两个运行时间相邻的两个运行记录之间的运行时间差,当运行时间差小于预设运行时间差阈值时,说明待测试组件可能包含存在异常。进一步的,将待执行命令的多个运行记录及每一运行记录对应的运行时间更新至属性表文件,以便于后续将该属性表文件反馈给目标应用,以供相关人员获悉。
进一步的,待测试的应用程序可根据测试结果(可包含待测试组件的响应异常或正常状态的相关数据)生成日志,并更新至属性表文件(plist)中。例如,当测试结果包含待测试组件的响应异常状态的数据时,生成异常报告日志,并将该异常报告日志写入属性表文件(plist)。
此外,待测试的应用程序在更新属性表文件后,并将更新后的属性表文件反馈至目标应用,使得目标应用通过可视化界面对更新后的属性表文件进行展示,以供相关人员获悉。
如图5所示,为本申请实施例提供的应用测试方法的方框流程示意图。在本申请实施例中,通过执行步骤201-210,以实现如图5中的流程,具体的,图5所示的应用测试方法流程具体如下:
301、目标应用发送待处理数据。
302、基于应用服务环境(Phonesever),接收待处理数据。
303、数据分析模块(DataParse)创建属性表文件(plist)。
304、数据分析模块(DataParse)解析待处理数据,并创建数据模型对象。
305、判断待测试应用程序中是否打开播放器组件,若否,则执行流程306若是,则执行流程307。
306、启动播放器组件,并创建播放页面数据,然后执行流程308。
307、刷新已经启动的播放器组件的播放页面数据,然后执行流程308。
308、调用钩子函数(hook)模块,执行控制数据(controlData)中的数据操作,得到测试结果。
309、根据测试结果生成异常报告日志,并写入属性表文本(plist)。
需要说明的是,本申请实施例可以在测试终端(如PC端、移动终端、服务器等)通过渐进式框架构造发送端(目标应用),以使得目标应用包含可视化界面或用户界面,在需要发送测试指令给待测试的应用程序时,通过扫描应用服务环境(Phonesever)的端口号的方式将待处理数据传输至客户端,即待测试的应用程序,该过程属于调用接口的脚本的方式实现。
此外,客户端(待测试的应用程序)包含接收模块,该接收模块具体可以包含应用服务环境(Phonesever)、数据分析模块(DataParse)及钩子函数模块(hook)。需要说明的是,客户端通过创建用户框架(PlayerConfiguration)类来持有这三个模块,其中,数据分析模块(DataParse)是作为应用服务环境(Phonesever)和钩子函数模块(hook)之间的桥梁,当待处理数据从发送端发送过来时,由应用服务环境(Phonesever)进行接收,将待处理数据交给数据分析模块(DataParse)进行解析成指令和参数,最后传入到钩子函数模块(hook)进行功能执行。
通过本申请实施例,可以不需要人为对播放器入口进行点击,提高开发、测试过程的效率;此外,能够模拟用户在观看视频的各种行为,能够让部分测试用例进行自动化。
由以上可知,本申请实施例可以基于预设的应用服务环境,接收目标应用通过可视化界面发送的待处理数据;基于预设的数据模型对象,将待处理数据转换为参数集合;基于参数集合,确定待测试组件、对应的待加载数据,以及从预设测试命令集合中确定待测试组件对应的待执行命令;根据待加载数据更新待测试组件的运行任务;根据待执行命令和运行任务对待测试组件进行测试,得到测试结果。由此可得,本申请实施例通过接收目标应用发送的待处理数据,以根据待处理数据对应的数据模型对象确定待测试组件、待执行命令及待加载数据,进而根据待执行命令对执行待加载数据的待测试组件进行测试,以此,使得应用程序中待测试组件模拟加载数据时的场景,以基于模拟的场景进行测试,无需人为对应用程序进行操作,提高了应用程序的开发或测试的效率。
为了更好地实施以上方法,本申请实施例还提供一种应用测试装置,该应用测试装置可以集成在网络设备,比如服务器或终端等设备中,该终端可以包括平板电脑、笔记本电脑和/或个人计算机等。
例如,如图6所示,该应用测试装置可以包括接收单元601、转换单元602、确定单元603、更新单元604和测试单元605。
接收单元601,用于基于预设的应用服务环境,接收目标应用通过可视化界面发送的待处理数据;
转换单元602,用于基于预设的数据模型对象,将待处理数据转换为参数集合;
确定单元603,用于基于参数集合,确定待测试组件、对应的待加载数据,以及从预设测试命令集合中确定待测试组件对应的待执行命令;
更新单元604,用于根据待加载数据更新待测试组件的运行任务;
测试单元605,用于根据待执行命令和运行任务对待测试组件进行测试,得到测试结果。
在一些实施例中,接收单元601,还用于:获取应用服务环境对应的内存地址信息;将内存地址信息更新至子线程套接字,得到更新后的子线程套接字;通过预设的创建线程函数运行更新后的子线程套接字,得到预设的应用服务环境。
在一些实施例中,接收单元601,还用于:根据更新后的子线程套接字生成运行子任务,并将运行子任务添加至异步执行队列;基于异步执行队列,通过预设的创建线程函数运行更新后的子线程套接字,得到预设的应用服务环境。
在一些实施例中,转换单元602,还用于:对待处理数据进行解析,得到命令标识、待测试组件信息以及待加载数据;基于预设的数据模型对象,将命令标识、待测试组件信息以及待加载数据转换为待处理数据对应的参数集合。
在一些实施例中,确定单元603,还用于:从参数集合中获取命令标识;从预设测试命令集合中匹配命令标识对应的待执行命令,其中,待执行命令由预设命令标记规则对待测试组件的初始执行命令进行标记处理得到。
在一些实施例中,确定单元603,还用于:从参数集合中获取待测试组件信息;根据待测试组件信息确定对应的待测试组件。
在一些实施例中,更新单元604,还用于:检测待测试组件的运行状态;当检测到待测试组件的运行状态为加载数据状态时,获取待测试组件的任务队列;根据待加载数据更新任务队列中的运行任务。
在一些实施例中,更新单元604,还用于:当检测到待测试组件的运行状态为关闭状态时,启动待测试组件;根据待加载数据更新启动后的待测试组件的运行任务。
在一些实施例中,测试单元605,还用于:获取待执行命令对应的运行函数;通过运行函数运行待执行命令,得到目标测试指令;根据目标测试指令控制待测试组件对运行任务进行处理,得到测试结果。
在一些实施例中,应用测试装置还包括检测单元,用于:当检测到测试结果中包含待执行命令对应的多个运行记录时,从测试结果中获取每一运行记录对应的运行时间;将多个运行记录中运行时间相邻的两个运行记录确定为运行记录对,并获取运行记录对的运行时间差;当检测到运行记录对的运行时间差小于预设运行时间差阈值时,将待执行命令的多个运行记录及每一运行记录对应的运行时间更新至属性表文件。
由以上可知,本申请实施例可以通过接收单元601基于预设的应用服务环境,接收目标应用通过可视化界面发送的待处理数据;通过转换单元602基于预设的数据模型对象,将待处理数据转换为参数集合;通过确定单元603基于参数集合,确定待测试组件、对应的待加载数据,以及从预设测试命令集合中确定待测试组件对应的待执行命令;通过更新单元604根据待加载数据更新待测试组件的运行任务;通过测试单元605根据待执行命令和运行任务对待测试组件进行测试,得到测试结果。由此可得,本申请实施例通过接收目标应用发送的待处理数据,以根据待处理数据对应的数据模型对象确定待测试组件、待执行命令及待加载数据,进而根据待执行命令对执行待加载数据的待测试组件进行测试,以此,使得应用程序中待测试组件模拟加载数据时的场景,以基于模拟的场景进行测试,无需人为对应用程序进行操作,提高了应用程序的开发或测试的效率。
本申请实施例还提供一种计算机设备,如图7所示,其示出了本申请实施例所涉及的计算机设备的结构示意图,具体来讲:
该计算机设备可以包括一个或者一个以上处理核心的处理器701、一个或一个以上计算机可读存储介质的存储器702、电源703和输入单元704等部件。本领域技术人员可以理解,图7中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器701是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器702内的软件程序和/或模块,以及调用存储在存储器702内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器701可包括一个或多个处理核心;优选的,处理器701可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器701中。
存储器702可用于存储软件程序以及模块,处理器701通过运行存储在存储器702的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器702可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器702还可以包括存储器控制器,以提供处理器701对存储器702的访问。
计算机设备还包括给各个部件供电的电源703,优选的,电源703可以通过电源管理系统与处理器701逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源703还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该计算机设备还可包括输入单元704,该输入单元704可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本申请实施例中,计算机设备中的处理器701会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器702中,并由处理器701来运行存储在存储器702中的应用程序,从而实现各种功能,如下:
基于预设的应用服务环境,接收目标应用通过可视化界面发送的待处理数据;基于预设的数据模型对象,将待处理数据转换为参数集合;基于参数集合,确定待测试组件、对应的待加载数据,以及从预设测试命令集合中确定待测试组件对应的待执行命令;根据待加载数据更新待测试组件的运行任务;根据待执行命令和运行任务对待测试组件进行测试,得到测试结果。
以上各个操作的具体实施可参见前面的实施例,在此不作赘述。
由以上可知,本申请实施例可以基于预设的应用服务环境,接收目标应用通过可视化界面发送的待处理数据;基于预设的数据模型对象,将待处理数据转换为参数集合;基于参数集合,确定待测试组件、对应的待加载数据,以及从预设测试命令集合中确定待测试组件对应的待执行命令;根据待加载数据更新待测试组件的运行任务;根据待执行命令和运行任务对待测试组件进行测试,得到测试结果。由此可得,本申请实施例通过接收目标应用发送的待处理数据,以根据待处理数据对应的数据模型对象确定待测试组件、待执行命令及待加载数据,进而根据待执行命令对执行待加载数据的待测试组件进行测试,以此,使得应用程序中待测试组件模拟加载数据时的场景,以基于模拟的场景进行测试,无需人为对应用程序进行操作,提高了应用程序的开发或测试的效率。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种应用测试方法中的步骤。例如,该指令可以执行如下步骤:
基于预设的应用服务环境,接收目标应用通过可视化界面发送的待处理数据;基于预设的数据模型对象,将待处理数据转换为参数集合;基于参数集合,确定待测试组件、对应的待加载数据,以及从预设测试命令集合中确定待测试组件对应的待执行命令;根据待加载数据更新待测试组件的运行任务;根据待执行命令和运行任务对待测试组件进行测试,得到测试结果。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该计算机可读存储介质中所存储的指令,可以执行本申请实施例所提供的任一种应用测试方法中的步骤,因此,可以实现本申请实施例所提供的任一种应用测试方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种应用测试方法、装置以及计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种应用测试方法,其特征在于,包括:
基于预设的应用服务环境,接收目标应用通过可视化界面发送的待处理数据;
基于预设的数据模型对象,将待处理数据转换为参数集合;
基于所述参数集合,确定待测试组件、对应的待加载数据,以及从预设测试命令集合中确定所述待测试组件对应的待执行命令;
根据所述待加载数据更新所述待测试组件的运行任务;
根据所述待执行命令和运行任务对所述待测试组件进行测试,得到测试结果。
2.根据权利要求1所述的方法,其特征在于,所述基于预设的应用服务环境,接收目标应用发送的待处理数据之前,包括:
获取应用服务环境对应的内存地址信息;
将所述内存地址信息更新至子线程套接字,得到更新后的子线程套接字;
通过预设的创建线程函数运行所述更新后的子线程套接字,得到所述预设的应用服务环境。
3.根据权利要求1所述的方法,其特征在于,所述基于预设的数据模型对象,将待处理数据转换为参数集合,包括:
对所述待处理数据进行解析,得到命令标识、待测试组件信息以及待加载数据;
基于预设的数据模型对象,将所述命令标识、待测试组件信息以及待加载数据转换为所述待处理数据对应的参数集合。
4.根据权利要求1所述的方法,其特征在于,所述从预设测试命令集合中确定所述待测试组件对应的待执行命令,包括:
从所述参数集合中获取命令标识;
从预设测试命令集合中匹配所述命令标识对应的待执行命令,其中,所述待执行命令由预设命令标记规则对所述待测试组件的初始执行命令进行标记处理得到。
5.根据权利要求1所述的方法,其特征在于,所述根据所述待加载数据更新所述待测试组件的运行任务,包括:
检测所述待测试组件的运行状态;
当检测到所述待测试组件的运行状态为加载数据状态时,获取所述待测试组件的任务队列;
根据所述待加载数据更新所述任务队列中的运行任务。
6.根据权利要求5所述的方法,其特征在于,还包括:
当检测到所述待测试组件的运行状态为关闭状态时,启动所述待测试组件;
根据所述待加载数据更新启动后的待测试组件的运行任务。
7.根据权利要求1所述的方法,其特征在于,所述根据所述待执行命令和运行任务对所述待测试组件进行测试,得到测试结果,包括:
获取所述待执行命令对应的运行函数;
通过所述运行函数运行所述待执行命令,得到目标测试指令;
根据所述目标测试指令控制所述待测试组件对所述运行任务进行处理,得到测试结果。
8.根据权利要求1所述的方法,其特征在于,所述根据所述待执行命令和运行任务对所述待测试组件进行测试,得到测试结果之后,还包括:
当检测到所述测试结果中包含所述待执行命令对应的多个运行记录时,从所述测试结果中获取每一运行记录对应的运行时间;
将所述多个运行记录中运行时间相邻的两个运行记录确定为运行记录对,并获取所述运行记录对的运行时间差;
当检测到所述运行记录对的运行时间差小于预设运行时间差阈值时,将所述待执行命令的多个运行记录及所述每一运行记录对应的运行时间更新至属性表文件。
9.一种应用测试装置,其特征在于,包括:
接收单元,用于基于预设的应用服务环境,接收目标应用通过可视化界面发送的待处理数据;
转换单元,用于基于预设的数据模型对象,将待处理数据转换为参数集合;
确定单元,用于基于所述参数集合,确定待测试组件、对应的待加载数据,以及从预设测试命令集合中确定所述待测试组件对应的待执行命令;
更新单元,用于根据所述待加载数据更新所述待测试组件的运行任务;
测试单元,用于根据所述待执行命令和运行任务对所述待测试组件进行测试,得到测试结果。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质为计算机可读并存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至8任一项所述的应用测试方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110943468.4A CN115705296A (zh) | 2021-08-17 | 2021-08-17 | 应用测试方法、装置以及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110943468.4A CN115705296A (zh) | 2021-08-17 | 2021-08-17 | 应用测试方法、装置以及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115705296A true CN115705296A (zh) | 2023-02-17 |
Family
ID=85181306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110943468.4A Pending CN115705296A (zh) | 2021-08-17 | 2021-08-17 | 应用测试方法、装置以及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115705296A (zh) |
-
2021
- 2021-08-17 CN CN202110943468.4A patent/CN115705296A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6772107B1 (en) | System and method for simulating activity on a computer network | |
BRPI0707374A2 (pt) | sistema e método para efetivar o controle de computadores remotos | |
CN108763086A (zh) | 基于远程真机的脚本录制方法、终端及计算机可读存储介质 | |
CN112187585A (zh) | 网络协议测试方法及装置 | |
CN109966742B (zh) | 游戏运行中获取渲染性能数据的方法及装置 | |
CN107045475B (zh) | 测试方法和装置 | |
CN109359020A (zh) | 启动时间测试方法及装置、计算机装置及存储介质 | |
CN110908837B (zh) | 应用程序异常处理方法、装置、电子设备及存储介质 | |
CN113505082A (zh) | 应用程序测试方法及装置 | |
CN115065652A (zh) | 消息回复方法、装置、存储介质及计算机设备 | |
CN115658529A (zh) | 用户页面的自动化测试方法以及相关设备 | |
CN111414309A (zh) | 应用程序的自动化测试方法、计算机设备和存储介质 | |
CN113836014A (zh) | 一种接口测试方法、装置、电子设备和存储介质 | |
CN112817869A (zh) | 测试方法、装置、介质及电子设备 | |
CN115705296A (zh) | 应用测试方法、装置以及计算机可读存储介质 | |
CN115712571A (zh) | 一种交互服务测试、装置、计算机设备及存储介质 | |
CN111459547B (zh) | 一种函数调用链路的展示方法和装置 | |
CN114968741A (zh) | 一种基于场景平台化的性能测试方法、系统、设备和介质 | |
CN114489892A (zh) | 数据处理方法、装置、计算机可读存储介质和计算机设备 | |
US10936475B2 (en) | Automated scripting and testing system | |
CN113117340A (zh) | 游戏运行方法、装置、存储介质及电子设备 | |
CN109684525B (zh) | 文档显示方法、装置、存储介质及测试设备 | |
CN110968519A (zh) | 一种游戏测试方法、装置、服务器及存储介质 | |
CN110865937A (zh) | 一种应用测试方法、装置和存储介质 | |
CN116524986B (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 |