CN109474488B - 接口测试方法、装置及计算机设备 - Google Patents
接口测试方法、装置及计算机设备 Download PDFInfo
- Publication number
- CN109474488B CN109474488B CN201811283411.0A CN201811283411A CN109474488B CN 109474488 B CN109474488 B CN 109474488B CN 201811283411 A CN201811283411 A CN 201811283411A CN 109474488 B CN109474488 B CN 109474488B
- Authority
- CN
- China
- Prior art keywords
- test
- message
- data
- interface
- test case
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/50—Testing arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种接口测试方法、装置及计算机设备,本实施例设置测试案例集,并在其测试脚本文件中记录各测试案例的测试数据,在执行一个测试案例进行接口测试时,能够直接从测试脚本文件中读取接口测试所需的字段和测试数据,并自动生成测试报文,不需要测试人员按照严格报文要求手动编写完整的测试报文,降低了编写错误率,提高了编写效率;且能够利用预存的相应测试案例的预期返回报文数据,对返回报文内容进行自动校验,也不需要测试人员人工检查返回报文,提高了测试效率及准确性。另外,本实施例要求测试人员无需掌握对接口测试工具的使用,能够知道测试脚本文件所属格式软件的使用即可,降低了对测试人员的培训成本。
Description
技术领域
本发明涉及测试技术领域,更具体地说是涉及一种接口测试方法、装置及计算机设备。
背景技术
接口测试是测试系统组件接口的一种测试,主要用于检测外部系统与系统之间及内部各个子系统之间的交互点,重点检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
在实际应用中,由于测试项目前后端调用主要是基于http协议的接口,目前测试接口时主要是依赖测试工具模拟http请求的发送与接收,对测试人员的技能要求较高,且需要针对每一个待测接口的不同测试组合,分别编写所需完整的测试脚本,编写成本高,错误率高,影响了测试效率及准确性,且后期维护也比较麻烦。
发明内容
有鉴于此,本发明提供了一种接口测试方法、装置及计算机设备,解决了现有接口测试需要为各测试组合,编写完整测试脚本,错误率和编写成本高,测试效率低的技术问题。
为了解决上述技术问题,本发明提供了以下技术方案:
本发明实施例提供了一种接口测试方法,所述方法包括:
从待测接口的测试案例对应的测试脚本文件中,读取发送报文字段及所述测试案例的测试数据;
按照报文生成规则,将所述发送报文字段与所述测试数据组合生成测试报文,并将所述测试报文发送至服务器;
接收所述服务器反馈的与所述测试报文对应的返回报文,并对所述返回报文进行解析,得到待校验报文数据;
利用预存的所述测试案例的预期返回报文数据,对所述待校验报文数据进行校验,得到测试结果。
可选的,所述方法还包括:
读取测试案例集文件,确定目标测试案例集,所述目标测试案例集包括至少一个待测接口的测试案例和测试脚本文件,所述测试脚本文件记录有相应待测接口进行测试所需的发送报文字段,及各测试案例对应的测试数据和期望返回报文数据;
读取所述目标测试案例集包含的待测接口对应多个测试案例;
按照所述多个测试案例的存储顺序,执行所述多个测试案例。
可选的,所述方法还包括:
检测所述测试结果存在异常信息,抛出所述异常信息,以继续执行下一个测试案例。
可选的,在所述得到测试结果之后,所述方法还包括:
删除数据库中本次执行测试案例进行接口测试产生的新数据。
可选的,所述测试案例集文件和所述测试脚本文件均为表格文件,所述发送报文字段及各测试案例对应的测试数据记录于所述测试脚本文件的第一工作表,所述各测试案例对应的期望返回报文数据记录于所述测试脚本文件的第二工作表;
所述测试脚本文件还包括记录所述发送报文的报头信息的第三工作表。
可选的,所述按照报文生成规则,将所述发送报文字段与所述测试数据组合生成测试报文,包括:
将读取的发送报文字段与当前执行的测试案例的测试数据,组装成特定格式的测试报文,且所述测试报文与所述返回报文的报文格式相同。
可选的,所述利用预存的所述测试案例的预期返回报文数据,对所述待校验报文数据进行校验,得到测试结果,包括:
从所述测试脚本文件中,读取所述测试案例对应的预期返回报文的字段及期望返回值;
将所述待校验报文数据与所述预期返回报文的字段及期望返回值进行比对,得到测试结果。
可选的,所述方法还包括:
检测所述测试案例的测试数据存在多次循环嵌套列表;
按照列表数据拆分标志,数据的起始标记及终止标记,读取所述多次循环嵌套列表中的数据作为所述测试案例的测试数据。
本发明实施例还提供了一种接口测试装置,所述装置包括:
第一数据读取模块,用于从待测接口的测试案例对应的测试脚本文件中,读取发送报文字段及所述测试案例的测试数据;
报文生成模块,用于按照报文生成规则,将所述发送报文字段与所述测试数据组合生成测试报文;
报文发送模块,用于将所述测试报文发送至服务器;
报文解析模块,用于接收所述服务器反馈的与所述测试报文对应的返回报文,并对所述返回报文进行解析,得到待校验报文数据;
报文校验模块,用于利用预存的所述测试案例的预期返回报文数据,对所述待校验报文数据进行校验,得到测试结果。
本发明实施例还提供了一种计算机设备,所述计算机设备包括:
通信接口;
存储器,用于存储实现如上所述的接口测试方法的程序;
处理器,用于加载并执行所述存储器存储的程序,所述程序用于:
从待测接口的测试案例对应的测试脚本文件中,读取发送报文字段及所述测试案例的测试数据;
按照报文生成规则,将所述发送报文字段与所述测试数据组合生成测试报文,并将所述测试报文发送至服务器;
接收所述服务器反馈的与所述测试报文对应的返回报文,并对所述返回报文进行解析,得到待校验报文数据;
利用预存的所述测试案例的预期返回报文数据,对所述待校验报文数据进行校验,得到测试结果。
由此可见,与现有技术相比,本发明提供一种接口测试方法、装置及计算机设备,本实施例设置测试案例集,并在其测试脚本文件中记录各测试案例的测试数据,在执行一个测试案例进行接口测试时,能够直接从测试脚本文件中读取接口测试所需的字段和测试数据,并按照报文生成规则自动生成测试报文,不需要测试人员按照严格报文要求手动编写完整的测试报文,降低了编写错误率,提高了编写效率;且对于服务器反馈的返回报文,也能够利用预存的相应测试案例的预期返回报文数据进行自动校验,得到测试结果,也不需要测试人员人工检查返回报文,来得到测试结果,提高了测试效率及准确性。另外,本实施例要求测试人员无需掌握对接口测试工具的使用,能够知道测试脚本文件所属格式软件的使用即可,降低了对测试人员的培训成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示出了本发明实施例提供的一种接口测试方法的流程示意图;
图2示出了本发明实施例提供的接口测试工具的文件关系示意图;
图3a示出了本发明实施例提供的一种测试脚本文件的request工作表的示意图;
图3b示出了本发明实施例提供的一种测试脚本文件的headers工作表的示意图;
图3c示出了本发明实施例提供的一种测试脚本文件的response工作表的示意图;
图4示出了本发明实施例提供的另一种接口测试方法的流程示意图;
图5示出了本发明实施例提供的一种接口测试装置的结构示意图;
图6示出了本发明实施例提供的另一种接口测试装置的结构示意图;
图7示出了本发明实施例提供的又一种接口测试装置的结构示意图;
图8示出了本发明实施例提供的一种计算机设备的硬件结构示意图。
具体实施方式
本发明人发现:在目前测试接口时都是依赖如postman、soupUI等测试工具,要求测试人员掌握该测试工具的具体使用方法,在计算机设备安装该测试工具后,才能使用该测试实现接口测试,培训成本较高。
且,由于现有的测试工具创建测试用例后,测试人员手动编写完整的请求报文和返回报文,且对报文格式要求严格,导致在相对复杂的接口中,编写错误率较高,降低了测试接口的准确性及效率。另外,由于编写的每个测试脚本都无法复用,才会导致现有的接口测试时,对同一个待测接口在不同的测试组合,如回归测试、冒烟测试中,分别编写各测试组合对应的测试脚本,使得测试脚本存在冗余情况,导致编写成本较高。
为了改善上述问题,发明人提出接口自动化测试方式,具体通过表格存储接口测试所需的字段及其对应的测试数据,测试人员只需要懂得如何使用办公软件编辑表格文件即可,简化了接口测试操作,降低了对测试人员的培训成本。
且,发明人提出的能够根据表格存储内容自动生成报文,测试人员在编写测试脚本过程中,只需要关注测试数据的维护,不需要严格按照报文格式编写,降低了编写错误率,提高了编写效率,进而提高了接口测试效率和准确性。
此外,发明人还提出设置测试案例集,通过维护测试案例集限定测试脚本执行范围,来提高测试脚本复用率,无需为同一待测接口的不同测试组合,都编写对应的测试脚本,避免了测试脚本冗余问题,且增加了测试执行的灵活性。
为了使本发明的上述目的、特征和优点能够更加明显易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1,为本发明提供的一种接口测试方法的流程示意图,该方法可以在计算机侧实现,且在计算机设备实现本实施例提供的接口测试方法之前,可以先安装或运行本发明提供的接口测试工具,如图1所示,该方法可以包括但并不局限于以下步骤:
步骤S11,读取测试案例集文件,确定目标测试案例集,并依次执行目标测试案例集包含的各测试案例;
在本实施例实际应用中,待计算机设备下载安装接口测试工具后,测试人员可以编写需要进行测试的各待测接口的测试案例,对于任一待测接口来说,为了满足不同测试要求(如不同功能测试要求等),可以编写不同的测试案例,使得同一个待测接口可以对应多个测试案例。
具体的,参照图2所示的接口测试工具运行后,其涉及到的各文件、测试案例及测试脚本的关系。如图2所示,该接口测试工具的运行可以通过可执行文件INTERFACETEST.EXE实现,即测试人员启动该可执行文件,可以进入接口测试工具的测试界面。
需要说明,本实施例开发的接口测试工具并不局限于可执行文件,也可以是安装包文件,此时,计算机设备需要安装该接口测试工具的安装包文件后,才能够运行该接口测试工具,本实施例对该接口测试工具的产品形式不做限定,本文主要以可执行文件形式进行说明。
如上述分析,本实施例可以根据执行需求,将测试案例进行组合成至少一个测试案例集,如TEST_GROUP_1,TEST_GROUP_2等,在接口测试工具运行后,可以通过读取测试案例集文件TEST_GROUPS.XLSX,来确定当前需要执行的测试案例集。
在本实施例中,一个测试案例集通常包括多个测试案例,具体可以包括一个待测接口对应的多个测试案例,也可以包括多个待测接口分别对应的多个测试案例。在进行接口测试期间,可以按照该测试案例集中各测试案例的存储顺序,依次执行该测试案例集包含的多个测试案例。
通常情况下,测试人员确定各待测接口对应的测试案例集后,可以使用Excel文件(如测试案例集文件TEST_GROUPS.XLSX)来记录各测试案例集,因此,在测试人员启动接口测试工具后,可以读取测试案例集文件,来确定需要执行的当前测试案例集,具体实现过程本实施例不做详述。
步骤S12,在执行每一个测试案例时,从该测试案例对应的测试脚本文件中,读取发送报文字段及该测试案例的测试数据;
参照图2,对于每一个测试案例集,以TEST_GROUP_1这个测试案例集为例进行说明,其可以包括用于描述需要执行测试的待测接口的测试案例,其可以由testcases.xlsx这个Excel文件记录,用于实现对待测接口的测试所需的测试脚本(即一个excel格式文件),根据需要,测试案例集中还可以包括记录数据库信息的config.xlsx文件,利用该文件实现数据恢复功能,即使数据库环境恢复至测试执行前,以使得测试脚本的数据能够重复使用,提高测试脚本复用率和可用性。
需要说明,在一个测试案例集中,对于一个待测接口,通常只能有一个测试脚本文件,但一个测试脚本文件可以包括多个测试案例,且这多个测试案例中的发送报文结构和返回报文结构相同。
其中,测试案例文件即testcases.xlsx文件,可以如下表1所示,但并不局限于表1所示的文件内容。
表1测试案例文件
如上文描述的测试案例集包含的内容,在确定需要执行的当前测试案例集后,可以确定该测试案例集中的各测试案例对应的测试脚本文件,以便从该测试脚本文件中读取测试所需的字段及测试数据。
在本实施例中,测试脚本文件可以是Excel格式文件,具体可以利用Excel文件中的不同工作表,来记录不同类型的数据,如记录有发送报文的字段,该测试案例集中各测试案例的测试数据的第一工作表,记录有返回报文的期望字段,以及对应测试案例的期望返回值得第二工作表,还可以包括记录有报文头的第三工作表。
可选的,本实施例可以使用Python语言开发接口测试工具,并基于第三方库XlsxWriter和第三方库Requests,实现数据读取处理与发送等操作,具体实现过程可以参照下文相应部分的描述。
基于此,本实施例可以将第一工作表记为request,将第二工作表记为response,将第三工作表记为headers。以检查ehrId这个待测接口的测试脚本文件为例,对其包含的各测试案例对应的测试数据进行说明,具体如下:
参照图3a所示的request这个工作表记录的内容,A列单元记录的可以是发送报文的字段,B列单元可以记录第一个测试案例执行时发送的测试数据,C列单元可以记录第二个测试案例执行时发送的测试数据,依次类推。
由于测试案例集文件可以指定本次需要执行的测试案例集,该测试案例集中各测试案例可以按照测试数据的存储顺序(即工作表中从左到右的各列顺序),依次执行,因此,对于每个执行的测试案例,可以从测试脚本文件中,读取第一列的字段与对应列的测试数据。
如,在执行第二个测试案例时,可以从图3a所示的工作表中,读取A列的字段与C列记录的所有测试数据,本实施例可以将读取的字段和测试数据。对于执行的其他测试案例的测试数据的读取过程类似,本实施例不再一一详述。
具体的,本实施例可以使用第三方库XlsxWriter实现对测试数据的读取,关于基于第三方库XlsxWriter实现数据读取的方法流程本实施例不作详述。
步骤S13,按照报文生成规则,将发送报文字段与测试数据组合生成测试报文;
继上文描述,对于客户端发送至服务器的报文,需要是json格式的报文,因此,本实施例按照上文描述的方式读取到当前执行的测试案例的测试数据后,可以将该测试案例的测试数据与待测接口的发送报文字段组合成字典格式后,以json格式进行发送,也就是说,本实施例得到的测试报文是json这一特定格式。具体可以通过执行“def get_interface_data(file_path,values,split_point)”,实现数据分析与报文组合处理,但并不局限于这种处理方式。
需要说明,在对测试案例的测试数据进行处理时,通常会增加如图3b所示的headers工作表记录的报文头,具体实现方法本发明不做限定。
可选的,对于复杂的待测接口,本实施例还可以增加支持功能,如支持列表循环格式,使用!!startList和!!endList标记列表循环的开始和结束;支持一些其他关键字获取特殊数据,关于该支持功能的实现如下:
在支持列表循环格式功能应用中,本实施例可以使用!!和,分别作为一级列表和二级列表内数据的拆分标志,具体列表如下:
表二:
ehrId | admin |
menuList | !!startList |
id | 0!!0 |
modId | 3!!5 |
modName | 设备管理!!其他事务管理 |
moduleMenuList | !!startList |
id | 0,0!!0,0 |
modId | 31,33!!26,52 |
!!endList | |
sortId | 3!!4 |
!!endList |
在上述表二所示的二级列表循环中,按照上述要求,即!!startList和!!endList之间的内容为一个循环,最终处理组合生成的特定格式的报文内容可以为:
对于复杂待测接口的另一支持功能,即支持一些其他关键字获取特殊数据的实现代码如下:
??time获得当前时间
??getTimeWithPattern获得特定格式的时间
??uuid获得唯一标识
??temp在response中用于保存返回数据,在request中用于向服务器发送待测数据。
??sql执行sql语句获取数据库中存储的数据。
需要说明,由于本实施例使用Python语言开发接口测试工具,利用Python语言的灵活性和丰富的依赖包,能够使接口测试工具支持开发更多特定需求。如上文支持的关键字获取特殊数据的功能,解决了目前大部分接口测试工具,要求发送至服务器的报文内容写成固定值得局限性,如一些数值每次调用接口时动态生成,无法固定长传的情况,扩大了利用本发明提供的接口测试工具实现接口测试的应用范围。
步骤S14,将该测试报文发送至服务器;
本实施例中,可以使用第三方库Requests提供的方法,将该测试报文发送至服务器,具体实现过程不做限定。且由于本实施例是对实现客户端与服务器之间数据交互的接口进行测试,因此,本实施例通过上述方式得到待测接口的测试报文后,可以按照HTTP协议(Hyper Text Transport Protocol,超文本传输协议),将json格式的测试报文发送至服务器。
可选的,本实施例按照上文描述的方式,完成数据读取及组合处理后,可以按照以下方式向服务器发送报文请求,但并不局限于如下指令代码内容:
xcel_value=getdata.get_data_turple(file_path,"request",interface_url,data_col)
param=getdata.get_interface_data(file_path,excel_value[0],excel_value[1],"!!")[0]
r=requests.post(fact_url,data=json.dumps(param),headers=headers)
步骤S15,接收服务器反馈的返回报文,并对该返回报文进行解析,得到待校验报文数据;
其中,该返回报文是服务器响应测试报文得到的报文,其与测试报文的格式相同,都可以是json格式的报文。
在接收到返回报文后,运行在计算机设备的接口测试工具,可以根据该返回报文包含的需要传输的数据信息,如文字、数字等,对接收到的返回报文进行解析处理,得到该返回报文的数据内容,本实施例将该返回报文的内容记为待校验报文数据。结合上文描述的测试报文的生成过程,该待校验报文数据可以是字典格式,本发明对Python语言中,如何将json格式的报文解析得到字典格式的报文的实现方法不做限定。
步骤S16,利用预存的该测试案例的预期返回报文数据,对该待校验报文数据进行校验,得到该测试案例的测试结果;
结合上文对测试案例集中测试脚本文件的描述,该测试脚本文件可以包括request、response及headers三个工作表(即sheet页),按照如图3a所示的request这个工作表记录的发送报文的字段及各测试案例的测试数据,得到测试报文并发送至服务器。
对于测试脚本文件中的response工作表,如图3c所示,A列单元记录的可以是返回报文包含的期望字段,B列单元可以记录第一个测试案例执行时预期的返回值即期望返回值;C列单元可以记录第二个测试案例执行时的期望返回值。
可见,该response工作表记录的内容,可以作为验证接口测试过程中,服务器反馈的返回报文的校验标准,本实施例对这个工作表记录的内容不作限定,并不局限于图3c所示的内容。
因此,本实施例在得到待校验报文数据之后,或者是在确定当前测试案例集之后,可以从该当前测试案例集的测试脚本文件中,读取执行的测试案例对应的预期返回报文字段及期望返回值,将其作为后续返回报文内容的校验标准,具体可以将该测试案例对应的待校验报文数据,与预存的该测试案例的预期返回报文字段和期望返回值进行比对,如字段个数、字段名、字段值等等,本实施例对步骤S16对待校验报文数据的校验实现方法不做详述。
可选的,为了提高接口测试可靠性,在得到当前执行的测试案例的测试结果后,能够顺利执行下一个测试案例,继续进行接口测试,本发明可以检测得到的测试结果是否存在异常信息,如表明系统异常或发送报文错误导致服务器返回错误等错误信息,如果存在该异常信息,本实施例可以抛出异常信息,以防止异常中断接口测试程序,影响后续测试案例的执行。
需要说明,本实施例对异常信息的抛出处理的具体实现方法不做限定。
步骤S17,删除数据库中本次执行测试案例进行接口测试产生的新数据。
在实际应用中,由于某些系统中新增数据后,再次新增数据会报错,使得测试脚本只能执行一次,再次执行时就需要进行维护,非常麻烦。为了减少对测试脚本的维护工作量,提出对测试脚本能够重复使用,本实施例可以在执行完一个测试案例,得到测试结果后,删除本次测试在数据库中新增的数据,将数据库环境恢复至测试执行前的状态,以使得接口测试脚本文件的数据始终可用,即下一次执行该测试案例,仍能够适应该测试脚本。
可选的,本实施例可以通过执行SQL(Structured Query Language,结构化查询语言)语句,连接数据库(即存储测试脚本文件的存储设备),删除接口测试执行导致新增的数据,将数据库环境回复至初始状态。本发明对如何通过执行SQL语句,恢复到执行测试之前的状态的实现过程不做详述。
综上,参照图4所示的流程示意图,本实施例从测试脚本文件中读取接口测试所需的字段和测试数据后,直接按照报文生成规则生成测试报文,不需要测试人员按照严格报文要求手动编写完整的测试报文,降低了编写错误率,提高了编写效率;且对于服务器反馈的返回报文,也能够利用预存的相应测试案例的预期返回报文数据进行自动校验,得到测试结果,也不需要测试人员人工检查返回报文,来得到测试结果,提高了测试效率及准确性。
另外,本实施例在得到测试结果后,增加了数据恢复操作,即删除数据库在测试过程中新增的数据,将数据库环境恢复到初始状态,使其能够再次执行该测试案例,实现了测试脚本的高复用度,对于同一待测接口的测试组合,不需要分别编写,能够直接从测试脚本文件中调用所需测试案例的测试数据,避免了测试脚本存在冗余数据,减少了测试脚本维护工作量,降低了编写成本。
可选的,结合上文相应部分分析及图2所示的接口测试工具的组成示意图,对于实现本实施例上述接口测试方法所使用的接口测试工具,本实施例可以直接下载该接口测试工具的可执行文件(即exe执行文件),计算机设备不需要安装该接口测试工具直接执行即可,测试人员无需掌握接口测试工具的使用,只需要会使用办公软件编辑测试案例集文件及测试脚本文件,就能够进行接口测试,降低了对测试人员的培训成本。
参照图5,为本发明实施例提供的一种接口测试装置的结构示意图,该装置可以应用于计算机设备,如电脑等用户计算机设备,如图5所示,该装置可以包括:
第一数据读取模块11,用于从待测接口的测试案例对应的测试脚本文件中,读取发送报文字段及所述测试案例的测试数据;
在本实施例实际应用中,对于一些复杂的待测接口,报文可能存在多次循环嵌套数组、列表等情况,由于本实施例可以是在excel格式文件中进行数据维护,为了保证测试脚本文件的高复用度,可以是excel文件的设计和解析能够同时满足无循环和多次循环等不同情况。
因此,本实施例提供的接口测试工具能够支持列表循环格式,具体可以检测测试案例的测试数据是否存在多次循环嵌套列表,如果存在,可以按照列表数据拆分标志,数据的起始标记及终止标记,读取所述多次循环嵌套列表中的数据作为所述测试案例的测试数据。具体实现过程可以参照上述方法实施例相应部分的描述,本实施例在此不再赘述。
报文生成模块12,用于按照报文生成规则,将所述发送报文字段与所述测试数据组合生成测试报文;
可选的,在本实施例实际应用中,该报文生成模块12具体可以用于将读取的发送报文字段与当前执行的测试案例的测试数据,组装成特定格式的测试报文,且测试报文与所述返回报文的报文格式相同,如json格式报文。
报文发送模块13,用于将该测试报文发送至服务器;
对于json格式的测试报文,本实施例可以按照http协议发送至服务器,具体可以利用接口测试工具的第三方库Requests实现测试报文的发送,具体实现过程本实施例不做详述。
报文解析模块14,用于接收所述服务器反馈的与所述测试报文对应的返回报文,并对所述返回报文进行解析,得到待校验报文数据;
报文校验模块15,用于利用预存的所述测试案例的预期返回报文数据,对所述待校验报文数据进行校验,得到测试结果。
在本实施例中,报文校验模块15可以包括:
第一读取单元,用于从测试脚本文件中,读取测试案例对应的预期返回报文的字段及期望返回值;
比对单元,用于将待校验报文数据与预期返回报文的字段及期望返回值进行比对,得到测试结果。
可选的,如图6所示,本发明提供的接口测试装置还可以包括:
第二数据读取模块16,用于读取测试案例集文件,确定目标测试案例集;
其中,目标测试案例集可以包括至少一个待测接口的测试案例和测试脚本文件,所述测试脚本文件记录有相应待测接口进行测试所需的发送报文字段,及各测试案例对应的测试数据和期望返回报文数据。关于测试案例集文件、测试案例集、测试案例及测试脚本文件的内容及关系,可以参照上文方法实施例相应部分的描述,本实施例不再详述。
在本实施例中,测试案例集文件和所述测试脚本文件均为表格文件(如excel格式文件),发送报文字段及各测试案例对应的测试数据记录于测试脚本文件的第一工作表(如上图3a所示的sheet页),各测试案例对应的期望返回报文数据记录于测试脚本文件的第二工作表(如上图3c所示的sheet页)。另外,测试脚本文件还可以包括记录发送报文的报头信息的第三工作表,如上图3b所示的sheet页,但并不局限于本文上述举例的excel文件内容。
第三数据读取模块17,用于读取目标测试案例集包含的待测接口对应多个测试案例;
执行模块,用于按照该多个测试案例的存储顺序,依次执行多个测试案例。
如上文分析,每执行一个测试案例,可以触发第一数据读取模块11从测试脚本文件中,读取测试所需的数据,具体测试过程可以参照上述实施例的描述,由于每一个测试案例执行所实现的测试步骤类似,本实施例并未对每一个测试案例的具体测试过程进行一一详述。
在本发明一个可选实施例中,如图7所示,上述接口测试装置还可以包括:
异常处理模块18,用于检测测试结果存在异常信息,抛出异常信息,以继续执行下一个测试案例;
数据恢复模块19,用于在得到测试结果后,删除数据库中本次执行测试案例进行接口测试产生的新数据。
可见,本实施例利用预存的当前执行的测试案例的期望数据(如预期返回报文的字段及期望返回值),对服务器反馈的返回报文的内容进行校验,得到测试结果后,还能够进一步对测试结果进行分析,抛出其包含的异常信息,以使得接口测试工具能够顺利执行下一个测试案例,避免因包含异常信息而中断测试;且,在得到测试结果后,会进行善后,即将数据库环境恢复至测试执行前的状态,保证测试脚本文件中的测试数据能够重复使用,提高测试脚本文件复用率和可用性,降低测试脚本维护成本。
上述接口测试装置可以包括处理器和存储器,上述第一数据读取模块、报文生成模块、报文发送模块、报文解析模块、报文校验模块、第二数据读取模块、第三数据读取模块、异常处理模块及数据恢复模块等均可以作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来读取当前执行的测试案例对应的测试脚本文件中,发送报文字段和对应列的测试数据,自动组合生成特定格式的测试报文后,发送至服务器,并利用该测试案例对应的预期返回报文字段和期望返回值,对服务器反馈的返回报文内容进行校验,得到测试结果,无需测试人员编写各测试组合对应的完整的测试脚本文件,降低了编写错误率,提高了测试效率和准确性。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现上述接口测试方法。
本发明实施例提供了一种处理器,该处理器用于运行程序,其中,该程序运行时执行上述接口测试方法的各个步骤,具体实现过程可以参照上述方法实施例相应部分的描述,本实施例不做赘述。
本发明实施例还提供了一种计算机设备,参照图8所示的硬件结构示意图,该计算机设备可以包括:通信接口21、存储器22及处理器23,其中:
通信接口21可以是有线或无线通信接口,如WIFI接口、GPRS通信接口等等,本实施例对该通信接口的类型及结构不作限定。
在本实施例实际应用中,可以利用通信接口21下载用来进行接口测试所需的接口测试工具,即可执行文件,以便运行该可执行文件,实现对各待测接口的测试。
且,在测试过程中,还可以通过通信接口21从存储器22中读取所需的数据,如测试案例的测试数据、报文字段等等,还可以将得到的测试报文发送至服务器,并接收服务器反馈的返回报文。
需要说明,在上述各数据通信过程中,可以根据实际通信需要,确定所需通信接口21的类型,也就是说,上述通信接口21可以包括多种类型的多个接口,具体通信实现方式本实施例不作限定。
存储器22可以用来存储实现上述各实施例提供的接口而此时方法的程序。
在本实施例中,存储器22还可以记录测试人员编写的测试案例,以及由此组合生成的测试案例集文件,还有测试脚本文件等,本实施例对这些数据的存储方式不做限定。
处理器23用来加载并执行存储器存储的程序,以实现接口测试方法的各个步骤,具体实现步骤可以参照上述方法实施例相应部分的描述。
在实际应用中,该计算机设备可以是计算机设备等。
最后,需要说明的是,关于上述各实施例中,诸如第一、第二等之类的关系术语仅仅用来将一个操作或单元与另一个操作或单元区分开来,而不一定要求或者暗示这些单元或操作之间存在任何这种实际的关系或者顺序。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置和计算机设备而言,由于其与实施例公开的方法对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (8)
1.一种接口测试方法,其特征在于,所述方法包括:
从待测接口的测试案例对应的测试脚本文件中,读取发送报文字段及所述测试案例的测试数据;
按照报文生成规则,将所述发送报文字段与所述测试数据组合生成测试报文,并将所述测试报文发送至服务器;
接收所述服务器反馈的与所述测试报文对应的返回报文,并对所述返回报文进行解析,得到待校验报文数据;
利用预存的所述测试案例的预期返回报文数据,对所述待校验报文数据进行校验,得到测试结果;
其中,所述方法还包括:
读取测试案例集文件,确定目标测试案例集,所述目标测试案例集包括至少一个待测接口的测试案例和测试脚本文件,所述测试脚本文件记录有相应待测接口进行测试所需的发送报文字段,及各测试案例对应的测试数据和期望返回报文数据;
读取所述目标测试案例集包含的待测接口对应多个测试案例;
按照所述多个测试案例的存储顺序,执行所述多个测试案例;
其中,所述测试案例集文件和所述测试脚本文件均为表格文件,所述发送报文字段及各测试案例对应的测试数据记录于所述测试脚本文件的第一工作表,所述各测试案例对应的期望返回报文数据记录于所述测试脚本文件的第二工作表;所述测试脚本文件还包括记录所述发送报文的报头信息的第三工作表。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
检测所述测试结果存在异常信息,抛出所述异常信息,以继续执行下一个测试案例。
3.根据权利要求1或2所述的方法,其特征在于,在所述得到测试结果之后,所述方法还包括:
删除数据库中本次执行测试案例进行接口测试产生的新数据。
4.根据权利要求1所述的方法,其特征在于,所述按照报文生成规则,将所述发送报文字段与所述测试数据组合生成测试报文,包括:
将读取的发送报文字段与当前执行的测试案例的测试数据,组装成特定格式的测试报文,且所述测试报文与所述返回报文的报文格式相同。
5.根据权利要求1所述的方法,其特征在于,所述利用预存的所述测试案例的预期返回报文数据,对所述待校验报文数据进行校验,得到测试结果,包括:
从所述测试脚本文件中,读取所述测试案例对应的预期返回报文的字段及期望返回值;
将所述待校验报文数据与所述预期返回报文的字段及期望返回值进行比对,得到测试结果。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
检测所述测试案例的测试数据存在多次循环嵌套列表;
按照列表数据拆分标志,数据的起始标记及终止标记,读取所述多次循环嵌套列表中的数据作为所述测试案例的测试数据。
7.一种接口测试装置,其特征在于,所述装置包括:
第一数据读取模块,用于从待测接口的测试案例对应的测试脚本文件中,读取发送报文字段及所述测试案例的测试数据;
报文生成模块,用于按照报文生成规则,将所述发送报文字段与所述测试数据组合生成测试报文;
报文发送模块,用于将所述测试报文发送至服务器;
报文解析模块,用于接收所述服务器反馈的与所述测试报文对应的返回报文,并对所述返回报文进行解析,得到待校验报文数据;
报文校验模块,用于利用预存的所述测试案例的预期返回报文数据,对所述待校验报文数据进行校验,得到测试结果;
其中,所述装置还包括:
读取测试案例集文件,确定目标测试案例集,所述目标测试案例集包括至少一个待测接口的测试案例和测试脚本文件,所述测试脚本文件记录有相应待测接口进行测试所需的发送报文字段,及各测试案例对应的测试数据和期望返回报文数据;
读取所述目标测试案例集包含的待测接口对应多个测试案例;
按照所述多个测试案例的存储顺序,执行所述多个测试案例;
其中,所述测试案例集文件和所述测试脚本文件均为表格文件,所述发送报文字段及各测试案例对应的测试数据记录于所述测试脚本文件的第一工作表,所述各测试案例对应的期望返回报文数据记录于所述测试脚本文件的第二工作表;所述测试脚本文件还包括记录所述发送报文的报头信息的第三工作表。
8.一种计算机设备,其特征在于,所述计算机设备包括:
通信接口;
存储器,用于存储实现如权利要求1~6任意一项所述的接口测试方法的程序;
处理器,用于加载并执行所述存储器存储的程序,所述程序用于:
从待测接口的测试案例对应的测试脚本文件中,读取发送报文字段及所述测试案例的测试数据;
按照报文生成规则,将所述发送报文字段与所述测试数据组合生成测试报文,并将所述测试报文发送至服务器;
接收所述服务器反馈的与所述测试报文对应的返回报文,并对所述返回报文进行解析,得到待校验报文数据;
利用预存的所述测试案例的预期返回报文数据,对所述待校验报文数据进行校验,得到测试结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811283411.0A CN109474488B (zh) | 2018-10-31 | 2018-10-31 | 接口测试方法、装置及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811283411.0A CN109474488B (zh) | 2018-10-31 | 2018-10-31 | 接口测试方法、装置及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109474488A CN109474488A (zh) | 2019-03-15 |
CN109474488B true CN109474488B (zh) | 2020-10-27 |
Family
ID=65672432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811283411.0A Active CN109474488B (zh) | 2018-10-31 | 2018-10-31 | 接口测试方法、装置及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109474488B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110188036A (zh) * | 2019-05-10 | 2019-08-30 | 深圳前海微众银行股份有限公司 | 一种软件测试方法及装置 |
CN110399303B (zh) * | 2019-07-29 | 2024-01-26 | 中国工商银行股份有限公司 | 用于准备测试数据的方法、数据准备装置和电子设备 |
CN110445860B (zh) * | 2019-08-06 | 2022-08-02 | 深圳市金证科技股份有限公司 | 一种报文发送方法、装置、终端设备及存储介质 |
CN110633214B (zh) * | 2019-09-19 | 2023-12-08 | 中国银行股份有限公司 | 一种内部测试报文的配置方法及装置 |
CN110750452B (zh) * | 2019-09-23 | 2023-08-25 | 苏宁云计算有限公司 | 自动化测试方法及装置 |
CN110955600B (zh) * | 2019-11-27 | 2023-11-10 | 中国银行股份有限公司 | 接口测试方法及装置 |
CN111143221B (zh) * | 2019-12-28 | 2024-01-30 | 中国银行股份有限公司 | 一种测试方法及装置 |
CN111597104B (zh) * | 2020-04-02 | 2022-10-18 | 福建省农村信用社联合社 | 一种多协议适配的接口回归测试方法、系统、设备和介质 |
CN111488279A (zh) * | 2020-04-09 | 2020-08-04 | 吉林亿联银行股份有限公司 | 回归测试方法及装置 |
CN111478969A (zh) * | 2020-04-09 | 2020-07-31 | 吉林亿联银行股份有限公司 | 接口校验方法及装置 |
CN111627171A (zh) * | 2020-04-28 | 2020-09-04 | 深圳壹账通智能科技有限公司 | Atmp系统的测试报文转换方法、装置、设备及介质 |
CN111694749A (zh) * | 2020-06-24 | 2020-09-22 | 深圳壹账通智能科技有限公司 | 接口自动测试方法、装置、计算机设备及可读存储介质 |
CN111782452A (zh) * | 2020-07-03 | 2020-10-16 | 携程商旅信息服务(上海)有限公司 | 接口对比测试的方法、系统、设备和介质 |
CN111813680B (zh) * | 2020-07-13 | 2023-05-26 | 建信金融科技有限责任公司 | 测试脚本的生成方法、装置、计算机设备和存储介质 |
CN112612665A (zh) * | 2020-12-26 | 2021-04-06 | 中国农业银行股份有限公司 | 一种金融智能设备的测试方法、装置及设备 |
CN112597033B (zh) * | 2020-12-26 | 2024-08-06 | 中国农业银行股份有限公司 | 一种自动化接口测试方法及装置 |
CN112685325B (zh) * | 2021-01-22 | 2023-07-28 | 中信银行股份有限公司 | 一种etl软件研发测试管理方法及系统 |
CN112905459B (zh) * | 2021-02-08 | 2024-05-03 | 中国工商银行股份有限公司 | 服务接口测试方法、装置、电子设备及存储介质 |
CN113542416B (zh) * | 2021-07-16 | 2022-10-21 | 中国银行股份有限公司 | 一种报文收发方法和装置 |
CN115114176A (zh) * | 2022-08-30 | 2022-09-27 | 云账户技术(天津)有限公司 | 用于自动化测试结果的断言方法、装置、介质、设备及程序 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105373469A (zh) * | 2014-08-25 | 2016-03-02 | 广东金赋信息科技有限公司 | 一种基于接口的软件自动化测试方法 |
CN105490881A (zh) * | 2015-12-09 | 2016-04-13 | 北京交控科技股份有限公司 | 一种可配置的数据接口测试方法及系统 |
CN106933745A (zh) * | 2017-03-30 | 2017-07-07 | 携程计算机技术(上海)有限公司 | Web接口自动化测试方法和系统 |
CN107844421A (zh) * | 2017-10-31 | 2018-03-27 | 平安科技(深圳)有限公司 | 接口测试方法、装置、计算机设备和存储介质 |
-
2018
- 2018-10-31 CN CN201811283411.0A patent/CN109474488B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105373469A (zh) * | 2014-08-25 | 2016-03-02 | 广东金赋信息科技有限公司 | 一种基于接口的软件自动化测试方法 |
CN105490881A (zh) * | 2015-12-09 | 2016-04-13 | 北京交控科技股份有限公司 | 一种可配置的数据接口测试方法及系统 |
CN106933745A (zh) * | 2017-03-30 | 2017-07-07 | 携程计算机技术(上海)有限公司 | Web接口自动化测试方法和系统 |
CN107844421A (zh) * | 2017-10-31 | 2018-03-27 | 平安科技(深圳)有限公司 | 接口测试方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109474488A (zh) | 2019-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109474488B (zh) | 接口测试方法、装置及计算机设备 | |
US8782609B2 (en) | Test failure bucketing | |
US20080313602A1 (en) | Bounded program failure analysis and correction | |
CN111723313A (zh) | 页面跳转的处理方法、装置、设备及存储介质 | |
CN104077217A (zh) | 代码文件的编译发布方法及系统 | |
CN109324961B (zh) | 系统自动测试方法、装置、计算机设备及存储介质 | |
CN109471634B (zh) | 源代码格式的检查方法及设备 | |
CN112241360A (zh) | 一种测试用例生成方法、装置、设备及存储介质 | |
CN114201408A (zh) | 回归测试方法、装置、计算机设备及存储介质 | |
CN110297767B (zh) | 测试用例自动执行方法、装置、设备及存储介质 | |
CN107451058B (zh) | 一种软件开发方法和装置 | |
CN112540924A (zh) | 接口自动化测试方法、装置、设备及存储介质 | |
CN114116496A (zh) | 自动化测试方法、装置、设备及介质 | |
CN113742215A (zh) | 一种自动配置和调用测试工具进行测试分析的方法及系统 | |
KR101696694B1 (ko) | 역추적을 이용한 소스 코드 취약점 분석 방법 및 장치 | |
CN113971031A (zh) | 软件包依赖关系检查方法及装置 | |
CN105743725A (zh) | 一种测试应用程序的方法和装置 | |
CN110020550B (zh) | 核对平台的评估方法、装置及设备 | |
CN115599359A (zh) | 一种代码生成方法、装置、设备及介质 | |
CN114816993A (zh) | 一种全链路接口测试方法、系统、介质及电子设备 | |
CN118426689A (zh) | 固态硬盘的数据处理方法、系统及设备 | |
CN110716912B (zh) | 一种sql性能检测方法及服务器 | |
CN110688823A (zh) | Xml文件验证方法及装置 | |
CN111767213B (zh) | 数据库检查点的测试方法、装置、电子设备及存储介质 | |
CN111352631B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |