CN111400181A - 对象测试方法、装置和服务器 - Google Patents
对象测试方法、装置和服务器 Download PDFInfo
- Publication number
- CN111400181A CN111400181A CN202010179541.0A CN202010179541A CN111400181A CN 111400181 A CN111400181 A CN 111400181A CN 202010179541 A CN202010179541 A CN 202010179541A CN 111400181 A CN111400181 A CN 111400181A
- Authority
- CN
- China
- Prior art keywords
- test
- user operation
- test case
- tested
- code
- 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.)
- Pending
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
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- 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
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
技术领域
本发明涉及软件测试技术领域,尤其是涉及一种对象测试方法、装置和服务器。
背景技术
相关技术中的测试工作,通常是根据测试人员的经验、待测试函数,以及测试需求的文档对测试用例进行设计,然后再基于测试人员人工设计完成的测试用例,对待测试函数进行自动化测试或者人为测试,但是针对同一待测试函数,不同的测试人员设计的测试用例会存在差异,导致测试用例的复用性较差、不确定性也较高,同时影响了测试效率。
发明内容
本发明的目的在于提供一种对象测试方法、装置和服务器,以提高测试用例的复用性,降低测试用例的不确定性,同时提高测试的效率。
第一方面,本发明实施例提供一种对象测试方法,该方法包括:获取待测试对象;从预先建立的对象与测试用例的对应关系中,确定待测试对象对应的测试用例;从预设的测试代码库中,查找测试用例对应的测试代码;通过测试代码对待测试对象进行测试。
在可选的实施方式中,上述对象与测试用例的对应关系,通过下述方式建立:获取多个对象接口,以及每个对象接口对应的测试用例;其中,对象接口和测试用例一一对应;通过代码扫描的方式,识别每个对象接口调用的对象;针对每个对象接口,将当前对象接口对应的测试用例和当前对象接口调用的对象对应保存。
在可选的实施方式中,上述测试代码库中包括多个用户操作,每个用户操作与用户操作所需的测试用例的对应关系,以及测试用例与测试代码的对应关系;上述从预设的测试代码库中,查找测试用例对应的测试代码的步骤,包括:从测试代码库中,查找测试用例对应的用户操作;针对每个查找到的用户操作,从测试代码库中,查找当前用户操作对应的测试用例的测试代码;上述通过测试代码对待测试对象进行测试的步骤,包括:针对每个查找到的用户操作,使用当前用户操作对应的测试用例的测试代码,对待测试对象进行测试,得到测试结果。
在可选的实施方式中,上述对象与测试用例的对应关系还包括:预设的用户操作,与用户操作所需的测试用例的对应关系;上述预设的用户操作与用户操作所需的测试用例的对应关系,通过下述方式建立:获取预设的用户操作,以及用户操作调用的对象接口;将用户操作和用户操作调用的对象接口对应的测试用例,对应保存。
在可选的实施方式中,上述对象接口为nova-api;该对象接口调用的对象为nova源文件中的函数;每个nova-api调用至少一个函数,每个函数对应至少一个nova-api;每个nova-api对应至少一个测试用例;每个用户操作调用至少一个nova-api;上述获取预设的用户操作,以及用户操作调用的对象接口的步骤,包括:获取用户操作,以及用户操作调用的nova-api;上述将用户操作和用户操作调用的对象接口对应的测试用例,对应保存的步骤,包括:将用户操作和用户操作调用的nova-api对应的测试用例对应保存。
在可选的实施方式中,上述测试代码库中包括多个用户操作,以及每个用户操作与用户操作所需的测试用例的对应关系,该测试用例与测试代码的对应关系;上述从预设的测试代码库中,查找测试用例对应的测试代码的步骤,包括:从对象与测试用例的对应关系中,查找测试用例对应的用户操作;针对每个查找到的用户操作,从测试代码库中,查找当前用户操作对应的测试用例的测试代码;通过测试代码对待测试对象进行测试的步骤,包括:针对每个查找到的用户操作,使用当前用户操作对应的测试用例的测试代码,对待测试对象进行测试,得到测试结果。
在可选的实施方式中,针对每个查找到的用户操作,使用当前用户操作对应的测试用例的测试代码,对待测试对象进行测试的步骤之后,该方法还包括:获取每个查找到的所述用户操作对应的测试结果;在测试代码库中,对每个测试结果进行验证;如果每个测试结果均验证通过,确定待测试对象测试通过。
在可选的实施方式中,上述通过测试代码对待测试对象进行测试的步骤之后,该方法还包括:如果待测试对象测试通过,将对象与测试用例的对应关系中,待测试对象对应的对象替换为待测试对象,以更新对象与测试用例的对应关系;其中,该待测试对象为对象与测试用例的对应关系中发生变化的对象。
在可选的实施方式中,上述获取待测试对象的步骤,包括:接收测试任务;该测试任务包括待测试代码的地址;从地址上获取所述待测试代码;比较待测试代码和待测试代码对应的原始代码,得到待测试代码中,相对于原始代码发生变化的函数;将发生变化的函数确定为待测试对象。
第二方面,本发明实施例提供一种对象测试装置,该装置包括:对象获取模块,用于获取待测试对象;用例确定模块,用于从预先建立的对象与测试用例的对应关系中,确定待测试对象对应的测试用例;查找模块,用于从预设的测试代码库中,查找测试用例对应的测试代码;测试模块,用于通过测试代码对待测试对象进行测试。
第三方面,本发明实施例提供一种服务器,该服务器包括处理器和存储器,该存储器存储有能够被处理器执行的机器可执行指令,该处理器执行机器可执行指令以运行前述实施方式任一项所述的对象测试方法。
第四方面,本发明实施例提供一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器运行前述实施方式任一项所述的对象测试方法。
本发明实施例带来了以下有益效果:
本发明实施例提供的一种对象测试方法、装置和服务器,首先获取待测试对象;然后从预先建立的对象与测试用例的对应关系中,确定该待测试对象对应的测试用例;再从预设的测试代码库中,查找测试用例对应的测试代码;通过测试代码对该待测试对象进行测试。本发明基于对象与测试用例的对应关系,自动确定待测试对象对应的测试用例,再使用测试用例对应的测试代码测试待测试对象,该方式在确定测试用例时,无需测试人员针对每个待测试对象手动设计测试用例,从而减少了人为设计的不确定性,提高了测试用例的复用性,同时也提高了测试效率。
发明的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明的上述技术即可得知。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种对象测试方法的流程图;
图2为本发明实施例提供的另一种对象测试方法的流程图;
图3为本发明实施例提供的另一种对象测试方法的流程图;
图4为本发明实施例提供的另一种对象测试方法的流程图;
图5为本发明实施例提供的一种对象测试装置的结构示意图;
图6为本发明实施例提供的一种服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
相关技术中,测试工作所采用的测试用例,主要依赖于测试人员的经验设计,但是针对同一待测试函数,不同的测试人员设计的测试用例会存在差异,导致测试用例的复用性较差、不确定性也较高,同时影响了测试效率。
基于此,本发明实施例提供了一种对象测试方法、装置和服务器,该技术可以应用于软件测试的场景中,尤其是对测试函数、测试代码的测试用例选取场景中。为便于对本实施例进行理解,首先对本发明实施例所公开的一种对象测试方法进行详细介绍,如图1所示,该方法包括如下具体步骤:
步骤S102,获取待测试对象。
该待测试对象可以是需要测试的参数,可以是需要测试的代码,也可以是需要测试的函数。该待测试对象可以是用户通过客户端发送的,也可以是根据用户提交的测试任务,获取到的待测试对象。
步骤S104,从预先建立的对象与测试用例的对应关系中,确定上述待测试对象对应的测试用例。
上述测试用例通常是指为实施测试向被测试系统提供的输入数据、操作或各种环境设置以及期望结果的一个特定集合。上述对象与测试用例的对应关系通常是预先建立好的,该对象与测试用例的对应关系中每个对象均可以与多个测试用例对应,一个测试用例也可以与多个对象对应,也即是一个测试用例可以由多个对象组合而成。上述对应关系可以是根据测试用例对应的对象接口确定,例如,一个测试用例可以对应一个或者多个对象接口,得到每个对象接口对应的对象,即可确定每个测试用例对应的对象;也可以根据历史用户操作习惯中每个测试用例所调用的对象,确定测试用例与对象的对应关系。
步骤S106,从预设的测试代码库中,查找上述测试用例对应的测试代码。
上述测试代码库中可以保存有与对象与测试用例的对应关系中相同的测试用例,以及每个测试用例对应的测试代码。当基于待测试对象,从对象与测试用例的对应关系中得到相应的测试用例后,可以将该测试用例自动发送到测试代码库中,以从测试代码库中查找该测试用例对应的代码。在具体实现时,上述对象与测试用例的对应关系中设置有每个测试用例对应的标识,该标识可以唯一确定测试用例,且该标识与测试代码库中设置的测试用例的标识一致,为了方便查询,可以通过测试用例对应的标识从测试代码库中查找对应的测试用例,该标识可以是编号或者图像标识等。
步骤S108,通过上述测试代码对待测试对象进行测试。
测试代码对待测试对象测试完成后,可以返回测试结果;基于该测试结果,用户可以确定待测试对象测试通过或者测试不通过,以使用户可以根据测试结果对待测试代码进行调整。
上述对象测试方法,首先获取待测试对象;然后从预先建立的对象与测试用例的对应关系中,确定该待测试对象对应的测试用例;再从预设的测试代码库中,查找测试用例对应的测试代码;通过测试代码对该待测试对象进行测试。本发明基于对象与测试用例的对应关系,自动确定待测试对象对应的测试用例,再使用测试用例对应的测试代码测试待测试对象,该方式在确定测试用例时,无需测试人员针对每个待测试对象手动设计测试用例,从而减少了人为设计的不确定性,提高了测试用例的复用性,同时也提高了测试效率。
本发明实施例还提供了另一种对象测试方法,该方法在上述实施例方法的基础上实现;该方法重点描述建立对象与测试用例的对应关系的具体过程,从预设的测试代码库中查找测试用例对应的测试代码的具体过程(通过下述步骤S206-S208实现),以及通过测试代码对待测试对象进行测试的具体过程(通过下述步骤S210实现);如图2所示,该方法包括如下步骤:
步骤S202,获取待测试对象。
步骤S204,从预先建立的对象与测试用例的对应关系中,确定上述待测试对象对应的测试用例。
在具体实现时,上述对象与测试用例的对应关系可以通过下述步骤10-12实现:
步骤10,获取多个对象接口,以及每个对象接口对应的测试用例;其中,该对象接口和测试用例一一对应。
上述对象接口通常为源文件对外的窗口,也即是该对象接口可以接收用户请求,并调用源文件中的对象(该对象可以是代码或者函数等)为用户提供相应的功能。该源文件通常是指用汇编语言或高级语言写出来的代码保存为文件后的结果。通常一个源文件对应有多个对象接口,每个对象接口所调用的对象可能相同也可能不同。
步骤11,通过代码扫描的方式,识别每个上述对象接口调用的对象。
在具体实现时,可以通过代码扫描工具,如pyflakes或pychecker等获取每个对象接口所调用的对象。其中,pyflakes通常是用于检查Python源文件错误的程序,pyflakes识别和分析代码并且检查各种错误;pychecker通常是python代码的静态分析工具,它能够帮助查找python代码的bug,而且能够对代码的复杂度和格式等提出告警。
步骤12,针对每个对象接口,将当前对象接口对应的测试用例和当前对象接口调用的对象对应保存。
在具体实现时,在对象与测试用例的对应关系中,需要预先设置好测试用例与对象接口的对应关系,该对应关系首先可以先将多个对象接口中的第一个对象接口作为当前接口,通过代码扫描工具获取当前对象接口所调用的对象,将获取到的对象与当前对象接口对应保存,并通过当前对象接口,将测试用例与当前对象接口调用的对象对应保存;然后将多个对象接口中的下一个对象接口作为新的当前对象接口,继续通过代码扫描工具获取当前对象接口所调用的对象,直到所有的对象接口都获取到其调用的对象。
在具体实现时,上述对象与测试用例的对应关系中保存有多个测试用例,每个测试用例都对应有一个对象接口,每个对象接口可以调用一个或者多个对象,通过该对象接口可以建立起测试用例与对象之间的关联。
步骤S206,从测试代码库中,查找上述测试用例对应的用户操作;其中,该测试代码库中包括多个用户操作,每个用户操作与用户操作所需的测试用例的对应关系,以及测试用例与测试代码的对应关系。
上述用户操作可以是通过控制台捕捉的用户的操作动作,例如,用户登录客户端、用户查询登录账号下的云主机、用户下载数据等。通常每个用户操作都对应有一个用户使用场景,也即是不同的用户操作对应有不用的用户使用场景。
上述测试代码库中通常包括多个用户操作,每个用户操作用的测试用例,以及测试用例对应的测试代码。其中,每个用户操作对应有一个或者多个测试用例,同样的一个测试用例也可能与多个用户操作对应;该用户操作与测试用例的对应关系是根据用户历史操作决定的,例如,历史操作中用户操作1调用了测试用例1和测试用例2,将该对应关系保存在测试代码库中。如果每次历史操作所调用的测试用例不同,将该历史操作与所调用的所有的测试用例,保存在测试代码库中。
步骤S208,针对每个查找到的用户操作,从测试代码库中,查找当前用户操作对应的测试用例的测试代码。
根据对象与测试用例的对应关系中确定的测试用例,可以在测试代码库中查询到该测试用例对应的一个或者多个用户操作;在根据该用户操作在测试代码库中相对应的测试用例,并调用该测试用例对应的测试代码。
步骤S210,针对每个查找到的用户操作,使用当前用户操作对应的测试用例的测试代码,对待测试对象进行测试,得到测试结果。
需要针对查找到的每个用户操作对应的测试测试代码,对待测试对象进行测试,得到每个用户操作对应的测试结果,该测试结果通常是返回的参数值,该参数值可以表征测试通过或者测试不通。
步骤S212,获取每个查找到的用户操作对应的测试结果。
步骤S214,在上述测试代码库中,对每个测试结果进行验证。
上述测试代码库中通常包括每个用户操作对应的测试期望结果,将获取到的每个用户操作对应的测试结果与相应的测试期望结果进行对比,也即是验证上述测试结果。
步骤S216,如果每个测试结果均验证通过,确定上述待测试对象测试通过。
如果测试结果与测试预期结果相匹配,例如,测试结果与测试预期结果的差值在预设范围内,确定该用户操作对应的测试结果为验证通过;当查找到的所有的用户操作对应的测试结果均为验证通过,该待测试对象测试通过,如果至少有一个测试结果为验证不通过,该待测试对象测试不通过。
上述对象测试方法,首先获取待测试对象,进而从预先建立的对象与测试用例的对应关系中,确定该待测试对象对应的测试用例;然后从测试代码库中,查找该测试用例对应的用户操作,针对每个查找到的用户操作,从测试代码库中查找当前用户操作对应的测试用例的测试代码;针对每个查找到的用户操作,使用当前用户操作对应的测试用例的测试代码,对待测试对象进行测试,得到测试结果;再获取每个查找到的用户操作对应的测试结果,并在测试代码库中,对每个测试结果进行验证,如果每个测试结果均验证通过,确定待测试对象测试通过。在获得待测试用例时,该方式无需人工设计测试用例,即可自动确定测试用例,以及该测试用例对应的用户操作,并通过用户操作对应的测试代码,自动对待测试对象进行测试,该方式节省了大量的人力成本,从而提高了测试效率。
本发明实施例还提供了另一种对象测试方法,该方法在上述实施例方法的基础上实现;该方法描述了另一种建立对象与测试用例的对应关系的具体过程,基于该对应关系终端描述了从预设的测试代码库中查找测试用例对应的测试代码的具体过程(通过下述步骤S306-S308实现),以及通过测试代码对待测试对象进行测试的具体过程(通过下述步骤S310实现);如图3所示,该方法包括如下步骤:
步骤S302,获取待测试对象。
步骤S304,从预先建立的对象与测试用例的对应关系中,确定上述待测试对象对应的测试用例;其中,该对象与测试用例的对应关系中包括预设的用户操作,与用户操作所需的测试用例的对应关系,以及该测试用例与所调用对象的对应关系。
在具体实现时,上述对象与测试用例的对应关系可以通过下述步骤20-23实现:
步骤20,获取预设的用户操作,以及用户操作调用的对象接口。
上述用户操作可以是通过控制台捕捉的用户的操作动作;该用户操作与对象接口的对应关系是根据用户历史操作决定的,例如,历史操作中用户操作1调用了对象接口1和对象接口2,将该对应关系,保存在对象与测试用例的对象关系中的相应位置。如果每次历史操作所调用的对象接口不同,将该历史操作与所调用的所有的对象接口,进行保存。
步骤21,将上述用户操作和用户操作调用的对象接口对应的测试用例,对应保存。
上述对象接口与测试用例通常是一一对应的,可以通过对象接口建立用户操作与测试用例的对应关系,并将该对应关系保存在对象与测试用例的对应关系中。
步骤22,通过代码扫描的方式,识别每个上述对象接口调用的对象。
步骤23,针对每个对象接口,将当前对象接口对应的测试用例和当前对象接口调用的对象对应保存。
在具体实现时,上述对象与测试用例的对应关系中,保存有多个用户操作,与用户操作所需的测试用例的对应关系;还保存有测试用例与对象接口的关系,对象接口和所调用的函数的关系。通过一个用户操作可以对应一个或者多个对象接口,也即是对应有一个或者多个测试用例,一个测试用例也可以与一个或者多个用户操作对应。
在一些实施例中,上述对象接口可以为nova-api;该对象接口调用的对象为nova源文件中的函数;每个nova-api调用至少一个函数,每个函数对应至少一个nova-api,也可以理解为nova源文件中的不同函数对应不同的nova-api;每个nova-api对应至少一个测试用例;每个用户操作调用至少一个nova-api,也可以理解为不同的nova-api可以组合成不同的用户操作(相当于用户使用场景)。上述nova通常是Openstack里最核心的服务模块,负责管理和维护云计算环境的计算资源,负责整个云环境虚拟机生命周期的管理。上述nova-api接口可以作为nova组件对外的唯一窗口,负责接收客户端的请求,向用户暴露nova能够提供的功能。
上述对象与测试用例的对应关系还可以通过下述步骤30-33构建:
步骤30,获取预设的用户操作,以及用户操作调用的nova-api。
步骤31,将用户操作和用户操作调用的nova-api对应的测试用例对应保存。
步骤32,通过代码扫描的方式或者对nova-api打标签的方式,识别每个nova-api调用的函数。
步骤23,针对每个nova-api,将当前nova-api对应的测试用例和当前nova-api调用的函数对应保存。
基于上述方式,可以以nova-api为中转,关联用户使用场景(相当于上述用户操作)与nova源文件中的函数,完成对象与测试用例的对应关系的完整构建。
步骤S306,从对象与测试用例的对应关系中,查找该测试用例对应的用户操作。
基于确定的测试用例,可以从对象与测试用例的对应关系中确定该测试用例对应的用户操作,由于一个测试用例可以对应有一个或者多个用户操作,因此确定的用户操作可以为一个,也可以为多个。
步骤S308,针对每个查找到的用户操作,从测试代码库中,查找当前用户操作对应的测试用例的测试代码。其中,该测试代码库中包括多个用户操作,以及每个用户操作与用户操作所需的测试用例的对应关系,测试用例与测试代码的对应关系。
测试代码库可以根据接收到的用户操作,查找用户操作对应的测试用例的测试代码。
步骤S310,针对每个查找到的用户操作,使用当前用户操作对应的测试用例的测试代码,对待测试对象进行测试,得到测试结果。
步骤S312,获取每个查找到的用户操作对应的测试结果。
步骤S314,在上述测试代码库中,对每个测试结果进行验证。
步骤S316,如果每个上述测试结果均验证通过,确定待测试对象测试通过。
在具体实现时,如果待测试对象测试通过,将对象与测试用例的对应关系中,待测试对象对应的对象替换为待测试对象,以更新对象与测试用例的对应关系;其中,该待测试对象为对象与测试用例的对应关系中发生变化的对象。该更新方式有利于后期进行扩展,且能够适用于后续持续更新迭代,方便用户使用。
例如,上述待测试对象可以是针对源文件中原始函数修改后得到的修改函数,对象与测试用的关系可以为源文件函数与测试用例的关系,当待测试对象测试通过后,将源文件函数与测试用例的关系中的原始函数替换为修改函数,也即是替换为测试通过的待测试对。该方式可以根据源代码原始函数的修改不断新增和修改源文件函数与测试用例的关系,后期可扩展性强,适用于持续迭代。
进一步地,该方式中未提及函数中变量(相当于对象中的变量)与相应函数(其他对象)之间的关系,由于函数中的变量数量很多,且变量的变化会引起函数变化,该方式可以直接通过代码扫描设备,即可获得函数,从而提高了获取函数的效率,从而提高测试效率。
上述对象测试方法,从对象与测试用例的对应关系中确定获取的待测试对象对应的测试用例,并从中查找该测试用例对应的用户操作,进而针对每个查找到的用户操作,从测试代码库中查找当前用户操作对应的测试用例的测试代码,针对每个查找到的用户操作,使用当前用户操作对应的测试用例的测试代码,对待测试对象进行测试,得到测试结果。该方式可以自动确定测试用例对应的测试代码,实现测试代码的自动化测试,从而可以提高测试用例的复用性,同时提高测试的全面性和高效性。
本发明实施例还提供了另一种对象测试方法,该方法在上述实施例方法的基础上实现;该方法重点描述了获取待测试对象的具体过程(通过下述步骤S402-S408实现);如图4所示,该方法包括如下步骤:
步骤S402,接收测试任务;该测试任务包括待测试代码的地址。
该测试任务通常是用户通过客户端发送的,该测试任务中通常包含有待测试代码的地址,以及该待测试代码对应的源文件,该源文件可以是nova源文件。该源文件通常保存有多个函数,每个函数均有代码组成。
步骤S404,从上述地址上获取待测试代码。
通过测试代码的地址,可以进入源文件中通过代码扫描设备获取源文件中的待测试代码。
步骤S406,比较上述待测试代码和待测试代码对应的原始代码,得到该待测试代码中,相对于原始代码发生变化的函数。
在具体实现时,通常是比较获取到的待测试代码与源文件中待测试代码对应的原始代码,确定相对于原始代码存在差异的代码,该存在差异的代码对应源文件中的一个函数,也即是可以通过存在差异的代码可以确定发生变化的函数。
步骤S408,将上述发生变化的函数确定为待测试对象。
步骤S410,从预先建立的对象与测试用例的对应关系中,确定上述待测试对象对应的测试用例。
步骤S412,从预设的测试代码库中,查找上述测试用例对应的测试代码。
步骤S414,通过上述测试代码对待测试对象进行测试。
上述对象测试方法,本方法提出的是基于对象与测试用例的对应关系,智能定位与测试工作相关测试用例,并根据该测试用例确定测试代码,以并自动化执行对象测试,该方式极大地降低人为判断的不确定性,减少了手工测试的工作量,提高测试的全面性和高效性。
对应于上述对象测试方法的实施例,本发明实施例还提供了一种对象测试装置,如图5所示,该装置包括:
对象获取模块50,用于获取待测试对象。
用例确定模块51,用于从预先建立的对象与测试用例的对应关系中,确定上述待测试对象对应的测试用例。
查找模块52,用于从预设的测试代码库中,查找上述测试用例对应的测试代码。
测试模块53,用于通过上述测试代码对待测试对象进行测试。
上述对象测试装置,首先获取待测试对象;然后从预先建立的对象与测试用例的对应关系中,确定该待测试对象对应的测试用例;再从预设的测试代码库中,查找测试用例对应的测试代码;通过测试代码对该待测试对象进行测试。该方式基于对象与测试用例的对应关系,自动确定待测试对象对应的测试用例,再使用测试用例对应的测试代码测试待测试对象,该方式在确定测试用例时,无需测试人员针对每个待测试对象手动设计测试用例,从而减少了人为设计的不确定性,提高了测试用例的复用性,同时也提高了测试效率。
进一步地,上述装置还包括对应关系建立模块,用于:获取多个对象接口,以及每个对象接口对应的测试用例;其中,对象接口和测试用例一一对应;通过代码扫描的方式,识别每个对象接口调用的对象;针对每个对象接口,将当前对象接口对应的测试用例和当前对象接口调用的对象对应保存。
进一步地,上述测试代码库中包括多个用户操作,每个用户操作与用户操作所需的测试用例的对应关系,以及测试用例与测试代码的对应关系;上述查找模块52,用于:从测试代码库中,查找测试用例对应的用户操作;针对每个查找到的用户操作,从测试代码库中,查找当前用户操作对应的测试用例的测试代码;上述测试模块53,用于:针对每个查找到的用户操作,使用当前用户操作对应的测试用例的测试代码,对待测试对象进行测试,得到测试结果。
进一步地,上述对象与测试用例的对应关系还包括:预设的用户操作,与用户操作所需的测试用例的对应关系;上述对应关系建立模块,还用于:获取预设的用户操作,以及该用户操作调用的对象接口;将该用户操作和用户操作调用的对象接口对应的测试用例,对应保存。
具体地,上述对象接口为nova-api;该对象接口调用的对象为nova源文件中的函数;每个nova-api调用至少一个函数,每个函数对应至少一个nova-api;每个nova-api对应至少一个测试用例;每个用户操作调用至少一个nova-api;上述对应关系建立模块,还用于:获取用户操作,以及用户操作调用的nova-api;将用户操作和用户操作调用的nova-api对应的测试用例对应保存。
具体地,上述测试代码库中包括多个用户操作,以及每个用户操作与用户操作所需的测试用例的对应关系,测试用例与测试代码的对应关系;上述查找模块52,还用于:从对象与测试用例的对应关系中,查找测试用例对应的用户操作;针对每个查找到的用户操作,从测试代码库中,查找当前用户操作对应的测试用例的测试代码;上述测试模块53,还用于:针对每个查找到的用户操作,使用当前用户操作对应的测试用例的测试代码,对待测试对象进行测试,得到测试结果。
进一步地,上述装置还包括结果验证模块,用于:获取每个查找到的用户操作对应的测试结果;在测试代码库中,对每个测试结果进行验证;如果每个测试结果均验证通过,确定待测试对象测试通过。
上述对象获取模块50,用于:接收测试任务;该测试任务包括待测试代码的地址;从地址上获取待测试代码;比较待测试代码和待测试代码对应的原始代码,得到待测试代码中,相对于原始代码发生变化的函数;将发生变化的函数确定为待测试对象。
上述装置还包括关系更新模块,用于:如果待测试对象测试通过,将对象与测试用例的对应关系中,待测试对象对应的对象替换为待测试对象,以更新对象与测试用例的对应关系;其中,该待测试对象为对象与测试用例的对应关系中发生变化的对象。
本发明实施例所提供的对象测试装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
本发明实施例还提供了一种服务器,参见图6所示,该服务器包括处理器和存储器,该存储器存储有能够被处理器执行的机器可执行指令,该处理器执行机器可执行指令以运行上述对象测试方法。
进一步地,图6所示的服务器还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。
其中,存储器100可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。
本发明实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器运行上述对象测试方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和/或电子设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (12)
1.一种对象测试方法,其特征在于,所述方法包括:
获取待测试对象;
从预先建立的对象与测试用例的对应关系中,确定所述待测试对象对应的测试用例;
从预设的测试代码库中,查找所述测试用例对应的测试代码;
通过所述测试代码对所述待测试对象进行测试。
2.根据权利要求1所述的方法,其特征在于,所述对象与测试用例的对应关系,通过下述方式建立:
获取多个对象接口,以及每个所述对象接口对应的测试用例;其中,所述对象接口和所述测试用例一一对应;
通过代码扫描的方式,识别每个所述对象接口调用的对象;
针对每个所述对象接口,将当前对象接口对应的测试用例和所述当前对象接口调用的对象对应保存。
3.根据权利要求1所述的方法,其特征在于,所述测试代码库中包括多个用户操作,每个所述用户操作与所述用户操作所需的测试用例的对应关系,以及所述测试用例与测试代码的对应关系;
所述从预设的测试代码库中,查找所述测试用例对应的测试代码的步骤,包括:从所述测试代码库中,查找所述测试用例对应的用户操作;针对每个查找到的所述用户操作,从所述测试代码库中,查找当前用户操作对应的测试用例的测试代码;
所述通过所述测试代码对所述待测试对象进行测试的步骤,包括:针对每个查找到的所述用户操作,使用当前用户操作对应的测试用例的测试代码,对所述待测试对象进行测试,得到测试结果。
4.根据权利要求2所述的方法,其特征在于,所述对象与测试用例的对应关系还包括:预设的用户操作,与所述用户操作所需的测试用例的对应关系;
所述预设的用户操作与所述用户操作所需的测试用例的对应关系,通过下述方式建立:
获取预设的用户操作,以及所述用户操作调用的对象接口;
将所述用户操作和所述用户操作调用的对象接口对应的测试用例,对应保存。
5.根据权利要求4所述的方法,其特征在于,所述对象接口为nova-api;所述对象接口调用的对象为nova源文件中的函数;每个所述nova-api调用至少一个所述函数,每个所述函数对应至少一个所述nova-api;每个所述nova-api对应至少一个所述测试用例;每个所述用户操作调用至少一个所述nova-api;
所述获取预设的用户操作,以及所述用户操作调用的对象接口的步骤,包括:获取所述用户操作,以及所述用户操作调用的nova-api;
所述将所述用户操作和所述用户操作调用的对象接口对应的测试用例,对应保存的步骤,包括:将所述用户操作和所述用户操作调用的nova-api对应的测试用例对应保存。
6.根据权利要求4所述的方法,其特征在于,所述测试代码库中包括多个用户操作,以及每个所述用户操作与所述用户操作所需的测试用例的对应关系,所述测试用例与测试代码的对应关系;
所述从预设的测试代码库中,查找所述测试用例对应的测试代码的步骤,包括:从所述对象与测试用例的对应关系中,查找所述测试用例对应的用户操作;针对每个查找到的所述用户操作,从所述测试代码库中,查找当前用户操作对应的测试用例的测试代码;
所述通过所述测试代码对所述待测试对象进行测试的步骤,包括:针对每个查找到的所述用户操作,使用当前用户操作对应的测试用例的测试代码,对所述待测试对象进行测试,得到测试结果。
7.根据权利要求3或6所述的方法,其特征在于,针对每个查找到的所述用户操作,使用当前用户操作对应的测试用例的测试代码,对所述待测试对象进行测试的步骤之后,所述方法还包括:
获取每个查找到的所述用户操作对应的测试结果;
在所述测试代码库中,对每个所述测试结果进行验证;
如果每个所述测试结果均验证通过,确定所述待测试对象测试通过。
8.根据权利要求1所述的方法,其特征在于,通过所述测试代码对所述待测试对象进行测试的步骤之后,所述方法还包括:
如果所述待测试对象测试通过,将所述对象与测试用例的对应关系中,所述待测试对象对应的对象替换为所述待测试对象,以更新所述对象与测试用例的对应关系;其中,所述待测试对象为所述对象与测试用例的对应关系中发生变化的对象。
9.根据权利要求1所述的方法,其特征在于,获取待测试对象的步骤,包括:
接收测试任务;所述测试任务包括待测试代码的地址;
从所述地址上获取所述待测试代码;
比较所述待测试代码和所述待测试代码对应的原始代码,得到所述待测试代码中,相对于所述原始代码发生变化的函数;
将所述发生变化的函数确定为待测试对象。
10.一种对象测试装置,其特征在于,所述装置包括:
对象获取模块,用于获取待测试对象;
用例确定模块,用于从预先建立的对象与测试用例的对应关系中,确定所述待测试对象对应的测试用例;
查找模块,用于从预设的测试代码库中,查找所述测试用例对应的测试代码;
测试模块,用于通过所述测试代码对所述待测试对象进行测试。
11.一种服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以运行权利要求1-9任一项所述的对象测试方法。
12.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使处理器运行权利要求1-9任一项所述的对象测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010179541.0A CN111400181A (zh) | 2020-03-13 | 2020-03-13 | 对象测试方法、装置和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010179541.0A CN111400181A (zh) | 2020-03-13 | 2020-03-13 | 对象测试方法、装置和服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111400181A true CN111400181A (zh) | 2020-07-10 |
Family
ID=71434754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010179541.0A Pending CN111400181A (zh) | 2020-03-13 | 2020-03-13 | 对象测试方法、装置和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111400181A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113377667A (zh) * | 2021-06-29 | 2021-09-10 | 平安国际融资租赁有限公司 | 一种基于场景的测试方法、装置、计算机设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893237A (zh) * | 2015-08-04 | 2016-08-24 | 乐视致新电子科技(天津)有限公司 | 一种测试数据驱动的方法及设备 |
CN109308254A (zh) * | 2017-07-28 | 2019-02-05 | 阿里巴巴集团控股有限公司 | 一种测试方法、装置及测试设备 |
CN109446097A (zh) * | 2018-11-07 | 2019-03-08 | 郑州云海信息技术有限公司 | 一种回归测试用例选择方法、装置、终端及存储介质 |
CN109783354A (zh) * | 2018-12-14 | 2019-05-21 | 深圳壹账通智能科技有限公司 | 应用系统的功能测试方法、终端设备及介质 |
CN110147317A (zh) * | 2019-04-19 | 2019-08-20 | 平安普惠企业管理有限公司 | 代码测试方法及装置、电子设备和存储介质 |
CN110764993A (zh) * | 2019-09-02 | 2020-02-07 | 深圳壹账通智能科技有限公司 | 自动化测试方法及终端设备 |
-
2020
- 2020-03-13 CN CN202010179541.0A patent/CN111400181A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893237A (zh) * | 2015-08-04 | 2016-08-24 | 乐视致新电子科技(天津)有限公司 | 一种测试数据驱动的方法及设备 |
CN109308254A (zh) * | 2017-07-28 | 2019-02-05 | 阿里巴巴集团控股有限公司 | 一种测试方法、装置及测试设备 |
CN109446097A (zh) * | 2018-11-07 | 2019-03-08 | 郑州云海信息技术有限公司 | 一种回归测试用例选择方法、装置、终端及存储介质 |
CN109783354A (zh) * | 2018-12-14 | 2019-05-21 | 深圳壹账通智能科技有限公司 | 应用系统的功能测试方法、终端设备及介质 |
CN110147317A (zh) * | 2019-04-19 | 2019-08-20 | 平安普惠企业管理有限公司 | 代码测试方法及装置、电子设备和存储介质 |
CN110764993A (zh) * | 2019-09-02 | 2020-02-07 | 深圳壹账通智能科技有限公司 | 自动化测试方法及终端设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113377667A (zh) * | 2021-06-29 | 2021-09-10 | 平安国际融资租赁有限公司 | 一种基于场景的测试方法、装置、计算机设备及存储介质 |
CN113377667B (zh) * | 2021-06-29 | 2024-05-10 | 平安国际融资租赁有限公司 | 一种基于场景的测试方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107562610B (zh) | 获取页面加载时间的方法、装置、终端和介质 | |
CN109033772B (zh) | 一种验证信息的输入方法及装置 | |
CN113127347B (zh) | 一种接口测试方法、装置、设备及可读存储介质 | |
CN114546738B (zh) | 服务器通用测试方法、系统、终端及存储介质 | |
CN107807841B (zh) | 服务器模拟方法、装置、设备及可读存储介质 | |
CN111651358B (zh) | 生成测试用例的方法、软件测试方法、装置和服务器 | |
CN111459509A (zh) | 容器镜像的构建方法、装置和服务器 | |
CN110515924B (zh) | 数据库操作逻辑校验方法、装置、设备及可读存储介质 | |
CN111400181A (zh) | 对象测试方法、装置和服务器 | |
CN112256672B (zh) | 数据库变更审批方法及装置 | |
CN114064473A (zh) | 车机系统测试方法、系统、车辆及计算机可读存储介质 | |
CN111782507B (zh) | 数据测试方法、装置、存储介质及电子设备 | |
CN110134583B (zh) | 软件测试及数据处理方法及装置 | |
CN109542775B (zh) | 一种测试脚本的生成和执行方法及装置 | |
CN111124545A (zh) | 应用程序启动方法、装置、电子设备及存储介质 | |
CN110781079B (zh) | 数据处理流程调试方法、装置及电子设备 | |
CN109189369B (zh) | 一种压缩代码的方法及装置 | |
CN112965697A (zh) | 一种代码文件的生成方法、装置及电子设备 | |
CN107302605B (zh) | 电视代理服务器的配置方法及装置、电视及存储介质 | |
CN117435510B (zh) | 自动化测试方法、终端设备及计算机可读存储介质 | |
CN108628750B (zh) | 一种测试代码处理方法及装置 | |
CN117313856B (zh) | 一种可靠性测试规划系统及方法 | |
CN117472724A (zh) | 自动测试方法、装置、存储介质以及电子设备 | |
CN108132990B (zh) | 一种app内置图片的替换方法、装置及存储介质 | |
CN115374193A (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 |