CN108845932A - 一种网络库的单元测试方法、装置、存储介质及终端 - Google Patents
一种网络库的单元测试方法、装置、存储介质及终端 Download PDFInfo
- Publication number
- CN108845932A CN108845932A CN201810507976.6A CN201810507976A CN108845932A CN 108845932 A CN108845932 A CN 108845932A CN 201810507976 A CN201810507976 A CN 201810507976A CN 108845932 A CN108845932 A CN 108845932A
- Authority
- CN
- China
- Prior art keywords
- internal request
- request function
- result
- test
- implementing result
- 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
- G06F11/3692—Test management for test results analysis
-
- 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/3684—Test 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
技术领域
本发明涉及计算机技术领域,特别是涉及一种网络库的单元测试方法、装置、存储介质及终端。
背景技术
应用程序(APP,Application)为人们提供了各种方便快捷的功能,但越来越多的APP功能需要连接网络才能实现。安卓(Android)网络库是系统内部负责网络通信的重要独立系统,负责在底层处理网络请求转换和网络响应转化,那么上层业务就不需要关心如何处理网络,只需要调用网络库后得到结果即可。
如果想测试网络库功能方面是否正常,现有技术中,通常是通过打开页面发送网络请求,以检查网络库是否正常接收并显示服务端返回的数据,但上述测试方式只能得出网络库功能是否正常的结论,若网络库不正常,根据现有技术无法知晓网络库内部具体哪一逻辑部分出现了问题,需要靠测试人员进行手工排查,导致测试效率较低。
发明内容
本发明提供一种网络库的单元测试方法、装置、存储介质及终端,用以解决现有技术无法知晓网络库内部具体哪一部分出现了问题,需要靠测试人员进行手工排查,导致测试效率较低的问题。
为解决上述技术问题,一方面,本发明提供一种网络库的单元测试方法,包括:调用被测对外接口的第一内部请求函数执行预定测试数据,得到第一执行结果;调用所述被测对外接口的第二内部请求函数执行所述第一执行结果,得到第二执行结果;检测所述第一执行结果和所述第二执行结果是否正确,并输出测试结果。
进一步,所述调用被测对外接口的第一内部请求函数执行预定测试数据之前,还包括:分析网络库的被测对外接口,得到所述被测对外接口的所有内部请求函数,以及所述所有内部请求函数之间的调用关系,其中,所述所有内部请求函数至少包括所述第一内部请求函数和所述第二内部请求函数;根据每个所述内部请求函数以及所述内部请求函数之间的调用关系,构建所述预定测试数据。
进一步,所述检测所述第一执行结果和所述第二执行结果是否正确,包括:检测所述第一执行结果与预设的第一正确结果是否相同,在所述第一执行结果与预设的第一正确结果相同的情况下,确定所述第一内部请求函数通过测试,在所述第一执行结果与预设的第一正确结果不相同的情况下,确定所述第一内部请求函数未通过测试;检测所述第二执行结果与预设的第二正确结果是否相同,在所述第二执行结果与预设的第二正确结果相同的情况下,确定所述第二内部请求函数通过测试,在所述第二执行结果与预设的第二正确结果不相同的情况下,确定所述第二内部请求函数未通过测试。
进一步,所述输出测试结果,包括:输出测试报告,其中,所述测试报告至少包括所述第一内部请求函数的测试结果和/或所述第二内部请求函数的测试结果。
另一方面,本发明还提供一种网络库的单元测试装置,包括:第一调用模块,用于调用被测对外接口的第一内部请求函数执行预定测试数据,得到第一执行结果;第二调用模块,用于调用所述被测对外接口的第二内部请求函数执行所述第一执行结果,得到第二执行结果;检测输出模块,用于检测所述第一执行结果和所述第二执行结果是否正确,并输出测试结果。
进一步,还包括:分析模块,用于分析网络库的被测对外接口,得到所述被测对外接口的所有内部请求函数,以及所述所有内部请求函数之间的调用关系,其中,所述所有内部请求函数至少包括所述第一内部请求函数和所述第二内部请求函数;构建模块,用于根据每个所述内部请求函数以及所述内部请求函数之间的调用关系,构建所述预定测试数据。
进一步,所述检测输出模块,具体用于:检测所述第一执行结果与预设的第一正确结果是否相同,在所述第一执行结果与预设的第一正确结果相同的情况下,确定所述第一内部请求函数通过测试,在所述第一执行结果与预设的第一正确结果不相同的情况下,确定所述第一内部请求函数未通过测试;检测所述第二执行结果与预设的第二正确结果是否相同,在所述第二执行结果与预设的第二正确结果相同的情况下,确定所述第二内部请求函数通过测试,在所述第二执行结果与预设的第二正确结果不相同的情况下,确定所述第二内部请求函数未通过测试。
进一步,所述检测输出模块,具体还用于:输出测试报告,其中,所述测试报告至少包括所述第一内部请求函数的测试结果和/或所述第二内部请求函数的测试结果。
另一方面,本发明还提供一种存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述的网络库的单元测试方法的步骤。
另一方面,本发明还提供一种终端,至少包括存储器、处理器,所述存储器上存储有计算机程序,所述处理器在执行所述存储器上的计算机程序时实现上述的网络库的单元测试方法的步骤。
本发明通过获取被测对外接口的每个内部请求函数执行其对应的输入参数之后的执行结果,判断每个内部请求函数的执行结果是否正确,并输出测试结果,使网络库内部在出现问题的情况下,测试人员可根据每个内部请求函数的执行结果,直接知晓具体是哪一个内部请求函数出现了问题,无需进行手工排查问题,进而提高了测试效率。
附图说明
图1是本发明第一实施例中网络库的单元测试方法的流程图;
图2是本发明第二实施例中网络库的单元测试方法的流程图;
图3是本发明第三实施例中网络库的单元测试方法的流程图;
图4是本发明第四实施例中网络库的单元测试装置的结构示意图;
图5是本发明第五实施例中网络库的单元测试装置的结构示意图。
具体实施方式
为了解决现有技术无法知晓网络库内部具体哪一部分出现了问题,需要靠测试人员进行手工排查,导致测试效率较低的问题,本发明提供了一种网络库的单元测试方法、装置、存储介质及终端,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
本发明的第一实施例提供了一种网络库的单元测试方法,其流程图如图1所示,具体包括步骤S101至S103:
S101,调用被测对外接口的第一内部请求函数执行预定测试数据,得到第一执行结果。
网络库内部有一系列逻辑关系,并且会有暴露给外部调用的对外接口,即对每个外接口内部均可以包括一系列逻辑关系,也可称为内部请求函数,其主要作用为将输入至该对外接口的安卓内部格式的输入数据转换成可以进行网络通信或服务器端可以识别的格式的输出数据。单元测试(Unit Testing),是指对软件中的最小可测试单元进行检查和验证,在进行网络库测试时,可以以每一个对外接口作为一个测试单元,进行单元测试,可以快速测试出被测网络库是否存在问题。
在对被测对外接口进行测试时,首先调用其最上层的内部请求函数,即第一内部请求函数来执行预定的测试数据,并得到第一内部请求函数执行预定的测试数据之后的第一执行结果。其中,预定的测试数据为符合对外接口输入规则的输入数据,其具体内容应当尽可能地包含所有可能出现的数据类型,以进一步保证测试覆盖的力度。
S102,调用被测对外接口的第二内部请求函数执行第一执行结果,得到第二执行结果。
被测对外接口的第二内部请求函数为根据第一内部请求函数的输出结果,进行进一步转换或处理的内部请求函数,因此,第一内部请求函数的执行结果,即第一执行结果应作为第二内部请求函数的输入参数,以实现被测对外接口内部请求函数之间的逻辑关系。
因此,在本实施例中,得到第一执行结果之后,调用第二内部请求函数执行第一执行结果,得到第二执行结果。应当了解的是,在被测对外接口中不包括其他内部请求函数的情况下,第二内部请求函数的执行结果即为该被测对外接口的执行结果,若被测对外接口中还存在一第三内部请求函数,第三内部请求函数为根据第二内部请求函数的输出结果,进行进一步转换或处理的内部请求函数,则第三内部请求函数的输入参数为第二执行结果,第三内部请求函数的执行结果即为该被测对外接口的执行结果。在本实施例中,以被测对外接口中只包括第一内部请求函数和第二内部请求函数为例,但在实际进行测试时,应当根据其内部实际请求函数的数量为准。
S103,检测第一执行结果和第二执行结果是否正确,并输出测试结果。
为了测试人员可以直接知悉在网络库存在错误时,具体是哪一个内部请求函数出现了错误,因此在进行执行结果判断时,针对被测对外接口中的每一个内部请求函数的执行结果均应当进行正确性的判断,以得到并输出关于被测对外接口的测试结果。具体地,若第一执行结果为错误的执行结果,则第一内部请求函数出现了问题需要进行调整,若第一执行结果为正确的执行结果,第二执行结果为错误的执行结果,则第二内部请求函数出现了问题需要进行调整,在第一执行结果和第二执行结果均为正确的执行结果的情况下,说明被测对外接口中的所有内部请求函数均没有问题,即该被测对外接口通过了单元测试。
应当了解的是,在本实施例中,若第一执行结果为错误的执行结果,那么即使第二内部请求函数没有问题,由于其输入的参数为错误的,其执行结果也一定是不正确的。
本实施例通过获取被测对外接口的每个内部请求函数执行其对应的输入参数之后的执行结果,判断每个内部请求函数的执行结果是否正确,并输出测试结果,使网络库内部在出现问题的情况下,测试人员可根据每个内部请求函数的执行结果,直接知晓具体是哪一个内部请求函数出现了问题,无需进行手工排查问题,进而提高了测试效率。
本发明的第二实施例提供了一种网络库的单元测试方法,其流程图如图2所示,具体包括步骤S201至S205:
S201,分析网络库的被测对外接口,得到被测对外接口的所有内部请求函数,以及所有内部请求函数之间的调用关系。
网络库内部有一系列逻辑关系,并且会有暴露给外部调用的对外接口,即对每个外接口内部均可以包括一系列逻辑关系,也可称为内部请求函数,其主要作用为将输入至该对外接口的安卓内部格式的输入数据转换成可以进行网络通信或服务器端可以识别的格式的输出数据。单元测试,是指对软件中的最小可测试单元进行检查和验证,在进行网络库测试时,可以以每一个对外接口作为一个测试单元,进行单元测试,可以快速测试出被测网络库是否存在问题。
在进行被测对外接口的单元测试前,可通过对外接口分析,得到被测对外接口的所有内部请求函数,其中,内部请求函数中至少包括第一内部请求函数和第二内部请求函数,也可以包括第三内部请求函数、第四内部请求函数等,对外接口的内部请求函数的个数,根据被测对外接口的内部逻辑经过对外接口分析而来。
对外接口分析还可以得到所有内部请求函数之间的调用关系,即通过对外接口分析,可以得到该被测对外接口首先调用第一内部请求函数,随后将第一内部请求函数的执行结果作为第二内部请求函数的输入参数,调用第二内部请求函数,在不包含其他内部请求函数的情况下,第二内部请求函数的执行结果即为被测对外接口的执行结果。
S202,根据每个内部请求函数以及内部请求函数之间的调用关系,构建预定测试数据。
为了保证测试过程的正确性,输入至被测对外接口的测试数据为符合对外接口输入规则的输入数据,即应当保证测试数据输入到第一内部请求函数后,在第一内部请求函数不出现错误的情况下,其执行结果作为第二内部请求函数的输入参数时,也应该符合第二内部请求函数的输入规则。
进一步地,构建的预定测试数据的具体内容应当尽可能地包含所有可能出现的数据类型,以进一步保证测试覆盖的力度。针对预定测试数据中的每一个类型,均可以构成一个测试用例,因此,在进行测试时,针对一个被测对外接口,可能存在多个测试用例,即该被测对外接口应当被测试多次,以保证测试覆盖的力度。
S203,调用被测对外接口的第一内部请求函数执行预定测试数据,得到第一执行结果。
在对被测对外接口进行测试时,首先调用其最上层的内部请求函数,即第一内部请求函数来执行预定的测试数据,并得到第一内部请求函数执行预定的测试数据之后的第一执行结果。
S204,调用被测对外接口的第二内部请求函数执行第一执行结果,得到第二执行结果。
根据S201中的对外接口分析结果,被测对外接口的第二内部请求函数为根据第一内部请求函数的输出结果,进行进一步转换或处理的内部请求函数,因此,第一内部请求函数的执行结果,即第一执行结果应作为第二内部请求函数的输入参数,以实现被测对外接口内部请求函数之间的逻辑关系。
因此,在本实施例中,得到第一执行结果之后,调用第二内部请求函数执行第一执行结果,得到第二执行结果。应当了解的是,根据对外接口分析结果,在被测对外接口中不包括其他内部请求函数的情况下,第二内部请求函数的执行结果即为该被测对外接口的执行结果,若被测对外接口中还存在第三内部请求函数,第三内部请求函数为根据第二内部请求函数的输出结果,进行进一步转换或处理的内部请求函数,则第三内部请求函数的输入参数为第二执行结果,第三内部请求函数的执行结果即为该被测对外接口的执行结果。在本实施例中,以被测对外接口中只包括第一内部请求函数和第二内部请求函数为例,但在实际进行测试时,应当根据对外接口分析结果进行确定。
S205,检测第一执行结果和第二执行结果是否正确,并输出测试结果。
为了测试人员可以直接知悉在网络库存在错误时,具体是哪一个内部请求函数出现了错误,因此在进行执行结果判断时,针对被测对外接口中的每一个内部请求函数的执行结果均应当进行正确性的判断,以得到并输出关于被测对外接口的测试结果。具体地,若第一执行结果为错误的执行结果,则第一内部请求函数出现了问题需要进行调整,若第一执行结果为正确的执行结果,第二执行结果为错误的执行结果,则第二内部请求函数出现了问题需要进行调整,在第一执行结果和第二执行结果均为正确的执行结果的情况下,说明被测对外接口中的所有内部请求函数均没有问题,即该被测对外接口通过了单元测试。
应当了解的是,在本实施例中,若第一执行结果为错误的执行结果,那么即使第二内部请求函数没有问题,由于其输入的参数为错误的,其执行结果也一定是不正确的。
本实施例通过对外接口分析,得到被测对外接口的所有内部请求函数及其调用关系,并根据所有内部请求函数及其调用关系构建合理的测试数据,随后获取被测对外接口的每个内部请求函数执行其对应的输入参数之后的执行结果,判断每个内部请求函数的执行结果是否正确,并输出测试结果,使网络库内部在出现问题的情况下,测试人员可根据每个内部请求函数的执行结果,直接知晓具体是哪一个内部请求函数出现了问题,无需进行手工排查问题,进而提高了测试效率。
本发明的第三实施例提供了一种网络库的单元测试方法,其流程图如图3所示,具体包括步骤S301至S306:
S301,分析网络库的被测对外接口,得到被测对外接口的所有内部请求函数,以及所有内部请求函数之间的调用关系。
在进行被测对外接口的单元测试前,可通过对外接口分析,得到被测对外接口的所有内部请求函数,其中,内部请求函数中至少包括第一内部请求函数和第二内部请求函数,也可以包括第三内部请求函数、第四内部请求函数等,对外接口的内部请求函数的个数,根据被测对外接口的内部逻辑经过对外接口分析而来。
对外接口分析还可以得到所有内部请求函数之间的调用关系,即通过对外接口分析,可以得到该被测对外接口首先调用第一内部请求函数,随后将第一内部请求函数的执行结果作为第二内部请求函数的输入参数,调用第二内部请求函数,在不包含其他内部请求函数的情况下,第二内部请求函数的执行结果即为被测对外接口的执行结果。
S302,根据每个内部请求函数以及内部请求函数之间的调用关系,构建预定测试数据。
为了保证测试过程的正确性,输入至被测对外接口的测试数据为符合对外接口输入规则的输入数据,即应当保证测试数据输入到第一内部请求函数后,在第一内部请求函数不出现错误的情况下,其执行结果作为第二内部请求函数的输入参数时,也应该符合第二内部请求函数的输入规则。
进一步地,构建的预设测试数据的具体内容应当尽可能地包含所有可能出现的数据类型,以进一步保证测试覆盖的力度。针对预定测试数据中的每一个类型,均可以构成一个测试用例,因此,在进行测试时,针对一个被测对外接口,可能存在多个测试用例,即该被测对外接口应当被测试多次,以保证测试覆盖的力度。
S303,调用被测对外接口的第一内部请求函数执行预定测试数据,得到第一执行结果。
在对被测对外接口进行测试时,首先调用其最上层的内部请求函数,即第一内部请求函数来执行预定的测试数据,并得到第一内部请求函数执行预定的测试数据之后的第一执行结果。
S304,调用被测对外接口的第二内部请求函数执行第一执行结果,得到第二执行结果。
根据S301中的对外接口分析结果,被测对外接口的第二内部请求函数为根据第一内部请求函数的输出结果,进行进一步转换或处理的内部请求函数,因此,第一执行结果应作为第二内部请求函数的输入参数,以实现被测对外接口内部请求函数之间的逻辑关系。
S305,检测第一执行结果与预设的第一正确结果是否相同,在第一执行结果与预设的第一正确结果相同的情况下,确定第一内部请求函数通过测试,在第一执行结果与预设的第一正确结果不相同的情况下,确定第一内部请求函数未通过测试。
S306,检测第二执行结果与预设的第二正确结果是否相同,在第二执行结果与预设的第二正确结果相同的情况下,确定第二内部请求函数通过测试,在第二执行结果与预设的第二正确结果不相同的情况下,确定第二内部请求函数未通过测试,并输出测试结果。
由于网络库的主要作用为将输入至该对外接口的安卓内部格式的输入数据转换成可以进行网络通信或服务器端可以识别的格式的输出数据,在本实施例中,预定的测试数据已经固定的情况下,由于已经已知对外接口的所有内部请求函数的具体实现,因此,在正确的转换时内部请求函数的正确执行结果应当为已知的,第一内部请求函数的正确执行结果为第一正确结果,第二内部请求函数的正确执行结果为第二正确结果。
在进行被测对外接口的单元测试时,调用第一内部请求函数执行预定的测试数据,并得到第一执行结果,将第一执行结果与预设的第一正确结果进行对比,若二者相同,则说明第一内部请求函数在执行时没有出现错误,确定其通过测试,若二者不同,则说明第一内部请求函数在执行时出现了错误,确定其未通过测试。
进一步地,调用第二内部请求函数执行第一执行结果时,得到第二执行结果,将第二执行结果与预设的第二正确结果进行对比,若二者相同,则说明第二内部请求函数在执行时没有出现错误,确定其通过测试,若二者不同,则说明第二内部请求函数在执行时出现了错误,确定其未通过测试。
应当了解的是,若第一执行结果与预设的第一正确结果不同,那么调用第二内部请求函数执行第一执行结果时,得到的第二执行结果一定与预设的第二正确结果不同,因此,关于第二内部请求函数的测试结果,应该首先检测第一执行结果与预设的第一正确结果是否相同,并根据实际情况得出第二内部请求函数是否通过测试的结论。
在输出测试结果时,可以以测试报告的形式进行输出,测试报告中至少应当包括第一内部请求函数的测试结果和/或第二内部请求函数的测试结果,在第一内部请求函数和第二内部请求函数均通过测试的情况下,还可以得出被测对外接口通过测试的结论。
本实施例通过对外接口分析,得到被测对外接口的所有内部请求函数及其调用关系,并根据所有内部请求函数及其调用关系构建合理的测试数据,随后获取被测对外接口的每个内部请求函数执行其对应的输入参数之后的执行结果,判断执行结果与预设的正确结果是否相同,最后输出测试结果,使网络库内部在出现问题的情况下,测试人员可根据每个内部请求函数的执行结果,直接知晓具体是哪一个内部请求函数出现了问题,无需进行手工排查问题,进而提高了测试效率。
本发明的第四实施例提供了一种网络库的单元测试装置,其结构示意图如图4所示,主要包括:第一调用模块10,用于调用被测对外接口的第一内部请求函数执行预定测试数据,得到第一执行结果;第二调用模块20,与第一调用模块10耦合,用于调用被测对外接口的第二内部请求函数执行第一执行结果,得到第二执行结果;检测输出模块30,与第二调用模块20耦合,用于检测第一执行结果和第二执行结果是否正确,并输出测试结果。
在对被测对外接口进行测试时,首先由第一调用模块10调用其最上层的内部请求函数,即第一内部请求函数来执行预定的测试数据,并得到第一内部请求函数执行预定的测试数据之后的第一执行结果。其中,预定的测试数据为符合对外接口输入规则的输入数据,其具体内容应当尽可能地包含所有可能出现的数据类型,以进一步保证测试覆盖的力度。
被测对外接口的第二内部请求函数为根据第一内部请求函数的输出结果,进行进一步转换或处理的内部请求函数,因此,第一内部请求函数的执行结果,即第一执行结果应作为第二内部请求函数的输入参数,以实现被测对外接口内部请求函数之间的逻辑关系。
因此,在本实施例中,得到第一执行结果之后,由第二调用模块20调用第二内部请求函数执行第一执行结果,得到第二执行结果。应当了解的是,在被测对外接口中不包括其他内部请求函数的情况下,第二内部请求函数的执行结果即为该被测对外接口的执行结果,若被测对外接口中还存在一第三内部请求函数,第三内部请求函数为根据第二内部请求函数的输出结果,进行进一步转换或处理的内部请求函数,则测试装置中还可以包括第三调用模块以调用第三内部请求函数执行第二执行结果,第三内部请求函数的执行结果即为该被测对外接口的执行结果。在本实施例中,以被测对外接口中只包括第一内部请求函数和第二内部请求函数为例,但在实际进行测试时,应当根据其内部实际请求函数的数量为准。
为了测试人员可以直接知悉在网络库存在错误时,具体是哪一个内部请求函数出现了错误,因此在进行执行结果判断时,检测输出模块30针对被测对外接口中的每一个内部请求函数的执行结果均应当进行正确性的判断,以得到并输出关于被测对外接口的测试结果。具体地,若第一执行结果为错误的执行结果,则第一内部请求函数出现了问题需要进行调整,若第一执行结果为正确的执行结果,第二执行结果为错误的执行结果,则第二内部请求函数出现了问题需要进行调整,在第一执行结果和第二执行结果均为正确的执行结果的情况下,说明被测对外接口中的所有内部请求函数均没有问题,即该被测对外接口通过了单元测试。
应当了解的是,在本实施例中,若检测输出模块30确定第一执行结果为错误的执行结果,那么即使第二内部请求函数没有问题,由于其输入的参数为错误的,其执行结果也一定是不正确的。
本实施例通过获取被测对外接口的每个内部请求函数执行其对应的输入参数之后的执行结果,判断每个内部请求函数的执行结果是否正确,并输出测试结果,使网络库内部在出现问题的情况下,测试人员可根据每个内部请求函数的执行结果,直接知晓具体是哪一个内部请求函数出现了问题,无需进行手工排查问题,进而提高了测试效率。
本发明的第五实施例提供了一种网络库的单元测试装置,其结构示意图如图5所示,主要包括:分析模块40,用于用于分析网络库的被测对外接口,得到被测对外接口的所有内部请求函数,以及所有内部请求函数之间的调用关系,其中,所有内部请求函数至少包括第一内部请求函数和第二内部请求函数;构建模块50,与分析模块40耦合,用于根据每个内部请求函数以及内部请求函数之间的调用关系,构建预定测试数据;第一调用模块10,与构建模块50耦合,用于调用被测对外接口的第一内部请求函数执行预定测试数据,得到第一执行结果;第二调用模块20,与第一调用模块10耦合,用于调用被测对外接口的第二内部请求函数执行第一执行结果,得到第二执行结果;检测输出模块30,与第二调用模块20耦合,用于检测第一执行结果与预设的第一正确结果是否相同,在第一执行结果与预设的第一正确结果相同的情况下,确定第一内部请求函数通过测试,在第一执行结果与预设的第一正确结果不相同的情况下,确定第一内部请求函数未通过测试;检测第二执行结果与预设的第二正确结果是否相同,在第二执行结果与预设的第二正确结果相同的情况下,确定第二内部请求函数通过测试,在第二执行结果与预设的第二正确结果不相同的情况下,确定第二内部请求函数未通过测试。
在进行被测对外接口的单元测试前,可通过分析模块40进行对外接口分析,得到被测对外接口的所有内部请求函数,其中,内部请求函数中至少包括第一内部请求函数和第二内部请求函数,也可以包括第三内部请求函数、第四内部请求函数等,对外接口的内部请求函数的个数,根据被测对外接口的内部逻辑经过对外接口分析而来。分析模块40还可以得到所有内部请求函数之间的调用关系,即通过对外接口分析,可以得到该被测对外接口首先调用第一内部请求函数,随后将第一内部请求函数的执行结果作为第二内部请求函数的输入参数,调用第二内部请求函数,在不包含其他内部请求函数的情况下,第二内部请求函数的执行结果即为被测对外接口的执行结果。
为了保证测试过程的正确性,输入至被测对外接口的测试数据为符合对外接口输入规则的输入数据,即应当保证构建模块50构建的测试数据输入到第一内部请求函数后,在第一内部请求函数不出现错误的情况下,其执行结果作为第二内部请求函数的输入参数时,也应该符合第二内部请求函数的输入规则。
进一步地,构建模块50构建的预设测试数据的具体内容应当尽可能地包含所有可能出现的数据类型,以进一步保证测试覆盖的力度。针对预定测试数据中的每一个类型,均可以构成一个测试用例,因此,在进行测试时,针对一个被测对外接口,可能存在多个测试用例,即该被测对外接口应当被测试多次,以保证测试覆盖的力度。
关于第一调用模块10和第二调用模块20在本发明的第四实施例中已经进行详细的说明,因此在本实施例中不再进行赘述。
由于网络库的主要作用为将输入至该对外接口的安卓内部格式的输入数据转换成可以进行网络通信或服务器端可以识别的格式的输出数据,在本实施例中,预定的测试数据已经固定的情况下,由于已经已知对外接口的所有内部请求函数的具体实现,因此,在正确的转换时内部请求函数的正确执行结果应当为已知的,第一内部请求函数的正确执行结果为第一正确结果,第二内部请求函数的正确执行结果为第二正确结果。
在进行被测对外接口的单元测试时,第一调用模块10调用第一内部请求函数执行预定的测试数据,并得到第一执行结果,检测输出模块30将第一执行结果与预设的第一正确结果进行对比,若二者相同,则说明第一内部请求函数在执行时没有出现错误,确定其通过测试,若二者不同,则说明第一内部请求函数在执行时出现了错误,确定其未通过测试。
进一步地,第二调用模块20调用第二内部请求函数执行第一执行结果时,得到第二执行结果,检测输出模块30将第二执行结果与预设的第二正确结果进行对比,若二者相同,则说明第二内部请求函数在执行时没有出现错误,确定其通过测试,若二者不同,则说明第二内部请求函数在执行时出现了错误,确定其未通过测试。
应当了解的是,若第一执行结果与预设的第一正确结果不同,那么调用第二内部请求函数执行第一执行结果时,得到的第二执行结果一定与预设的第二正确结果不同,因此,关于第二内部请求函数的测试结果,检测输出模块30应该首先检测第一执行结果与预设的第一正确结果是否相同,并根据实际情况得出第二内部请求函数是否通过测试的结论。
检测输出模块30在输出测试结果时,可以以测试报告的形式进行输出,测试报告中至少应当包括第一内部请求函数的测试结果和/或第二内部请求函数的测试结果,在第一内部请求函数和第二内部请求函数均通过测试的情况下,还可以得出被测对外接口通过测试的结论。
本实施例通过对外接口分析,得到被测对外接口的所有内部请求函数及其调用关系,并根据所有内部请求函数及其调用关系构建合理的测试数据,随后获取被测对外接口的每个内部请求函数执行其对应的输入参数之后的执行结果,判断执行结果与预设的正确结果是否相同,最后输出测试结果,使网络库内部在出现问题的情况下,测试人员可根据每个内部请求函数的执行结果,直接知晓具体是哪一个内部请求函数出现了问题,无需进行手工排查问题,进而提高了测试效率。
本发明第六实施例提供了一种存储介质,存储有计算机程序,计算机程序被处理器执行时实现如下步骤S11至S13:
S11,调用被测对外接口的第一内部请求函数执行预定测试数据,得到第一执行结果;
S12,调用被测对外接口的第二内部请求函数执行第一执行结果,得到第二执行结果;
S13,检测第一执行结果和第二执行结果是否正确,并输出测试结果。
在本实施例中,存储介质可以进行网络库测试的终端(如智能移动终端或电脑等)上。由于在第一实施例中已经对网络库的单元测试方法进行了详细说明,因此,在本实施例中不再赘述。
应当了解的是,存储介质中存储的计算机程序为测试代码,在编写时应当与被测对外接口代码分离,且目录保持一致,保证在测试用例有修改时不会影响被测代码且吻合性更高。
具体地,根据构建的不同测试数据建立不同的测试用例时,应当单独调试该测试用例,判断其是否可以正确执行,以防止因测试用例不通过而导致被测对外接口测试不通过,影响测试效率。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述实施例记载的方法步骤。可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
本发明的第七实施例提供了一种终端,至少包括存储器、处理器,存储器上存储有计算机程序,处理器在执行存储器上的计算机程序时实现如下步骤S21至S23:
S21,调用被测对外接口的第一内部请求函数执行预定测试数据,得到第一执行结果;
S22,调用被测对外接口的第二内部请求函数执行第一执行结果,得到第二执行结果;
S23,检测第一执行结果和第二执行结果是否正确,并输出测试结果。
在本实施例中,终端为可以进行网络库测试的终端,如智能移动终端或电脑等。由于在第一实施例中已经对网络库的单元测试方法进行了详细说明,因此,在本实施例中不再赘述。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。
Claims (10)
1.一种网络库的单元测试方法,其特征在于,包括:
调用被测对外接口的第一内部请求函数执行预定测试数据,得到第一执行结果;
调用所述被测对外接口的第二内部请求函数执行所述第一执行结果,得到第二执行结果;
检测所述第一执行结果和所述第二执行结果是否正确,并输出测试结果。
2.如权利要求1所述的单元测试方法,其特征在于,所述调用被测对外接口的第一内部请求函数执行预定测试数据之前,还包括:
分析网络库的被测对外接口,得到所述被测对外接口的所有内部请求函数,以及所述所有内部请求函数之间的调用关系,其中,所述所有内部请求函数至少包括所述第一内部请求函数和所述第二内部请求函数;
根据每个所述内部请求函数以及所述内部请求函数之间的调用关系,构建所述预定测试数据。
3.如权利要求2所述的单元测试方法,其特征在于,所述检测所述第一执行结果和所述第二执行结果是否正确,包括:
检测所述第一执行结果与预设的第一正确结果是否相同,在所述第一执行结果与预设的第一正确结果相同的情况下,确定所述第一内部请求函数通过测试,在所述第一执行结果与预设的第一正确结果不相同的情况下,确定所述第一内部请求函数未通过测试;
检测所述第二执行结果与预设的第二正确结果是否相同,在所述第二执行结果与预设的第二正确结果相同的情况下,确定所述第二内部请求函数通过测试,在所述第二执行结果与预设的第二正确结果不相同的情况下,确定所述第二内部请求函数未通过测试。
4.如权利要求3所述的单元测试方法,其特征在于,所述输出测试结果,包括:
输出测试报告,其中,所述测试报告至少包括所述第一内部请求函数的测试结果和/或所述第二内部请求函数的测试结果。
5.一种网络库的单元测试装置,其特征在于,包括:
第一调用模块,用于调用被测对外接口的第一内部请求函数执行预定测试数据,得到第一执行结果;
第二调用模块,用于调用所述被测对外接口的第二内部请求函数执行所述第一执行结果,得到第二执行结果;
检测输出模块,用于检测所述第一执行结果和所述第二执行结果是否正确,并输出测试结果。
6.如权利要求5所述的单元测试装置,其特征在于,还包括:
分析模块,用于分析网络库的被测对外接口,得到所述被测对外接口的所有内部请求函数,以及所述所有内部请求函数之间的调用关系,其中,所述所有内部请求函数至少包括所述第一内部请求函数和所述第二内部请求函数;
构建模块,用于根据每个所述内部请求函数以及所述内部请求函数之间的调用关系,构建所述预定测试数据。
7.如权利要求6所述的单元测试装置,其特征在于,所述检测输出模块,具体用于:
检测所述第一执行结果与预设的第一正确结果是否相同,在所述第一执行结果与预设的第一正确结果相同的情况下,确定所述第一内部请求函数通过测试,在所述第一执行结果与预设的第一正确结果不相同的情况下,确定所述第一内部请求函数未通过测试;
检测所述第二执行结果与预设的第二正确结果是否相同,在所述第二执行结果与预设的第二正确结果相同的情况下,确定所述第二内部请求函数通过测试,在所述第二执行结果与预设的第二正确结果不相同的情况下,确定所述第二内部请求函数未通过测试。
8.如权利要求7所述的单元测试装置,其特征在于,所述检测输出模块,具体还用于:
输出测试报告,其中,所述测试报告至少包括所述第一内部请求函数的测试结果和/或所述第二内部请求函数的测试结果。
9.一种存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的网络库的单元测试方法的步骤。
10.一种终端,至少包括存储器、处理器,所述存储器上存储有计算机程序,其特征在于,所述处理器在执行所述存储器上的计算机程序时实现权利要求1至4中任一项所述的网络库的单元测试方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810507976.6A CN108845932B (zh) | 2018-05-24 | 2018-05-24 | 一种网络库的单元测试方法、装置、存储介质及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810507976.6A CN108845932B (zh) | 2018-05-24 | 2018-05-24 | 一种网络库的单元测试方法、装置、存储介质及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108845932A true CN108845932A (zh) | 2018-11-20 |
CN108845932B CN108845932B (zh) | 2022-11-25 |
Family
ID=64213351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810507976.6A Active CN108845932B (zh) | 2018-05-24 | 2018-05-24 | 一种网络库的单元测试方法、装置、存储介质及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108845932B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813414A (zh) * | 2020-06-09 | 2020-10-23 | 珠海格力电器股份有限公司 | 函数的检测方法、装置、计算机设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1641601A (zh) * | 2004-01-04 | 2005-07-20 | 华为技术有限公司 | 一种软件的单元测试方法 |
CN107451064A (zh) * | 2017-08-16 | 2017-12-08 | 北京车和家信息技术有限责任公司 | 自动测试方法、装置、计算机设备和可读存储介质 |
CN107704386A (zh) * | 2017-09-25 | 2018-02-16 | 金蝶软件(中国)有限公司 | 业务流程的单元测试方法、装置、计算机设备及存储介质 |
-
2018
- 2018-05-24 CN CN201810507976.6A patent/CN108845932B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1641601A (zh) * | 2004-01-04 | 2005-07-20 | 华为技术有限公司 | 一种软件的单元测试方法 |
CN107451064A (zh) * | 2017-08-16 | 2017-12-08 | 北京车和家信息技术有限责任公司 | 自动测试方法、装置、计算机设备和可读存储介质 |
CN107704386A (zh) * | 2017-09-25 | 2018-02-16 | 金蝶软件(中国)有限公司 | 业务流程的单元测试方法、装置、计算机设备及存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813414A (zh) * | 2020-06-09 | 2020-10-23 | 珠海格力电器股份有限公司 | 函数的检测方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108845932B (zh) | 2022-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8006136B2 (en) | Automatic grammar based fault detection and isolation | |
CN111897724B (zh) | 一种适用于云平台的自动化测试方法及装置 | |
CN109885499B (zh) | 一种机器人自动化测试系统及测试方法 | |
CN106888060B (zh) | 无线通信模块的抗干扰测试方法及系统 | |
CN110532185B (zh) | 测试方法、装置、电子设备和计算机可读存储介质 | |
CN103973858B (zh) | 移动终端的自动测试系统 | |
CN107357727A (zh) | App运行测试方法、装置、可读存储介质和计算机设备 | |
CN110267215A (zh) | 一种数据检测方法、设备及存储介质 | |
CN109558328A (zh) | 一种代码覆盖率的测试方法、系统、装置及可读存储介质 | |
CN112015648A (zh) | 基于自动化脚本的测试方法、装置、计算机设备和介质 | |
CN113179194A (zh) | Opc协议网关的测试系统及方法 | |
CN109739700A (zh) | 一种接口测试方法和装置 | |
CN112445692B (zh) | 一种用例测试方法及终端 | |
KR100758850B1 (ko) | 이동통신 시스템에서 테스트 스크립트를 이용한 테스트를위한 장치 및 방법 | |
CN110377502A (zh) | 基于脚本的功能测试方法、装置及终端设备 | |
CN108845932A (zh) | 一种网络库的单元测试方法、装置、存储介质及终端 | |
CN117472767A (zh) | 软件接口测试方法、装置、设备及存储介质 | |
CN113037526B (zh) | 一种安全检测方法、终端、系统及存储介质 | |
CN108307414A (zh) | 应用程序的Wi-Fi连接异常处理方法、装置、终端及存储介质 | |
WO2017092391A1 (zh) | 一种中间库虚拟控制测试方法及其系统 | |
CN114936121A (zh) | 一种故障模拟方法、装置、系统和介质 | |
CN111176975B (zh) | 一种测试方法、装置、设备及计算机可读存储介质 | |
CN113569255A (zh) | 基于后台rpc接口的漏洞检测方法及装置 | |
CN112000579A (zh) | 一种软件接口测试方法、系统、设备及介质 | |
US8751870B2 (en) | Method and system for providing a random sequence coverage |
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 |