CN113342702B - 一种应用程序测试方法、装置、设备及可读存储介质 - Google Patents
一种应用程序测试方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN113342702B CN113342702B CN202110891961.6A CN202110891961A CN113342702B CN 113342702 B CN113342702 B CN 113342702B CN 202110891961 A CN202110891961 A CN 202110891961A CN 113342702 B CN113342702 B CN 113342702B
- Authority
- CN
- China
- Prior art keywords
- application program
- layer
- virtual
- application
- tested
- 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; 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种应用程序测试方法、装置、设备及可读存储介质,涉及应用程序测试技术领域,包括:构建虚拟驱动层,所述虚拟驱动层用于模拟待测应用程序的硬件驱动层;将所述待测应用程序的OS层的代码、平台层的代码和应用层的代码导入所述虚拟驱动层中进行编译,得到虚拟应用程序;将测试指令发送至所述虚拟应用程序,以供对所述虚拟应用程序进行测试。通过本申请,无需实体设备和仿真器,即可在虚拟机中直接进行应用程序的测试,不仅可以提高测试的效率,还可以减少由于程序代码存在缺陷而对实体设备造成的损耗。
Description
技术领域
本申请涉及应用程序测试技术领域,特别涉及一种应用程序测试方法、装置、设备及可读存储介质。
背景技术
在嵌入式软件的开发过程中,程序调试的重要性并不亚于编写代码,因为一个设计的再好的程序,也难免会出现错误,而这些错误需要通过调试来排除;通常情况下,程序的功能越是复杂,调试过程的工作量也就越大,而且显得越为重要。
目前,应用程序的仿真调测往往通过借助外部仿真器件来完成。虽然仿真器可以完全模拟出应用程序在智能设备上的运行环境,但是通过仿真器进行应用程序的测试存在以下问题:仿真器不仅启动和运行速度较慢,且在调试过程中易出现一些无法预料的问题而导致终止运行,以致需要重新启动才能继续使用,存在测试效率低的问题。
发明内容
本申请提供一种应用程序测试方法、装置、设备及可读存储介质,以解决相关技术中通过仿真器进行应用程序测试而导致的测试效率低的问题。
第一方面,提供了一种应用程序测试方法,包括以下步骤:
构建虚拟驱动层,所述虚拟驱动层用于模拟待测应用程序的硬件驱动层;
将所述待测应用程序的OS层的代码、平台层的代码和应用层的代码导入所述虚拟驱动层中进行编译,得到虚拟应用程序;
将测试指令发送至所述虚拟应用程序,以供对所述虚拟应用程序进行测试。
一些实施例中,所述虚拟驱动层用于读写操作、运算操作和通信操作。
一些实施例中,所述方法还包括创建存储文件,所述读写操作包括:
所述虚拟驱动层对所述存储文件进行读与写的操作,以模拟所述硬件驱动层对硬件芯片存储空间的访问。
一些实施例中,在所述将测试指令发送至所述虚拟应用程序,以供对所述虚拟应用程序进行测试的步骤之后,还包括:
将所述虚拟驱动层的代码替换为待测应用程序的硬件驱动层的代码;
将所述待测应用程序的OS层的代码、平台层的代码和应用层的代码导入所述硬件驱动层中进行编译,生成固件,以供硬件设备运行。
第二方面,提供了一种应用程序测试装置,包括:
构建单元,其用于构建虚拟驱动层,所述虚拟驱动层用于模拟待测应用程序的硬件驱动层;
编译单元,其用于将所述待测应用程序的OS层的代码、平台层的代码和应用层的代码导入所述虚拟驱动层中进行编译,得到虚拟应用程序;
测试单元,其用于将测试指令发送至所述虚拟应用程序,以供对所述虚拟应用程序进行测试。
第三方面,提供了另一种应用程序测试方法,包括以下步骤:
构建虚拟驱动层,所述虚拟驱动层用于模拟待测应用程序的硬件驱动层;
将所述待测应用程序的OS层的代码和平台层的代码导入所述虚拟驱动层中进行编译,得到虚拟应用程序;
将经过编译后的所述待测应用程序的应用层的代码以字节码的形式导入所述虚拟应用程序;
基于所述虚拟应用程序对所述字节码进行解释运行;
基于解释运行过程得到Trace日志文件,所述Trace日志文件包括诊断信息和调试信息;
基于所述Trace日志文件确定所述待测应用程序的应用层代码的准确性。
一些实施例中,所述字节码为二进制数据。
第四方面,提供了另一种应用程序测试装置,包括:
构建单元,其用于构建虚拟驱动层,所述虚拟驱动层用于模拟待测应用程序的硬件驱动层;
编译单元,其用于将所述待测应用程序的OS层的代码和平台层的代码导入所述虚拟驱动层中进行编译,得到虚拟应用程序;
导入单元,其用于将经过编译后的所述待测应用程序的应用层的代码以字节码的形式导入所述虚拟应用程序;
处理单元,其用于所述虚拟应用程序中的平台层对所述字节码进行解释运行;
测试单元,其用于基于解释运行过程得到Trace日志文件,所述Trace日志文件包括诊断信息和调试信息;基于所述Trace日志文件确定所述待测应用程序的应用层代码的准确性。
第五方面,提供了一种应用程序测试设备,包括:存储器和处理器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行,以实现前述的应用程序测试方法。
第六方面,提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机指令,当所述计算机指令被计算机执行时,使得所述计算机执行前述的应用程序测试方法。
本申请提供了一种应用程序测试方法、装置、设备及可读存储介质,包括:构建虚拟驱动层,所述虚拟驱动层用于模拟待测应用程序的硬件驱动层;将所述待测应用程序的OS层的代码、平台层的代码和应用层的代码导入所述虚拟驱动层中进行编译,得到虚拟应用程序;将测试指令发送至所述虚拟应用程序,以供对所述虚拟应用程序进行测试。通过本申请,无需实体设备和仿真器,即可在虚拟机中直接进行应用程序的测试,不仅可以提高测试的效率,还可以减少由于程序代码存在缺陷而对实体设备造成的损耗。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种应用程序测试方法的流程示意图;
图2为本申请实施例提供的另一种应用程序测试方法的流程示意图;
图3为本申请实施例提供的一种应用程序测试设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了应用程序测试方法、装置、设备及可读存储介质,其能解决相关技术中通过仿真器进行应用程序测试而导致的测试效率低的问题。
图1是本申请实施例提供的一种应用程序测试方法,包括以下步骤:
步骤S10:构建虚拟驱动层,所述虚拟驱动层用于模拟待测应用程序的硬件驱动层;
步骤S20:将所述待测应用程序的OS(operating system,操作***)层的代码、平台层的代码和应用层的代码导入所述虚拟驱动层中进行编译,得到虚拟应用程序;
步骤S30:将测试指令发送至所述虚拟应用程序,以供对所述虚拟应用程序进行测试。
通过本申请,无需实体设备和仿真器,即可在虚拟机中直接进行应用程序的测试,不仅可以提高测试的效率,还可以减少由于程序代码存在缺陷而对实体设备造成的损耗。
更进一步的,在本申请实施例中,所述虚拟驱动层用于读写操作、运算操作和通信操作。
更进一步的,在本申请实施例中,所述方法还包括创建存储文件,所述读写操作包括:
所述虚拟驱动层对所述存储文件进行读与写的操作,以模拟所述硬件驱动层对硬件芯片存储空间的访问。
更进一步的,在本申请实施例中,在步骤S30之后,还包括以下步骤:
将所述虚拟驱动层的代码替换为待测应用程序的硬件驱动层的代码;
将所述待测应用程序的OS层的代码、平台层的代码和应用层的代码导入所述硬件驱动层中进行编译,生成固件,以供硬件设备运行。
以下结合具体例子对本申请的应用程序测试方法实施例作进一步详细说明。
可通过在Visual Studio环境中按照自下而上的顺序分别搭建虚拟驱动层、OS层、平台层和应用层等4个层,以构成虚拟机***。其中,Visual Studio是最流行的Windows平台应用程序的集成开发环境,是一个基本完整的开发工具集,包括了整个软件生命周期中所需要的大部分工具,借用这些工具搭建本申请中的虚拟驱动层;而OS层与待测应用程序(该待测应用程序相当于是一个实体智能设备)的OS层完全一样,平台层与待测应用程序的平台层完全一样,应用层与待测应用程序的应用层完全一样,因此,可将待测应用程序的OS层、平台层和应用层的代码分别直接移植到本申请中的OS层、平台层和应用层上。
虚拟驱动层用于模拟待测应用程序的硬件驱动层,即通过模拟的方式实现实体智能设备上的硬件驱动层的功能,而无需搭载智能芯片,使得待测应用程序在不依赖实体设备的情况下,也能正常运行各种功能;此外,还为虚拟驱动层设置读写功能、运算功能和通信功能等。其中,读写功能实际不是访问芯片的存储空间,而是读写存储文件;运算功能是通过纯软件编码的方式来实现芯片内部支持的各类算法功能;通信功能则是使用windows上自带的通信接口,比如TCP/IP接口,通过收发特定的数据格式来实现和PC机上的其他应用程序(比如用于发送测试数据的测试工具)之间的通信。能否实现实体智能设备上的模拟调测及运行环境,虚拟驱动层起着决定性的作用。
OS层用于实现驱动层和平台层的连接,即为上层代码提供服务的抽象层,起到将底层驱动与上层代码进行衔接的作用;平台层用于提供运行环境、解释器和API(Application Programming Interface,应用程序接口),即包括应用运行环境、应用字节码的解释器以及供应用调用的接口,因此,该平台层可以集成为常用的Java虚拟机等;应用层搭载于平台层上,用于实现待测应用程序的预设功能,可理解为用各种语言(可以是C/C++等编程语言)编写的上层应用。
由于,部分应用程序是纯native应用(即原生应用),可直接将底层代码和上层代码导入驱动层,进行整体编译调试;因此,以应用程序是纯native应用为例,在上述虚拟驱动层、OS层、平台层和应用层搭建完毕后,将OS层、平台层和应用层的代码移植到虚拟驱动层中进行编译,编译通过后,即会生成一个可执行的虚拟应用程序。
第一次启动虚拟应用程序时,会创建一个跟芯片存储空间大小一致的存储文件,并可将该存储文件的初始值预置为000000;由于虚拟驱动层具有读写功能,读写接口中传送的地址会一一映射到存储文件对应的逻辑地址,从而对存储文件进行读与写的操作,以此来模拟对硬件芯片存储空间的访问。
将测试指令发送给虚拟应用程序,以供虚拟应用程序进行功能测试;其中,该测试指令可以为虚拟机发送的指令,也可以为专门的测试工具(该测试工具可以为应用程序,也可以为其他可提供测试指令的测试设备)发送的指令,在此不作限定。以测试工具为测试应用程序发送测试指令为例,先在测试应用程序中编写好测试脚本,然后运行虚拟应用程序(相当于运行虚拟的智能设备),并在测试应用程序中选中该虚拟应用程序(虚拟应用程序与测试应用程序之间可通过TCP/IP建立通信连接),通过在测试应用程序上运行测试脚本,来向虚拟应用程序发送测试指令或者接收响应,从而完成用虚拟应用程序来模拟实体智能设备的软件调测工作。
另外,由于OS层、平台层和应用层与待测应用程序上运行的各层次的程序完全一样,这样就能保证,调测完成的虚拟应用程序只需替换底层驱动代码,就能快速地移植到实体智能设备上运行;因此,本申请在调测完成后,只需要将虚拟驱动层的代码替换成待测应用程序的硬件驱动层代码,然后在嵌入式软件开发环境下整体编译通过,生成固件,就可以直接下载到实体智能设备中运行,极大提高了软件开发的效率。
本申请为了解决嵌入式软件调测不方便的问题,采用虚拟驱动层模拟待测应用程序的硬件驱动层的方式实现应用程序的调试,进而不需要实体设备的参与,也不需要用到任何仿真器件,不仅可以使调测变得简单高效,也可以减少由于程序代码存在缺陷而对实体设备带来的损耗。
本申请实施例还提供了一种应用程序测试装置,包括:
构建单元,其用于构建虚拟驱动层,所述虚拟驱动层用于模拟待测应用程序的硬件驱动层;
编译单元,其用于将所述待测应用程序的OS层的代码、平台层的代码和应用层的代码导入所述虚拟驱动层中进行编译,得到虚拟应用程序;
测试单元,其用于将测试指令发送至所述虚拟应用程序,以供对所述虚拟应用程序进行测试。
更进一步的,在本申请实施例中,所述虚拟驱动层用于读写操作、运算操作和通信操作。
更进一步的,在本申请实施例中,所述测试单元还用于创建存储文件,具体用于使所述虚拟驱动层对所述存储文件进行读与写的操作,以模拟所述硬件驱动层对硬件芯片存储空间的访问。
更进一步的,在本申请实施例中,所述装置还包括替换单元,其用于:将所述虚拟驱动层的代码替换为待测应用程序的硬件驱动层的代码;将所述待测应用程序的OS层的代码、平台层的代码和应用层的代码导入所述硬件驱动层中进行编译,生成固件,以供硬件设备运行。
需要说明的是,所属本领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和各单元的具体工作过程,可以参考前述应用程序测试方法实施例中的对应过程,在此不再赘述。
参见图2所示,本申请实施例还提供另一种应用程序测试方法,包括以下步骤:
步骤N10:构建虚拟驱动层,所述虚拟驱动层用于模拟待测应用程序的硬件驱动层;
步骤N20:将所述待测应用程序的OS层的代码和平台层的代码导入所述虚拟驱动层中进行编译,得到虚拟应用程序;
步骤N30:将经过编译后的所述待测应用程序的应用层的代码以字节码的形式导入所述虚拟应用程序;
步骤N40:基于所述虚拟应用程序对所述字节码进行解释运行;
步骤N50:基于解释运行过程得到Trace日志文件,所述Trace日志文件包括诊断信息和调试信息;
步骤N60:基于所述Trace日志文件确定所述待测应用程序的应用层代码的准确性。
以下结合具体例子对本申请的另一应用程序测试方法实施例作进一步详细说明。
可通过在Visual Studio环境中按照自下而上的顺序分别搭建虚拟驱动层、OS层、平台层等3个层,以构成虚拟机***。其中,OS层与待测应用程序(该待测应用程序相当于是一个实体智能设备)的OS层完全一样,平台层与待测应用程序的平台层完全一样,因此,可将待测应用程序的OS层和平台层的代码分别直接移植到本申请中的OS层和平台层上。
需要说明的是,本实施例中的虚拟驱动层和OS层与上一应用程序测试方法实施例中的虚拟驱动层和OS层的结构、工作原理均相同或相似,为了描述的方便和简洁,此实施例中描述的虚拟驱动层和OS层的具体工作过程,可以参考上一应用程序测试方法实施例中的对应过程,在此不再赘述。
平台层用于提供运行环境、解释器和API(Application Programming Interface,应用程序接口),即包括应用运行环境、应用字节码的解释器以及供应用调用的接口,因此,该平台层可集成为用于对二进制文件数据进行解释执行的虚拟机等。
在上述虚拟驱动层、OS层和平台层搭建完毕后,将OS层和平台层的代码移植到虚拟驱动层中进行编译,编译通过后,会生成一个可执行的虚拟应用程序;且第一次启动虚拟应用程序时,会创建一个跟芯片存储空间大小一致的存储文件,并可将该存储文件的初始值预置为000000;由于虚拟驱动层具有读写功能,读写接口中传送的地址会一一映射到存储文件对应的逻辑地址,从而对存储文件进行读与写的操作,以此来模拟对硬件芯片存储空间的访问。
而由于部分应用程序(比如由JAVA、Python等编程语言编写的应用程序)是需要单独编译的,因此,需通过外部编译工具先对待测应用程序(该待测应用程序需要单独编译)的应用层的代码进行编译,得到字节码数据,然后将该字节码数据加载到虚拟应用程序,并分开调试底层(即OS层和平台层)代码和应用层代码。其中,该字节码可以是由各种编程语言编写编译生成的二进制数据文件。
具体的,可以使用断点单步运行跟踪来查看RAM以及虚拟EEPROM(ElectricallyErasable Programmable read only memory,带电可擦可编程只读存储器)中的数据,来实现OS层和平台层的调测;然后通过虚拟应用程序中的平台层对二进制数据文件进行解释运行,并在解释运行的过程中提供记录Trace的功能,即虚拟应用程序运行时会生成一个Trace日志文件,其会记录运行过程中调用到的重要API的输入输出参数、诊断信息和调试信息等,用于供开发人员分析,这对于调测以字节码形式加载进来的应用程序的代码有很大的帮助;因此,若待测应用程序是以字节码的形式加载到虚拟应用程序中,那么就可以基于该Trace日志文件确定待测应用程序的应用层代码的准确性。
另外,由于OS层和平台层与待测应用程序上运行的各层次的程序完全一样,这样就能保证,调测完成的虚拟应用程序只需替换底层驱动代码,就能快速地移植到实体智能设备上运行;因此,本申请在调测完成后,只需要将虚拟驱动层的代码替换成待测应用程序的硬件驱动层代码,然后在嵌入式软件开发环境下整体编译通过,生成固件,就可以直接下载到实体智能设备中运行,极大提高了软件开发的效率。
本申请为了解决嵌入式软件调测不方便的问题,采用虚拟驱动层模拟待测应用程序的硬件驱动层的方式实现应用程序的调试,进而不需要实体设备的参与,也不需要用到任何仿真器件,不仅可以使调测变得简单高效,也可以减少由于程序代码存在缺陷而对实体设备带来的损耗。
本申请实施例还提供了另一种应用程序测试装置,包括:
构建单元,其用于构建虚拟驱动层,所述虚拟驱动层用于模拟待测应用程序的硬件驱动层;
编译单元,其用于将所述待测应用程序的OS层的代码和平台层的代码导入所述虚拟驱动层中进行编译,得到虚拟应用程序;
导入单元,其用于将经过编译后的所述待测应用程序的应用层的代码以字节码的形式导入所述虚拟应用程序;
处理单元,其用于所述虚拟应用程序中的平台层对所述字节码进行解释运行;其中,所述字节码为二进制数据;
测试单元,其用于基于解释运行过程得到Trace日志文件,所述Trace日志文件包括诊断信息和调试信息;基于所述Trace日志文件确定所述待测应用程序的应用层代码的准确性。
需要说明的是,所属本领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和各单元的具体工作过程,可以参考前述应用程序测试方法实施例中的对应过程,在此不再赘述。
上述实施例提供的装置可以实现为一种计算机程序的形式,该计算机程序可以在如图3所示的应用程序测试设备上运行。
本申请实施例还提供了一种应用程序测试设备,包括:通过***总线连接的存储器、处理器和网络接口,存储器中存储有至少一条指令,至少一条指令由处理器加载并执行,以实现前述的应用程序测试方法的全部步骤或部分步骤。
其中,网络接口用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
处理器可以是CPU,还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路( Application Specific Integrated Circuit,ASIC)、现成可编程门阵列( FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件分立硬件组件等。通用处理器可以是微处理器,或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如视频播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如视频数据、图像数据等)等。此外,存储器可以包括高速随存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字( Secure digital,SD)卡,闪存卡( Flash Card)、至少一个磁盘存储器件、闪存器件或其他易失性固态存储器件。
本申请施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现前述的应用程序测试方法的全部步骤或部分步骤。
本申请实施例实现前述的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的仼何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only memory,ROM)、随机存取存储器(Random Accessmemory,RAM )、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、服务器或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照本发明实施例的方法、设备(***)和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者***中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (5)
1.一种应用程序测试方法,其特征在于,包括以下步骤:
构建虚拟驱动层,所述虚拟驱动层用于模拟待测应用程序的硬件驱动层;
将所述待测应用程序的OS层的代码和平台层的代码导入所述虚拟驱动层中进行编译,得到虚拟应用程序;
将经过编译后的所述待测应用程序的应用层的代码以字节码的形式导入所述虚拟应用程序;
基于所述虚拟应用程序对所述字节码进行解释运行;
基于解释运行过程得到Trace日志文件,所述Trace日志文件包括诊断信息和调试信息;
基于所述Trace日志文件确定所述待测应用程序的应用层代码的准确性。
2.如权利要求1所述的应用程序测试方法,其特征在于:所述字节码为二进制数据。
3.一种应用程序测试装置,其特征在于,包括:
构建单元,其用于构建虚拟驱动层,所述虚拟驱动层用于模拟待测应用程序的硬件驱动层;
编译单元,其用于将所述待测应用程序的OS层的代码和平台层的代码导入所述虚拟驱动层中进行编译,得到虚拟应用程序;
导入单元,其用于将经过编译后的所述待测应用程序的应用层的代码以字节码的形式导入所述虚拟应用程序;
处理单元,其用于所述虚拟应用程序中的平台层对所述字节码进行解释运行;
测试单元,其用于基于解释运行过程得到Trace日志文件,所述Trace日志文件包括诊断信息和调试信息;基于所述Trace日志文件确定所述待测应用程序的应用层代码的准确性。
4.一种应用程序测试设备,其特征在于,包括:存储器和处理器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行,以实现权利要求1或2所述的应用程序测试方法。
5.一种计算机可读存储介质,其特征在于:所述计算机存储介质存储有计算机指令,当所述计算机指令被计算机执行时,使得所述计算机执行权利要求1或2所述的应用程序测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110891961.6A CN113342702B (zh) | 2021-08-04 | 2021-08-04 | 一种应用程序测试方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110891961.6A CN113342702B (zh) | 2021-08-04 | 2021-08-04 | 一种应用程序测试方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113342702A CN113342702A (zh) | 2021-09-03 |
CN113342702B true CN113342702B (zh) | 2021-11-16 |
Family
ID=77480652
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110891961.6A Active CN113342702B (zh) | 2021-08-04 | 2021-08-04 | 一种应用程序测试方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113342702B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114327648B (zh) * | 2021-12-16 | 2024-02-02 | 北京安天网络安全技术有限公司 | 一种驱动调试方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729235A (zh) * | 2013-12-24 | 2014-04-16 | 华为技术有限公司 | Java虚拟机的编译方法和Java虚拟机 |
CN108898008A (zh) * | 2018-04-27 | 2018-11-27 | 北京奇艺世纪科技有限公司 | 应用程序的运行方法和装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7788644B2 (en) * | 2005-03-24 | 2010-08-31 | Sap Ag | Method and system for monitoring performance on a mobile device |
CN103631228A (zh) * | 2013-11-27 | 2014-03-12 | 上海慧控信息技术有限公司 | 控制***虚拟化方法 |
CN105893234B (zh) * | 2014-12-30 | 2019-05-07 | 伊姆西公司 | 用于软件测试的方法和计算设备 |
CN104699523B (zh) * | 2015-03-24 | 2018-06-01 | 北京深思数盾科技股份有限公司 | 用于硬件平台所开发的应用程序的调试方法和*** |
CN106649074A (zh) * | 2015-10-30 | 2017-05-10 | 北京数码视讯科技股份有限公司 | 一种智能卡的程序调试方法及装置 |
CN109684027B (zh) * | 2017-10-18 | 2020-11-24 | 北京京东尚科信息技术有限公司 | 动态跟踪Java虚拟机运行的方法和装置 |
CN108228461A (zh) * | 2018-01-08 | 2018-06-29 | 平安科技(深圳)有限公司 | 一种日志生成方法、装置、计算机设备及存储介质 |
US11074153B2 (en) * | 2019-04-01 | 2021-07-27 | Microsoft Technology Licensing, Llc | Collecting application state in a runtime environment for reversible debugging |
TWI742432B (zh) * | 2019-09-19 | 2021-10-11 | 英業達股份有限公司 | 基於虛擬化裝置的測試系統及其方法 |
CN112994954B (zh) * | 2021-04-21 | 2021-11-02 | 北京国科天迅科技有限公司 | 网络测试***、测试网络的构建方法及装置 |
-
2021
- 2021-08-04 CN CN202110891961.6A patent/CN113342702B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729235A (zh) * | 2013-12-24 | 2014-04-16 | 华为技术有限公司 | Java虚拟机的编译方法和Java虚拟机 |
CN108898008A (zh) * | 2018-04-27 | 2018-11-27 | 北京奇艺世纪科技有限公司 | 应用程序的运行方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113342702A (zh) | 2021-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109697060B (zh) | 视频特效***及其生成方法、装置、设备和存储介质 | |
CN110134386B (zh) | 一种程序编辑方法和装置 | |
US10540262B2 (en) | Using edit and continue to dynamically set and unset optimizations in source code while debugging | |
CN110531962B (zh) | 小程序的开发处理方法、设备及计算机可读存储介质 | |
US9274930B2 (en) | Debugging system using static analysis | |
KR20150024842A (ko) | 적응식 이식가능 라이브러리 | |
CN107832059B (zh) | 一种基于Makefile的代码静态分析方法和装置 | |
US10176077B2 (en) | Generating breakpoints for cross-layer debugging | |
CN108170465B (zh) | 一种版本信息管理方法、电子设备及可读存储介质 | |
CN100492387C (zh) | 基于Keil C51的软件保护开发的方法和*** | |
WO2015183767A1 (en) | Emulation-based expression evaluation for diagnostic tools | |
CN111427782A (zh) | 安卓动态链接库的运行方法、装置、设备及存储介质 | |
CN111178512A (zh) | 器件运行神经网络的测试方法及装置 | |
CN112328229A (zh) | 一种快速创建Jenkins流水线的方法 | |
CN111338925A (zh) | 小程序测试方法及装置、***、电子设备和存储介质 | |
CN112631618A (zh) | 应用程序打包方法、应用程序测试方法、终端及存储介质 | |
CN115952758A (zh) | 芯片验证方法、装置、电子设备及存储介质 | |
CN113342702B (zh) | 一种应用程序测试方法、装置、设备及可读存储介质 | |
CN113094252A (zh) | 测试用例生成方法、装置、计算机设备及存储介质 | |
CN117149209A (zh) | 一种代码增量编译方法、装置、计算机设备及存储介质 | |
CN113032246A (zh) | Ssd固件运行方法、装置、可读存储介质及电子设备 | |
CN112882690A (zh) | 一种应用开发方法及装置 | |
CN110018831B (zh) | 程序处理方法、装置及计算机可读存储介质 | |
CN109189671B (zh) | 逐层夹逼式变量定位方法、***及终端设备 | |
CN112765018B (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 |