CN113377677B - 一种单元测试方法及装置 - Google Patents

一种单元测试方法及装置 Download PDF

Info

Publication number
CN113377677B
CN113377677B CN202110773832.7A CN202110773832A CN113377677B CN 113377677 B CN113377677 B CN 113377677B CN 202110773832 A CN202110773832 A CN 202110773832A CN 113377677 B CN113377677 B CN 113377677B
Authority
CN
China
Prior art keywords
test
determining
code
information
point position
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
Application number
CN202110773832.7A
Other languages
English (en)
Other versions
CN113377677A (zh
Inventor
林慕云
殷富成
杜卫林
李芳�
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202110773832.7A priority Critical patent/CN113377677B/zh
Publication of CN113377677A publication Critical patent/CN113377677A/zh
Application granted granted Critical
Publication of CN113377677B publication Critical patent/CN113377677B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供一种单元测试方法及装置,涉及软件测试领域,也可用于金融领域,所述方法包括:对被测功能代码及功能代码对应的测试代码分别进行语法分析,得到功能代码的方法信息和对象信息及测试代码的方法信息和对象信息;根据方法信息和对象信息确定进行模拟测试的点位及设置断言的点位;根据进行模拟测试的点位及设置断言的点位设置断言并启动模拟测试。本申请能够对功能代码及功能代码对应的测试代码分别进行语法分析,确定需要进行模拟测试的点位及设置断言的点位,然后设置断言并启动模拟测试。

Description

一种单元测试方法及装置
技术领域
本申请涉及软件测试领域,可以用于金融领域,具体是一种单元测试方法及装置。
背景技术
目前市场上有一些自动生成单元测试代码的工具。这些工具可以通过对功能代码进行语法分析,结合代码分支特点进行全覆盖的单元测试代码自动生成。
但这种方法属于事后编写测试代码,即先有功能代码,后有测试代码。然而,单元测试驱动开发(UTDD)这种编程方法要求测试代码先行,即先有测试代码,后有功能代码。在编写代码的过程中功能代码与测试代码相互补全,相互完善,因此现有方法是不适用的。
另外,在测试功能代码的过程中,考虑到应尽量降低外界因素对功能代码测试的影响,往往需要设置断言(Assert),并进行模拟测试(Mock)。现有技术中,搜索需要断言(Assert)的位置及需要进行模拟测试(Mock)的位置往往依靠测试人员经验,容易出现漏搜及误搜,导致单元测试失效。
发明内容
针对现有技术中的问题,本申请提供一种单元测试方法及装置,能够对功能代码及功能代码对应的测试代码分别进行语法分析,确定需要进行模拟测试的点位及设置断言的点位,然后设置断言并启动模拟测试。
为解决上述技术问题,本申请提供以下技术方案:
第一方面,本申请提供一种单元测试方法,包括:
对被测功能代码及所述功能代码对应的测试代码分别进行语法分析,得到所述功能代码的方法信息和对象信息及所述测试代码的方法信息和对象信息;所述方法信息包括方法所属的代码段、方法所属的类、方法被调用的位置及历史模拟测试点位;所述对象信息包括对象所属的代码段、对象所属的类、对象所属的方法、对象被调用的位置及历史断言设置点位;
根据所述方法信息和对象信息确定进行模拟测试的点位及设置断言的点位;
根据所述进行模拟测试的点位及设置断言的点位设置断言并启动模拟测试。
进一步地,所述对被测功能代码及所述功能代码对应的测试代码分别进行语法分析,得到所述功能代码的方法信息和对象信息及所述测试代码的方法信息和对象信息,包括:
对所述功能代码及所述测试代码分别进行语法分析,得到所述功能代码的代码结构和关键词及所述测试代码的代码结构和关键词;
根据所述功能代码的代码结构及关键词确定所述功能代码的方法信息及对象信息;
根据所述测试代码的代码结构和关键词确定所述测试代码的方法信息和对象信息。
进一步地,所述根据所述方法信息和对象信息确定进行模拟测试的点位及设置断言的点位,包括:
根据所述方法信息和对象信息确定有测试注解的方法、对象及被所述有测试注解的方法所调用过的方法、对象;
在有测试注解的方法、对象及被所述有测试注解的方法所调用过的方法、对象中,根据所述方法信息和对象信息确定使用Java工具开发包访问网络及系统IO进程的第一方法,并将所述第一方法确定为所述进行模拟测试的点位中的必要点位;
确定与所述第一方法属于同一个类的第二方法,将所述第二方法确定为所述进行模拟测试的点位中的建议点位;
在有测试注解的方法、对象及被所述有测试注解的方法所调用过的方法、对象中,根据所述对象信息确定被赋值过或改动过的对象,将所述被赋值过或改动过的对象确定为所述设置断言的点位。
进一步地,所述根据所述方法信息和对象信息确定进行模拟测试的点位及设置断言的点位,包括:
根据所述方法信息和对象信息确定无测试注解的方法和对象;
确定所述无测试注解的方法和对象是否被赋值过或更改过;
如果是,将所述无测试注解的方法和对象确定为所述设置断言的点位。
进一步地,所述根据所述进行模拟测试的点位及设置断言的点位设置断言并启动模拟测试之前,还包括:
查询被确定为所述进行模拟测试的点位的方法在其被调用前是否已经进行过模拟测试;
如果否,在编译器上显示所述进行模拟测试的点位。
进一步地,所述根据所述进行模拟测试的点位及设置断言的点位设置断言并启动模拟测试之前,还包括:
确定所述有测试注解的方法是否直接或间接访问过被确定为所述设置断言的点位的对象;
如果是,在编译器上显示所述设置断言的点位。
第二方面,本申请提供一种单元测试装置,包括:
方法对象信息确定单元,用于对被测功能代码及所述功能代码对应的测试代码分别进行语法分析,得到所述功能代码的方法信息和对象信息及所述测试代码的方法信息和对象信息;所述方法信息包括方法所属的代码段、方法所属的类、方法被调用的位置及历史模拟测试点位;所述对象信息包括对象所属的代码段、对象所属的类、对象所属的方法、对象被调用的位置及历史断言设置点位;
点位确定单元,用于根据所述方法信息和对象信息确定进行模拟测试的点位及设置断言的点位;
模拟测试单元,用于根据所述进行模拟测试的点位及设置断言的点位设置断言并启动模拟测试。
进一步地,所述方法对象信息确定单元,包括:
代码结构和关键词确定模块,用于对所述功能代码及所述测试代码分别进行语法分析,得到所述功能代码的代码结构和关键词及所述测试代码的代码结构和关键词;
功能方法对象信息确定模块,用于根据所述功能代码的代码结构及关键词确定所述功能代码的方法信息及对象信息;
测试方法对象信息确定模块,用于根据所述测试代码的代码结构和关键词确定所述测试代码的方法信息和对象信息。
进一步地,所述点位确定单元,包括:
测试注解方法对象确定模块,用于根据所述方法信息和对象信息确定有测试注解的方法、对象及被所述有测试注解的方法所调用过的方法、对象;
必要点位确定模块,用于在有测试注解的方法、对象及被所述有测试注解的方法所调用过的方法、对象中,根据所述方法信息和对象信息确定使用Java工具开发包访问网络及系统IO进程的第一方法,并将所述第一方法确定为所述进行模拟测试的点位中的必要点位;
建议点位确定模块,用于确定与所述第一方法属于同一个类的第二方法,将所述第二方法确定为所述进行模拟测试的点位中的建议点位;
断言点位确定模块,用于在有测试注解的方法、对象及被所述有测试注解的方法所调用过的方法、对象中,根据所述对象信息确定被赋值过或改动过的对象,将所述被赋值过或改动过的对象确定为所述设置断言的点位。
进一步地,所述点位确定单元,包括:
无测试注解的方法对象确定模块,用于根据所述方法信息和对象信息确定无测试注解的方法和对象;
赋值更改确定模块,用于确定所述无测试注解的方法和对象是否被赋值过或更改过;
所述断言点位确定模块,用于当确定所述无测试注解的方法和对象被赋值过或更改过时,将所述无测试注解的方法和对象确定为所述设置断言的点位。
进一步地,所述的单元测试装置,还包括:
模拟测试查询单元,用于查询被确定为所述进行模拟测试的点位的方法在其被调用前是否已经进行过模拟测试;
模拟测试点位显示单元,用于当查询被确定为所述进行模拟测试的点位的方法在其被调用前尚未进行过模拟测试时,在编译器上显示所述进行模拟测试的点位。
进一步地,所述的单元测试装置,还包括:
断言设置点位确定单元,用于确定所述有测试注解的方法是否直接或间接访问过被确定为所述设置断言的点位的对象;
断言设置点位显示单元,用于当确定所述有测试注解的方法直接或间接访问过被确定为所述设置断言的点位的对象时,在编译器上显示所述设置断言的点位。
第三方面,本申请提供一种电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述单元测试方法的步骤。
第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述单元测试方法的步骤。
针对现有技术中的问题,本申请提供的单元测试方法及装置,能够对被测功能代码及对应的测试代码分别进行语法分析,从而确定进行模拟测试的点位及设置断言的点位,并根据模拟测试点位及断言设置点位,设置断言并启动模拟测试,进而帮助程序开发人员及测试人员更充分地设置断言并进行模拟测试,保证了功能代码的全面检测,有效地提升了单元测试的质量,间接提升了功能代码的质量,降低了代码维护成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中单元测试方法的流程图之一;
图2为本申请实施例中得到方法信息及对象信息的流程图;
图3为本申请实施例中确定模拟测试点位及设置断言点位的流程图之一;
图4为本申请实施例中确定模拟测试点位及设置断言点位的流程图之二;
图5为本申请实施例中单元测试方法的流程图之二;
图6为本申请实施例中单元测试方法的流程图之三;
图7为本申请实施例中单元测试装置的结构图之一;
图8为本申请实施例中方法对象信息确定单元的结构图;
图9为本申请实施例中点位确定单元的结构图之一;
图10为本申请实施例中点位确定单元的结构图之二;
图11为本申请实施例中单元测试装置的结构图之二;
图12为本申请实施例中单元测试装置的结构图之三;
图13为本申请实施例中的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请提供的单元测试方法及装置,可用于金融领域,也可用于除金融领域之外的任意领域,本申请提供的单元测试方法及装置的应用领域不做限定。
参见图1,为了能够对功能代码及功能代码对应的测试代码分别进行语法分析,确定需要进行模拟测试的点位及设置断言的点位,然后设置断言并启动模拟测试,本申请提供一种单元测试方法,包括:
S101:对被测功能代码及功能代码对应的测试代码分别进行语法分析,得到功能代码的方法信息和对象信息及测试代码的方法信息和对象信息;
S102:根据方法信息和对象信息确定进行模拟测试的点位及设置断言的点位;
S103:根据进行模拟测试的点位及设置断言的点位设置断言并启动模拟测试。
可以理解的是,本申请实施例中的单元测试(Unit Testing)可以指对软件中的最小可测试部分所进行的检查与验证。对于单元测试中单元的定义,一般来说,可以根据实际情况去判定,例如C语言中的单元可以指一个函数,Java语言中的单元可以指一个类,图形化软件中的单元可以指一个窗口或一个菜单等,本申请不以此为限。单元测试是软件开发过程中需要进行的一种测试活动。
需要说明的是,本申请提供的单元测试方法可以应用于基于测试驱动开发(Test-Driven Development,TDD)的程序(在本申请中与“代码”一词同义)开发过程。通常而言,基于测试驱动开发是一种不同于传统开发流程的新型开发方法。它要求在编写功能代码之前先编写测试代码,然后根据测试代码来编写仅使测试通过的功能代码。由此可以通过测试来推动整个开发进程,提升功能代码的简洁度及质量,并加速开发过程。
为了让单元测试得以顺利推进,在单元测试前,测试人员往往会在被测功能代码及功能代码对应的测试代码中设置断言(Assert),并屏蔽一些影响本次单元测试的内容,即所谓启动模拟测试(Mock)。为了更加全面地找到需要设置断言的点位及需要进行模拟测试的点位,本申请实施例可以对被测功能代码及功能代码对应的测试代码分别进行语法分析,得到功能代码的方法信息和对象信息及测试代码的方法信息和对象信息。根据方法信息和对象信息可以确定进行模拟测试的点位及设置断言的点位。测试人员可以根据进行模拟测试的点位及设置断言的点位设置断言并启动模拟测试。
其中,方法信息包括但不限于方法所属的代码段、方法所属的类、方法被调用的位置及历史模拟测试点位;对象信息包括但不限于对象所属的代码段、对象所属的类、对象所属的方法、对象被调用的位置及历史断言设置点位。
从上述描述可知,本申请提供的单元测试方法,能够对被测功能代码及对应的测试代码分别进行语法分析,从而确定进行模拟测试的点位及设置断言的点位,并根据模拟测试点位及断言设置点位,设置断言并启动模拟测试,进而帮助程序开发人员及测试人员更充分地设置断言并进行模拟测试,保证了功能代码的全面检测,有效地提升了单元测试的质量,间接提升了功能代码的质量,降低了代码维护成本。
参见图2,对被测功能代码及功能代码对应的测试代码分别进行语法分析,得到功能代码的方法信息和对象信息及测试代码的方法信息和对象信息,包括:
S201:对功能代码及测试代码分别进行语法分析,得到功能代码的代码结构和关键词及测试代码的代码结构和关键词;
S202:根据功能代码的代码结构及关键词确定功能代码的方法信息及对象信息;
S203:根据测试代码的代码结构和关键词确定测试代码的方法信息和对象信息。
可以理解的是,对功能代码及测试代码进行语法分析需要分别进行,因此在对功能代码及测试代码分别进行语法分析之前,需要根据代码所存放的目录来确定哪些代码属于功能代码,哪些代码属于测试代码。
在本申请的一实施例中,功能代码所存放的目录为\src\main\java,其下所有的*.java文件即为功能代码;测试代码所存放的目录为\src\test\java,其下所有的*.java文件即为测试代码。
对功能代码及测试代码的语法分析通常可以采用现有的语法分析器实现。语法分析器通常可以作为编译器或解释器的组件存在,也可以单独存在。常见的语法分析器包括Look-AheadLR语法分析器,本申请不以此为限。
经过语法分析后,可以获得功能代码的代码结构和关键词及测试代码的代码结构和关键词。其中,代码结构可以为树状结构或其他结构。根据代码结构和关键词,语法分析器可以进一步确定功能代码的方法信息、对象信息以及测试代码的方法信息、对象信息。因为方法信息及对象信息都有自己特定的关键字,容易定位;而树状结构又能够帮助确定各方法及对象之间的调用关系。
其中,方法信息更具体的可以包括但不限于:该方法是测试代码内的方法还是功能代码内的方法、该方法所属范围(如该方法是在××类里被定义的方法)、该方法被调用的位置(如该方法是在××类的××方法内被调用)及该方法历史上曾经被Mock(进行虚拟测试)的位置(如该方法是在××测试类的××测试方法中被调用时被Mock的)。
对象信息更具体的可以包括但不限于:该对象是测试代码内的对象还是功能代码内的对象、该对象所属范围(如该对象是在××类/方法里被定义的对象)、该对象被调用的位置(如该对象是在××类的××方法内被读取或被赋予对象或被变动的)及该对象历史上曾经被Assert的位置(如该对象是在××测试类的××测试方法中被Assert的)。
从上述描述可知,本申请提供的单元测试方法,能够对被测功能代码及功能代码对应的测试代码分别进行语法分析,得到功能代码的方法信息和对象信息及测试代码的方法信息和对象信息。
参见图3,根据方法信息和对象信息确定进行模拟测试的点位及设置断言的点位,包括:
S301:根据方法信息和对象信息确定有测试注解的方法、对象及被有测试注解的方法所调用过的方法、对象;
S302;在有测试注解的方法、对象及被有测试注解的方法所调用过的方法、对象中,根据方法信息和对象信息确定使用Java工具开发包访问网络及系统IO进程的第一方法,并将第一方法确定为进行模拟测试的点位中的必要点位;
S303:确定与第一方法属于同一个类的第二方法,将第二方法确定为进行模拟测试的点位中的建议点位;
S304:在有测试注解的方法、对象及被有测试注解的方法所调用过的方法、对象中,根据对象信息确定被赋值过或改动过的对象,将被赋值过或改动过的对象确定为设置断言的点位。
可以理解的是,在本申请实施例中,为了确定进行模拟测试的点位及设置断言的点位,需要扫描所有的功能代码及测试代码,逐个搜索其中含有测试注解的方法及被有测试注解的方法所调用过的方法,然后分析这些方法直接访问过的方法及对象,最终确定需要进行模拟测试的点位及设置断言的点位,其中,在一实施例中,测试注解可以为带有@Test标记的注解,具体过程如下:
①逐一筛查测试代码中被测试代码直接访问的功能代码中所声明的方法(简称方法A)。其中,方法A可以被视为功能代码所要实现的核心代码。核心代码不需要被做任何提示用的标记,也就是说,无需在被测核心代码上设置断言或对核心代码进行虚拟测试。需要说明的是,方法A不包含(不考虑)被Mock的方法及被Mock的方法所调用的方法。
②逐一筛查测试代码中被测试代码直接访问的功能代码中声明的方法(方法A)
所直接访问的方法(简称方法B)。方法B的判断以其所在的类对象在编译时所声明的类内的方法为准。例如,类x内有个方法B,类y继承了类x并重写(Override)实现了新的方法B;在编译态中,如果是使用了y类建立的对象的方法B的话,则以类y中的方法B为准;对于方法B内的代码逐层扫描直到Java提供的开发工具包(Jdk)内的方法位置。
如果出现了方法B直接或间接使用了开发工具包内用来访问网络、系统IO进程及其他进程或用来访问生成随机数的方法,则将该方法B标记为必须Mock的点位(即,进行模拟测试的点位中的必要点位);如果方法B与对应的方法A在同一个类内,则将该方法B标记为建议Mock的点位(即,进行模拟测试的点位中的建议点位);如果方法B与对应的方法A不在同一个类内,则将该方法B标记为需要Mock的点位(即,进行模拟测试的点位中的需要点位)。
需要说明的是,如果方法B同时满足多个标记条件,则可以按必须>需要>建议的优先级进行标记。
③逐一筛查测试代码中被测试代码直接访问的功能代码中所声明的方法(方法A)所直接访问的对象(简称对象B)。如果该对象B仅被读取,可以忽略不处理;如果该对象B被赋值过或改动过,则将被赋值处或被改动处的该对象标记为需要Assert(即,设置断言的点位)。其中,仅在声明时被赋成固定值的对象不在考虑之列。
④逐一筛查测试代码中被测试代码直接访问的测试代码中所声明的对象(简称对象C)。如果该对象C仅被读取,可以忽略不处理;如果该对象C被赋值过或被改动过,则将被赋值处或被改动处的该对象标记为需要Assert(即,设置断言的点位)。其中,仅在声明时被赋成固定值的对象不在考虑之列,仅被直接赋值为常量的对象也不在考虑之列。
⑤逐一筛查测试代码中被测试代码直接访问的功能代码中所声明的对象(简称对象D)。如果该对象D仅被读取,可以忽略不处理;如果该对象D被赋值过或被改动过,则将被赋值处或被改动处的该对象标记为需要Assert(即,设置断言的点位)。其中,仅在声明时被赋成固定值的对象不在考虑之列。
从上述描述可知,本申请提供的单元测试方法,能够根据方法信息和对象信息确定进行模拟测试的点位及设置断言的点位。
参见图4,根据方法信息和对象信息确定进行模拟测试的点位及设置断言的点位,包括:
S401:根据方法信息和对象信息确定无测试注解的方法和对象;
S402:确定无测试注解的方法和对象是否被赋值过或更改过;
S403:如果是,将无测试注解的方法和对象确定为设置断言的点位。
可以理解的是,在一实施例中,为了确定设置断言的点位,本方法在分析了测试代码中含测试注解的方法后,还需要分析测试代码中没有测试注解的其他方法内被测试代码直接访问过的对象(简称对象E)。其中,“其他方法”包括有@Test注解的方法所间接访问过的方法。如果该对象E仅被读取,可以忽略不处理;如果该对象E被赋值过或被改动过,则将被赋值处或被改动处的该对象及其所在的有@Test注解的方法标记为需要Assert(即,设置断言的点位)。其中,在一实施例中,测试注解可以为带有@Test标记的注解。
从上述描述可知,本申请提供的单元测试方法,能够根据方法信息和对象信息确定进行模拟测试的点位及设置断言的点位。
参见图5,根据进行模拟测试的点位及设置断言的点位设置断言并启动模拟测试之前,还包括:
S501:查询被确定为进行模拟测试的点位的方法在其被调用前是否已经进行过模拟测试;
S502:如果否,在编译器上显示进行模拟测试的点位。
可以理解的是,在本申请一实施例中,利用本方法可判断被标记为必须/需要/建议Mock的方法在其被调用前是否已经被Mock。如果存在被Mock前调用的情况,则可以通过编译器软件在该被调用的位置上展示必须/需要/建议Mock该方法;否则无需展示。
从上述描述可知,本申请提供的单元测试方法,能够查询被确定为进行模拟测试的点位的方法在其被调用前是否已经进行过模拟测试,并将没有在其被调用前进行模拟测试的模拟测试点位显示在编译器上。
参见图6,根据进行模拟测试的点位及设置断言的点位设置断言并启动模拟测试之前,还包括:
S601:确定有测试注解的方法是否直接或间接访问过被确定为设置断言的点位的对象;
S602:如果是,在编译器上显示设置断言的点位。
可以理解的是,在本申请一实施例中,利用本方法可判断测试代码中有@Test注解的方法是否直接或间接访问过有需要Assert标记的对象;如果有访问过,则可通过编译器软件在该有@Test注解的方法上展示需要Assert该对象;否则无需展示。
从上述描述可知,本申请提供的单元测试方法,能够确定有测试注解的方法是否直接或间接访问过被确定为设置断言的点位的对象,并将有此情况的断言设置点位显示在编译器上。
在本申请实施例中,以上各步骤可在用户运行的编译器软件中,(并且有打开代码工程且编译器软件为当前操作系统运行焦点时)每隔若干秒自动触发或在用户保存代码文件时自动触发。在较佳的实施例中,秒数可以为5。
为了更好地说明本申请所述的方法,现举一例。
假设此时开发人员正在编写一段测试代码ClassTestA,当前打开的测试代码类中有一个方法上有@Test注解,方法名为testA,有一个类全局变量c,如下:
int c=2;
@Test
public void testA(){
int a=1;//这种情况属于测试代码中被测试代码直接访问的测试代码中声明的对象,且在下面a=2这里被赋值过,但是2为常量,属于直接被赋值的常量,不需要被标记为需要Assert
int b=2;//这种情况属于仅被读取,因此不需要被标记为需要Assert
a=2;
ClassA ca=new ClassA();//ClassA是在目录为\src\main\java下的java文件,因此属于功能代码
ca.ax=b;//对ca内的变量进行了赋值,因此ca属于测试代码中被测试代码直接访问的测试代码中声明的对象,标记为需要Assert;ca.ax属于测试代码中被测试代码直接访问的功能代码中声明的对象,虽然在excute方法(见下方ClassA类的详情)中未被修改,但在这行被修改了,标记为需要Assert
ca.excute();//属于测试代码中被测试代码直接访问的功能代码中声明的方法,不需要被标记
}
TestA访问的ClassA类的excute方法和类变量ax详情如下:
public int ax=2;
public void excute(){
updateSqlValue(ax);//假设该方法是去更新数据库内容的,访问了网络,则属于测试代码中被测试代码直接访问的功能代码中声明的方法直接访问的方法,标记为需要Mock
}
假设此时正在编写ClassTestA,并触发了定时扫描,在扫描中发现ClassTestA下有testA,有@Test注解,则需逐个扫描该方法下的对象。这部分逻辑详见上文对应变量后面的注释。
综上所述,扫描测试代码内的类变量,仅有一个c,但是未被修改,因此不被标记为需要Assert。根据判断结果,变量ca、变量ca.ax被标记为需要Assert,方法updateSqlValue被标记为需要Mock。
检查testA方法内,变量ca、变量ca.ax没有被Assert,方法updateSqlValue没有被Mock,因此在testA方法的声明行处,提示“请Assert变量ca、变量ca.ax,请Mock方法updateSqlValue”。
基于同一发明构思,本申请实施例还提供了一种单元测试装置,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由于单元测试装置解决问题的原理与单元测试方法相似,因此单元测试装置的实施可以参见基于软件性能基准确定方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
参见图7,本申请实施例提供单元测试装置,包括:方法对象信息确定单元701、点位确定单元702及模拟测试单元703。
方法对象信息确定单元701用于对被测功能代码及所述功能代码对应的测试代码分别进行语法分析,得到所述功能代码的方法信息和对象信息及所述测试代码的方法信息和对象信息;所述方法信息包括方法所属的代码段、方法所属的类、方法被调用的位置及历史模拟测试点位;所述对象信息包括对象所属的代码段、对象所属的类、对象所属的方法、对象被调用的位置及历史断言设置点位;
点位确定单元702用于根据所述方法信息和对象信息确定进行模拟测试的点位及设置断言的点位;
模拟测试单元703用于根据所述进行模拟测试的点位及设置断言的点位设置断言并启动模拟测试。
一实施例中,参见图8,所述方法对象信息确定单元701,包括:
代码结构和关键词确定模块801用于对所述功能代码及所述测试代码分别进行语法分析,得到所述功能代码的代码结构和关键词及所述测试代码的代码结构和关键词;
功能方法对象信息确定模块802用于根据所述功能代码的代码结构及关键词确定所述功能代码的方法信息及对象信息;
测试方法对象信息确定模块803用于根据所述测试代码的代码结构和关键词确定所述测试代码的方法信息和对象信息。
一实施例中,参见图9,所述点位确定单元702,包括:
测试注解方法对象确定模块901用于根据所述方法信息和对象信息确定有测试注解的方法、对象及被所述有测试注解的方法所调用过的方法、对象;
必要点位确定模块902用于在有测试注解的方法、对象及被所述有测试注解的方法所调用过的方法、对象中,根据所述方法信息和对象信息确定使用Java工具开发包访问网络及系统IO进程的第一方法,并将所述第一方法确定为所述进行模拟测试的点位中的必要点位;
建议点位确定模块903用于确定与所述第一方法属于同一个类的第二方法,将所述第二方法确定为所述进行模拟测试的点位中的建议点位;
断言点位确定模块904用于在有测试注解的方法、对象及被所述有测试注解的方法所调用过的方法、对象中,根据所述对象信息确定被赋值过或改动过的对象,将所述被赋值过或改动过的对象确定为所述设置断言的点位。
一实施例中,参见图10,所述点位确定单元702,包括:
无测试注解的方法对象确定模块1001用于根据所述方法信息和对象信息确定无测试注解的方法和对象;
赋值更改确定模块1002用于确定所述无测试注解的方法和对象是否被赋值过或更改过;
所述断言点位确定模块904用于当确定所述无测试注解的方法和对象被赋值过或更改过时,将所述无测试注解的方法和对象确定为所述设置断言的点位。
一实施例中,参见图11,所述的单元测试装置,还包括:
模拟测试查询单元1101用于查询被确定为所述进行模拟测试的点位的方法在其被调用前是否已经进行过模拟测试;
模拟测试点位显示单元1102用于当查询被确定为所述进行模拟测试的点位的方法在其被调用前尚未进行过模拟测试时,在编译器上显示所述进行模拟测试的点位。
一实施例中,参见图12,所述的单元测试装置,还包括:
断言设置点位确定单元1201用于确定所述有测试注解的方法是否直接或间接访问过被确定为所述设置断言的点位的对象;
断言设置点位显示单元1202用于当确定所述有测试注解的方法直接或间接访问过被确定为所述设置断言的点位的对象时,在编译器上显示所述设置断言的点位。
从硬件层面来说,为了能够对功能代码及功能代码对应的测试代码分别进行语法分析,确定需要进行模拟测试的点位及设置断言的点位,然后设置断言并启动模拟测试,本申请提供一种用于实现所述单元测试方法中的全部或部分内容的电子设备的实施例,所述电子设备具体包含有如下内容:
处理器(Processor)、存储器(Memory)、通讯接口(Communications Interface)和总线;其中,所述处理器、存储器、通讯接口通过所述总线完成相互间的通讯;所述通讯接口用于实现所述单元测试装置与核心业务系统、用户终端以及相关数据库等相关设备之间的信息传输;该逻辑控制器可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该逻辑控制器可以参照实施例中的单元测试方法的实施例,以及单元测试装置的实施例进行实施,其内容被合并于此,重复之处不再赘述。
可以理解的是,所述用户终端可以包括智能手机、平板电子设备、网络机顶盒、便携式计算机、台式电脑、个人数字助理(PDA)、车载设备、智能穿戴设备等。其中,所述智能穿戴设备可以包括智能眼镜、智能手表、智能手环等。
在实际应用中,单元测试方法的部分可以在如上述内容所述的电子设备侧执行,也可以所有的操作都在所述客户端设备中完成。具体可以根据所述客户端设备的处理能力,以及用户使用场景的限制等进行选择。本申请对此不作限定。若所有的操作都在所述客户端设备中完成,所述客户端设备还可以包括处理器。
上述的客户端设备可以具有通讯模块(即通讯单元),可以与远程的服务器进行通讯连接,实现与所述服务器的数据传输。所述服务器可以包括任务调度中心一侧的服务器,其他的实施场景中也可以包括中间平台的服务器,例如与任务调度中心服务器有通讯链接的第三方服务器平台的服务器。所述的服务器可以包括单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式装置的服务器结构。
图13为本申请实施例的电子设备9600的系统构成的示意框图。如图13所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图13是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
一实施例中,单元测试方法功能可以被集成到中央处理器9100中。其中,中央处理器9100可以被配置为进行如下控制:
S101:对被测功能代码及功能代码对应的测试代码分别进行语法分析,得到功能代码的方法信息和对象信息及测试代码的方法信息和对象信息;
S102:根据方法信息和对象信息确定进行模拟测试的点位及设置断言的点位;
S103:根据进行模拟测试的点位及设置断言的点位设置断言并启动模拟测试。
从上述描述可知,本申请提供的单元测试方法,能够对被测功能代码及对应的测试代码分别进行语法分析,从而确定进行模拟测试的点位及设置断言的点位,并根据模拟测试点位及断言设置点位,设置断言并启动模拟测试,进而帮助程序开发人员及测试人员更充分地设置断言并进行模拟测试,保证了功能代码的全面检测,有效地提升了单元测试的质量,间接提升了功能代码的质量,降低了代码维护成本。
在另一个实施方式中,单元测试装置可以与中央处理器9100分开配置,例如可以将数据复合传输装置单元测试装置配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现单元测试方法的功能。
如图13所示,该电子设备9600还可以包括:通讯模块9110、输入单元9120、音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并不是必须要包括图13中所示的所有部件;此外,电子设备9600还可以包括图13中没有示出的部件,可以参考现有技术。
如图13所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设备9600的各个部件的操作。
其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该存储器9140存储的该程序,以实现信息存储或处理等。
输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。
该存储器9140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备9600的操作的流程。
存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器9140的驱动程序存储部9144可以包括电子设备的用于通讯功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通讯模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通讯模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输出信号,这可以和常规移动通讯终端的情况相同。
基于不同的通讯技术,在同一电子设备中,可以设置有多个通讯模块9110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通讯模块(发送机/接收机)9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机上录音,且使得可以通过扬声器9131来播放本机上存储的声音。
本申请的实施例还提供能够实现上述实施例中的执行主体为服务器或客户端的单元测试方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的执行主体为服务器或客户端的单元测试方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
S101:对被测功能代码及功能代码对应的测试代码分别进行语法分析,得到功能代码的方法信息和对象信息及测试代码的方法信息和对象信息;
S102:根据方法信息和对象信息确定进行模拟测试的点位及设置断言的点位;
S103:根据进行模拟测试的点位及设置断言的点位设置断言并启动模拟测试。
从上述描述可知,本申请提供的单元测试方法,能够对被测功能代码及对应的测试代码分别进行语法分析,从而确定进行模拟测试的点位及设置断言的点位,并根据模拟测试点位及断言设置点位,设置断言并启动模拟测试,进而帮助程序开发人员及测试人员更充分地设置断言并进行模拟测试,保证了功能代码的全面检测,有效地提升了单元测试的质量,间接提升了功能代码的质量,降低了代码维护成本。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种单元测试方法,其特征在于,包括:
对被测功能代码及所述功能代码对应的测试代码分别进行语法分析,得到所述功能代码的方法信息和对象信息及所述测试代码的方法信息和对象信息;所述方法信息包括方法所属的代码段、方法所属的类、方法被调用的位置及历史模拟测试点位;所述对象信息包括对象所属的代码段、对象所属的类、对象所属的方法、对象被调用的位置及历史断言设置点位;
根据所述方法信息和对象信息确定进行模拟测试的点位及设置断言的点位;
根据所述进行模拟测试的点位及设置断言的点位设置断言并启动模拟测试;
其中,所述根据所述方法信息和对象信息确定进行模拟测试的点位及设置断言的点位,包括:
根据所述方法信息和对象信息确定有测试注解的方法、对象及被所述有测试注解的方法所调用过的方法、对象;
在有测试注解的方法、对象及被所述有测试注解的方法所调用过的方法、对象中,根据所述方法信息和对象信息确定使用Java工具开发包访问网络及系统IO进程的第一方法,并将所述第一方法确定为所述进行模拟测试的点位中的必要点位;
确定与所述第一方法属于同一个类的第二方法,将所述第二方法确定为所述进行模拟测试的点位中的建议点位;
在有测试注解的方法、对象及被所述有测试注解的方法所调用过的方法、对象中,根据所述对象信息确定被赋值过或改动过的对象,将所述被赋值过或改动过的对象确定为所述设置断言的点位;
其中,所述根据所述方法信息和对象信息确定进行模拟测试的点位及设置断言的点位,包括:
根据所述方法信息和对象信息确定无测试注解的方法和对象;
确定所述无测试注解的方法和对象是否被赋值过或更改过;
如果是,将所述无测试注解的方法和对象确定为所述设置断言的点位。
2.根据权利要求1所述的单元测试方法,其特征在于,所述对被测功能代码及所述功能代码对应的测试代码分别进行语法分析,得到所述功能代码的方法信息和对象信息及所述测试代码的方法信息和对象信息,包括:
对所述功能代码及所述测试代码分别进行语法分析,得到所述功能代码的代码结构和关键词及所述测试代码的代码结构和关键词;
根据所述功能代码的代码结构及关键词确定所述功能代码的方法信息及对象信息;
根据所述测试代码的代码结构和关键词确定所述测试代码的方法信息和对象信息。
3.根据权利要求1所述的单元测试方法,其特征在于,所述根据所述进行模拟测试的点位及设置断言的点位设置断言并启动模拟测试之前,还包括:
查询被确定为所述进行模拟测试的点位的方法在其被调用前是否已经进行过模拟测试;
如果否,在编译器上显示所述进行模拟测试的点位。
4.根据权利要求1所述的单元测试方法,其特征在于,所述根据所述进行模拟测试的点位及设置断言的点位设置断言并启动模拟测试之前,还包括:
确定所述有测试注解的方法是否直接或间接访问过被确定为所述设置断言的点位的对象;
如果是,在编译器上显示所述设置断言的点位。
5.一种单元测试装置,其特征在于,包括:
方法对象信息确定单元,用于对被测功能代码及所述功能代码对应的测试代码分别进行语法分析,得到所述功能代码的方法信息和对象信息及所述测试代码的方法信息和对象信息;所述方法信息包括方法所属的代码段、方法所属的类、方法被调用的位置及历史模拟测试点位;所述对象信息包括对象所属的代码段、对象所属的类、对象所属的方法、对象被调用的位置及历史断言设置点位;
点位确定单元,用于根据所述方法信息和对象信息确定进行模拟测试的点位及设置断言的点位;
模拟测试单元,用于根据所述进行模拟测试的点位及设置断言的点位设置断言并启动模拟测试;
其中,所述点位确定单元,包括:
测试注解方法对象确定模块,用于根据所述方法信息和对象信息确定有测试注解的方法、对象及被所述有测试注解的方法所调用过的方法、对象;
必要点位确定模块,用于在有测试注解的方法、对象及被所述有测试注解的方法所调用过的方法、对象中,根据所述方法信息和对象信息确定使用Java工具开发包访问网络及系统IO进程的第一方法,并将所述第一方法确定为所述进行模拟测试的点位中的必要点位;
建议点位确定模块,用于确定与所述第一方法属于同一个类的第二方法,将所述第二方法确定为所述进行模拟测试的点位中的建议点位;
断言点位确定模块,用于在有测试注解的方法、对象及被所述有测试注解的方法所调用过的方法、对象中,根据所述对象信息确定被赋值过或改动过的对象,将所述被赋值过或改动过的对象确定为所述设置断言的点位;
其中,所述点位确定单元,包括:
无测试注解的方法对象确定模块,用于根据所述方法信息和对象信息确定无测试注解的方法和对象;
赋值更改确定模块,用于确定所述无测试注解的方法和对象是否被赋值过或更改过;
所述断言点位确定模块,用于当确定所述无测试注解的方法和对象被赋值过或更改过时,将所述无测试注解的方法和对象确定为所述设置断言的点位。
6.根据权利要求5所述的单元测试装置,其特征在于,所述方法对象信息确定单元,包括:
代码结构和关键词确定模块,用于对所述功能代码及所述测试代码分别进行语法分析,得到所述功能代码的代码结构和关键词及所述测试代码的代码结构和关键词;
功能方法对象信息确定模块,用于根据所述功能代码的代码结构及关键词确定所述功能代码的方法信息及对象信息;
测试方法对象信息确定模块,用于根据所述测试代码的代码结构和关键词确定所述测试代码的方法信息和对象信息。
7.根据权利要求5所述的单元测试装置,其特征在于,还包括:
模拟测试查询单元,用于查询被确定为所述进行模拟测试的点位的方法在其被调用前是否已经进行过模拟测试;
模拟测试点位显示单元,用于当查询被确定为所述进行模拟测试的点位的方法在其被调用前尚未进行过模拟测试时,在编译器上显示所述进行模拟测试的点位。
8.根据权利要求5所述的单元测试装置,其特征在于,还包括:
断言设置点位确定单元,用于确定所述有测试注解的方法是否直接或间接访问过被确定为所述设置断言的点位的对象;
断言设置点位显示单元,用于当确定所述有测试注解的方法直接或间接访问过被确定为所述设置断言的点位的对象时,在编译器上显示所述设置断言的点位。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至4任一项所述的单元测试方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至4任一项所述的单元测试方法的步骤。
CN202110773832.7A 2021-07-08 2021-07-08 一种单元测试方法及装置 Active CN113377677B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110773832.7A CN113377677B (zh) 2021-07-08 2021-07-08 一种单元测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110773832.7A CN113377677B (zh) 2021-07-08 2021-07-08 一种单元测试方法及装置

Publications (2)

Publication Number Publication Date
CN113377677A CN113377677A (zh) 2021-09-10
CN113377677B true CN113377677B (zh) 2024-06-28

Family

ID=77581402

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110773832.7A Active CN113377677B (zh) 2021-07-08 2021-07-08 一种单元测试方法及装置

Country Status (1)

Country Link
CN (1) CN113377677B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101295280A (zh) * 2008-06-18 2008-10-29 腾讯科技(深圳)有限公司 自动化软件调测方法及系统
CN104809071A (zh) * 2015-05-14 2015-07-29 北京润科通用技术有限公司 一种代码测试方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100487667C (zh) * 2005-12-14 2009-05-13 中兴通讯股份有限公司 一种软件单元测试自动化系统及其方法
CN106547681B (zh) * 2015-09-18 2020-03-03 北京京东尚科信息技术有限公司 数据自动加载并复用模拟服务测试的方法和装置
CN109522225B (zh) * 2018-11-09 2022-06-07 网宿科技股份有限公司 一种自动化测试断言方法及装置、测试平台及存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101295280A (zh) * 2008-06-18 2008-10-29 腾讯科技(深圳)有限公司 自动化软件调测方法及系统
CN104809071A (zh) * 2015-05-14 2015-07-29 北京润科通用技术有限公司 一种代码测试方法及装置

Also Published As

Publication number Publication date
CN113377677A (zh) 2021-09-10

Similar Documents

Publication Publication Date Title
CN109828903B (zh) 自动化测试方法、装置、计算机装置及存储介质
CN110018955B (zh) 通过转换手动测试用例来生成自动化测试脚本
CN112463634B (zh) 微服务架构下的软件测试方法及装置
CN110196795B (zh) 检测移动终端应用运行状态的方法及相关装置
CN111782266B (zh) 软件性能基准确定方法及装置
CN111930617A (zh) 基于数据对象化的自动化测试方法及装置
CN115686631B (zh) 一种基于知识基的随机指令生成方法、装置及存储介质
CN113051163A (zh) 单元测试方法、装置、电子设备及存储介质
CN114579452A (zh) 接口影响检测方法及相关设备
CN111427784A (zh) 一种数据获取方法、装置、设备及存储介质
CN113342330B (zh) 前端工程生成方法及装置
CN113377677B (zh) 一种单元测试方法及装置
CN110908882A (zh) 一种应用程序的性能分析方法、装置、终端设备及介质
KR100640243B1 (ko) 이동통신 단말기의 응용프로그램 실행속도 향상장치 및방법
CN116450511A (zh) 信息更新方法、装置、电子设备和计算机可读介质
CN116150029A (zh) 一种贷款系统逾期跑批自动化测试方法及装置
CN113515447B (zh) 系统自动化测试方法及装置
CN111385661A (zh) 语音控制全屏播放的方法及终端
CN115292178A (zh) 测试数据搜索方法、装置、存储介质以及终端
CN106844186B (zh) 应用的脱机测试方法及终端设备
KR102201845B1 (ko) 멀티 태스크 기반 소프트웨어의 자동화 단위 테스트 방법 및 그를 위한 시스템
CN113297095A (zh) 一种子程序调用路径分支的确定方法及装置
CN113282493A (zh) 冒烟测试的方法、装置、存储介质和电子设备
CN113419957A (zh) 基于规则的大数据离线批处理性能容量扫描方法及装置
CN112380118A (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