CN111176961B - 一种应用程序测试方法、装置及存储介质 - Google Patents
一种应用程序测试方法、装置及存储介质 Download PDFInfo
- Publication number
- CN111176961B CN111176961B CN201911234522.7A CN201911234522A CN111176961B CN 111176961 B CN111176961 B CN 111176961B CN 201911234522 A CN201911234522 A CN 201911234522A CN 111176961 B CN111176961 B CN 111176961B
- Authority
- CN
- China
- Prior art keywords
- test
- instruction
- algorithm
- client
- data packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3414—Workload generation, e.g. scripts, playback
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种应用程序测试方法、装置及存储介质,其中,应用程序测试方法可应用于测试客户端,该测试客户端包括基于go语言的命令字解析层,该方法包括:所述命令字解析层获取针对目标应用程序的测试指令;所述测试指令由基于go语言的指令算法生成;所述命令字解析层将测试指令解析为与所述测试客户端的操作系统相适配的解析测试指令;所述命令字解析层将所述解析测试指令发送给所述测试客户端的测试执行引擎,以使所述测试执行引擎根据所述解析测试指令对所述目标应用程序进行测试,生成测试反馈信息。本发明基于go语言实现指令算法的跨平台使用,无需为不同操作系统重复编写指令算法,降低了测试成本、提高了测试效率。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种应用程序测试方法、装置及存储介质。
背景技术
应用程序是计算机操作系统的重要组成之一,其正常工作需要计算机设备和操作系统进行协调配合,通常在应用程序发布之前需要对其稳定性进行测试,稳定性测试是一种通过给应用加载一定的业务压力,让应用持续运行一段时间,检测应用是否能够无障碍、稳定运行的测试。
相关技术中,在对应用程序进行稳定性测试时,为了能够适应不同的操作系统如安卓系统、IOS系统,通常将各操作系统封装成一套统一的API(Application ProgrammingInterface,应用程序接口),以此来实现跨平台的稳定性测试,这种实现稳定性测试的跨平台方式不仅繁琐,而且存在大量的重复性工作,导致测试成本高、测试效率低。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种应用程序测试方法、装置及存储介质。所述技术方案如下:
一方面,提供了一种应用程序测试方法,应用于测试客户端,所述测试客户端包括基于go语言的命令字解析层,所述方法包括:
所述命令字解析层获取针对目标应用程序的测试指令;所述测试指令由基于go语言的指令算法生成;
所述命令字解析层将所述测试指令解析为与所述测试客户端的操作系统相适配的测试指令,得到解析测试指令;
所述命令字解析层将所述解析测试指令发送给所述测试客户端的测试执行引擎,以使所述测试执行引擎根据所述解析测试指令对所述目标应用程序进行测试,生成测试反馈信息。
另一方面,提供了一种应用程序测试方法,应用于测试服务器,所述测试服务器包括预置指令算法库,所述预置指令算法库中的指令算法为基于go语言的指令算法,所述方法包括:
获取针对目标应用程序的测试任务;所述测试任务包括指令算法标识;
确定预置指令算法库中与所述指令算法标识相匹配的目标指令算法;
根据所述测试任务运行所述目标指令算法,生成所述测试指令;
将所述测试指令封装成符合快速传输控制协议KCP的测试指令数据包;
将所述测试指令数据包发送给测试客户端,以使所述测试客户端的命令字解析层获取所述测试指令,将所述测试指令解析为与所述测试客户端的操作系统相适配的解析测试指令,将所述解析测试指令发送给所述测试客户端的测试执行引擎,由测试执行引擎根据所述解析测试指令对所述目标应用程序进行测试生成测试反馈信息。
另一方面,提供了一种应用程序测试装置,所述装置包括基于go语言的命令字解析层,在所述装置利用所述命令字解析层执行所述应用程序测试时,所述装置包括:
第一获取模块,用于获取针对目标应用程序的测试指令;所述测试指令由基于go语言的指令算法生成;
第一解析模块,用于将所述测试指令解析为与所述测试客户端的操作系统相适配的测试指令,得到解析测试指令;
第一发送模块,用于将所述解析测试指令发送给所述测试客户端的测试执行引擎,以使所述测试执行引擎根据所述解析测试指令对所述目标应用程序进行测试,生成测试反馈信息。
可选的,所述装置还包括预置指令算法库,所述预置指令算法库中的指令算法为基于go语言的指令算法;相应的,所述装置还包括:
第三获取模块,用于获取针对所述目标应用程序的测试任务;所述测试任务包括指令算法标识;
第二确定模块,用于确定预置指令算法库中与所述指令算法标识相匹配的目标指令算法;
第二生成模块,用于根据所述测试任务运行所述目标指令算法,生成所述测试指令。
可选的,所述装置还包括:
第一接收模块,用于接收测试服务器发送的测试指令数据包;所述测试指令数据包是所述测试服务器基于快速传输控制协议KCP对测试指令进行封装得到的;所述测试指令是所述测试服务器根据针对所述目标应用程序的测试任务运行基于go语言的指令算法而生成;
第一解析模块,用于根据所述快速传输控制协议KCP解析所述测试指令数据包,得到所述测试指令。
可选的,所述装置还包括:
第一封装模块,用于将所述测试反馈信息封装成符合快速传输控制协议KCP的测试反馈数据包括;
第三发送模块,用于将所述测试反馈数据包发送给所述测试服务器。
另一方面,提供了一种应用程序测试装置,包括预置指令算法库,所述预置指令算法库中的指令算法为基于go语言的指令算法,在所述装置利用所述预置指令算法库执行所述应用程序测试时,所述装置包括:
第二获取模块,用于获取针对目标应用程序的测试任务;所述测试任务包括指令算法标识;
第一确定模块,用于确定预置指令算法库中与所述指令算法标识相匹配的目标指令算法;
第一生成模块,用于根据所述测试任务运行所述目标指令算法,生成所述测试指令;
第一封装模块,用于将所述测试指令封装成符合快速传输控制协议KCP的测试指令数据包;
第二发送模块,用于将所述测试指令数据包发送给测试客户端,以使所述测试客户端的命令字解析层获取所述测试指令,将所述测试指令解析为与所述测试客户端的操作系统相适配的解析测试指令,将所述解析测试指令发送给所述测试客户端的测试执行引擎,由测试执行引擎根据所述解析测试指令对所述目标应用程序进行测试生成测试反馈信息。
可选的,所述第二发送模块包括:
第一写入模块,用于将所述测试指令数据包写入双缓冲队列的第一缓冲队列中,通过所述第一缓冲队列向测试客户端发送所述测试指令数据包;
其中,所述双缓冲队列包括第一缓冲队列和第二缓冲队列,所述第一缓冲队列用于存储所述测试指令,所述第二缓冲队列用于存储所述测试反馈信息。
可选的,所述装置还包括:
第二接收模块,用于接收所述测试客户端返回的测试反馈数据包;所述测试反馈数据包是所述测试客户端基于所述快速传输控制协议KCP对所述测试反馈信息进行封装得到的;
第二写入模块,用于将所述测试反馈数据包写入所述双缓冲队列的第二缓存队列中;
读取模块,用于从所述第二缓存队列中读取所述测试反馈数据包;
第二解析模块,用于基于所述快速传输控制协议KCP解析所述测试反馈数据包,得到所述测试反馈信息。
另一方面,提供了一种测试服务器,包括处理器和存储器,所述存储器中存储有基于go语言的预置指令算法,以及至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由所述处理器加载并执行以实现上述测试服务器侧的应用程序测试方法。
另一方面,提供了一种测试客户端,包括处理器和基于go语言的命令字解析层,所述基于go语言的命令字解析层包括至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由所述处理器加载并执行以实现上述测试客户端侧的应用程序测试方法。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由处理器加载并执行以实现如上述的应用程序测试方法。
本发明实施例通过基于go语言的命令字解析层获取针对目标应用程序的测试指令,该测试指令由基于go语言的指令算法生成,并通过该命令字解析层将测试指令解析为与测试客户端的操作系统相适配的解析测试指令,进而命令字解析层将该解析测试指令发送给测试客户端的测试执行引擎,以使该测试执行引擎根据上述解析测试指令对目标应用程序进行测试并生成测试反馈信息,从而基于go语言实现指令算法的跨平台使用,无需进行不同操作系统的API的封装,且无需再为不同的操作系统重复编写指令算法,大大降低了测试成本、提高了测试效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种实施环境的示意图;
图2是本发明实施例提供的一种应用程序测试方法的流程示意图;
图3(a)是本发明实施例提供的本地测试场景的一个可选示意图;
图3(b)是本发明实施例提供的在线测试场景的一个可选示意图;
图4是本发明实施例提供的另一种应用程序测试方法的流程示意图;
图5是本发明实施例提供的另一种应用程序测试方法的流程示意图;
图6是本发明实施例提供的另一种应用程序测试方法的流程示意图;
图7是本发明实施例提供的一种应用程序测试系统的可选架构示意图;
图8是本发明实施例提供的另一种应用程序测试方法的流程示意图;
图9是本发明实施例提供的一种应用程序测试装置的结构示意图;
图10是本发明实施例提供的另一种应用程序测试装置的结构示意图;
图11是本发明实施例提供的一种服务器的硬件结构框图;
图12是本发明实施例提供的一种终端的硬件结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
请参阅图1,其所示为本发明实施例提供的一种实施环境的示意图,该实施环境可以包括测试服务器110和至少一个测试客户端120。
至少一个测试客户端120中配置有待测试应用程序121和执行测试指令的测试执行引擎122,可以理解的,测试执行引擎122与所在测试客户端的操作系统类型相适配,不同测试客户端中的待测试应用程序121可以相同也可以不同。
测试客户端120可以是智能手机、台式电脑、平板电脑、笔记本电脑等具有各种操作系统的硬件设备,也可以是配置在上述硬件设备中的软件,如应用程序。其中,操作系统可以但不限于包括Android(安卓)操作系统、IOS操作系统,Android系统是一种基于Linux的自由及开放源代码的操作系统,IOS系统是苹果公司为移动设备所开发的专有移动操作系统。
测试服务器110可以通过网络与测试客户端120连接通信,其可以向测试客户端120发送测试指令,也可以接收测试客户端返回的测试反馈信息,上述网络可以是无线网络也可以是有线网络,测试服务器120可以是一台独立运行的服务器,也可以是由多台服务器组成的服务器集群。
请参阅图2,其所示为本发明实施例提供的一种应用程序测试方法的流程示意图,该方法可以应用于图1中的任一测试客户端。需要说明的是,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图2所示,所述方法可以包括:
S201,命令字解析层获取针对目标应用程序的测试指令;所述测试指令由基于go语言的指令算法生成。
其中,命令字解析层为测试客户端中基于go语言的接口对象,目标应用程序为测试客户端中的待测试应用程序,目标应用程序可以但不限于为即时通信程序,如QQ、微信等。
Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型的编程语言,其是基于Inferno操作系统所开发的,Go于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X系统上进行了实现,后来追加了Windows系统下的实现。
本说明书实施例的测试方法可以应用于测试客户端本地测试即无需联网的场景,如图3(a)所示,即在整个测试过程中测试客户端不与测试服务器进行通信,一般在网络中断时可以采用测试客户端本地测试;还可以应用于在线测试场景,如图3(b)所示,即整个测试过程中,测试客户端与测试服务器连接通信,完成测试。
针对图3(a)的本地测试场景,测试客户端本地配置有预置指令算法库,该预置指令算法库中的指令算法为基于go语言的指令算法,具体为采用go语言编写指令算法逻辑,并通过gomobile工具将编写的指令算法逻辑编译为不同操作系统可以调用的依赖包,实现一套代码的多平台使用。
其中,预置指令算法库中的指令算法可以但不限于包括加权随机算法、快速遍历算法、Q-learning算法等用于根据测试任务自动生成测试指令的算法。为了便于对预置指令算法库中指令算法的查找可以为每个指令算法分配指令算法标识,该指令算法标识用于唯一标识一个指令算法。
基于以上描述,在本地测试场景下,如图4所示,步骤S201之前,所述方法还可以包括:
S401,测试客户端获取针对所述目标应用程序的测试任务;所述测试任务包括指令算法标识。
其中,测试任务是指对目标应用程序进行测试的任务,可以根据目标应用程序所涉及的业务场景来确定,以目标应用程序是微信为例,业务场景可以但不限于包括支付、手机充值等等。根据业务场景可以形成业务场景模型,该业务场景模型可以为一段业务场景的定量描述,例如由条件和动作部分组成,表示条件成立时,动作(action)才被执行,具体的实施中,业务场景模型可以体现为有向图,该有向图中点为界面,点与点之间的连线为控件。
指令算法标识用于唯一确定预置指令算法库中指令算法,测试任务中的指令算法标识可以根据实际测试需求来选定。
S403,测试客户端确定预置指令算法库中与所述指令算法标识相匹配的目标指令算法。
S405,测试客户端根据所述测试任务运行所述目标指令算法,生成所述测试指令。
在生成测试指令后,测试客户端中的命令字解析层即可获取该测试指令。
针对图3(b)在线测试场景,可以在测试服务器配置预置指令算法库,该该预置指令算法库中的指令算法为基于go语言的指令算法,具体为采用go语言编写指令算法逻辑,并通过gomobile工具将编写的指令算法逻辑编译为不同操作系统可以调用的依赖包,实现一套代码的多平台使用。
其中,预置指令算法库中的指令算法可以但不限于包括加权随机算法、快速遍历算法、Q-learning算法等用于根据测试任务自动生成测试指令的算法。为了便于对预置指令算法库中指令算法的查找可以为每个指令算法分配指令算法标识,该指令算法标识用于唯一标识一个指令算法。
基于以上描述,在在线测试场景下,如图5所示,在步骤S201之前,所述方法还可以包括:
S501,测试客户端接收测试服务器发送的测试指令数据包。
其中,测试指令数据包是指采用指定协议封装的测试指令的数据包。测试指令是测试服务器根据针对目标应用程序的测试任务运行基于go语言的指令算法而生成,可以理解的,该指令算法是预置指令算法库中的指令算法。
为了降低测试客户端与测试服务器之间通信的时延,本说明书实施例中,指定协议为基于快速传输控制协议KCP(即KCP协议)。KCP协议是传输层的一个具有可靠性的传输层ARQ协议,KCP协议的关注点主要在控制数据的可靠性和提高传输速度上面,因此KCP没有规定下层传输协议,一般用UDP作为下层传输协议,KCP层协议的数据包在UDP数据报文的基础上增加控制头,当用户数据很大,大于一个UDP包能承担的范围时(大于mss),KCP协议会将用户数据分片存储在多个KCP包中,每个KCP包称为一个分片。
本说明书实施例中,可以在测试客户端和测试服务器创建KCP对象,在创建KCP对象时需要保证通信双方的会话编号一致,以使相互的数据包能够被认可,并设置KCP的下层协议输出函数,以使KCP在发送数据时能够调用该输出函数。
S503,测试客户端根据所述快速传输控制协议KCP解析所述测试指令数据包,得到所述测试指令。
测试客户端在接收到测试服务器发送的测试指令数据包后,可以根据快速传输控制协议KCP对测试指令数据包进行解析,得到测试指令,进而测试客户端的命令字解析层可获取到该测试指令。
S203,所述命令字解析层将所述测试指令解析为与所述测试客户端的操作系统相适配的测试指令,得到解析测试指令。
本说明书实施例中,基于go语言的命令字解析层可以在接收到测试指令时,基于测试客户端当前的操作系统对测试指令进行解析以得到与当前操作系统适配的解析测试指令,其中,解析可以包括获取控件树,查找控件以及UI(User Interface)操作。
S205,所述命令字解析层将所述解析测试指令发送给所述测试客户端的测试执行引擎,以使所述测试执行引擎根据所述解析测试指令对所述目标应用程序进行测试,生成测试反馈信息。
其中,测试执行引擎可以运行在模拟器或者真实设备中,其通过向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对待测试应用程序进行稳定性测试。
以Android系统为例,测试执行引擎可以包括AccessibilityService(获取控件树、触发控件操作)模块、Robotium(触发坐标操作、录制回放脚本)模块、Hook SDK(捕获异常日志、线程安全测试)模块。
以IOS系统为例,测试执行引擎可以包括XCTest(获取控件树、触发控制操作)模块、Hook动态库(获取界面信息)模块、Socket通信(发送界面信息)模块。
本说明书实施例中,针对在线测试场景,为了降低测试客户端与测试服务器之间通信的时延,测试客户端在生成测试反馈信息之后,可以测试反馈信息封装成符合快速传输协议KCP的测试反馈数据包,然后将该测试反馈数据包发送给测试服务器,从而测试服务器在接收到测试反馈信息后根据测试反馈信息进行相应的业务逻辑处理。具体的,测试客户端的应用层可以通过协议层接口调用动态链接库文件即so库文件,通过so库文件发送符合KCP协议的测试反馈数据包括。
可见,本发明实施例通过基于go语言的命令字解析层获取针对目标应用程序的测试指令,该测试指令由基于go语言的指令算法生成,并通过该命令字解析层将测试指令解析为与测试客户端的操作系统相适配的解析测试指令,进而命令字解析层将该解析测试指令发送给测试客户端的测试执行引擎,以使该测试执行引擎根据上述解析测试指令对目标应用程序进行测试并生成测试反馈信息,从而基于go语言实现指令算法的跨平台使用,无需进行不同操作系统的API的封装,且无需再为不同的操作系统重复编写指令算法,大大降低了测试成本、提高了测试效率。
此外,针对在线测试场景,基于KCP协议对测试指令以及测试反馈信息的封装,降低了测试客户端与测试服务器之间的通信时延,从而提高了该场景下的测试效率。
请参阅图6,其所示为本发明实施例提供的另一种应用程序测试方法,该方法可以应用于图1的测试服务器,也即该方法的应用场景为在线测试场景。如图6所示,该方法可以包括:
S601,测试服务器获取针对目标应用程序的测试任务;所述测试任务包括指令算法标识。
其中,测试服务器中配置有预置指令算法库,该预置指令算法库中的指令算法为基于go语言的指令算法,具体为采用go语言编写指令算法逻辑,并通过gomobile工具将编写的指令算法逻辑编译为不同操作系统可以调用的依赖包,实现一套代码的多平台使用。预置指令算法库中的指令算法可以但不限于包括加权随机算法、快速遍历算法、Q-learning算法等用于根据测试任务自动生成测试指令的算法。为了便于对预置指令算法库中指令算法的查找可以为每个指令算法分配指令算法标识,该指令算法标识用于唯一标识一个指令算法。
测试任务是指对目标应用程序进行测试的任务,可以根据目标应用程序所涉及的业务场景来确定,以目标应用程序是微信为例,业务场景可以但不限于包括支付、手机充值等等。根据业务场景可以形成业务场景模型,该业务场景模型可以为一段业务场景的定量描述,例如由条件和动作部分组成,表示条件成立时,动作(action)才被执行,具体的实施中,业务场景模型可以体现为有向图,该有向图中点为界面,点与点之间的连线为控件。
如图7提供的用于实现本发明实施例的一种应用程序测试方法的系统架构示意图,该系统包括测试服务器、数据库服务器以及测试客户端(包括Android系统和IOS系统),数据库服务器可以包括测试数据模块和任务配置模块,其中,测试数据模块可以用于存储用户路径信息以及测试反馈信息,其中,用户路径信息是真实用户操作应用程序时对应各个业务场景的操作序列,该操作序列为应用逻辑层面的路径,例如,用户的操作序列为A->B->C->D。任务配置模块用于实现对各个测试客户端的测试任务配置。测试服务器可以从数据库服务器获取测试数据模块中的数据,根据测试数据模块中的数据构建业务场景模型。
本说明书实施例中,测试任务中的指令算法标识可以根据实际测试需求来选定。
S603,测试服务器确定预置指令算法库中与所述指令算法标识相匹配的目标指令算法。
S605,测试服务器根据所述测试任务运行所述目标指令算法,生成所述测试指令。
具体的,测试服务器可以根据测试任务确定对应的业务场景模型,然后根据该业务场景模型运行目标指令算法,进而得到与该测试任务相匹配的测试指令。
S607,测试服务器将所述测试指令封装成符合快速传输控制协议KCP的测试指令数据包。
本说明书实施例中,测试服务器可以将测试指令封装成符合KCP协议的测试指令数据包,具体的封装时可以在测试指令的数据上增加一个控制头,用于确保数据的可靠和有序,然后根据MSS(最大输出数据大小)对测试指令进行分片,一个分片即为一个数据包,分片时需要考虑数据链路层规定的每一帧的最大长度(MTU),KCP的大小为MTU-kcp头24字节。
S609,测试服务器将所述测试指令数据包发送给测试客户端。
测试客户端在接收到测试服务器发送的测试指令数据包后,可以根据快速传输控制协议KCP解析测试指令数据包得到测试指令,进而测试客户端的命令字解析层获取该测试指令,将该测试指令解析为与测试客户端的操作系统相适配的解析测试指令,并将解析测试指令发送给测试客户端的测试执行引擎,由测试执行引擎根据所述解析测试指令对所述目标应用程序进行测试生成测试反馈信息。
实际应用中,测试服务器在向测试客户端发送测试指令数据包时会先将待发送的测试指令数据包存储在缓冲队列中,然后根据缓冲队列中数据包的实际发送情况来安排测试指令数据包的发送。然而,传统单一的缓冲队列处理会存在生产者消费者处理数据速度不一致、缓冲队列长度不好控制,限制队列长度可能导致数据丢失,不限制队列长度则占用太多资源的问题,从而影响了测试服务器测试指令的发送以及对于测试反馈信息的接收,造成通信上的时延,降低了测试效率。
为了使得测试服务器与测试客户端之间的通信达到无时延,提高测试效率,如图7所示,可以通过双缓冲队列实现二者之间的通信,其中,双缓冲队列包括第一缓冲队列和第二缓冲队列,第一缓冲队列用于存储测试指令,第二缓冲队列用于存储测试反馈信息,如此,可以将测试服务器对于测试指令的写操作和对于测试反馈信息的读操作分开,同时各自缓冲队列的管理上也更加的快速和方便。其中,双缓冲队列可以通过封装队列结构、定义队列操作协议来构建。
基于以上描述,步骤S609在实施时可以包括:将所述测试指令数据包写入双缓冲队列的第一缓冲队列中,通过所述第一缓冲队列向测试客户端发送所述测试指令数据包。
具体的,KCP在封装得到测试指令数据包时,为测试指令对应的每个分片(即数据包)分片一个唯一标识(通常为序列号),并按照数据包标识将所有测试指令数据包放入KCP的待发送队列中,此外,KCP会记录第一缓冲队列中下一个待发送的kcp数据包的序列号以及待确认的下一个已发送的kcp数据包的序列号,并根据KCP维护的接收窗口确定将KCP的待发送队列中的测试指令数据包移至第一缓冲队列中。例如,KCP的待发送队列中有4个测试指令数据包,第一缓冲队列中下一个待发送的kcp数据包的序列号为11,待确认的下一个已发送的kcp数据包的序列号为9,(即8已经确认,9,10已经发送但还没有被测试客户端确认),假设KCP维护的接收窗口为5,由于第一缓冲队列中还有两个发送了但还未确认,因此可以从KCP的待发送队列中取序列号靠前的前面3个测试指令数据包放入第一缓冲队列中,并将序列号设置为11,12,13。
测试客户端在收到一个数据包后告知测试服务器接收到的包的序号,测试服务器接收到确认后再继续发送,而如果测试服务器在一定时间内没有接收到某个序号数据包的确认,则说明该数据包丢失了,此时,测试服务器会重新传输丢失的数据包,所以测试服务器会把待确认的数据包缓存起来,方便重传。为了提高丢包时的传输速度,KCP可以根据某个数据包被跳过的次数来发起对被丢失数据包的重传,例如,测试服务器发送了1,2,3,4,5数据包,测试客户端返回确认的数据包是1,3,4,5,当收到数据包3时,KCP确定数据包2被跳过1次,收到数据包4时,确定数据包2被跳过2次,则此时可以确定数据包2丢失了,可以直接发起对数据包2的重传,从而大大改善了丢包时的传输速度。
实际应用中,测试服务器在将测试指令数据包发送给测试客户端之后,如图8所示,还可以包括:
S611,接收所述测试客户端返回的测试反馈数据包;所述测试反馈数据包是所述测试客户端基于所述快速传输控制协议KCP对所述测试反馈信息进行封装得到的。
S613,将所述测试反馈数据包写入所述双缓冲队列的第二缓存队列中。
S615,从所述第二缓存队列中读取所述测试反馈数据包。
S617,基于所述快速传输控制协议KCP解析所述测试反馈数据包,得到所述测试反馈信息。
可见,本发明实施例基于go语言实现了指令算法的跨平台使用,即该指令算法部署在后台以及不同操作系统(Android系统、IOS系统)的测试客户端均可行,实现了应用程序的跨平台测试。且通过KCP协议以及双缓冲队列实现的测试服务器与测试客户端之间的通信,实现了测试指令以及测试反馈信息的无时延下发和接收,从而大大提高了对应用程序的测试效率。
本发明实施例还提供一种应用程序测试方法,所述方法可以应用于图1或者图7的应用程序测试系统,其中,所述测试服务器包括预置指令算法库,所述预置指令算法库中的指令算法为基于go语言的指令算法方法,所述测试客户端包括基于go语言的命令字解析层,所述方法包括:
测试服务器获取针对目标应用程序的测试任务,所述测试任务包括指令算法标识;确定预置指令算法库中与所述指令算法标识相匹配的目标指令算法;根据所述测试任务运行所述目标指令算法,生成所述测试指令;将所述测试指令封装成符合快速传输控制协议KCP的测试指令数据包;将所述测试指令数据包发送给测试客户端。
所述测试客户端接收测试服务器发送的测试指令数据包;根据所述快速传输控制协议KCP解析所述测试指令数据包,得到测试指令;测试客户端的命令字解析层获取针对目标应用程序的测试指令;命令字解析层将所述测试指令解析为与所述测试客户端的操作系统相适配的测试指令,得到解析测试指令;命令字解析层将所述解析测试指令发送给所述测试客户端的测试执行引擎,以使所述测试执行引擎根据所述解析测试指令对所述目标应用程序进行测试,生成测试反馈信息。
请参阅图9,其所示为本发明实施例提供的一种应用程序测试装置的结构示意图,该装置与上述几种实施例提供的测试客户端侧的应用程序测试方法相对应,因此前述测试客户端侧的应用程序测试方法也适用于该应用程序测试装置,即该装置与方法实施例属于同一构思,其具体实现过程详见对应的方法实施例,这里不再赘述。
如图9所示,所述装置包括基于go语言的命令字解析层,在所述装置利用所述命令字解析层执行所述应用程序测试时,所述装置可以包括:
第一获取模块910,用于获取针对目标应用程序的测试指令;所述测试指令由基于go语言的指令算法生成;
第一解析模块920,用于将所述测试指令解析为与所述测试客户端的操作系统相适配的测试指令,得到解析测试指令;
第一发送模块930,用于将所述解析测试指令发送给所述测试客户端的测试执行引擎,以使所述测试执行引擎根据所述解析测试指令对所述目标应用程序进行测试,生成测试反馈信息。
作为一个可选的实施方式,所述装置还可以包括预置指令算法库,所述预置指令算法库中的指令算法为基于go语言的指令算法;相应的,所述装置还包括:
第三获取模块,用于获取针对所述目标应用程序的测试任务;所述测试任务包括指令算法标识;
第二确定模块,用于确定预置指令算法库中与所述指令算法标识相匹配的目标指令算法;
第二生成模块,用于根据所述测试任务运行所述目标指令算法,生成所述测试指令。
作为一个可选的实施方式,所述装置还可以包括:
第一接收模块,用于接收测试服务器发送的测试指令数据包;所述测试指令数据包是所述测试服务器基于快速传输控制协议KCP对测试指令进行封装得到的;所述测试指令是所述测试服务器根据针对所述目标应用程序的测试任务运行基于go语言的指令算法而生成;
第一解析模块,用于根据所述快速传输控制协议KCP解析所述测试指令数据包,得到所述测试指令。
作为一个可选的实施方式,所述装置还可以包括:
第一封装模块,用于将所述测试反馈信息封装成符合快速传输控制协议KCP的测试反馈数据包括;
第三发送模块,用于将所述测试反馈数据包发送给所述测试服务器。
请参阅图10,其所示为本发明实施例提供的另一种应用程序测试装置的结构示意图,该装置与上述几种实施例提供的测试服务器侧的应用程序测试方法相对应,因此前述测试服务器侧的应用程序测试方法也适用于该应用程序测试装置,即该装置与方法实施例属于同一构思,其具体实现过程详见对应的方法实施例,这里不再赘述。
如图10所示,所述装置包括预置指令算法库,所述预置指令算法库中的指令算法为基于go语言的指令算法,在所述装置利用所述预置指令算法库执行所述应用程序测试时,所述装置可以包括:
第二获取模块1010,用于获取针对目标应用程序的测试任务;所述测试任务包括指令算法标识;
第一确定模块1020,用于确定预置指令算法库中与所述指令算法标识相匹配的目标指令算法;
第一生成模块1030,用于根据所述测试任务运行所述目标指令算法,生成所述测试指令;
第一封装模块1040,用于将所述测试指令封装成符合快速传输控制协议KCP的测试指令数据包;
第二发送模块1050,用于将所述测试指令数据包发送给测试客户端,以使所述测试客户端的命令字解析层获取所述测试指令,将所述测试指令解析为与所述测试客户端的操作系统相适配的解析测试指令,将所述解析测试指令发送给所述测试客户端的测试执行引擎,由测试执行引擎根据所述解析测试指令对所述目标应用程序进行测试生成测试反馈信息。
作为一个可选的实施方式,第二发送模块1050可以包括:
第一写入模块,用于将所述测试指令数据包写入双缓冲队列的第一缓冲队列中,通过所述第一缓冲队列向测试客户端发送所述测试指令数据包;
其中,所述双缓冲队列包括第一缓冲队列和第二缓冲队列,所述第一缓冲队列用于存储所述测试指令,所述第二缓冲队列用于存储所述测试反馈信息。
作为一个可选的实施方式,所述装置还可以包括:
第二接收模块,用于接收所述测试客户端返回的测试反馈数据包;所述测试反馈数据包是所述测试客户端基于所述快速传输控制协议KCP对所述测试反馈信息进行封装得到的;
第二写入模块,用于将所述测试反馈数据包写入所述双缓冲队列的第二缓存队列中;
读取模块,用于从所述第二缓存队列中读取所述测试反馈数据包;
第二解析模块,用于基于所述快速传输控制协议KCP解析所述测试反馈数据包,得到所述测试反馈信息。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本发明实施例还提供一种应用程序测试系统,所述系统包括测试服务器和测试客户端,所述测试服务器包括预置指令算法库,所述预置指令算法库中的指令算法为基于go语言的指令算法方法,所述测试客户端包括基于go语言的命令字解析层,其中,
测试服务器,用于获取针对目标应用程序的测试任务,所述测试任务包括指令算法标识;确定预置指令算法库中与所述指令算法标识相匹配的目标指令算法;根据所述测试任务运行所述目标指令算法,生成所述测试指令;将所述测试指令封装成符合快速传输控制协议KCP的测试指令数据包;将所述测试指令数据包发送给测试客户端。
所述测试客户端,用于接收测试服务器发送的测试指令数据包;根据所述快速传输控制协议KCP解析所述测试指令数据包得到测试指令;通过命令字解析层获取针对目标应用程序的测试指令,将所述测试指令解析为与所述测试客户端的操作系统相适配的测试指令得到解析测试指令,将所述解析测试指令发送给所述测试客户端的测试执行引擎,以使所述测试执行引擎根据所述解析测试指令对所述目标应用程序进行测试,生成测试反馈信息。
本发明实施例的应用程序测试装置通过基于go语言实现指令算法的跨平台使用,无需为不同的操作系统重复编写指令算法,大大降低了测试成本、提高了测试效率;且通过KCP协议以及双缓冲队列实现的测试服务器与测试客户端之间的通信,实现了测试指令以及测试反馈信息的无时延下发和接收,从而进一步提高了对应用程序的测试效率。
本发明实施例提供了一种测试服务器,包括处理器和存储器,所述存储器中存储有基于go语言的预置指令算法,以及至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由所述处理器加载并执行以实现上述测试服务器侧的应用程序测试方法。
存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及应用程序测试。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
图11是本发明实施例提供的运行一种应用程序测试方法的服务器的硬件结构框图,如图11所示,该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,CPU)1110(处理器1110可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器1130,一个或一个以上存储应用程序1123或数据1122的存储介质1120(例如一个或一个以上海量存储设备)。其中,存储器1130和存储介质1120可以是短暂存储或持久存储。存储在存储介质1120的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1110可以设置为与存储介质1120通信,在服务器1100上执行存储介质1120中的一系列指令操作。服务器1100还可以包括一个或一个以上电源1160,一个或一个以上有线或无线网络接口1150,一个或一个以上输入输出接口1140,和/或,一个或一个以上操作系统1121,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
输入输出接口1140可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器1100的通信供应商提供的无线网络。在一个实例中,输入输出接口1140包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口1140可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
本发明实施例提供了一种测试客户端,包括处理器和基于go语言的命令字解析层,所述基于go语言的命令字解析层包括至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由所述处理器加载并执行以实现上述测试客户端侧的应用程序测试方法。
图12是本发明实施例提供的运行一种应用程序测试方法的终端的硬件结构框图,具体来讲:所述终端可以包括RF(Radio Frequency,射频)电路1210、包括有一个或一个以上计算机可读存储介质的存储器1220、输入单元1230、显示单元1240、传感器1250、音频电路1260、WiFi(wireless fidelity,无线保真)模块1270、包括有一个或者一个以上处理核心的处理器1280、以及电源1290等部件。本领域技术人员可以理解,图12中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路1210可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器1280处理;另外,将涉及上行的数据发送给基站。通常,RF电路1210包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路1210还可以通过无线通信与网络和其他终端通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(Code Division Multiple Access,码分多址)、WCDMA(Wideband Code DivisionMultiple Access,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(Short Messaging Service,短消息服务)等。
存储器1220可用于存储软件程序以及模块,处理器1280通过运行存储在存储器1220的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器1220可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述终端的使用所创建的数据等。此外,存储器1220可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器1220还可以包括存储器控制器,以提供处理器1280和输入单元1230对存储器1220的访问。
输入单元1230可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元1230可包括触敏表面1231以及其他输入设备1232。触敏表面1231,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面1231上或在触敏表面1231附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面1231可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1280,并能接收处理器1280发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面1231。除了触敏表面1231,输入单元1230还可以包括其他输入设备1232。具体地,其他输入设备1232可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1240可用于显示由用户输入的信息或提供给用户的信息以及所述终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元1240可包括显示面板1241,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板1241。进一步的,触敏表面1231可覆盖显示面板1241,当触敏表面1231检测到在其上或附近的触摸操作后,传送给处理器1280以确定触摸事件的类型,随后处理器1280根据触摸事件的类型在显示面板1241上提供相应的视觉输出。其中,触敏表面1231与显示面板1241可以两个独立的部件来实现输入和输入功能,但是在某些实施例中,也可以将触敏表面1231与显示面板1241集成而实现输入和输出功能。
所述终端还可包括至少一种传感器1250,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1241的亮度,接近传感器可在所述终端移动到耳边时,关闭显示面板1241和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于所述终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路1260、扬声器1261,传声器1262可提供用户与所述终端之间的音频接口。音频电路1260可将接收到的音频数据转换后的电信号,传输到扬声器1261,由扬声器1261转换为声音信号输出;另一方面,传声器1262将收集的声音信号转换为电信号,由音频电路1260接收后转换为音频数据,再将音频数据输出处理器1280处理后,经RF电路1210以发送给比如另一终端,或者将音频数据输出至存储器1220以便进一步处理。音频电路1260还可能包括耳塞插孔,以提供外设耳机与所述终端的通信。
WiFi属于短距离无线传输技术,所述终端通过WiFi模块1270可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图12示出了WiFi模块1270,但是可以理解的是,其并不属于所述终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器1280是所述终端的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器1220内的软件程序和/或模块,以及调用存储在存储器1220内的数据,执行所述终端的各种功能和处理数据,从而对终端进行整体监控。可选的,处理器1280可包括一个或多个处理核心;优选的,处理器1280可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1280中。
所述终端还包括给各个部件供电的电源1290(比如电池),优选的,电源可以通过电源管理系统与处理器1280逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源1290还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,所述终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。上述一个或者一个以上程序包含用于执行上述方法实施例提供的测试客户端侧的应用程序测试方法的指令。
本领域普通技术人员可以理解,图11和图12所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,测试服务器1100还可包括比图11中所示更多或者更少的组件,或者具有与图11所示不同的配置。测试客户端1200还可包括比图12中所示更多或者更少的组件,或者具有与图12所示不同的配置。
本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质可设置于服务器之中以保存用于实现测试服务器侧的一种应用程序测试方法相关的至少一条指令或者至少一段程序,该至少一条指令或者该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的应用程序测试方法。
本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质可设置于终端之中以保存用于实现测试客户端侧的一种应用程序测试方法相关的至少一条指令或者至少一段程序,该至少一条指令或者该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的应用程序测试方法。
可选地,在本实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种应用程序测试方法,其特征在于,应用于测试客户端,所述测试客户端包括基于go语言的命令字解析层,所述方法包括:
接收测试服务器发送的测试指令数据包;所述测试指令数据包是所述测试服务器基于快速传输控制协议KCP对测试指令进行封装得到的;所述测试指令是所述测试服务器根据针对目标应用程序的测试任务运行基于go语言的指令算法而生成;所述基于go语言的指令算法为通过gomobile工具将采用go语言编写的指令算法逻辑编译为不同操作系统可调用的依赖包;
根据所述快速传输控制协议KCP解析所述测试指令数据包,以使得所述命令字解析层获取所述测试指令;将所述测试指令解析为与所述测试客户端的操作系统相适配的测试指令,得到解析测试指令;将所述解析测试指令发送给所述测试客户端的测试执行引擎,以使所述测试执行引擎根据所述解析测试指令对所述目标应用程序进行测试,生成测试反馈信息。
2.根据权利要求1所述的应用程序测试方法,其特征在于,所述测试客户端还包括预置指令算法库,所述预置指令算法库包括所述基于go语言的指令算法;所述方法还包括:
获取针对所述目标应用程序的测试任务;所述测试任务包括指令算法标识;
确定预置指令算法库中与所述指令算法标识相匹配的目标指令算法;
根据所述测试任务运行所述目标指令算法,生成所述测试指令。
3.根据权利要求1所述的应用程序测试方法,其特征在于,在生成所述测试反馈信息之后,所述方法还包括:
将所述测试反馈信息封装成符合快速传输控制协议KCP的测试反馈数据包;
将所述测试反馈数据包发送给所述测试服务器。
4.一种应用程序测试方法,其特征在于,应用于测试服务器,所述测试服务器包括预置指令算法库,所述预置指令算法库中的指令算法为基于go语言的指令算法,所述基于go语言的指令算法为通过gomobile工具将采用go语言编写的指令算法逻辑编译为不同操作系统可调用的依赖包;所述方法包括:
获取针对目标应用程序的测试任务;所述测试任务包括指令算法标识;
确定预置指令算法库中与所述指令算法标识相匹配的目标指令算法;
根据所述测试任务运行所述目标指令算法,生成测试指令;
将所述测试指令封装成符合快速传输控制协议KCP的测试指令数据包;
将所述测试指令数据包发送给测试客户端,以使所述测试客户端的命令字解析层获取所述测试指令,将所述测试指令解析为与所述测试客户端的操作系统相适配的解析测试指令,将所述解析测试指令发送给所述测试客户端的测试执行引擎,由测试执行引擎根据所述解析测试指令对所述目标应用程序进行测试生成测试反馈信息。
5.根据权利要求4所述的应用程序测试方法,其特征在于,所述将所述测试指令数据包发送给测试客户端包括:
将所述测试指令数据包写入双缓冲队列的第一缓冲队列中,通过所述第一缓冲队列向测试客户端发送所述测试指令数据包;
其中,所述双缓冲队列包括第一缓冲队列和第二缓冲队列,所述第一缓冲队列用于存储所述测试指令,所述第二缓冲队列用于存储所述测试反馈信息。
6.根据权利要求5所述的应用程序测试方法,其特征在于,在将所述测试指令数据包发送给测试客户端之后,所述方法还包括:
接收所述测试客户端返回的测试反馈数据包;所述测试反馈数据包是所述测试客户端基于所述快速传输控制协议KCP对所述测试反馈信息进行封装得到的;
将所述测试反馈数据包写入所述双缓冲队列的第二缓存队列中;
从所述第二缓存队列中读取所述测试反馈数据包;
基于所述快速传输控制协议KCP解析所述测试反馈数据包,得到所述测试反馈信息。
7.一种应用程序测试装置,其特征在于,所述装置包括基于go语言的命令字解析层,在所述装置利用所述命令字解析层执行所述应用程序测试时,所述装置包括:
第一接收模块,用于接收测试服务器发送的测试指令数据包;所述测试指令数据包是所述测试服务器基于快速传输控制协议KCP对测试指令进行封装得到的;所述测试指令是所述测试服务器根据针对目标应用程序的测试任务运行基于go语言的指令算法而生成;所述基于go语言的指令算法为通过gomobile工具将采用go语言编写的指令算法逻辑编译为不同操作系统可调用的依赖包;
第一解析模块,用于根据所述快速传输控制协议KCP解析所述测试指令数据包,得到所述测试指令;
第一获取模块,用于获取所述测试指令;将所述测试指令解析为与测试客户端的操作系统相适配的测试指令,得到解析测试指令;
第一发送模块,用于将所述解析测试指令发送给所述测试客户端的测试执行引擎,以使所述测试执行引擎根据所述解析测试指令对所述目标应用程序进行测试,生成测试反馈信息。
8.一种应用程序测试装置,其特征在于,包括预置指令算法库,所述预置指令算法库中的指令算法为基于go语言的指令算法,所述基于go语言的指令算法为通过gomobile工具将采用go语言编写的指令算法逻辑编译为不同操作系统可调用的依赖包;在所述装置利用所述预置指令算法库执行所述应用程序测试时包括:
第二获取模块,用于获取针对目标应用程序的测试任务;所述测试任务包括指令算法标识;
第一确定模块,用于确定预置指令算法库中与所述指令算法标识相匹配的目标指令算法;
第一生成模块,用于根据所述测试任务运行所述目标指令算法,生成测试指令;
第一封装模块,用于将所述测试指令封装成符合快速传输控制协议KCP的测试指令数据包;
第二发送模块,用于将所述测试指令数据包发送给测试客户端,以使所述测试客户端的命令字解析层获取所述测试指令,将所述测试指令解析为与所述测试客户端的操作系统相适配的解析测试指令,将所述解析测试指令发送给所述测试客户端的测试执行引擎,由测试执行引擎根据所述解析测试指令对所述目标应用程序进行测试生成测试反馈信息。
9.一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由处理器加载并执行以实现如权利要求1至3或者权利要求4至6中任一项所述的应用程序测试方法。
10.一种计算机设备,其特征在于,包括处理器和存储器,所述存储器中存储有基于go语言的预置指令算法,以及至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由所述处理器加载并执行以实现如权利要求1至3或者权利要求4至6中任一项所述的应用程序测试方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201911234522.7A CN111176961B (zh) | 2019-12-05 | 2019-12-05 | 一种应用程序测试方法、装置及存储介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201911234522.7A CN111176961B (zh) | 2019-12-05 | 2019-12-05 | 一种应用程序测试方法、装置及存储介质 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN111176961A CN111176961A (zh) | 2020-05-19 |
| CN111176961B true CN111176961B (zh) | 2022-03-29 |
Family
ID=70650182
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201911234522.7A Active CN111176961B (zh) | 2019-12-05 | 2019-12-05 | 一种应用程序测试方法、装置及存储介质 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN111176961B (zh) |
Families Citing this family (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN111708704B (zh) * | 2020-06-19 | 2024-05-17 | 腾讯科技(深圳)有限公司 | 一种云真机测试方法、装置、终端及存储介质 |
| CN113835994A (zh) * | 2020-06-24 | 2021-12-24 | 上海莉莉丝科技股份有限公司 | 基于Golang语言的服务器压力测试系统、方法及计算机可读存储介质 |
| CN111813519A (zh) * | 2020-06-30 | 2020-10-23 | 积成电子股份有限公司 | 一种面向iec 61850多客户端的多任务并发测试方法与系统 |
| CN112000396B (zh) * | 2020-08-06 | 2024-04-12 | 上海电气集团股份有限公司 | 一种燃料电池系统测试控制方法、装置、设备及存储介质 |
| CN112667505B (zh) * | 2020-12-25 | 2024-08-02 | 杭州群核信息技术有限公司 | 一种终端测试方法、装置、存储介质及电子装置 |
| CN113204492B (zh) * | 2021-05-28 | 2024-06-25 | 中国工商银行股份有限公司 | 安卓应用的测试方法及装置 |
| WO2023014282A1 (en) * | 2021-08-02 | 2023-02-09 | Shopee Singapore Private Limited | Device and method for automated generation of parameter testing requests |
| CN114116520B (zh) * | 2021-12-08 | 2023-05-26 | 抖音视界有限公司 | 一种算法评测方法、装置、网关及存储介质 |
| CN114489007A (zh) * | 2022-01-18 | 2022-05-13 | 上汽通用五菱汽车股份有限公司 | 整车在环测试方法、系统、设备及计算机可读存储介质 |
| CN115022328B (zh) * | 2022-06-24 | 2023-08-08 | 脸萌有限公司 | 服务器集群以及服务器集群的测试方法、装置和电子设备 |
| CN116486889B (zh) * | 2023-04-18 | 2025-03-21 | 深圳市晶存科技股份有限公司 | 一种动态随机存储器的测试方法、系统、装置与存储介质 |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN104834602A (zh) * | 2015-05-20 | 2015-08-12 | 广州华多网络科技有限公司 | 一种程序发布方法、装置和程序发布系统 |
| CN108021498A (zh) * | 2016-11-04 | 2018-05-11 | 南京大学 | 一种基于软件可靠性增长模型的测试工作量分配方法 |
| CN109005194A (zh) * | 2018-09-04 | 2018-12-14 | 厦门安胜网络科技有限公司 | 基于kcp协议的无端口影子通信方法及计算机存储介质 |
| CN109189676A (zh) * | 2018-08-20 | 2019-01-11 | 北京旷视科技有限公司 | 人脸解锁软件测试方法、装置及测试系统 |
| CN109871284A (zh) * | 2017-12-05 | 2019-06-11 | 北京元比特科技有限责任公司 | 一种应用程序跨语言运行时环境执行的虚拟化技术及方法 |
| CN110401645A (zh) * | 2019-07-15 | 2019-11-01 | 珠海市杰理科技股份有限公司 | 数据穿透传输方法、装置、系统、客户端和存储介质 |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20100229058A1 (en) * | 2009-03-04 | 2010-09-09 | Suresh Goyal | Method and apparatus for system testing using scan chain decomposition |
| US9292416B2 (en) * | 2012-10-12 | 2016-03-22 | Vmware, Inc. | Software development kit testing |
| CN105630488A (zh) * | 2015-12-18 | 2016-06-01 | 上海爱数信息技术股份有限公司 | 一种基于docker容器技术的持续集成实现方法 |
| CN108170480A (zh) * | 2017-12-25 | 2018-06-15 | 北京康拓科技有限公司 | 一种基于u-boot引导μC/OS操作系统的启动方法 |
-
2019
- 2019-12-05 CN CN201911234522.7A patent/CN111176961B/zh active Active
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN104834602A (zh) * | 2015-05-20 | 2015-08-12 | 广州华多网络科技有限公司 | 一种程序发布方法、装置和程序发布系统 |
| CN108021498A (zh) * | 2016-11-04 | 2018-05-11 | 南京大学 | 一种基于软件可靠性增长模型的测试工作量分配方法 |
| CN109871284A (zh) * | 2017-12-05 | 2019-06-11 | 北京元比特科技有限责任公司 | 一种应用程序跨语言运行时环境执行的虚拟化技术及方法 |
| CN109189676A (zh) * | 2018-08-20 | 2019-01-11 | 北京旷视科技有限公司 | 人脸解锁软件测试方法、装置及测试系统 |
| CN109005194A (zh) * | 2018-09-04 | 2018-12-14 | 厦门安胜网络科技有限公司 | 基于kcp协议的无端口影子通信方法及计算机存储介质 |
| CN110401645A (zh) * | 2019-07-15 | 2019-11-01 | 珠海市杰理科技股份有限公司 | 数据穿透传输方法、装置、系统、客户端和存储介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN111176961A (zh) | 2020-05-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111176961B (zh) | 一种应用程序测试方法、装置及存储介质 | |
| CN108959000B (zh) | 一种服务器压力测试方法、系统及终端 | |
| CN107040609B (zh) | 一种网络请求处理方法和装置 | |
| CN106970790B (zh) | 一种应用程序创建的方法、相关设备及系统 | |
| CN109857403B (zh) | 一种页面更新、页面处理方法及装置 | |
| CN106598584B (zh) | 一种处理资源文件的方法、装置和系统 | |
| CN106502906B (zh) | 一种测试应用程序的方法和装置 | |
| CN107329901B (zh) | 数据包抓取方法、终端、服务器和存储介质 | |
| CN108039963B (zh) | 一种容器配置方法、装置及存储介质 | |
| CN106708554B (zh) | 程序运行方法及装置 | |
| CN106649126B (zh) | 一种对应用程序进行测试的方法和装置 | |
| CN113377469A (zh) | 移动应用的业务界面显示方法、装置、终端及存储介质 | |
| CN106126411A (zh) | 一种对被测程序代码进行测试的方法和装置 | |
| CN104679627A (zh) | 测试方法及装置 | |
| CN114518718A (zh) | 设备控制方法、装置、存储介质及电子设备 | |
| CN106919458B (zh) | Hook目标内核函数的方法及装置 | |
| CN111475359A (zh) | 多消息交互场景下的系统测试方法、装置和存储介质 | |
| CN110198324B (zh) | 数据监控方法、装置、浏览器及终端 | |
| CN115269361A (zh) | 一种软件开发工具包的测试方法、装置和可读存储介质 | |
| CN112328304A (zh) | 一种脚本适配方法、系统、设备及计算机存储介质 | |
| CN106708555B (zh) | 一种加载插件的方法和装置 | |
| CN108182090B (zh) | 基于blink内核的Flash插件加载方法及装置 | |
| CN106709330B (zh) | 记录文件执行行为的方法及装置 | |
| CN111273955A (zh) | 热修复插件优化方法、装置、存储介质及电子设备 | |
| CN109145598B (zh) | 脚本文件的病毒检测方法、装置、终端及存储介质 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |