CN107704393A - 数据测试方法、装置及电子设备 - Google Patents
数据测试方法、装置及电子设备 Download PDFInfo
- Publication number
- CN107704393A CN107704393A CN201710937226.8A CN201710937226A CN107704393A CN 107704393 A CN107704393 A CN 107704393A CN 201710937226 A CN201710937226 A CN 201710937226A CN 107704393 A CN107704393 A CN 107704393A
- Authority
- CN
- China
- Prior art keywords
- test
- layers
- data
- data file
- presenter
- 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.)
- Granted
Links
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
本发明实施例提供一种数据测试方法、装置及电子设备,涉及测试技术领域。所述数据测试方法包括:使用MVP架构将Instrumentation Test测试工程划分为Model层、View层和Presenter层;在Java虚拟机上运行对Model层和Presenter层的测试用例的测试,得到Model层的测试用例的测试通过率和覆盖率的第一数据文件,以及Presenter层的测试用例的测试通过率和覆盖率的第二数据文件,其中,第一数据文件为ec文件,第二数据文件为ec文件;在Dalvik/ART虚拟机上运行对View层的测试用例的测试,得到View层的测试用例的测试通过率和覆盖率的第三数据文件,第三数据文件为exec文件;将第一数据文件、第二数据文件和第三数据文件进行合并,生成测试报告数据。使用该数据测试方法、装置及电子设备,能够提高测试效率。
Description
技术领域
本发明涉及测试技术领域,具体而言,涉及一种数据测试方法、装置及电子设备。
背景技术
在应用程序开发过程中,程序测试是程序正式提交给测试人员进行大规模功能测试前的一个重要且必要的环节。所谓程序测试,通常指对程序中最小可测试单元进行逻辑检查和验证,待测试通过后方可提交程序至测试部门展开下一阶段的测试工作。经发明人研究发现,现有的程序测试方案较为繁复,测试效率有待提高。
发明内容
有鉴于此,本发明实施例的目的在于提供一种数据测试方法、装置及电子设备,以改善现有技术中测试效率有待提高的问题。
本发明较佳实施例提供了一种测试方法,包括:
使用MVP架构将Instrumentation Test测试工程划分为Model层、View层和Presenter层;
在Java虚拟机上运行对所述Model层和Presenter层的测试用例的测试,得到所述Model层的测试用例的测试通过率和覆盖率的第一数据文件,以及所述Presenter层的测试用例的测试通过率和覆盖率的第二数据文件,其中,所述第一数据文件为ec文件,所述第二数据文件为ec文件;
在Dalvik/ART虚拟机上运行对所述View层的测试用例的测试,得到所述View层的测试用例的测试通过率和覆盖率的第三数据文件,所述第三数据文件为exec文件;
将所述第一数据文件、第二数据文件和第三数据文件进行合并,生成测试报告数据。
可选地,所述Model层、View层和Presenter层的测试用例的测试采用并发模式运行。
可选地,所述方法还包括:采取布尔逻辑插桩的方式动态控制所述Model层、View层和Presenter层的测试用例的测试进程。
可选地,采取布尔逻辑插桩的方式动态控制所述Model层、View层和Presenter层的测试用例的测试进程的步骤,包括:
定义插桩布尔函数公式:
S(P1,P2...Pm)=P1(xt1,x12,...x1n....)^
P2(x21,x22,...x2n....)^
......
Pm(xm1,xm2,...xmn....)
其中,S为执行测试通过率估值;P为对应组件测试用例集合测试布尔函数,取值范围为(0,1];x为测试用例执行通过率;m为大于2的整数,n为大于2的整数;
分组件测试函数集合分别动态计算所述Model层、View层和Presenter层测试用例的测试通过率估值S;
根据所述测试通过率估值S控制测试进程,如果S=1,则继续执行下一个测试;如果S=0,则终止所有测试;如果0<S<1,则跳过当前测试,继续执行下一个测试。
可选地,对所述Model层的测试用例的测试在所述测试用例的编译阶段运行,所述第一数据文件在编译完成时得到;
所述Presenter层和View层的测试用例的测试在所述测试用例编译完成并生成安装包后进行。
可选地,在Java虚拟机上运行对所述Model层和Presenter层的测试用例的测试的步骤,包括:
在进行预编译之前,在Java虚拟机上运行对所述Model层和Presenter层的测试用例的测试;
在Java虚拟机上运行对所述Model层和Presenter层的测试用例的测试时,所述方法还包括:屏蔽依赖Android SDK源码的代码片段。
可选地,屏蔽依赖Android SDK源码的代码片段的步骤,包括:
将依赖Android SDK源码的代码片段单独封装至携带有native前缀的函数中;
使用@ignore注解native前缀函数,在运行阶段自动绕过@ignore注解的函数;
添加常量文件,若对有返回值的native函数绕过不执行,则读取常量文件中的默认值。
可选地,将所述第一数据文件、第二数据文件和第三数据文件进行合并,生成测试报告数据的步骤,包括:
将所述第一数据文件和第二数据文件转换为第一Excel表格文件;
将所述第三数据文件转换为第二Excel表格文件;
对所述第一Excel表格文件和第二Excel表格文件中的数据进行合并和计算生成报告数据,所述报告数据中包括通过率和覆盖率。
本发明另一较佳实施例提供了一种数据测试装置,包括:
测试工程划分模块,用于使用MVP架构将Instrumentation Test测试工程划分为Model层、View层和Presenter层;
第一测试执行模块,用于在Java虚拟机上运行对所述Model层和Presenter层的测试用例的测试,得到所述Model层的测试用例的测试通过率和覆盖率的第一数据文件,以及所述Presenter层的测试用例的测试通过率和覆盖率的第二数据文件,其中,所述第一数据文件为ec文件,所述第二数据文件为ec文件;
第二测试执行模块,用于在Dalvik/ART虚拟机上运行对所述View层的测试用例的测试,得到所述View层的测试用例的测试通过率和覆盖率的第三数据文件,所述第三数据文件为exec文件;
报告生成模块,用于将所述第一数据文件、第二数据文件和第三数据文件进行合并,生成测试报告数据。
本发明另一较佳实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的数据测试方法。
本发明又一较佳实施例提供了一种计算机可读存储介质,所述可读存储介质包括计算机程序,所述计算机程序运行时控制所述可读存储介质所在电子设备执行上述的数据测试方法。
本发明实施例提供的数据测试方法、装置及电子设备,使用MVP架构模式将Instrumentation Test测试工程进行分层,分为Model层、View层和Presenter层,Model层和Presenter层的测试用例的测试在Java虚拟机上运行,而View层的测试用例的测试在Dalvik/ART虚拟机上运行,通过将测试工程分层并在不同的虚拟机上测试,能够提高覆盖率和成功率测试报告的输出效率,实现对测试用例的高效测试。
进一步地,本发明实施例中,采用并发模式运行Model层、View层和Presenter层三层的测试用例,采取布尔逻辑插桩的方式动态控制测试进程,从而进一步提高了测试效率,进而快速输出测试覆盖率和成功率测试报告。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明较佳实施例提供的一种电子设备10的方框示意图。
图2为本发明较佳实施例提供的一种数据测试方法的流程图。
图3为本发明较佳实施例提供的数据测试方法的另一流程图。
图4为本发明较佳实施例提供的数据测试方法的又一流程图。
图5为一实施方式中图2所示步骤S24包括的子步骤的示意图。
图6为本发明较佳实施例提供的一种数据测试装置20的模块框图。
图标:10-电子设备;11-存储器;12-处理器;13-网络模块;20-数据测试装置;21-测试工程划分模块;22-第一测试执行模块;23-第二测试执行模块;24-报告生成模块。
具体实施方式
经发明人调研发现,在Android开发过程中,程序测试主要包括虚拟机测试JVM(Java Virtual Machine)Test和设备测试Instrumentation Test。JVM Test一般运行由纯Java代码编写的测试桩Test Case,无需依赖其他组件,由于运行于JVM虚拟机上,因此速度较快。Instrumentation Test包括Dalvik/ART虚拟机测试,由于需要依赖Android系统提供的组件,因此需要在真机或者模拟器上部署运行,需要进行预编译,因此速度较慢。
在Instrumentation Test执行前,Android开发环境(Android Studio、Eclipse)每次需要将测试用例,本实施例中亦称为测试case预编译为字节码文件,然后联合资源文件打包成安装包apk文件,最后将apk文件安装部署到测试设备上运行测试程序。整个过程非常耗时且缓慢,目前统计得出凡是超过50M的大型apk文件,单次运行超过100个测试case平均耗时超过1分钟。
由于Instrumentation Test本身的复杂性和耗时性,国内外也有开发团队开始考虑不经过编译的情况下直接在JVM上运行Instrumentation Test的测试case,这样不仅省去了预编译所耗费的时间,同时JVM执行的效率也更高。目前在JVM环境下实现运行Instrumentation Test的方案是Rebolectric框架方案,该方案的核心手段是拷贝模拟一份轻量级的Android SDK源码,在JVM上读取该Android SDK源码,从而实现在JVM上模拟出一个Dalvik/ART虚拟机的运行环境,进而实现在JVM上运行Instrumentation Test。但Rebolectric框架方案的这套机制存在诸多问题:1、由于需要模拟出一套SDK源码,因此整个框架非常庞大,如超过10M;2、框架本身无法全面取代SDK,部分测试case无法正常运行;3、模拟的SDK源码的可靠性和健壮性有待提高,运行大批量测试case时会出现未知且无解的异常。
基于上述研究,本发明实施例提出一种混合型安卓程序测试方案:使用MVP架构模式将Instrumentation Test测试工程进行分层,分为Model层、View层和Presenter层,其中Model层和Presenter层的测试case在JVM上运行,View层的测试case在Dalvik/ART虚拟机上运行,以提高测试效率。
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
如图1所示,是本发明较佳实施例提供的电子设备10的方框示意图。本发明实施例中的电子设备10可以为具有数据存储、传输、处理功能的服务端。如图1所示,电子设备10包括:存储器11、处理器12、网络模块13及数据测试装置20。
所述存储器11、处理器12以及网络模块13相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。存储器11中存储有数据测试装置20,所述数据测试装置20包括至少一个可以软件或固件(firmware)的形式存储于所述存储器11中的软件功能模块,所述处理器12通过运行存储在存储器11内的软件程序以及模块,如本发明实施例中的数据测试装置20,从而执行各种功能应用以及数据处理,即实现本发明实施例中的数据测试方法。
其中,所述存储器11可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存储器11用于存储程序,所述处理器12在接收到执行指令后,执行所述程序。
所述处理器12可能是一种集成电路芯片,具有数据的处理能力。上述的处理器12可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等。可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
网络模块13用于通过网络建立电子设备10与外部通信终端之间的通信连接,实现网络信号及数据的收发操作。上述网络信号可包括无线信号或者有线信号。
可以理解,图1所示的结构仅为示意,电子设备10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
本发明实施例还提供一种计算机可读存储介质,所述可读存储介质包括计算机程序。所述计算机程序运行时控制所述可读存储介质所在电子设备10执行下面的数据测试方法。
请参阅图2,是本发明较佳实施例提供的一种数据测试方法的流程图。所述方法有关的流程所定义的方法步骤应用于电子设备10,可以由所述处理器12实现。下面将对图2所示的具体流程进行详细阐述。
步骤S21,使用MVP架构将Instrumentation Test测试工程划分为Model层、View层和Presenter层。
将Instrumentation Test测试工程划分为Model层、View层和Presenter层的实现方式有多种,本实施例以通过网络操作层、数据解析层和数据本地持久化层实现为例进行举例说明。
网络操作层(Network Layer)存在与存储数据的服务器的交互,JVM支持异步访问与Http网络协议,因此网络操作层可作为Model层的子层在JVM上展开单元测试。
数据解析层(Data Parser Layer)将从服务器获取的JSON或XML格式的数据解析成JavaBean对象,或者直接以键值对(Key-Value)的方式直接读取字段值。数据解析数据纯Java功能业务,因此数据解析层作为Model层的子层可以在JVM上展开单元测试。
数据本地持久化层(Local Data Lasting Layer)将数据存储至本地如设备内部存储、SD卡等,一般数据本地持久化需要在设备上进行测试,可以通过申请内存片段(Memery Fragments)充当内部存储来存储持久化数据,因此数据本地持久化层作为Model层的子层可以在JVM上展开单元测试。
步骤S22,在Java虚拟机上运行对所述Model层和Presenter层的测试用例的测试,得到所述Model层的测试用例的测试通过率和覆盖率的第一数据文件,以及所述Presenter层的测试用例的测试通过率和覆盖率的第二数据文件,其中,所述第一数据文件为ec文件,所述第二数据文件为ec文件。
可选地,本实施例中在进行预编译之前,在Java虚拟机上运行对所述Model层和Presenter层的测试用例的测试。
下述将以测试用例为单元测试case为例,对本发明实施例中的方案进行说明。单元测试case指对软件中的最小可测试单元进行检查和验证。对于单元测试case中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中单元可以指一个窗口或一个菜单等。
Model层单元测试case只需依赖JDK相关源码,无需调用Android SDK源码API,因此Model层单元测试可直接在JVM上进行,同时JVM单元测试无需进行预编译,可在预编译前进行,从而提高测试效率和报告数据的输出效率。可选地,本实施例中采用在执行预编译Task前插入JVM单元测试Task和JVM测试报告生成Task。
Presenter层为Model层与Vew层之间的中间件层,其负责Model层与View层之间的通信,例如,Model层获取服务器数据并完成解析后,由Presenter层负责将数据传递给View层。由于Presenter层大部分是依赖JDK源码,但也会少量依赖Android SDK源码,为避免依赖Android SDK源码带来的JVM测试运行异常。可选地,本实施例中采用运行阶段(Runtime)屏蔽依赖Android SDK源码的代码片段。
请结合参阅图3,可选地,本实施例通过以下步骤屏蔽依赖Android SDK源码的代码片段。
步骤S31,将依赖Android SDK源码的代码片段单独封装至携带有native前缀的函数中。
步骤S32,使用@ignore注解native前缀函数,在运行阶段系统会自动绕过@ignore注解的函数。
步骤S33,添加常量文件,对有返回值的native函数一旦绕过不执行,则读取常量文件中的默认值。
步骤S23,在Dalvik/ART虚拟机上运行对所述View层的测试用例的测试,得到所述View层的测试用例的测试通过率和覆盖率的第三数据文件,所述第三数据文件为exec文件。
Dalvik/ART运行测试在设备或模拟器上运行单元测试,需要预编译成apk文件,然后部署至设备进行测试。不同于JVM单元测试,Instrumentation Test一旦出现单个测试case出现异常,则整个测试程序会随即终止,因此本方案采取布尔逻辑插桩的方式来进行Instrumentation Test,采取布尔逻辑插桩的方式动态控制所述Model层、View层和Presenter层的测试用例的测试进程。
请结合参阅图4,本发明实施例通过以下步骤采取布尔逻辑插桩的方式动态控制所述Model层、View层和Presenter层的测试用例的测试进程。
步骤S41,定义插桩布尔函数公式:
S(P1,P2...Pm)=P1(x11,x12,...x1n....)^
P2(x21,x22,...x2....)A
......
Pm(xm1,xm2,...xmn....)
其中,S为执行测试通过率估值;P为对应组件测试用例集合测试布尔函数;x为测试用例执行通过率;m为大于2的整数,n为大于2的整数。
步骤42,分组件执行测试,计算并输出S的估值。
其中,每个组件为一个测试用例集合,在执行组件测试时,动态计算其测试case的通过,其他未执行的P函数输出值为1,其中P的取值范围为(0,1]。
分组件测试函数集合分别动态计算的为所述Model层、View层和Presenter层测试用例的测试通过率估值S。
步骤S43,根据所述测试通过率估值S控制测试进程。
本实施例中,根据S取值来控制测试进程是否需要继续执行:
如果S=1,则继续执行下一个组件测试。
如果S=0,则终止所有测试。
如果0<S<1,则跳过当前组件测试,继续执行下一个组件测试。
为了确保测试效率,可选地,所述Model层、View层和Presenter层的测试用例的测试采用并发模式运行。
步骤S24,将所述第一数据文件、第二数据文件和第三数据文件进行合并,生成测试报告数据。
Model层与Presenter层的成功率与覆盖率为JVM单元测试数据,因此其数据文件格式为*.ec格式,而View层成功率与覆盖为Instrumentation单元测试数据,因此其数据文件格式为*.exec格式。为了实现对不同格式文件的合并,请结合参阅图5,本发明实施例提供了步骤S24的其中一种实现方式。
如图5所示,通过步骤S241~步骤243实现对第一数据文件、第二数据文件和第三数据文件的合并。
步骤S241,将所述第一数据文件和第二数据文件转换为第一Excel表格文件。
步骤S242,将所述第三数据文件转换为第二Excel表格文件。
步骤S243,对所述第一Excel表格文件和第二Excel表格文件中的数据进行合并和计算生成报告数据,所述报告数据中包括通过率和覆盖率。
通过将ec和exec格式文件转为Excel表格文件,然后合并计算两组表格数据,并输出最终的成功率和覆盖率测试报告数据,实现较为简单、快捷。
可选地,本实施例中,对所述Model层的测试用例的测试在所述测试用例的编译阶段运行,所述第一数据文件在编译完成时得到。所述Presenter层和View层的测试用例的测试在所述测试用例编译完成并生成安装包后进行。
本发明实施例中使用MVP分层架构模式来划分测试工程,Model层与Presenter层的测试在JVM上展开,View层的测试在Instrumentation上展开,从而显著提高了测试效率。采取布尔逻辑插桩的方式计算测试通过率估值,从而动态控制测试程序的进程。采用ec和exec文件转Excel文件的方式来合并JVM和Instrument测试结果数据,简单便捷。
在上述基础上,如图6所示,本发明实施例提供了一种数据测试装置20,所述数据测试装置20包括测试工程划分模块21、第一测试执行模块22、第二测试执行模块23和报告生成模块24。
其中,测试工程划分模块21用于使用MVP架构将Instrumentation Test测试工程划分为Model层、View层和Presenter层。
由于测试工程划分模块21和图2中步骤S21的实现原理类似,因而在此不作更多说明。
第一测试执行模块22用于在Java虚拟机上运行对所述Model层和Presenter层的测试用例的测试,得到所述Model层的测试用例的测试通过率和覆盖率的第一数据文件,以及所述Presenter层的测试用例的测试通过率和覆盖率的第二数据文件,其中,所述第一数据文件为ec文件,所述第二数据文件为ec文件。
由于第一测试执行模块22和图2中步骤S22的实现原理类似,因而在此不作更多说明。
第二测试执行模块23用于在Dalvik/ART虚拟机上运行对所述View层的测试用例的测试,得到所述View层的测试用例的测试通过率和覆盖率的第三数据文件,所述第三数据文件为exec文件。
由于第二测试执行模块23和图2中步骤S23的实现原理类似,因而在此不作更多说明。
报告生成模块24用于将所述第一数据文件、第二数据文件和第三数据文件进行合并,生成测试报告数据。
由于报告生成模块24和图2中步骤S24的实现原理类似,因而在此不作更多说明。
本发明实施例中的数据测试方法、装置及电子设备使用MVP架构模式将Instrumentation Test测试工程进行分层,分为Model层、View层和Presenter层,Model层和Presenter层的测试用例的测试在Java虚拟机上运行,而View层的测试用例的测试在Dalvik/ART虚拟机上运行,通过将测试工程分层并在不同的虚拟机上测试,能够提高覆盖率和成功率测试报告的输出效率,实现了对测试用例的高效测试。
对本发明实施例中各术语定义如下。
Unit Test(单元测试)是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。
CC(Code Coverage,覆盖率)也叫代码覆盖率,所谓覆盖率即单元测试所执行的代码与原代码的比值,该比值介于0~1之间,比值越大,覆盖率越高。
UI(User Interface)即User Interface(用户界面)的简称。泛指用户的操作界面,包含移动APP,网页,智能穿戴设备等。
Java Unit Test(Java单元测试)泛指单纯依赖JDK编写的测试程序。
Android UI Unit Test(Android UI单元测试)也叫设备单元测试,依赖部分Android SDK提供的组件编写的测试程序。
JVM(Java Virtual Machine)指一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
Instrumentation Test(设备测试)是指在Dalvik/ART虚拟机(真机或模拟器)上运行单元测试。
JVM Test(虚拟机测试)是指在JVM虚拟机上运行单元测试。
MVP(Model View Presenter)指Android平台中的一种架构模式,一共分为三层:Model层(M)、View层(V)、Presenter层(P)。数据-视图-赠送者,是Android、iOS以及Web平台开发领域的一种架构模式,该架构模式将数据以及操作划分至Model层,把设计用户操作划分至View层,而Presenter测试负责Model与View之间的通信。
JavaBean是一种Java语言写成的可重用组件,,其类必须是具体的和公共的,并且具有无参数的构造函数;
*.exec指JVM单元测试的测试结果数据文件后缀名,该文件后缀名为JVM单元测试唯一指定的后缀名。
*.ec指Instrumentation单元测试的测试结果数据文件后缀名,该文件后缀名为Instrumentation单元测试唯一指定的后缀名。
XML(Extensible Markup Language)指可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
HTML(HyperText Markup Language)超文本标记语言,超文本标记语言的结构包括“头”部分(英语:Head)、和“主体”部分(英语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容;
CSV(Comma-Separated Values)是一种通用的、相对简单的文件格式,被广泛的应用在程序之间转移表格数据中。
在本发明实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备10,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的可选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据测试方法,其特征在于,包括:
使用MVP架构将Instrumentation Test测试工程划分为Model层、View层和Presenter层;
在Java虚拟机上运行对所述Model层和Presenter层的测试用例的测试,得到所述Model层的测试用例的测试通过率和覆盖率的第一数据文件,以及所述Presenter层的测试用例的测试通过率和覆盖率的第二数据文件,其中,所述第一数据文件为ec文件,所述第二数据文件为ec文件;
在Dalvik/ART虚拟机上运行对所述View层的测试用例的测试,得到所述View层的测试用例的测试通过率和覆盖率的第三数据文件,所述第三数据文件为exec文件;
将所述第一数据文件、第二数据文件和第三数据文件进行合并,生成测试报告数据。
2.根据权利要求1所述的数据测试方法,其特征在于,所述Model层、View层和Presenter层的测试用例的测试采用并发模式运行。
3.根据权利要求1所述的数据测试方法,其特征在于,所述方法还包括:采取布尔逻辑插桩的方式动态控制所述Model层、View层和Presenter层的测试用例的测试进程。
4.根据权利要求3所述的数据测试方法,其特征在于,采取布尔逻辑插桩的方式动态控制所述Model层、View层和Presenter层的测试用例的测试进程的步骤,包括:
定义插桩布尔函数公式:
S(P1,P2...Pm)=P1(x11,x12,...x1m....)^
P2(x21,x22,...x2m....)^
……
Pm(xm1,xm2,...xmm....)
其中,S为执行测试通过率估值;P为对应组件测试用例集合测试布尔函数,取值范围为(0,1];x为测试用例执行通过率;m为大于2的整数,n为大于2的整数;
分组件测试函数集合分别动态计算所述Model层、View层和Presenter层测试用例的测试通过率估值S;
根据所述测试通过率估值S控制测试进程,如果S=1,则继续执行下一个测试;如果S=0,则终止所有测试;如果0<S<1,则跳过当前测试,继续执行下一个测试。
5.根据权利要求1所述的数据测试方法,其特征在于,对所述Model层的测试用例的测试在所述测试用例的编译阶段运行,所述第一数据文件在编译完成时得到;
所述Presenter层和View层的测试用例的测试在所述测试用例编译完成并生成安装包后进行。
6.根据权利要求1所述的数据测试方法,其特征在于,在Java虚拟机上运行对所述Model层和Presenter层的测试用例的测试的步骤,包括:
在进行预编译之前,在Java虚拟机上运行对所述Model层和Presenter层的测试用例的测试;
在Java虚拟机上运行对所述Model层和Presenter层的测试用例的测试时,所述方法还包括:屏蔽依赖Android SDK源码的代码片段。
7.根据权利要求6所述的数据测试方法,其特征在于,屏蔽依赖Android SDK源码的代码片段的步骤,包括:
将依赖Android SDK源码的代码片段单独封装至携带有native前缀的函数中;
使用@ignore注解native前缀函数,在运行阶段自动绕过@ignore注解的函数;
添加常量文件,若对有返回值的native函数绕过不执行,则读取常量文件中的默认值。
8.根据权利要求1所述的数据测试方法,其特征在于,将所述第一数据文件、第二数据文件和第三数据文件进行合并,生成测试报告数据的步骤,包括:
将所述第一数据文件和第二数据文件转换为第一Excel表格文件;
将所述第三数据文件转换为第二Excel表格文件;
对所述第一Excel表格文件和第二Excel表格文件中的数据进行合并和计算生成报告数据,所述报告数据中包括通过率和覆盖率。
9.一种数据测试装置,其特征在于,包括:
测试工程划分模块,用于使用MVP架构将Instrumentation Test测试工程划分为Model层、View层和Presenter层;
第一测试执行模块,用于在Java虚拟机上运行对所述Model层和Presenter层的测试用例的测试,得到所述Model层的测试用例的测试通过率和覆盖率的第一数据文件,以及所述Presenter层的测试用例的测试通过率和覆盖率的第二数据文件,其中,所述第一数据文件为ec文件,所述第二数据文件为ec文件;
第二测试执行模块,用于在Dalvik/ART虚拟机上运行对所述View层的测试用例的测试,得到所述View层的测试用例的测试通过率和覆盖率的第三数据文件,所述第三数据文件为exec文件;
报告生成模块,用于将所述第一数据文件、第二数据文件和第三数据文件进行合并,生成测试报告数据。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1~8任一项所述的数据测试方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710937226.8A CN107704393B (zh) | 2017-09-29 | 2017-09-29 | 数据测试方法、装置及电子设备 |
PCT/CN2017/112952 WO2019061783A1 (zh) | 2017-09-29 | 2017-11-24 | 数据测试方法、装置、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710937226.8A CN107704393B (zh) | 2017-09-29 | 2017-09-29 | 数据测试方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107704393A true CN107704393A (zh) | 2018-02-16 |
CN107704393B CN107704393B (zh) | 2018-08-21 |
Family
ID=61183462
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710937226.8A Active CN107704393B (zh) | 2017-09-29 | 2017-09-29 | 数据测试方法、装置及电子设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107704393B (zh) |
WO (1) | WO2019061783A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108388515A (zh) * | 2018-03-06 | 2018-08-10 | 平安科技(深圳)有限公司 | 测试数据生成方法、装置、设备以及计算机可读存储介质 |
CN109597621A (zh) * | 2018-08-24 | 2019-04-09 | 天津字节跳动科技有限公司 | 封装Dagger的方法、装置、Dagger、解耦方法、装置、设备及介质 |
CN109684192A (zh) * | 2018-08-21 | 2019-04-26 | 平安普惠企业管理有限公司 | 基于数据处理的本地测试方法、设备、存储介质及装置 |
CN109857637A (zh) * | 2018-12-25 | 2019-06-07 | 杭州茂财网络技术有限公司 | 一种基于注解的Java语言方法覆盖率和方法输入输出统计方法及装置 |
CN110309055A (zh) * | 2019-05-23 | 2019-10-08 | 深圳壹账通智能科技有限公司 | 基于Java虚拟机的黑盒测试方法、装置、终端及存储介质 |
WO2019237239A1 (zh) * | 2018-06-12 | 2019-12-19 | 优视科技新加坡有限公司 | 数据测试方法、装置、设备/终端/服务器及计算机可读存储介质 |
CN111352824A (zh) * | 2018-12-21 | 2020-06-30 | 北京金山云网络技术有限公司 | 测试方法、装置及计算机设备 |
CN111782196A (zh) * | 2020-07-08 | 2020-10-16 | 上海乾臻信息科技有限公司 | 基于mvp架构的开发方法及装置 |
CN112835759A (zh) * | 2021-02-01 | 2021-05-25 | 百度在线网络技术(北京)有限公司 | 测试数据处理方法、装置、电子设备以及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060101385A1 (en) * | 2004-10-22 | 2006-05-11 | Gerken Christopher H | Method and System for Enabling Roundtrip Code Protection in an Application Generator |
CN105975265A (zh) * | 2016-04-29 | 2016-09-28 | 掌赢信息科技(上海)有限公司 | 一种基于改进型mvp模式的装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012134122A2 (en) * | 2011-03-26 | 2012-10-04 | Samsung Electronics Co., Ltd. | Method and apparatus for eliminating partially redundant array bounds checks in an embedded compiler |
CN103885876B (zh) * | 2012-12-21 | 2018-01-05 | 百度在线网络技术(北京)有限公司 | 测试方法及设备 |
CN104657259B (zh) * | 2013-11-22 | 2018-05-18 | 中国银联股份有限公司 | 一种测试Android应用程序的方法和装置 |
CN105224449B (zh) * | 2014-06-26 | 2017-12-12 | 富士通株式会社 | 移动终端上的应用程序的测试方法和装置 |
-
2017
- 2017-09-29 CN CN201710937226.8A patent/CN107704393B/zh active Active
- 2017-11-24 WO PCT/CN2017/112952 patent/WO2019061783A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060101385A1 (en) * | 2004-10-22 | 2006-05-11 | Gerken Christopher H | Method and System for Enabling Roundtrip Code Protection in an Application Generator |
CN105975265A (zh) * | 2016-04-29 | 2016-09-28 | 掌赢信息科技(上海)有限公司 | 一种基于改进型mvp模式的装置 |
Non-Patent Citations (1)
Title |
---|
刘升贵: "基于MVP模式的Android应用程序实现及其单元测试研究", 《福建电脑》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108388515A (zh) * | 2018-03-06 | 2018-08-10 | 平安科技(深圳)有限公司 | 测试数据生成方法、装置、设备以及计算机可读存储介质 |
WO2019237239A1 (zh) * | 2018-06-12 | 2019-12-19 | 优视科技新加坡有限公司 | 数据测试方法、装置、设备/终端/服务器及计算机可读存储介质 |
CN109684192A (zh) * | 2018-08-21 | 2019-04-26 | 平安普惠企业管理有限公司 | 基于数据处理的本地测试方法、设备、存储介质及装置 |
CN109684192B (zh) * | 2018-08-21 | 2024-03-01 | 天航长鹰(江苏)科技有限公司 | 基于数据处理的本地测试方法、设备、存储介质及装置 |
CN109597621A (zh) * | 2018-08-24 | 2019-04-09 | 天津字节跳动科技有限公司 | 封装Dagger的方法、装置、Dagger、解耦方法、装置、设备及介质 |
CN111352824A (zh) * | 2018-12-21 | 2020-06-30 | 北京金山云网络技术有限公司 | 测试方法、装置及计算机设备 |
CN111352824B (zh) * | 2018-12-21 | 2023-07-07 | 北京金山云网络技术有限公司 | 测试方法、装置及计算机设备 |
CN109857637A (zh) * | 2018-12-25 | 2019-06-07 | 杭州茂财网络技术有限公司 | 一种基于注解的Java语言方法覆盖率和方法输入输出统计方法及装置 |
CN109857637B (zh) * | 2018-12-25 | 2022-04-15 | 杭州茂财网络技术有限公司 | 基于注解的Java语言方法覆盖率和方法输入输出统计方法 |
CN110309055A (zh) * | 2019-05-23 | 2019-10-08 | 深圳壹账通智能科技有限公司 | 基于Java虚拟机的黑盒测试方法、装置、终端及存储介质 |
CN111782196A (zh) * | 2020-07-08 | 2020-10-16 | 上海乾臻信息科技有限公司 | 基于mvp架构的开发方法及装置 |
CN112835759A (zh) * | 2021-02-01 | 2021-05-25 | 百度在线网络技术(北京)有限公司 | 测试数据处理方法、装置、电子设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107704393B (zh) | 2018-08-21 |
WO2019061783A1 (zh) | 2019-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107704393B (zh) | 数据测试方法、装置及电子设备 | |
CN102880546B (zh) | 一种基于xml数据库的软件集成测试方法及系统 | |
US8640084B2 (en) | Generating validation test suites | |
CN104407980A (zh) | 移动应用自动化测试装置和方法 | |
US20130311827A1 (en) | METHOD and APPARATUS for automatic testing of automation software | |
US20170235661A1 (en) | Integration of Software Systems via Incremental Verification | |
CA2773981C (en) | System and method of substituting parameter sets in self-contained mini-applications | |
CN104731566B (zh) | 集成开发环境测试装置、方法及系统 | |
CN103530209B (zh) | 一种密码键盘自动化测试方法 | |
CN102968367A (zh) | 一种基于嵌入式软件的静态检测方法及其系统 | |
EP3270292A1 (en) | Automation of software verification | |
Zhou et al. | A cost-effective software testing strategy employing online feedback information | |
CN104375932B (zh) | 一种Java卡代码覆盖率分析方法和装置 | |
Murthy et al. | Test ready UML statechart models | |
CN111260336A (zh) | 基于规则引擎的业务核对方法、装置及设备 | |
US10606732B2 (en) | Hybrid genetic concolic co-verification of hardware and software | |
CN106681909A (zh) | 一种联机交易故障定位方法及装置 | |
US20100251208A1 (en) | Validating Behavioral Diagrams | |
Yang et al. | Model-based robustness testing for avionics-embedded software | |
CN109120473B (zh) | 接口请求框架实现方法、接口测试方法及其对应的装置 | |
Arcaini et al. | Offline model-based testing and runtime monitoring of the sensor voting module | |
us Saqib et al. | Functionality, performance, and compatibility testing: a model based approach | |
de Silva et al. | PANDArch: a pluggable automated non-intrusive dynamic architecture conformance checker | |
US20170123959A1 (en) | Optimized instrumentation based on functional coverage | |
Elks et al. | Defining and characterizing methods, tools, and computing resources to support pseudo exhaustive testability of software based i&c devices |
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 |