首页 / 接口自动化测试架构及平台

接口自动化测试架构及平台实质审查 发明

技术领域

[0001] 本发明涉及自动化测试技术领域,尤其涉及一种接口自动化测试架构及平台。

相关背景技术

[0002] 随着软件行业的快速发展,软件更新迭代速度逐渐加快,并且随着敏捷发开的提出,测试岗位工作压力倍增,需要测试人员能够对各类测试快速上手工作,以提升测试效率。
[0003] 相关技术中,自动化测试架构通常利用Json(JavaScript Object Notation,JS对象简谱)储存测试参数,利用Java语言进行逻辑处理校验,因而对Java能力要求较高,但是对于Java能力稍弱的测试人员来说难以规模化编写测试用例,上手难度较高,不利于测试人员学习,因而难以提升测试效率。

具体实施方式

[0023] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
[0024] 下面参考附图描述本发明实施例提出的接口自动化测试架构100及平台。
[0025] 图1为根据本发明一个实施例的接口自动化测试架构100的结构示意图。如图1所示,该架构包括:接口请求层1、接口用例层2和测试用例层3。其中,接口请求层1包括待测试接口11,接口用例层2封装有接口测试模块21,测试用例层3包括至少一个测试用例31,测试用例31包括测试数据311和测试步骤312,测试数据311和测试步骤312基于yaml语言生成,其中,通过执行测试步骤312,调用接口测试模块21能够根据测试数据311对待测试接口11进行测试。
[0026] 具体地,接口请求层1包括至少一个待测试接口11,也就是说,接口请求层1可以包括一个待测试接口11,也可以包括多个待测试接口11,具体根据测试用例31的需求设置,此处不作具体限制,其中,每个待测试接口11对应一个接口测试,接口用例层2封装有至少一个接口测试模块21,接口测试模块21与待测试接口11一一对应,接口测试模块21用于调用相应的待测试接口11以进行接口测试。
[0027] 测试用例层3用于配置测试用例31,可以理解的是,测试用例层3可以包括一个测试用例31,也可以包括多个测试用例31,具体根据测试需求设置,此处不作具体限制,其中,每个测试用例31均包括成对出现的测试数据311和测试步骤312,测试数据311包括执行测试用例31时所需要的各类测试参数,比如,用户名称、用户密码、用户性别等,测试步骤312包括执行该测试用例31所对应的各种逻辑,比如,当测试用例31为新增用户测试时,测试用例31可能包括登录、获取用户列表、增加用户等测试步骤312,进一步地,测试数据311和测试步骤312均基于yaml语言生成,举例来说,以测试用例31为新增用户测试为例进行说明,所需要的参数包括用户名称、用户密码、用户性别等,所需要的测试逻辑包括登录、获取用户列表、增加用户,其中,将用户名称、用户密码、用户性别等通过yaml语言编写成测试数据311,以及将登录、获取用户列表、增加用户通过yaml语言编写成测试步骤312,在运行测试用例31时,比如在运行新增用户测试时,按照测试逻辑执行基于yaml语言编写的登录、获取用户列表、增加用户步骤,并调用相应的接口测试模块21,其中,接口测试模块21包括登录测试模块、获取用户列表测试模块、增加用户测试模块,待测试接口11对应包括登陆待测试接口11、获取用户列表待测试接口11、增加用户待测试接口11,当运行登录步骤时,调用登录测试模块,并从测试用例层3获取登录所需要的测试数据311,比如获取用户名称和用户密码,根据获取的用户名称和用户密码在登陆待测试接口11进行登陆测试,反馈登陆测试结果,如果登陆失败,则说明测试失败,如果登陆成功,则执行获取用户列表步骤,根据测试流程依次进行获取用户列表、增加用户等步骤,测试流程与上述登录步骤的测试流程类似,此处不再具体赘述。在整个测试过程,测试用例层3中的测试数据311和测试步骤312均基于yaml语言编写,相对应Java语言,yaml语言逻辑编写较为简单,学习难度较低,利于测试人员学习,能使得测试人员快速上手编写测试用例31,大大提高了测试效率。
[0028] 根据本发明实施例的接口自动化测试架构100,将架构分为接口请求层1、接口用例层2和测试用例层3,接口请求层1包括待测试接口11,接口用例层2封装有接口测试模块21,在测试用例层3基于yaml语言编写测试用例31中的测试数据311和测试步骤312,在运行测试用例31时,执行测试用例31中基于yaml语言编写的测试步骤312,调用接口测试模块
21,并根据基于yaml语言编写的测试数据311对待测试接口11进行测试。由此,利用yaml语言实现了测试步骤312和测试数据311的编写,yaml语言逻辑编写较为简单,相对于Java语言要求稍低,利于测试人员学习,能够使得测试人员快速上手编写测试用例31,从而大大提高了测试效率。
[0029] 在一些实施例中,测试数据311存储于第一yaml文件中,测试步骤312存储于第二yaml文件中,其中,当同一个测试步骤312包括多组测试数据311时,多组测试数据311位于同一个第一yaml文件中。
[0030] 具体地,在基于yaml语言生成测试数据311和测试步骤312时,分别将测试数据311和测试步骤312存储于两个yaml文件中,即将测试数据311存储于第一yaml文件,将测试步骤312存储于第二yaml文件,将测试数据311与测试步骤312的分开存储,便于测试数据311以及测试步骤312的各种增加删减,比如,当需要修改测试数据311时,直接在第一yaml文件修改相应的测试数据311,修改后的测试数据311可以从第一yaml文件直接调用,能够满足不同的测试需求,类似的,当需要修改测试步骤312以实现其它测试用例31时,直接在第二yaml文件修改相应的测试步骤312,从而更加便于自动化测试的编码和调试。
[0031] 进一步地,当同一个测试步骤312包括多组测试数据311,将多组测试数据311存储于同一个第一yaml文件,举例来说,在进行登录测试时,登陆测试需要调用多组用户名称和用户密码,则可以将多组用户名称和用户密码存储于同一个第一yaml文件,由此,不仅便于测试数据311的调用,而且还便于数据的分类与修改,大大提高了自动化测试过程中的编码和调试效率。
[0032] 在一些实施例中,至少一个测试用例31包括一级测试用例和二级测试用例,一级测试用例能够调用二级测试用例。
[0033] 具体地,在测试用例层3配置测试用例31时,测试用例31根据调用关系可以分为一级测试用例和二级测试用例,二级测试用例可以被复用,通过一级测试用例调用二级测试用例以满足不同的测试需求。举例来说,当需要进行删除用户测试时,删除用户测试所对应的测试步骤312包括登录、获取用户列表、增加用户、校验、删除用户,其中,测试步骤312中的登录、获取用户列表、增加用户为上述的新增用户测试用例31,因此在配置删除用户测试用例31时,可以将新增用户测试作为二级测试用例,在调用新增用户测试用例31的基础上稍作改动,增加校验和删除用户步骤,即可形成删除用户测试(一级测试用例)。
[0034] 由此,将测试用例31分为一级测试用例和二级测试用例,不仅可以实现二级测试用例的单独测试,而且还可以通过复用二级测试用例,实现一级测试用例的测试,从而大大增强了测试用例31的复用率,减少了测试用例31的编写,进一步地提高了测试效率。
[0035] 在一些实施例中,如图2所示,架构还包括:测试触发层4,测试触发层4包括测试触发模块41,测试触发模块41包括测试标记;其中,测试触发模块41根据测试标记调用同一项目的多个测试用例31,其中,同一项目的多个测试用例31具有相同的测试标记。
[0036] 具体地,在进行项目测试时,通常一个项目可以包括多个测试用例31,为了获取较好的测试结果,需要多个测试用例31统一进行测试,但是目前多个测试用例31统一调试较为困难,基于此,在本申请中,在接口自动化测试架构100中增加测试触发层4,测试触发层4包括测试触发模块41,测试触发模块41用于触发调试同一项目中的多个测试用例31,其中,测试触发模块41针对某个项目预存有测试标记,且同一项目的多个测试用例31具有相同的测试标记,当测试触发模块41预存的测试标记与同一项目的多个测试用例31中的测试标记相同时,测试触发模块41根据测试标记调用同一项目的多个测试用例31统一进行测试。
[0037] 由此,通过在测试触发层4以及同一项目下的多个测试用例31中设置相同的测试标记,能够在测试触发层4的调用下,使得同一项目下的多个测试用例31统一执行、统一调试,从而使得自动化测试更加顺畅,有利于提高测试效率。
[0038] 在一些实施例中,接口测试模块21基于yaml语言生成,并存储于第三yaml文件中。
[0039] 具体地,接口测试模块21用于调用相应的待测试接口11以进行接口测试,接口模块也可以基于yaml语言生成,继续以测试用例31为新增用户测试为例进行说明,当进行登陆步骤时,调用登录测试模块,登陆测试模块基于yaml语言生成,包括如何调用接口请求层1中的登陆待测试接口11,通过yaml语言编写接口测试模块21,进一步降低了自动化测试架构中Java语言的代码率,从而进一步地降低了测试用例31编写难度,便于测试人员快速上手。
[0040] 进一步地,将基于yaml语言生成的接口测试模块21存储于第三yaml文件,从而便于接口测试模块21代码的各种修改,当需要修改接口测试模块21代码以实现其它接口测试时,直接在第三yaml文件修改相应的测试代码即可,从而更加便于自动化测试的编码和调试。
[0041] 需要说明的是,对于同一类接口测试模块21,只是测试逻辑稍有改变,可以将同一类的多个接口测试模块21存储于同一第三yaml文件中,需要注意备注清楚,以防事后查看混淆。
[0042] 在一些实施例中,测试数据311包括一级测试数据和二级测试数据,一级测试数据位于测试用例层3,二级测试数据位于接口用例层2,其中,一级测试数据的重要程度大于二级测试的重要程度。
[0043] 具体地,测试用例31的测试数据311基于重要程度可以划分为一级测试数据和二级测试数据,其中,一级测试数据的重要程度大于二级测试数据,并将一级测试数据存储于测试用例层3,将二级测试数据存储于接口用例层2。需要说明的是,测试数据311的重要程度根据具体测试用例31进行划分,以新增用户测试用例31为例进行说明,所需要的测试数据311可能包括用户名称、用户密码、用户性别、用户地址、年收入、是否婚配等,其中,用户名称、用户密码、用户性别为新增用户测试用例31中的基础数据,是进行新增用户测试时必须使用的测试数据311,因此将用户名称、用户密码、用户性别划分为一级测试数据并存储于测试用例层3,而用户地址、年收入、是否婚配可能是在执行新增用户测试用例31中的某个测试步骤312时才会使用,比如在运行获取用户列表步骤时才会调用用户地址、年收入、是否婚配等测试数据311,因此将用户地址、年收入、是否婚配划分为二级测试数据并存储于接口用例层2,从而可以在调用接口用例层2时直接从接口用例层2获取测试数据311。
[0044] 由此,根据测试数据311的重要程度划分一级测试数据和二级测试数据,并将重要程度较大的一级测试数据存储于测试用例层3,以及将重要程度较小的二级测试数据存储于接口用例层2,不仅可以实现重要测试数据311的共用,而且还可以避免所有数据均从测试用例层3传递,有利于提高测试数据311的调用效率,进而有利于提高测试效率。
[0045] 在一些实施例中,当二级测试数据的数据量小于预设数据量时,二级测试数据位于接口测试模块21中;当二级测试数据的数据量大于或等于预设数据量时,二级测试数据存储于第四yaml文件中,其中,二级测试数据基于yaml语言生成。
[0046] 具体地,在将二级测试数据设于接口用例层2时,根据二级测试数据的数据量采用不同的存储方式,若二级测试数据的数据量小于预设数据量,即所需要的二级测试数据的数据量较小时,将二级测试数据以yaml语言的形式写进接口测试模块21,在接口测试模块21运行时直接调用写入的二级测试数据,从而进一步地提高了测试调用效率;若二级测试数据的数据量大于或等于预设数据量,即所需要的二级测试数据的数据量较大时,将二级测试数据以yaml语言的形式存储于第四yaml文件中,即在接口测试模块21运行时从第四yaml文件中调用相应的测试数据311,从而便于测试数据311的修改调整,进而便于自动化测试的编码和调试。
[0047] 在一些实施例中,如图3所示,架构还包括:接口判断层5,接口判断层5封装有接口判断模块51,其中,通过接口测试模块21,调用接口判断模块51能够对测试数据311进行判断,并基于判断结果和测试数据311对待测试接口11进行测试。
[0048] 具体地,在执行测试用例31时,如果待测试接口11无需判断,则调用接口测试模块21根据测试数据311对待测试接口11进行测试,如果待测试接口11需要判断,则在接口自动化测试架构100中增加接口判断层5,接口判断层5封装有接口判断模块51,调用接口判断模块51对测试数据311进行判断,根据判断结果以及测试数据311对相应的待测试结构进行测试。
[0049] 作为一个具体示例,以测试用例31为网页购物测试为例进行说明,网页购物测试用例31包括登录、查询商品、付款等步骤,在进行商品查询时,需要判断用户是否为首次使用,若判断用户为首次使用,则根据测试数据311对首次使用所对应的待测试接口11进行测试,比如,跳转为购物指引界面进行测试,若判断用户为非首次使用,则根据测试数据311对非首次使用所对应的待测试接口11进行测试,比如,直接进行搜索界面进行测试。
[0050] 由此,通过设置接口判断层5,能够根据测试用例31的具体需求进行自动化判断测试,扩展了本接口自动化测试架构100的应用场景。
[0051] 在一些实施例中,接口判断模块51基于java语言生成。也就是说,接口判断模块51通常基于java语言预先编写生成,从而能够直接复用接口判断模块51,减少了代码编写量,降低了编写难度。
[0052] 需要说明的是,接口自动化测试架构100还包括测试环境切换层,通过配置多套测试环境,可以在测试中实现不同测试环境的切换,比如在开发环境调试测试用例31时,直接切换环境参数就可以在测试环境进行用例测试,有利于提高测试效率。
[0053] 图4为根据本发明一个实施例的接口自动化测试平台1000的示意性框图,如图4所示,接口自动化测试平台1000包括上述的接口自动化测试架构100。
[0054] 根据本发明实施例的接口自动化测试平台1000,通过上述的接口自动化测试架构100法,将架构分为接口请求层1、接口用例层2和测试用例层3,接口请求层1包括待测试接口11,接口用例层2封装有接口测试模块21,在测试用例层3基于yaml语言编写测试用例31中的测试数据311和测试步骤312,在运行测试用例31时,执行测试用例31中基于yaml语言编写的测试步骤312,调用接口测试模块21,并根据基于yaml语言编写的测试数据311对待测试接口11进行测试。由此,利用yaml语言实现了测试步骤312和测试数据311的编写,yaml语言逻辑编写较为简单,相对于Java语言要求稍低,利于测试人员学习,能够使得测试人员快速上手编写测试用例31,从而大大提高了测试效率。
[0055] 需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0056] 应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0057] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0058] 此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0059] 在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
[0060] 尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页 第1页 第2页 第3页