接口测试方法、接口描述数据库生成方法及装置与流程

文档序号:11829419阅读:195来源:国知局
接口测试方法、接口描述数据库生成方法及装置与流程
本申请涉及软件测试
技术领域
,尤其涉及一种接口测试方法、接口描述数据库生成方法及装置。
背景技术
:接口是指同一系统不同功能层之间的通信规则。在服务接口化(以服务的方式对外提供一个接口)盛行的当下,在端到端的接口系统中,保证前后端进行交互的接口的质量和稳定显得尤为重要,而接口的质量和稳定性在接口开发过程中是通过接口测试来验证的,这就对接口测试的验证结果的准确性提出了较高的要求。在现有的接口测试中,由于同一服务系统中服务软件的前端开发(这里泛指客户端的开发)和后端开发(这里泛指服务器端开发)往往是并行的,因此,前端开发的接口的测试和对后端开发的接口的测试也是并行的。前后端接口测试工程师对各自开发的接口的测试是基于一份接口描述中提供标准的软件功能以及参数、返回值等信息分别进行的,该接口描述是前端开发者和后端开发者之间进行交互操作的基础,也构建了双方之间的一种基于契约的合作模式,双方对契约理解的一致性是接口测试能够准确高效进行的基础。然而,由于接口提供的功能通常有适合的应用范围和场景,例如参数的取值范围、操作的调用顺序等;对接口的测试也建立在对接口提供的功能的某些隐含假设之上,现有的接口描述中缺少足够的信息,无法准确表达这些隐含的约束限制条件,因此,基于现有的接口描述进行接口测试,常常造成接口测试的测试结果的准确性较低。技术实现要素:本申请实施例提供一种接口测试方法、接口描述数据库生成方法及装置,用以解决基于现有的接口描述进行接口测试,造成的接口测试的测试结果的准确性较低的问题。一种接口测试方法,包括:生成针对待测试接口的请求数据;将所述请求数据发送给所述待测试接口所在的服务器;接收所述服务器返回的针对所述请求数据的响应数据;并从接口描述数据库中获取所述待测试接口的接口名称对应的响应数据描述,所述接口描述数据库中包括接口名称及其对应的响应数据描述,所述响应数据描述包括正确的响应数据应包括的响应字段集以及该响应字段集中的每一响应字段的字段值应满足的约束条件;利用获取的所述响应数据描述中的响应字段集及该响应字段集中的每一响应字段的字段值应满足的约束条件对接收的所述响应数据进行验证,获得验证结果。一种基于上述接口测试方法的接口描述数据库生成方法,包括:根据待测试接口代码,生成所述待测试接口的接口测试脚本;建立生成的所述待测试接口的接口测试脚本与该待测试接口的接口名称的关联关系,以及将该关联关系存储在接口描述数据库中,所述待测试接口代码是根据所述请求数据生成的;并将生成针对待测试接口的请求数据作为该待测试接口的接口测试用例,建立该接口测试用例与所述待测试接口的接口名称的关联关系,以及将该关联关系存储在接口描述数据库中;并将接收的所述响应数据作为待测试接口的测试数据,建立该接口测试数据与该待测试接口的接口名称的关联关系,以及将该关联关系存储在接口描述数据库中;并根据所述验证结果生成针对所述待测试接口的接口测试报告,建立该接口 测试报告与该待测试接口的接口名称的关联关系,以及将该关联关系存储在接口描述数据库中,所述接口测试报告包括已验证的待测试接口的请求数据、验证结果、验证结果状态和验证结果失败原因分析中的一种或多种,所述验证结果状态包括成功和失败。一种接口测试装置,包括:请求数据生成单元,用于生成针对待测试接口的请求数据;发送单元,用于将所述请求数据发送给所述待测试接口所在的服务器;接收单元,用于接收所述服务器返回的针对所述请求数据的响应数据;获取单元,用于从接口描述数据库中获取所述待测试接口的接口名称对应的响应数据描述,所述接口描述数据库中包括接口名称及其对应的响应数据描述,所述响应数据描述包括正确的响应数据应包括的响应字段集以及该响应字段集中的每一响应字段的字段值应满足的约束条件;验证单元,用于利用获取的所述响应数据描述中的响应字段集及该响应字段集中的每一响应字段的字段值应满足的约束条件对接收的所述响应数据进行验证,获得验证结果。一种基于上述接口测试装置的接口描述数据库生成装置,包括:第一关联关系建立单元,用于根据待测试接口代码,生成所述待测试接口的接口测试脚本;建立生成的所述待测试接口的接口测试脚本与该待测试接口的接口名称的关联关系,所述待测试接口代码是根据所述请求数据生成的;第二关联关系建立单元,用于将生成针对待测试接口的请求数据作为该待测试接口的接口测试用例,建立该接口测试用例与所述待测试接口的接口名称的关联关系;第三关联关系建立单元,用于将接收的所述响应数据作为待测试接口的测试数据,建立该接口测试数据与该待测试接口的接口名称的关联关系;第四关联关系建立单元,用于根据所述验证结果生成针对所述待测试接口的接口测试报告,建立该接口测试报告与该待测试接口的接口名称的关联关 系,所述接口测试报告包括已验证的待测试接口的请求数据、验证结果、验证结果状态和验证结果失败原因分析中的一种或多种,所述验证结果状态包括成功和失败;存储单元,用于将所述待测试接口的接口测试脚本与该待测试接口的接口名称的关联关系、接口测试用例与所述待测试接口的接口名称的关联关系、接口测试报告与该待测试接口的接口名称的关联关系和待测试接口的接口名称的关联关系存储在接口描述数据库中。在本申请实施例中,接口描述数据库中包括接口名称及其对应的响应数据描述,该响应数据描述包括正确的响应数据应包括的响应字段集以及该响应字段集中每一响应字段的字段值应满足的约束条件;这就使得在进行接口测试时,可以从接口描述数据库中获取待测试接口的接口名称对应的响应数据描述,进而利用该获取的所述响应数据描述中的响应字段集及约束条件对接收的所述响应数据进行验证,获得验证结果。由于本申请的接口描述数据库中的响应数据描述包括正确的响应数据应包括的响应字段集及约束条件,扩充了现有的接口描述的信息,并且使得准确表达隐含的约束限制条件成为可能,因此,提高了验证结果的准确性,确保了顺利通过接口测试后的接口的质量相对较高且稳定性相对较好。附图说明图1为本申请实施例一提供的接口测试方法示意图;图2为本申请实施例二提供的接口测试装置的结构示意图;图3为本申请实施例三提供的利用If-test接口测试平台执行接口测试的过程的示意图;图4为本申请实施例四提供的接口测试方法示意图;图5为本申请实施例四提供的接口测试方法在具体项目中运用示例示意图;图6为本申请实施例五提供的接口测试装置的结构示意图;图7为本申请实施例六提供的接口描述数据库生成装置的结构示意图。具体实施方式本申请实施例的接口测试方法是基于提出的包含接口的接口名称对应的响应数据描述的接口描述数据库的基础上进行的,该响应数据描述包括正确的响应数据应包括的响应字段集以及该响应字段集中每一响应字段的字段值应满足的约束条件;这就使得在进行接口测试时,可以从接口描述数据库中获取待测试接口的接口名称对应的响应数据描述,进而利用该获取的所述响应数据描述中的响应字段集及约束条件对接收的所述响应数据进行验证,获得验证结果。由于本申请的接口描述数据库中的响应数据描述包括正确的响应数据应包括的响应字段集及约束条件,扩充了现有的接口描述的信息,并且使得准确表达隐含的约束限制条件成为可能,因此,提高了验证结果的准确性,确保了顺利通过接口测试后的接口的质量相对较高且稳定性相对较好。以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。实施例一如图1所示,其为本申请实施例一的接口测试方法示意图,这里的测试方法可以理解为模拟客户端(例如,浏览器,移动端App中的Webview(iOS下称UIWebview))对服务器端实际的接口进行测试,包括以下步骤:步骤101:生成针对待测试接口的请求数据;具体的,所述请求数据中可包括:请求名、请求的url,请求类型(get/post),请求参数值(get参数值/post参数值)等中的多种数据;例如:假设请求数据为http://example.com/demo.htm?searchNo=0,这这个 请求数据中的请求名为:demo,请求的url为http://example.com/demo,请求类型为get请求,请求参数为searchNo,该请求参数的值为0。本步骤101中的请求数据中的请求参数值可以是人为设置的,也可以是通过测试工具利用正确的请求数据应满足的约束条件自动生成的。步骤102:将所述请求数据发送给所述待测试接口所在的服务器;本步骤102中,将请求数据发送给所述服务器后,所述服务器通过所述待测试接口接收所述请求数据,根据所述请求数据中的请求参数值进行运算处理;并将处理结果也即响应数据返回给所述请求数据发送方。优选地,步骤102具体可包括:根据所述请求数据,生成所述待测试接口的接口测试代码;通过运行生成的所述接口测试代码实现将所述数据发送给所述待测试接口。需要说明的是,上述步骤101和步骤102中是构造并模拟发送请求数据到待测试接口的过程;这里,根据生成的所述待测试接口测试代码还可以生成所述待测试接口的接口测试脚本,这里的脚本是可执行的脚本,可以在后续代码的持续集成中使用。步骤103:接收所述服务器返回的针对所述请求数据的响应数据;步骤104:从接口描述数据库中获取所述待测试接口的接口名称对应的响应数据描述;所述接口描述数据库可以存放在是系统数据库里,也可以存放在代码托管服务器上,便于前后端开发人员及测试人员共享;所述接口描述数据库中包括接口名称及其对应的响应数据描述,所述响应数据描述可包括:正确的响应数据应包括的响应字段集,以及该响应字段集中的每一响应字段的字段值应满足的约束条件;所述响应字段集中的响应字段的个数可以是一个,也可以是多个,由软件 开发者设计的具体的接口来决定;假设某一接口的正确的响应数据应包括的响应字段集中响应字段的个数为2个,分别为响应字段1和响应字段2,则此时,该接口的响应数据描述包括响应字段1、响应字段1的字段值应满足的约束条件,以及响应字段2、响应字段2的字段值应满足的约束条件;这里的响应字段可以理解为响应数据必须包括的字段;具体的,所述接口描述数据库中的描述遵循/符合设定语法格式,以便于测试工具自动化执行本发明实施例一中的接口测试方案,进一步的,该设定的语法格式是用于对输出给接口的参数或接口输出的参数所使用的语法格式进行验证的语法格式,例如:假设输出给接口的参数或接口输出的参数的语法格式为JSON(JavaScriptObjectNotiation,基于JavaScript语言的轻量级的数据交换格式),则该设定的语法格式为JSONSchema(JSON框架);假设输出给接口的参数或接口输出的参数的语法格式为blueprint(蓝本数据交换格式),则该设定的语法格式为blueprintSchema(blueprint框架)。步骤105:利用获取的所述响应数据描述中的响应字段集及该响应字段集中的每一响应字段的字段值应满足的约束条件对接收的所述响应数据进行验证,获得验证结果。具体的,所述该设定语法格式可包含由关键词及其对应的语义函数构成的语义标签,响应字段的字段值应满足的约束条件由预设的关键词及对应的约束条件函数构成的语义标签表示;这里的约束条件函数即为预设的关键词对应的语义函数;此外,所述接口描述数据库中还可以包括所述设定语法格式的规范,以便利用该规范对接收的响应数据的语法格式是否符合该设定语法格式的规范进行验证。需要说明的是,这里的语义标签是本申请在遵守所述语法格式的基础上,扩展出来的语义标签,专门为本申请的约束条件的表达而扩展的。此时,步骤105的具体验证过程可包括以下三个步骤:步骤a1:确定获取的所述响应数据描述中的响应字段集中包括的各响应字段;步骤b1:针对确定的每一响应字段,根据所述预设的关键词,从获取的所述响应数据描述中确定该响应字段的字段值对应的约束条件函数;步骤c1:判断接收的所述响应数据中包含的全部字段构成的集合是否与获取的所述数据响应描述中的响应字段集构成的集合相等,以及各响应字段的字段值是否均满足对应的约束条件函数;步骤d1:若接收的所述响应数据中包含的全部字段构成的集合与获取的所述数据响应描述中的响应字段集构成的集合相等,且各响应字段的字段值均满足对应的约束条件函数,则确定验证成功;反之,则确定验证失败。上述步骤c1和步骤d1,具体的执行过程可以但并不局限于如下方式:针对每一响应字段,执行以下操作:判断接收的所述响应数据是否包含该响应字段以及该响应字段是否具有字段值;若包含该响应字段且具有字段值,则判断该字段值是否满足该响应字段的约束条件函数;若所述响应数据中包含数据响应描述中的全部响应字段,数据响应描述中的全部响应字段均包含在所述响应数据中并且各响应字段的字段值均满足对应的约束条件,则确定验证成功;否则,确定验证失败。若接收的所述响应数据中不包含获取的所述数据响应描述中的全部响应字段,或者包含获取的所述数据响应描述中的部分响应字段,或者各响应字段的字段值不均满足对应的约束条件函数,则确定验证失败。下面对上述语义标签进行说明,对于mockjs语义标签,遵循IETFJSONSchemaDraft-04(IETF草案JSON模式)的规范(该规范定义了语法格式)的语义标签及格式的两个例子如下:例子1:该例子1描述是一个属性值为字符串且取值为大于60小于100的自然数。其中,$schema,type为JSONSchema规范中的关键词,http://my.site/myschema#为关键词$schema的值,表明该自然数的描述信息遵循的规范所在的url;string为type的值,表示该自然数的数据类型为字符串型;"iftest":"@natural(60,100)",这一句描述,就是一个语义标签,其中是由“关键词”和“语义函数”构成,即:"关键词":"语义函数",iftest为关键词,@natural(60,100)为语义函数,@用于标识其后的字符串natural是方法函数,该natural包括最小值和最大值两个参数,在例1中,最小值是60,最大值是100,这表明了自然数的取值范围。预设的关键词,是本申请自定义的关键词,上述iftest关键词是对现有JSONSchema规范中的关键词的扩展,并非一定要使用iftest来表示本身请的预设的关键词,也可以使用其他词(当然,这里的其它词是指JSONSchema规范中的关键词之外的词)来表示预设的关键词。例子2:该例子2中,"iftest":"@host_tmall(\"^detail\")"这一句描述也为一个语义标签。该例子2表示的是一个数据类型为字符串的uri(uniformresourceidentifier, 统一资源标识符),且该uri中包含关键词为“detail”的线上天猫url(uniformresourelocator:统一资源定位器)的描述信息。下表(1)中罗列了基本的数据类型和提供的基本的方法函数,需要说明的是类型并不局限于此,方法函数也可以不断扩展:表(1)上述表(1)中的业务类型这一方法类型中包括的业务ID(bizNum)方法函数和无协议url(url_no_protocol)方法函数是根据实际业务扩展的,也即为本申请实施例中提供的方法函数可以不断扩展,并且扩展的方法函数可以有更多的业务相关性,进而拥有更多的实际业务应用价值。例如:"iftest":"@bizNUm(3,5)",这一语义标签描述的是一个业务id,长度是3位到5位;"iftest":"@url_no_protocol",这一语义标签描述的是一个http请求,没有协议头,其余保持和url一样,例如:在http请求为//www.tmall.com时就是校验成功的,在http请求为http://www.tmall.com时就是校验失败的。由于上述步骤a1至步骤d1中的对接收的响应数据的正确性的验证过程是 基于请求描述数据库中各响应字段的语义标签(由预设的关键词以及对应的约束条件函数构成)进行的,因此,上述验证方式可以称为语义化验证。此外,在本申请实施例一的基础上,考虑到接口的请求数据需要具有必填字段(或者必须包括的字段)的字段值符合一定的约束条件,若将该约束条件若在接口描述数据库中进行描述,根据该这将有利于自动测试化工具利用该约束条件自动模拟生成用于测试的请求数据,则将使得生成的请求数据能尽可能的覆盖所有测试点,并且能提高用于测试的请求数据的质量,也相应地确保了获得的响应数据的可用性,就进一步提升测试结果的准确性,同时能快速有效地发现待测试接口存在的缺陷,下面通过实施例二对这一优选方案进行说明。实施例二如图2所示,其为本发明实施例二中的接口测试方法示意图,该方法中所述接口描述数据库中不仅包括接口名称、接口名称对应的响应数据描述,还包括接口名称对应的请求类型和请求数据描述,所述请求数据描述包括正确的请求数据应包括的请求字段以及请求字段的字段值应满足的约束条件;在此基础上所述接口测试方法包括以下步骤:步骤201:从接口描述数据库中获取所述待测试接口的接口名称对应请求数据描述和请求类型;步骤202:根据获取的所述请求数据描述中包含的各请求字段及每一请求字段的字段值应满足的约束条件,生成请求类型为获取的所述请求类型的针对所述待测试接口的请求数据;由于请求数据描述包括正确的请求数据应包括的请求字段以及请求字段的字段值应满足的约束条件,因此,在获知获取请求数据描述时,就可以获知其包含的各请求字段及每一请求字段的字段值应满足的约束条件,进而利用各请求字段及相应的约束条件,生成请求类型为获取的所述请求类型的针对所述待测试接口的请求数据。优选地,所述接口描述数据库中的描述符合设定语法格式,该设定语法格式包含由关键词及其对应的语义函数构成的语义标签,请求字段的字段值应满足的约束条件由预设的关键词及对应的约束条件函数构成的语义标签表示;此时,步骤202具体可包括以下步骤:步骤a2:根据所述预设的关键词,从获取的所述请求数据描述中确定每一请求字段的字段值对应的约束条件函数;步骤b2:根据每一请求字段的字段值对应的约束条件函数生成请求类型为获取的所述请求类型的针对所述待测试接口的请求数据。优选地,所述步骤b2可包括:步骤b21:根据每一请求字段的字段值对应的约束条件函数生成请求参数值,该请求参数值为业务相关的参数值或者业务无关的参数值;步骤b22:利用各请求字段和相应的请求参数值生成请求类型为获取的所述请求类型的针对所述待测试接口的请求数据。步骤203:将所述请求数据发送给所述待测试接口所在的服务器;步骤204:接收所述服务器返回的针对所述请求数据的响应数据;步骤205:从接口描述数据库中获取所述待测试接口的接口名称对应的响应数据描述;步骤206:利用获取的所述响应数据描述中的响应字段集及该响应字段集中的每一响应字段的字段值应满足的约束条件对接收的所述响应数据进行验证,获得验证结果。上述步骤203至步骤206的具体实施过程与实施例一中的步骤102至步骤105的具体实施过程相同,这里不再赘述。实施本发明实施例一或者实施例二的方案的可以是一个测试装置。下面通过实施例三中所示的一个具体的例子对本申请的具体实现过程进行详细描述。实施例三本申请实施例三中以测试装置为接口测试平台,接口描述数据库中描述遵循的预定的数据格式为JSON,测试环境为通过http协议通信的客户服务器环境为例,通过图3和一个具体的例子对本发明实施例二的方案进行详细说明。图3中的If-test(If为InterFace的缩写)接口测试平台包括:If-HttpTest模块、If-Builder模块和If-Validator模块;其中:If-httptest模块是用来真实模拟在特定上下文环境和业务场景情况下http请求数据的模块,该http请求基于apachecommonshttpclient3.0.1。If-validator模块是用来对接口返回的数据响应进行校验的模块,该模块基于json-schema-validator开源框架,引入mockjs语义标签,增加了自定义关键词“iftest”,这里的自定义关键词即为预设的关键词,从而提供可扩展的语义化验证方式;If-builder模块是用来根据接口的请求数据描述自动化生成请求参数值的模块;下面以对接口名称为http://example.com/demo.htm的接口进行测试为例进行说明:假设接口描述数据库中http://example.com/demo.htm对应的请求类型为get请求,请求数据描述和响应数据描述分别为以下内容:1)请求数据描述:上述请求数据描述表示的含义为http://example.com/demo.htm这一接口名称所表示的接口的请求数据中必填的参数为searchNo,这里的必填参数也即本发实施例二中的请求字段,该searchNo可称为“搜索编号”,该搜索编号的数据类型为字符串型,取值范围为于0小于5的自然数;2)响应数据描述为:上述2)响应数据描述表达的含义是:包含核心的三个响应字段:itemId/detail/pic,这三个响应字段都是必须的,不能缺少,其次,itemId是一个11位的数字,detail需要像http://detail.tmall.com/item.htm?id=15179732651&q=iphoney”一样,pic是个图片链接,且图片像素是:344x228。上述接口测试平台进行接口测试的过程包括以下步骤:第一步:If-builder模块获取接口名称为http://example.com/demo.htm的待测试接口的请求数据描述,如上述所给出的1)请求数据描述,该接口名称也即为http的get请求;第二步:If-builder模块根据获取的上述1)请求数据描述,确定其中包含的请求字段为搜索编号searchNo,该请求字段也即为必填参数字段;上述1)请求数据描述中包含的必填参数字段使用required这一关键词标示的,只有搜索编号一个字段;第三步:if-builder模块根据iftest这一预设的关键字,从上述1)请求数据描述中searchNo的约束条件函数为@natural(0,5);第四步:if-builder模块根据请求有一个必填参数为searchNo,并且searchNo的值只能为0到5的自然数,生成的请求参数值为:0、5、不填参数、null、-1、6、xyz;如表(2)所示,当然也可以包括其他的值,这里生成的请求参数值是按类别确定的,理论上来说这些参数值就可以代表所有的参数值。表(2)第五步,if-builder模块根据searchNo和根据各请求参数值实际生成的各接口请求数据如表(3)所示:表(3)case1http://example.com/demo?searchNo=0case2http://example.com/demo?searchNo=5case3http://example.com/democase4http://example.com/demo?searchNo=case5http://example.com/demo?searchNo=-1case6http://example.com/demo?searchNo=6case7http://example.com/demo?searchNo=xyz第六步:If-httptest模块分别将各请求数据(case1至case6中的请求数据)发送给所述待测试接口所在的被测系统服务端(SystemUnderTest,SUT),也即服务器;这里的If-httptest模块发送请求数据,为模拟发送。第七步:If-validator模块接收所述服务器返回的针对所述请求数据的响应数据;假设此时针对http://example.com/demo?searchNo=0这一请求数据的响应数据如下:3)响应数据:上述3)响应数据表示的意思是返回的响应中包含itemId、detail、pic这三个响应字段,并且itemId字段的字段值为12323231451,detail字段的字段值为"http://detail.tmall.com/item.htm?id=15179732651&q=iphone",pic这一字段的字段值为:"http://g.ald.alicdn.com/bao/uploaded/TB1Y7t4FVXXXXc0XFXXtKXbFXXX.jpg"。第八步:If-validator模块从接口描述数据库中获取所述待测试接口的接口名称对应的响应数据描述,如上述2)响应数据描述。第九步:If-validator模块确定获取的所述响应数据描述中的响应字段集中的各响应字段分别为:itemId、detail和pic;第十步:If-validator模块根据iftest这一预设的关键词,从获取的所述响应数据描述中确定itemId这一响应字段的字段值应满足约束条件函数为@bizNum(11,11);detail这一响应字段的字段值应满足的约束条件函数为@url('http://detail.tmall.com/item.htm?id=15179732651&q=iphone','all'),该约束条件表示的意思为该detail所在的url应包括服务器的名称、在该服务器中的路径、商品编号和查询参数,该约束条件中的'all'表示所有的协议名、域名、在该服务器中的路径、商品编号和查询参数均要与http://detail.tmall.com/item.htm?id=15179732651&q=iphone中的相匹配,针对本实施例三中的这一例子这里的相匹配是指相同;pic这一响应字段的字段值应 满足约束条件函数为@img('344x228');第十一步:If-validator模块利用第九步中的itemId和@bizNum(11,11)、detail和@url('http://detail.tmall.com/item.htm?id=15179732651&q=iphone','all')、pic和@img('344x228')对上述3)响应数据进行验证,此时可知上述3)响应数据包括itemId、detail和pic这三个响应字段,并且各响应字段的字段值均符合相应的约束条件,因此,获得的验证结果为验证成功。如果服务端返回如下情况1、情况2或情况3,那么验证结果均为失败:情况1:情况2:情况3:情况1中itemId不为11位数,因此,验证结果为验证失败;情况2中detail中给出的服务器的地址为http://detail.taobao.com,而不是http://detail.tmall.com,因此,验证结果为验证失败;情况3中pic为Thisisapicture,这是一串字符串,而不是一个图片链接,因此,验证结果为验证失败;此外,在运行本发明实施例一至实施例三的接口测试方法的过程中或者运行之后,还可将各步骤的产出的数据也作为正在进行接口测试的该待测试接口的接口描述,图3中接口描述数据库的虚线框中的内容即为个步骤产生的数据,下面通过实施例四对这一方案进行说明。实施例四在实施例一至实施例三所述的接口测试方法的基础上,所述接口测试方法还可包括以下步骤1至步骤4中的任一个或多个步骤:步骤1:将生成的针对待测试接口的请求数据作为该待测试接口的接口测试用例;建立该接口测试用例与所述待测试接口的接口名称的关联关系。步骤2:根据所述待测试接口代码,生成所述待测试接口的接口测试脚本;建立生成的所述待测试接口的接口测试脚本与该待测试接口的接口名称的关联关系。步骤3:根据所述验证结果生成针对所述待测试接口的接口测试报告,并建立该接口测试报告与该待测试接口的接口名称的关联关系,所述接口测试报告包括已验证的待测试接口的请求数据、验证结果、验证结果状态和验证结果失败原因分析中的一种或多种,所述验证结果状态包括成功和失败。步骤4:将接收的所述响应数据作为待测试接口的测试数据;建立该接口测试数据与该待测试接口的接口名称的关联关系。需要说明的是,上面以步骤1至步骤4的写法是了方便表述,实际上各步骤之间并不分先后顺序。上述步骤1至步骤4中每个步骤建立关联关系之后添加存储该关联关系至接口描述数据库的步骤时,还可以构成在实施例一至实施例三中任一的接口测试方法基础上的接口描述数据库生成方法。上述步骤1至步骤4的过程可以如图4所示,图4中展示的是一个循环,对某一接口A进行了测试之后,获得了该接口A的完整的接口描述数据(包括接口A的接口请求数据描述、接口响应数据描述、接口测试数据、接口测试用例、接口测试脚本和接口测试报告),后续代码持续集成(CodeContinuousIntegration)时针对该接口A进行测试时,还可以直接利用已获得的该接口A的完整的接口描述数据。也就是说这里的循环指的是后续代码的持续集成中该接口测试方法的循环,这里的代码的持续集成是是一种软件开发实践,当集成 了新的代码或者修改了原有代码后,自动化的进行验证和回归测试,保证集成后的质量。通过本发明实施例四的方案,接口描述数据库中原有请求数据描述和响应数据描述,在每一测试的接口描述在顺利完成一次全面测试后,均可获得该接口的包括接口测试用例、接口测试报告、接口测试数据和接口测试脚本,进一步丰富了接口的接口描述,并且由于这份待测试接口的接口描述还可以用在后续的该接口代码的持续集中,因此激活了待测试接口的接口描述,使得接口描述具备精确性、可维护性、可测试性、可验证性,从而使得项目组成员可以强依赖这份接口说明展开各自后续的工作,解决前后端研发各自脱离对方环境的高效测试,降低前后端沟通成本,提高联调效率,并且可以高效的开发稳定的自动化测试脚本保证接口全生命周期的质量和稳定,进而保证接口质量乃至整个软件系统和产品的质量,提升研发效率,降低研发成本。下面对获得的上述接口测试用例、接口测试报告、接口测试数据和接口测试脚本具体如何在接口持续集成中的使用进行说明:代码的持续集成可分为前端代码持续集成和后端代码持续集成,而代码持续集成的需要两个要素,其一是可执行的脚本,其二是任务调度系统;每一个可执行脚本好比一个可执行的测试用例,测试用例中包括了:测试数据、预期结果(断言验证点)等,当脚本执行后,就可以获得这个用例所对应的测试报告;而任务调度系统,目前业界主流的是hudson平台,作用就是在特定条件下自动触发脚本执行,具体在此就不赘述。目前在此专利的场景中,装置生成了后端代码持续集成中所需要的可执行脚本(junit测试脚本),把此脚本放到一个java的项目工程中,然后在hudson平台上配置后,即可实现代码持续回归测试,然后通过测试报告来为用户提供判断代码持续集成质量的依据;同样此装置中产生的接口测试数据,为前端代码持续集成提供了测试数据,可用于前端代码持续集成或者UI自动化回归测试。图5中给出本申请实施例的方案在具体项目中运用的示例:具体流程描述如下:第一步:前后端共同约定接口描述(这里主要包括接口请求描述和接口响应描述),通过某种方式(目前是第三方接口管理平台)把接口描述记录到接口描述数据库中;第二步:测试介入对接口描述进行测试,并且根据实际情况增加语义标签;上述对接口描述进行测试,其实就是软件工程里所说的“静态测试”。这里主要是测试接口描述的是否完善,是否妥当,是否符合最优实践,是否符合业务惯例和规范,是一个验证的过程。第三步:前端、后端、测试完全解耦的并行工作和自测,测试通过If-Test平台进行测试脚本开发;第四步:通过稳定的可用于持续集成的自动化测试脚本,可以及时的反馈当前接口的生命状态,并且通过模拟真实请求发送获得的服务端真实的返回数据,反哺于接口描述,为进一步拓展功能提供可能(例如:前端代码的持续回归)。实施例五基于与实施例一至实施例四的同一发明构思,本申请实施例五提供一种接口测试装置,其结构示意图如图6所示,包括:请求数据生成单元61、发送单元62、接收单元63、获取单元64和验证单元65,其中:请求数据生成单元61,用于生成针对待测试接口的请求数据;发送单元62,用于将所述请求数据发送给所述待测试接口所在的服务器;接收单元63,用于接收所述服务器返回的针对所述请求数据的响应数据;获取单元64,用于从接口描述数据库中获取所述待测试接口的接口名称对应的响应数据描述,所述接口描述数据库中包括接口名称及其对应的响应数据描述,所述响应数据描述包括正确的响应数据应包括的响应字段集以及该响应字段集中的每一响应字段的字段值应满足的约束条件;验证单元65,用于利用获取的所述响应数据描述中的响应字段集及该响应字段集中的每一响应字段的字段值应满足的约束条件对接收的所述响应数据进行验证,获得验证结果。优选地,所述接口描述数据库中的描述符合设定语法格式,该设定语法格式包含由关键词及其对应的语义函数构成的语义标签,响应字段的字段值应满足的约束条件由预设的关键词及其对应的约束条件函数构成的语义标签表示;所述验证单元65,具体用于确定获取的所述响应数据描述中的响应字段集中包括的各响应字段;针对确定的每一响应字段,根据所述预设的关键词,从获取的所述响应数据描述中确定该响应字段的字段值对应的约束条件函数;判断接收的所述响应数据中包含的全部字段构成的集合是否与获取的所述数据响应描述中的响应字段集构成的集合相等,以及各响应字段的字段值是否均满足对应的约束条件函数;若接收的所述响应数据中包含的全部字段构成的集合与获取的所述数据响应描述中的响应字段集构成的集合相等,且各响应字段的字段值均满足对应的约束条件函数,则确定验证成功;反之,则确定验证失败。优选地,所述接口描述数据库中还包括接口名称及其对应的请求类型和请求数据描述,所述请求数据描述包括正确的请求数据应包括的请求字段集以及该请求字段集中的每一请求字段应满足的约束条件;所述请求数据生成单元61,具体用于从接口描述数据库中获取所述待测试接口的接口名称对应请求数据描述和请求类型;根据获取的所述请求数据描述中包含的各请求字段字段及每一请求字段的字段值应满足的约束条件,生成请求类型为获取的所述请求类型的针对所述待测试接口的请求数据。优选地,所述接口描述数据库中的描述符合设定语法格式,该设定语法格式包含由关键词及其对应的语义函数构成的语义标签,请求字段的字段值应满足的约束条件由预设的关键词及对应的约束条件函数构成的语义标签表示;所述请求数据生成单元61,包括:约束条件函数获取子单元和请求数据生成子单元;所述约束条件函数获取子单元,用于根据所述预设的关键词,从获取的所述请求数据描述中确定每一请求字段的字段值对应的约束条件函数;所述请求数据生成子单元,用于根据每一请求字段的字段值对应的约束条件函数生成请求类型为获取的所述请求类型的针对所述待测试接口的请求数据。优选地,所述请求数据生成子单元,具体用于根据每一请求字段的字段值对应的约束条件函数生成请求参数值,该请求参数值为业务相关的参数值或者业务无关的参数值;利用各请求字段和相应的请求参数值生成请求类型为获取的所述请求类型的针对所述待测试接口的请求数据。优选地,所述装置还包括:第一关联关系建立单元66,用于将生成的针对待测试接口的请求数据作为该待测试接口的接口测试用例;建立该接口测试用例与所述待测试接口的接口名称的关联关系。优选地,所述发送单元62,具体用于根据所述请求数据,生成所述待测试接口的接口测试代码;通过运行生成的所述接口测试代码实现将所述数据发送给所述待测试接口;优选地,所述装置还包括:第二关联关系建立单元67,用于根据所述待测试接口代码,生成所述待测试接口的接口测试脚本;建立生成的所述待测试接口的接口测试脚本与该待测试接口的接口名称的关联关系。优选地,所述装置还包括:第三关联关系建立单元68,将接收的所述响应数据作为待测试接口的测试数据;建立该接口测试数据与该待测试接口的接口名称的关联关系。优选地,所述装置还包括:第四关联关系建立单元69,根据所述验证结果生成针对所述待测试接口的接口测试报告,并建立该接口测试报告与该待测试接口的接口名称的关联关 系,所述接口测试报告包括已验证的待测试接口的请求数据、验证结果、验证结果状态和验证结果失败原因分析中的一种或多种,所述验证结果状态包括成功和失败。本申请实施例五中各单元的具体实现过程可参考实施例一至实施例四中接口测试方法部分的描述,这里不再赘述。实施例六基于与实施例一至实施例四的同一发明构思,本申请实施例六基于实施例五中的接口测试装置提供一种接口描述数据库生成装置,其结构示意图如图7所示,包括:第一关联关系建立单元71、第二关联关系建立单元72、第三关联关系建立单元73、第四关联关系建立单元74和存储单元75;其中:第一关联关系建立单元71,用于根据待测试接口代码,生成所述待测试接口的接口测试脚本;建立生成的所述待测试接口的接口测试脚本与该待测试接口的接口名称的关联关系,所述待测试接口代码是根据所述请求数据生成的;第二关联关系建立单元72,用于将生成针对待测试接口的请求数据作为该待测试接口的接口测试用例,建立该接口测试用例与所述待测试接口的接口名称的关联关系;第三关联关系建立单元73,用于将接收的所述响应数据作为待测试接口的测试数据,建立该接口测试数据与该待测试接口的接口名称的关联关系;第四关联关系建立单元74,用于根据所述验证结果生成针对所述待测试接口的接口测试报告,建立该接口测试报告与该待测试接口的接口名称的关联关系,所述接口测试报告包括已验证的待测试接口的请求数据、验证结果、验证结果状态和验证结果失败原因分析中的一种或多种,所述验证结果状态包括成功和失败;存储单元75,用于将所述待测试接口的接口测试脚本与该待测试接口的接口名称的关联关系、接口测试用例与所述待测试接口的接口名称的关联关系、 接口测试报告与该待测试接口的接口名称的关联关系和待测试接口的接口名称的关联关系存储在接口描述数据库中。本申请实施例六中各单元的具体实现过程可参考实施例一至实施例四中接口测试方法部分的描述,这里不再赘述。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明实施例可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式实现。基于这样的理解,本发明实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域技术人员可以理解实施例中终端中的模块可以按照实施例描述进行分布于实施例的终端中,也可以进行相应变化位于不同于本实施例的一个或多个终端中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1