[go: up one dir, main page]

CN106502896A - 一种函数测试代码的生成方法及装置 - Google Patents

一种函数测试代码的生成方法及装置 Download PDF

Info

Publication number
CN106502896A
CN106502896A CN201610921921.0A CN201610921921A CN106502896A CN 106502896 A CN106502896 A CN 106502896A CN 201610921921 A CN201610921921 A CN 201610921921A CN 106502896 A CN106502896 A CN 106502896A
Authority
CN
China
Prior art keywords
function
test
target
buried point
name
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
Application number
CN201610921921.0A
Other languages
English (en)
Other versions
CN106502896B (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.)
Chengdu Everx Technology Co ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201610921921.0A priority Critical patent/CN106502896B/zh
Publication of CN106502896A publication Critical patent/CN106502896A/zh
Application granted granted Critical
Publication of CN106502896B publication Critical patent/CN106502896B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

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

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

一种函数测试代码的生成方法及装置
技术领域
本发明涉及软件技术领域,特别涉及一种函数测试代码的生成方法及装置。
背景技术
随着信息技术的不断发展,应用程序的开发及应用得到飞速的发展。应用程序的开发过程中,为了保证代码中逻辑的正确性,通常会编写测试用例代码用于检测函数功能的正确性。
在Java语言开发的项目中,使用最多的测试框架是由Erich Gamma和Kent Beck编写的一个回归测试框架:Junit单元测试框架。使用该测试框架能够帮助开发人员测试代码中函数功能的正确性。但是,这个方案有一个非常致命的缺陷,那就是所有的测试代码都需要人工手动编写,这样就会花费大量的人力成本,同时,由于人工手动编写测试代码大大降低了开发过程中的测试效率。
可见,现有技术的应用程序开发过程中存在测试效率低下的技术问题。
发明内容
本发明实施例提供一种函数测试代码的生成方法及装置,解决现有技术的应用程序开发过程中存在测试效率低下的技术问题,提高测试效率。
本申请实施例提供一种函数测试代码的生成方法,所述方法包括:
对待测试的目标函数设置函数测试埋点,所述函数测试埋点为表征所述目标函数各组成部分的位置;
基于所述函数测试埋点,读取并解析所述目标函数的代码源文件,获得所述目标函数的函数名称、函数参数、函数返回类型的值;
基于所述目标的函数名称、函数参数、函数返回类型的值,构造所述目标函数的测试函数,并生成所述目标函数的测试代码文件。
可选的,所述对目标函数设置函数测试埋点,包括:
分别对所述目标函数的函数名称、函数参数、返回类型设置函数测试埋点。
可选的,所述基于所述函数测试埋点,读取并解析所述目标函数的代码源文件,包括:
通过文档读取方式打开所述目标函数的源文件;
将打开的源文件转换为输入流,从输入流中获得所述函数测试埋点的埋点标示符;
读取所述埋点标示符对应的起始位置标识和结束位置标识之间的目标数据;
将所述目标数据作为所述埋点标示符对应的函数名称、函数参数或者函数返回类型。
可选的,所述基于所述目标的函数名称、函数参数、函数返回类型的值,构造所述目标函数的测试函数,包括:
基于所述目标函数的函数名称的值构造所述测试函数的函数名称;
通过数据交换格式JSON解析,获得所述目标函数中函数参数的值对应的所有参数值,由所述所有参数值构造出所述测试函数的函数参数;
设置与所述目标函数的函数返回类型的值相同的变量来接收并保存所述测试函数的函数返回值。
可选的,所述生成所述目标函数的测试代码文件,包括:
将所述测试函数的函数名称、函数参数、函数返回值以及打印所述函数返回值功能的信息写入所述测试代码文件中。
本申请实施例还提供一种函数测试代码的生成装置,所述装置包括:
埋点单元,用于对待测试的目标函数设置函数测试埋点,所述函数测试埋点为表征所述目标函数各组成部分的位置;
解析单元,用于基于所述函数测试埋点,读取并解析所述目标函数的代码源文件,获得所述目标函数的函数名称、函数参数、函数返回类型的值;
生成单元,用于基于所述目标的函数名称、函数参数、函数返回类型的值,构造所述目标函数的测试函数,并生成所述目标函数的测试代码文件。
可选的,所述埋点单元,用于:分别对所述目标函数的函数名称、函数参数、返回类型设置函数测试埋点。
可选的,所述解析单元,包括:
打开子单元,用于通过文档读取方式打开所述目标函数的源文件;
获取子单元,用于将打开的源文件转换为输入流,从输入流中获得所述函数测试埋点的埋点标示符;
读取子单元,用于读取所述埋点标示符对应的起始位置标识和结束位置标识之间的目标数据;将所述目标数据作为所述埋点标示符对应的函数名称、函数参数或者函数返回类型。
可选的,所述生成单元,包括:
名称构造子单元,用于基于所述目标函数的函数名称的值构造所述测试函数的函数名称;
参数构造子单元,用于通过数据交换格式JSON解析,获得所述目标函数中函数参数的值对应的所有参数值,由所述所有参数值构造出所述测试函数的函数参数;
返回值构造子单元,用于设置与所述目标函数的函数返回类型的值相同的变量来接收并保存所述测试函数的函数返回值。
可选的,所述生成单元,还用于:将所述测试函数的函数名称、函数参数、函数返回值以及打印所述函数返回值功能的信息写入所述测试代码文件中。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
本申请实施例提供一种函数测试代码的生成方法,对待测试的目标函数设置函数测试埋点,并基于函数测试埋点读取并解析目标函数的函数名称、函数参数及函数返回类型的值,进而根据目标函数的函数名称、函数参数及函数返回类型的值构造测试函数并生成测试代码文件,实现了测试代码的自动生成,不再需要开发人员手动编写测试代码,从而解决了现有技术的应用程序开发过程中测试效率低下的技术问题,提高了测试效率。
附图说明
图1为本申请实施例提供的一种函数测试代码的生成方法的流程图;
图2为本申请实施例提供的读取及解析代码源文件的流程图;
图3为本申请实施例提供的生成测试代码文件的示意图;
图4为本申请实施例提供的一种函数测试代码的生成装置。
具体实施方式
在本申请实施例提供的技术方案中,通过对待测试的目标函数设置函数测试埋点,来读取并解析目标函数的各组成部分,并根据目标函数的各组成部分构造测试函数、生成测试代码文件,实现测试代码的自动生成,解决现有技术中因手动编写测试代码导致的测试效率低下的技术问题。
下面结合附图对本申请实施例技术方案的主要实现原理、具体实施方式及其对应能够达到的有益效果进行详细的阐述。
实施例一
请参考图1,本申请实施例提供一种函数测试代码的生成方法,该方法包括:
S101:对待测试的目标函数设置函数测试埋点,所述函数测试埋点为表征所述目标函数各组成部分的位置;
S102:基于所述函数测试埋点,读取并解析所述目标函数的代码源文件,获得所述目标函数的函数名称、函数参数、函数返回类型的值;
S103:基于所述目标的函数名称、函数参数、函数返回类型的值,构造所述目标函数的测试函数,并生成所述目标函数的测试代码文件。
在具体实施过程中,为了能够方自动生成测试代码,本申请实施例首先执行S101在源代码中进行埋点设置。设置函数测试埋点主要就是在函数上添加以埋点标示符开头的测试描述信息。其中,埋点标示符为用于区别目标函数所在应用程序的变量或者函数的字符,且不影响应用程序的运行,例如:Java语法中变量或者函数等都不能使用@开头,那么在Java程序中可以使用@作为埋点标示符。需要说明的是,本申请实施例并不限制埋点标示符的具体形式,采用不同变成语言的程序,可以使用不同的埋点标示符,如假设在C++程序中#不能用于变量或者函数的开头,那么在C++程序中可以采用#作为埋点标示符。
下面以Junit单元测试框架下,Java程序中用@对源代码中的待测试函数进行埋点为例,对本申请实施例提供的埋点设置进行详细说明。
一个函数通常包含有三组成部分:1、函数名;2、函数参数;3、函数返回值,所以对函数进行埋点设置时,可以分别对函数名称、函数参数及函数返回类型设置函数测试埋点,通过这三个函数测试埋点的设置就能够非常准确的标识一个函数,以便于后续对其解析生成对应的测试代码。
函数测试埋点用于表征目标函数各组成部分的位置,包括:埋点标示符,与埋点标示符对应的起始位置标识和结束位置标识,例如:@funName:[函数名称]、@funParam:[函数参数]、@return:[返回类型],“[”和“]”分别为@对应的起始位置标识和结束位置标识,即在“[”和“]”内的目标数据为需要进行读取并解析的函数数据。
a)@funName:[函数名称]
为了方便理解埋点注视规则,对上述形式举例如下:@funName:[addFun],表示对addFun的函数(addFun为具体的函数名称)进行埋点注解,埋点的函数后面会对埋点进行解析然后生成该函数对应的测试代码。
b)@funParam:[函数参数]
同样的,形式举例如下:@funParam:[A],表示对参数A进行埋点注解,需要对该参数A进行解析生成对应的测试代码。
其中“[函数参数]”中的函数参数通过JSON((JavaScript Object Notation,是一种轻量级的数据交换格式)形式来进行描述。JSON能够很方便的描述一个或者多个对象的具体信息。通过JSON能够很方便的将多个参数描述清晰。
例如:下面的格式来描述Person参数的信息:
对上面JSON字符串的解释如下:
Param1:Param1代表第一个参数,有几个参数就是param几。Param1内部是对该参数的描述,示例中Param1中的参数是Person。
Person:是一个自定义类型,接下来Person里面的内容是对Person的描述,其中描述了age(年龄)是10岁,name(名字)是tom,height(身高)是180。
Param2:Param2代表传入该函数的第二个参数,这个参数仅仅包含一个hobby变量,其值是play。
c)@return:[返回类型]
如果一个函数有返回值那么将该返回值通过@return语句进行埋点,例如:@return:[String],这句话的意思表示该函数会有返回值,且返回值是String类型。
针对埋点设置完成的目标函数,执行S102读取并解析目标函数的代码源文件,具体实施过程如下:
步骤1、通过文档读取方式打开目标函数的源文件。
其中,具体可以通过File类(Java语言JDK自带的工具类)实现,例如:通过调用File file=File(filePath)(File是方法名称,filePath表示文件所在的绝对路径),就能够将filePath对应的文件打开,并将打开的文件命名为file。
步骤2、将打开的源文件转换为输入流,从输入流中获得函数测试埋点的埋点标示符。
具体的,可以采用fileInputStream=new FileInputStream(file),将file转换成为输入流,并将输入流命名为fileInputStream,)针对输入流fileInputStream,可以采用readline方法(读取输入流所对应文件的一整行的函数方法)去逐行读取文件中的一行信息。采用逐行读取就是循环的去调用fileInputStream中的readline方法,并将读取到的当前行的数据保存到String类型的变量lineString中。
在lineString中通过调用contains(“@”)方法(该方法主要功能是判断该字符串中是否包含@这个字符串)来判断当前行中是否包含@这个埋点标示符。如果没有包含@这个标示符,那么继续读取下一行的数据,如图2所示。读取下一行的数据同样是调用fileInputStream中的readline方法。如果包含了@这个标示符执行步骤3。
步骤3、读取埋点标示符对应的起始位置标识和结束位置标识之间的目标数据。
由于读取到了@这个标示符,说明这一行中包含需要解析的信息。这一步骤中则需要确定lineString中标示符@的位置。在lineString中可以通过调用indexOf(“@”)函数来定位标示符@的位置信息,这个函数主要功能是返回lineString中的@这个字符串所在位置信息(假设用pos1来表示这个位置)。从pos1这个位置开始,然后通过循环遍历的方式取出后面第一个“[]”符号之内的所有数据,如图2所示。从pos1这个位置开始,一次取出一个字符(使用charAt(pos1)的函数获得pos1的字符串值,循环过程中每次的位置值加1),然后判断这个字符是不是和”[“或者”]”,这两个字符相等。如果是和“[”相等,那么从此开始记录后面的数据。如果是和“]”相等,那么停止记录数据。从开始位置标识处开始,到结束位置标识处结束,读取到的数据就是需要获取的真实数据值,即目标数据。
步骤4、将目标数据作为埋点标示符对应的函数名称、函数参数或者函数返回类型的值。若@后面紧跟的字符串为funName,那么@后面的第一个“[]”符号里的目标数据则为函数名称的值;若@后面紧跟的字符串为funParam,那么@后面的第一个“[]”符号里的目标数据则为函数参数的值;若@后面紧跟的字符串为return,那么@后面的第一个“[]”符号里的目标数据则为函数返回类型的值。
需要说明的是:为了后续描述方便,本申请实施例用funName来表示函数名称@funName的具体值信息;用returnValue来表示函数返回类型@return的具体值信息;用paramValue来表示函数参数@funParam的具体值信息。
在S102之后,执行S103基于读取的函数名称、函数参数、函数返回类型的值,构造目标函数的测试函数,并生成目标函数的测试代码文件。
请参考图3,构造目标函数的测试函数,具体包括如下步骤:
S31:基于目标函数的函数名称的值构造测试函数的函数名称。
通过上面S102的解析已确定需要测试的目标函数名称是funName,为了统一命名规则可以构造测试函数的名称是testfunName,就是在原来的函数名称前面添加test的前缀,其主要目的是为了明确测试函数功能和统一命名规则。本申请实施例并不限制测试函数的函数名称的具体命名,也可以是t-funName、funNametest等。
S32:通过数据交换格式JSON解析,获得目标函数中函数参数的值对应的所有参数值,由所有参数值构造出测试函数的函数参数。
由于函数参数是标准的JSON格式,可以通过JSON解析(通用技术),解析出paramValue中所有的参数值,然后根据解析出来的值来构造出来测试函数的函数参数。例如:上述Person参数的信息,解析出Person中的具体值包括:"age":"10","name":"tom","height":180,那么通过Person的构造函数实例化Person对象出来。
S33:设置与目标函数的函数返回类型的值相同的变量来接收并保存测试函数的函数返回值。
通过returnValue已确认目标函数的返回数据是什么,为此,可以使用相同类型的变量对测试函数的返回类型的值进行接收并保存在returnValue2中。将函数返回值打印出来,通过系统的打印函数System.println(“returnValue2”)(这个函数主要功能是打印,将括号内的信息打印到控制台上),将函数的返回值打印到控制台中。
通过上述测试函数的构造,获得了测试函数的函数名称、函数参数、函数返回值,接下来,生成目标函数的测试代码文件。具体的,将上述测试函数的函数名称、函数参数、函数返回值、以及打印返回值功能等信息全部写入到文件中。写入文件的方式是通过FileWriter类(JDK提供的工具类)完成。通过调用FileWriter中的write函数(该函数主要功能是将信息写入到文件中),将相应的信息写入到文件中。
写入文件的操作如下:
1、通过FileWriter类的构造函数得到FileWriter对象,构造函数(例如:FileWriter("C:\\demo1.java",false);)中需要传递2个参数:第一个参数:是需要写入文件的位置,即写入的文件;第二个参数:是否文件续写(也就是文件追加写入),如果是true就是追加写入,如果是false就是重新开始写入。
2、FileWriter的构造函数返回后得到一个FileWriter的对象fw,fw里面有一个write函数,这个函数的主要功能是写入文件操作。(例如:fw.write(“写入一些信息”),这样将会把双引号的内容写入文件中)。
3、文件写入完毕以后,fw里面有一个close函数,通过调用close函数后,系统会关闭相应的文件操作的资源占用,释放文件读写的内存等资源。
通过上述实施例提供的一种函数测试代码的生成方法中实现了自动化生成测试代码的功能,能够大大节省开发人员编写测试代码的时间,极大的提高了开发过程中的测试效率。
基于同一发明构思,本申请实施例还基于上述函数测试代码的生成方法,对应提供一种函数测试代码的生成装置,如图4所示,该装置包括:
埋点单元41,用于对待测试的目标函数设置函数测试埋点,所述函数测试埋点为表征所述目标函数各组成部分的位置;
解析单元42,用于基于所述函数测试埋点,读取并解析所述目标函数的代码源文件,获得所述目标函数的函数名称、函数参数、函数返回类型的值;
生成单元43,用于基于所述目标的函数名称、函数参数、函数返回类型的值,构造所述目标函数的测试函数,并生成所述目标函数的测试代码文件。
在具体实施过程中,所述埋点单元41,用于:分别对所述目标函数的函数名称、函数参数、返回类型设置函数测试埋点。
所述解析单元42包括:打开子单元、获取子单元及读取子单元。打开子单元用于通过文档读取方式打开所述目标函数的源文件;获取子单元用于将打开的源文件转换为输入流,从输入流中获得所述函数测试埋点的埋点标示符;读取子单元用于读取所述埋点标示符对应的起始位置标识和结束位置标识之间的目标数据;将所述目标数据作为所述埋点标示符对应的函数名称、函数参数或者函数返回类型。
所述生成单元43,包括:名称构造子单元、参数构造子单元及返回值构造子单元。名称构造子单元用于基于所述目标函数的函数名称的值构造所述测试函数的函数名称;参数构造子单元用于通过数据交换格式JSON解析,获得所述目标函数中函数参数的值对应的所有参数值,由所述所有参数值构造出所述测试函数的函数参数;返回值构造子单元用于设置与所述目标函数的函数返回类型的值相同的变量来接收并保存所述测试函数的函数返回值。
所述生成单元43在生成测试代码文件时,具体用于:将所述测试函数的函数名称、函数参数、函数返回值以及打印所述函数返回值功能的信息写入所述测试代码文件中。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
通过本申请实施例中的一个或多个技术方案,可以实现如下一个或多个技术效果:
本申请实施例提供一种函数测试代码的生成方法,对待测试的目标函数设置函数测试埋点,并基于函数测试埋点读取并解析目标函数的函数名称、函数参数及函数返回类型的值,进而根据目标函数的函数名称、函数参数及函数返回类型的值构造测试函数并生成测试代码文件,实现了测试代码的自动生成,不再需要开发人员手动编写测试代码,从而解决了现有技术的应用程序开发过程中测试效率低下的技术问题,提高了测试效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种函数测试代码的生成方法,其特征在于,所述方法包括:
对待测试的目标函数设置函数测试埋点,所述函数测试埋点为表征所述目标函数各组成部分的位置;
基于所述函数测试埋点,读取并解析所述目标函数的代码源文件,获得所述目标函数的函数名称、函数参数、函数返回类型的值;
基于所述目标的函数名称、函数参数、函数返回类型的值,构造所述目标函数的测试函数,并生成所述目标函数的测试代码文件。
2.如权利要求1所述的方法,其特征在于,所述对目标函数设置函数测试埋点,包括:
分别对所述目标函数的函数名称、函数参数、返回类型设置函数测试埋点。
3.如权利要求2所述的方法,其特征在于,所述基于所述函数测试埋点,读取并解析所述目标函数的代码源文件,包括:
通过文档读取方式打开所述目标函数的源文件;
将打开的源文件转换为输入流,从输入流中获得所述函数测试埋点的埋点标示符;
读取所述埋点标示符对应的起始位置标识和结束位置标识之间的目标数据;
将所述目标数据作为所述埋点标示符对应的函数名称、函数参数或者函数返回类型。
4.如权利要求1所述的方法,其特征在于,所述基于所述目标的函数名称、函数参数、函数返回类型的值,构造所述目标函数的测试函数,包括:
基于所述目标函数的函数名称的值构造所述测试函数的函数名称;
通过数据交换格式JSON解析,获得所述目标函数中函数参数的值对应的所有参数值,由所述所有参数值构造出所述测试函数的函数参数;
设置与所述目标函数的函数返回类型的值相同的变量来接收并保存所述测试函数的函数返回值。
5.如权利要求4所述的方法,其特征在于,所述生成所述目标函数的测试代码文件,包括:
将所述测试函数的函数名称、函数参数、函数返回值以及打印所述函数返回值功能的信息写入所述测试代码文件中。
6.一种函数测试代码的生成装置,其特征在于,所述装置包括:
埋点单元,用于对待测试的目标函数设置函数测试埋点,所述函数测试埋点为表征所述目标函数各组成部分的位置;
解析单元,用于基于所述函数测试埋点,读取并解析所述目标函数的代码源文件,获得所述目标函数的函数名称、函数参数、函数返回类型的值;
生成单元,用于基于所述目标的函数名称、函数参数、函数返回类型的值,构造所述目标函数的测试函数,并生成所述目标函数的测试代码文件。
7.如权利要求6所述的装置,其特征在于,所述埋点单元,用于:
分别对所述目标函数的函数名称、函数参数、返回类型设置函数测试埋点。
8.如权利要求7所述的装置,其特征在于,所述解析单元,包括:
打开子单元,用于通过文档读取方式打开所述目标函数的源文件;
获取子单元,用于将打开的源文件转换为输入流,从输入流中获得所述函数测试埋点的埋点标示符;
读取子单元,用于读取所述埋点标示符对应的起始位置标识和结束位置标识之间的目标数据;将所述目标数据作为所述埋点标示符对应的函数名称、函数参数或者函数返回类型。
9.如权利要求6所述的装置,其特征在于,所述生成单元,包括:
名称构造子单元,用于基于所述目标函数的函数名称的值构造所述测试函数的函数名称;
参数构造子单元,用于通过数据交换格式JSON解析,获得所述目标函数中函数参数的值对应的所有参数值,由所述所有参数值构造出所述测试函数的函数参数;
返回值构造子单元,用于设置与所述目标函数的函数返回类型的值相同的变量来接收并保存所述测试函数的函数返回值。
10.如权利要求9所述的装置,其特征在于,所述生成单元,还用于:
将所述测试函数的函数名称、函数参数、函数返回值以及打印所述函数返回值功能的信息写入所述测试代码文件中。
CN201610921921.0A 2016-10-21 2016-10-21 一种函数测试代码的生成方法及装置 Expired - Fee Related CN106502896B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610921921.0A CN106502896B (zh) 2016-10-21 2016-10-21 一种函数测试代码的生成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610921921.0A CN106502896B (zh) 2016-10-21 2016-10-21 一种函数测试代码的生成方法及装置

Publications (2)

Publication Number Publication Date
CN106502896A true CN106502896A (zh) 2017-03-15
CN106502896B CN106502896B (zh) 2019-08-23

Family

ID=58318602

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610921921.0A Expired - Fee Related CN106502896B (zh) 2016-10-21 2016-10-21 一种函数测试代码的生成方法及装置

Country Status (1)

Country Link
CN (1) CN106502896B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107133174A (zh) * 2017-05-04 2017-09-05 浙江路港互通信息技术有限公司 测试用例代码自动生成装置与方法
CN108984612A (zh) * 2018-06-12 2018-12-11 中国平安人寿保险股份有限公司 目标sql语句的获取方法、装置、计算机设备及存储介质
CN110209386A (zh) * 2019-05-17 2019-09-06 北京奇艺世纪科技有限公司 数据埋点的设置方法、埋点数据的获取方法及装置
CN110471830A (zh) * 2018-05-10 2019-11-19 武汉斗鱼网络科技有限公司 一种程序测试方法、装置及电子设备
CN110858172A (zh) * 2018-08-23 2020-03-03 北京京东尚科信息技术有限公司 一种自动化测试代码生成方法和装置
WO2020082558A1 (zh) * 2018-10-26 2020-04-30 深圳壹账通智能科技有限公司 基于函数名称的埋点方法、装置、计算机设备及存储介质
CN111190807A (zh) * 2018-11-14 2020-05-22 杭州萤石软件有限公司 一种埋点测试方法及设备
CN111209195A (zh) * 2019-12-30 2020-05-29 瑞庭网络技术(上海)有限公司 一种生成测试用例的方法及装置
CN111813648A (zh) * 2019-06-03 2020-10-23 北京嘀嘀无限科技发展有限公司 一种应用于App的自动化测试方法、装置、存储介质及电子设备
CN111913888A (zh) * 2020-09-09 2020-11-10 中移(杭州)信息技术有限公司 函数生成方法、自动测试方法、电子设备及存储介质
CN113139190A (zh) * 2020-01-17 2021-07-20 Oppo广东移动通信有限公司 程序文件检测方法、装置、电子设备及存储介质
CN113688031A (zh) * 2021-07-15 2021-11-23 上海浦东发展银行股份有限公司 一种基于字节码增强技术的测试定位方法
CN114328276A (zh) * 2022-03-10 2022-04-12 北京车智赢科技有限公司 测试用例生成方法和装置,显示测试用例的方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101802792A (zh) * 2007-09-14 2010-08-11 空中客车运营简易股份公司 用于测试航空器上的系统的操作软件的有效性的自动脚本生成方法及用于实现该方法的设备
CN102591777A (zh) * 2012-01-10 2012-07-18 深圳市同洲视讯传媒有限公司 一种单元测试代码生成方法及装置
CN103914370A (zh) * 2012-12-31 2014-07-09 百度国际科技(深圳)有限公司 基于可扩展标记语言xml配置文件的测试方法及装置
CN104346278A (zh) * 2014-09-28 2015-02-11 上海新炬网络技术有限公司 一种基于矩阵模型的软件测试方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101802792A (zh) * 2007-09-14 2010-08-11 空中客车运营简易股份公司 用于测试航空器上的系统的操作软件的有效性的自动脚本生成方法及用于实现该方法的设备
CN102591777A (zh) * 2012-01-10 2012-07-18 深圳市同洲视讯传媒有限公司 一种单元测试代码生成方法及装置
CN103914370A (zh) * 2012-12-31 2014-07-09 百度国际科技(深圳)有限公司 基于可扩展标记语言xml配置文件的测试方法及装置
CN104346278A (zh) * 2014-09-28 2015-02-11 上海新炬网络技术有限公司 一种基于矩阵模型的软件测试方法

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107133174A (zh) * 2017-05-04 2017-09-05 浙江路港互通信息技术有限公司 测试用例代码自动生成装置与方法
CN110471830B (zh) * 2018-05-10 2022-06-21 武汉斗鱼网络科技有限公司 一种程序测试方法、装置及电子设备
CN110471830A (zh) * 2018-05-10 2019-11-19 武汉斗鱼网络科技有限公司 一种程序测试方法、装置及电子设备
CN108984612A (zh) * 2018-06-12 2018-12-11 中国平安人寿保险股份有限公司 目标sql语句的获取方法、装置、计算机设备及存储介质
CN108984612B (zh) * 2018-06-12 2024-02-02 中国平安人寿保险股份有限公司 目标sql语句的获取方法、装置、计算机设备及存储介质
CN110858172A (zh) * 2018-08-23 2020-03-03 北京京东尚科信息技术有限公司 一种自动化测试代码生成方法和装置
WO2020082558A1 (zh) * 2018-10-26 2020-04-30 深圳壹账通智能科技有限公司 基于函数名称的埋点方法、装置、计算机设备及存储介质
CN111190807A (zh) * 2018-11-14 2020-05-22 杭州萤石软件有限公司 一种埋点测试方法及设备
CN111190807B (zh) * 2018-11-14 2023-08-18 杭州萤石软件有限公司 一种埋点测试方法及设备
CN110209386B (zh) * 2019-05-17 2023-07-21 北京奇艺世纪科技有限公司 数据埋点的设置方法、埋点数据的获取方法及装置
CN110209386A (zh) * 2019-05-17 2019-09-06 北京奇艺世纪科技有限公司 数据埋点的设置方法、埋点数据的获取方法及装置
CN111813648A (zh) * 2019-06-03 2020-10-23 北京嘀嘀无限科技发展有限公司 一种应用于App的自动化测试方法、装置、存储介质及电子设备
CN111209195B (zh) * 2019-12-30 2023-08-15 瑞庭网络技术(上海)有限公司 一种生成测试用例的方法及装置
CN111209195A (zh) * 2019-12-30 2020-05-29 瑞庭网络技术(上海)有限公司 一种生成测试用例的方法及装置
CN113139190A (zh) * 2020-01-17 2021-07-20 Oppo广东移动通信有限公司 程序文件检测方法、装置、电子设备及存储介质
CN111913888A (zh) * 2020-09-09 2020-11-10 中移(杭州)信息技术有限公司 函数生成方法、自动测试方法、电子设备及存储介质
CN113688031A (zh) * 2021-07-15 2021-11-23 上海浦东发展银行股份有限公司 一种基于字节码增强技术的测试定位方法
CN113688031B (zh) * 2021-07-15 2024-03-26 上海浦东发展银行股份有限公司 一种基于字节码增强技术的测试定位方法
CN114328276A (zh) * 2022-03-10 2022-04-12 北京车智赢科技有限公司 测试用例生成方法和装置,显示测试用例的方法和装置
CN114328276B (zh) * 2022-03-10 2022-05-20 北京车智赢科技有限公司 测试用例生成方法和装置,显示测试用例的方法和装置

Also Published As

Publication number Publication date
CN106502896B (zh) 2019-08-23

Similar Documents

Publication Publication Date Title
CN106502896B (zh) 一种函数测试代码的生成方法及装置
CN109871326B (zh) 一种脚本录制的方法和装置
EP3433732B1 (en) Converting visual diagrams into code
US8434062B2 (en) Enhancing source code debugging and readability using visual symbols
US20170192882A1 (en) Method and system for automatically generating a plurality of test cases for an it enabled application
US9417991B2 (en) Translation verification testing
JP2013506895A (ja) ランタイム挙動に基づくアプリケーションの自動修正
CN110543297B (zh) 用于生成源码的方法和装置
US8930923B2 (en) Generating debugging extension source code utilizing debugging information
CN106919612A (zh) 一种上线结构化查询语言脚本的处理方法及装置
CN105094836B (zh) 一种生成说明文档的方法和装置
CN104809056A (zh) 一种接口测试代码的生成方法和装置
CN107729238A (zh) 一种插件调试方法、系统、装置及计算机可读存储介质
CN113760291B (zh) 日志输出的方法和装置
WO2016095570A1 (zh) 一种嵌入式系统的调试方法及装置、存储介质
CN108469955B (zh) 一种基于注解的Android注入框架实现方法
CN116016270A (zh) 一种交换机测试管理方法、装置、电子设备和存储介质
Kuhn On extracting unit tests from interactive live programming sessions
CN115904989A (zh) 一种接口测试方法、装置、设备及可读存储介质
CN109359055B (zh) 一种数据测试的方法和设备
Springer Node. js: the comprehensive guide
CN104267935A (zh) 代码转换方法与装置
JP2016051367A (ja) データ解析装置、データ解析方法、および、プログラム。
CN108132799B (zh) 过程间静态程序分析信息提取方法、装置及设备
CN114020257B (zh) 一种编码辅助方法、装置、设备及存储介质

Legal Events

Date Code Title Description
C06 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
TR01 Transfer of patent right

Effective date of registration: 20240918

Address after: No. 513, 5th Floor, Building 20, No. 1201, Section 2, Lushan Avenue, Wan'an Street, Tianfu New Area, Chengdu City, Sichuan Province 610000 China (Sichuan) Pilot Free Trade Zone

Patentee after: Chengdu Everx Technology Co.,Ltd.

Country or region after: China

Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building

Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd.

Country or region before: China

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190823

CF01 Termination of patent right due to non-payment of annual fee