WO2022179363A1 - 一种应用程序接口api测试方法以及装置 - Google Patents
一种应用程序接口api测试方法以及装置 Download PDFInfo
- Publication number
- WO2022179363A1 WO2022179363A1 PCT/CN2022/073096 CN2022073096W WO2022179363A1 WO 2022179363 A1 WO2022179363 A1 WO 2022179363A1 CN 2022073096 W CN2022073096 W CN 2022073096W WO 2022179363 A1 WO2022179363 A1 WO 2022179363A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- api
- test
- test case
- case set
- request
- Prior art date
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 976
- 238000000034 method Methods 0.000 claims abstract description 153
- 230000004044 response Effects 0.000 claims abstract description 145
- 230000008569 process Effects 0.000 claims abstract description 76
- 238000010586 diagram Methods 0.000 claims abstract description 70
- 238000004458 analytical method Methods 0.000 claims description 13
- 238000003860 storage Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 7
- 230000007704 transition Effects 0.000 description 34
- SPBWHPXCWJLQRU-FITJORAGSA-N 4-amino-8-[(2r,3r,4s,5r)-3,4-dihydroxy-5-(hydroxymethyl)oxolan-2-yl]-5-oxopyrido[2,3-d]pyrimidine-6-carboxamide Chemical compound C12=NC=NC(N)=C2C(=O)C(C(=O)N)=CN1[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O SPBWHPXCWJLQRU-FITJORAGSA-N 0.000 description 18
- 102100021677 Baculoviral IAP repeat-containing protein 2 Human genes 0.000 description 18
- 101000896157 Homo sapiens Baculoviral IAP repeat-containing protein 2 Proteins 0.000 description 18
- 102100021662 Baculoviral IAP repeat-containing protein 3 Human genes 0.000 description 16
- 101000896224 Homo sapiens Baculoviral IAP repeat-containing protein 3 Proteins 0.000 description 16
- 239000008186 active pharmaceutical agent Substances 0.000 description 16
- 102100021663 Baculoviral IAP repeat-containing protein 5 Human genes 0.000 description 14
- 101000896234 Homo sapiens Baculoviral IAP repeat-containing protein 5 Proteins 0.000 description 14
- 238000004891 communication Methods 0.000 description 14
- 102100037024 E3 ubiquitin-protein ligase XIAP Human genes 0.000 description 11
- 101000804865 Homo sapiens E3 ubiquitin-protein ligase XIAP Proteins 0.000 description 11
- 230000006870 function Effects 0.000 description 11
- 238000012986 modification Methods 0.000 description 9
- 230000004048 modification Effects 0.000 description 9
- 238000009826 distribution Methods 0.000 description 7
- 239000000523 sample Substances 0.000 description 7
- 230000002159 abnormal effect Effects 0.000 description 6
- 235000019580 granularity Nutrition 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000004140 cleaning Methods 0.000 description 3
- 230000002068 genetic effect Effects 0.000 description 3
- 230000035772 mutation Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000001364 causal effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000013100 final test Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000003471 mutagenic agent Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
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/3664—Environments for testing or debugging software
-
- 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
-
- 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/3696—Methods or tools to render software testable
-
- 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/3676—Test management for coverage analysis
Abstract
一种应用程序接口API测试方法以及装置,在申请中,API测试装置先获取用户传输的API文件,解析API文件,生成API操作关系图和测试先知;API测试装置根据API操作关系图生成第一测试用例集合,触发服务节点执行该第一测试用例集合中的测试用例,获取执行第一测试用例集合中测试用例的过程中所发起的API请求和对应的API响应。向用户提供执行第一测试用例集合中的测试用例的过程中所发起的API请求和API响应与测试先知的匹配情况。从测试用例生成、触发执行测试用例、以及测试结果的提供,由API测试装置自行完成的,无须人为参与,能够高效的完成API测试过程。
Description
相关申请的交叉引用
本申请要求在2021年02月26日提交中国专利局、申请号为202110220017.8、申请名称为“一种应用程序接口API测试方法以及装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
本申请涉及通信技术领域,尤其涉及一种应用程序接口API测试方法以及装置。
在软件架构向云化、服务化方向演进的浪潮之下,应用程序接口(application programming interface,API)逐渐成为软件主要的功能入口,随着API的广泛应用,API的性能优劣会影响到软件的运行,为了能够及时发现API的缺陷需要对API进行测试。
API测试又叫接口测试,其测试对象是API,目的是验证API是否满足功能、性能、可靠性、安全等要求。
目前API测试方法效果较差,且自动化水平有限。
发明内容
本申请提供一种应用程序接口API测试方法以及装置,用以提高API测试效率,实现自动化API测试。
第一方面,本申请实施例提供了一种应用程序接口API测试方法,该方法可以由API测试装置执行,在该方法中,API测试装置可以先获取用户传输的API文件,例如,用户可以直接操作该API测试装置,向API测试装置上传该API文件。又例如,用户可以通过部署在用户侧的客户端向API测试装置发送该API文件。API文件可以为API定义文档,也可以为API流量数据,还可以既包括API定义文档,又包括API流量数据。其中,API定义文档包括API的描述信息,API流量数据包括调用API时的API请求以及API请求对应的API响应。
API测试装置在获取该API文件之后,可以解析API文件,生成API操作关系图和测试先知,API操作关系图用于描述API操作的依赖关系,测试先知为调用API时API请求以及对应的API响应的预测规律;之后,API测试装置可以根据API操作关系图生成第一测试用例集合,该第一测试用例集合中包括至少一个测试用例。之后,API测试装置可以向服务节点发送该第一测试用例集合中的测试用例,指示服务节点执行该测试用例,并获取服务节点在执行第一测试用例集合中测试用例的过程中所发起的API请求和对应的API响应。在获取了该服务节点在执行第一测试用例集合中测试用例的过程中所发起的API请求和对应的API响应后,API测试装置可以对该服务节点在执行第一测试用例集合中测试用例的过程中所发起的API请求和API响应进行分析,确定该服务节点在执行第一测试用例集合中测试用例的过程中所发起的API请求和API响应与测试先知的匹配情况,还可以向用户提供测试报告,测试报告包括执行第一测试用例集合中的测试用例的过程中所发起的API请求和API响应与测试先知的匹配情况。可选的,该测试报告还包括第一测试用例 集合。
通过上述方法,从测试用例生成、触发执行测试用例、以及展示测试报告,整个过程都是由API测试装置自行完成的,无须人为参与,能够高效的完成API测试过程。通过向用户提供测试报告,能够使得用户及时、方便的了解到API的测试情况,有效的提升了用户体验。
一种可能的实施方式中,API测试装置可以执行多轮迭代,每一轮迭代以上一轮迭代的输出为输入,下面以后续执行的一轮迭代为例进行说明。
API测试装置可以根据测试先知从第一测试用例集合中确定出与测试先知不匹配的目标测试用例,与测试先知不匹配的是指目标测试用例在执行时所发起的API请求和API响应与测试先知不匹配;之后,分析该目标测试用例,从中挖掘新的API操作之间的依赖关系,更新到API操作关系图中。之后再根据更新后的API操作关系图生成第二测试用例集合;触发服务节点执行第二测试用例集合中的测试用例,获取服务节点在执行第二测试用例集合中测试用例的过程中所发起的API请求和API响应。
向用户提供在执行第二测试用例集合中测试用例的过程中所发起的API请求和对应的API响应与所述测试先知的匹配情况。也就是说,向用户提供的测试报告中可以还包括在执行第二测试用例集合中的测试用例的过程中所发起的API请求和API响应与测试先知的匹配情况,还可以包括第二测试用例集合。
从上述过程可知,每一轮迭代中生成的测试用例集合(如第一测试用例集合和第二测试用例集合)中可以确定出与测试先知不匹配的测试用例,根据这种测试用例可以对操作关系图进行更新,更新后的操作关系图可以用于下一轮迭代。如此循环,直至达到预先设定的迭代次数或迭代时间。
通过上述方法,通过多轮迭代,能够挖掘出API操作之间较为丰富的依赖关系,进而可以生成对应的测试用例,以对API进行测试,使得测试过程更加准确,保证了API测试的准确性。
一种可能的实施方式中,当API文件包括API流量数据,API测试装置在解析API文件时,可以生成API操作关系图和参数约束字典,参数约束字典包括API参数的取值范围,也即参数约束字典记录了API的输入参数、输出参数可能的取值,如API请求中的参数。
通过上述方法,API测试装置能够从API流量数据中挖掘中在实际调用API过程中,API参数的可能取值,便于后续生成测试用例,保证测试用例的有效性。
一种可能的实施方式中,第一测试用例集合中测试用例定义的API请求的参数符合参数约束字典。测试用例中会记录API请求的参数数据实例,该参数数据实例记录了API请求中参数的具体取值,该具体取值可以是属于该参数约束字典中记录的取值。
通过上述方法,利用参数约束字典来约束测试用例定义的API请求的参数,能够保证API请求的真实性和有效性,能够尽量保证测试用例在执行过程中不会因为参数取值错误而失败。
一种可能的实施方式中,用户除了传输API文件,还可以向API测试装置发送配置信息,该配置信息用于指示测试用例需遵循的规则,配置信息包括下列信息中的部分或全部:
测试用例的测试场景、API黑名单或白名单、API参数黑名单或白名单、是否提供测试用例的覆盖率信息。
通过上述方法,用户可以自行配置测试用例需遵循的规则,保证生成的测试用例更符 合用户的需求,测试方向也能够接近用户所期的测试方向,这样最终生成的测试报告也更能符合用户需求,保证了用户体验。
一种可能的实施方式中,第一测试用例集合中的测试用例符合配置信息。
一种可能的实施方式中,API测试装置还可以确定第一测试用例集合中的测试用例的覆盖率信息,该测试用例的覆盖率信息描述测试用例对API的覆盖情况;并向用户提供测试用例的覆盖率信息。该测试报告中也可以包括该第一测试用例集合中的测试用例的覆盖率信息。
通过上述方法,测试用例的覆盖率信息能够在一定程度上反映出该测试用例的性能,便于用于了解该测试用例的性能,这样用户可以从中选择测试用例,以生产测试用例脚本,以便于复用。
一种可能的实施方式中,API测试装置还可以执行另一种迭代方式,在这种迭代方式中,API测试装置也可以执行多轮迭代,每一轮迭代以上一轮迭代的输出为输入,下面以后续执行的一轮迭代为例进行说明。
API测试装置可以从所述第一测试用例集合中确定候选测试用例集合,其中,所述候选测试用例集合中的测试用例的覆盖率信息满足预设覆盖率条件;如选择覆盖率信息符合要求范围的测试用例作为候选测试用例集合中的测试用例。之后,基于候选测试用例集合,生成衍生测试用例集合,如利于遗传算法(如交叉变异),生成衍生测试用例集合,之后,触发服务节点执行衍生测试用例集合中的测试用例,获取服务节点在执行衍生测试用例集合中测试用例的过程中所发起的API请求和API响应。
API测试装置可以确定在执行所述衍生测试用例集合中测试用例的过程中所发起的API请求和对应的API响应与所述测试先知的匹配情况,并向用户提供在执行所述衍生测试用例集合中测试用例的过程中所发起的API请求和对应的API响应与测试先知的匹配情况,也就是说,测试报告还包括执行衍生测试用例集合中的测试用例的过程中所发起的API请求和API响应与测试先知的匹配情况,还可以包括衍生测试用例集合。
也就是说,在每一轮迭代过程中,均可以根据每一轮迭代过程中生成的测试用例集合(如第一测试用例集合和第二测试用例集合)生成衍生测试用例集合,之后可以执行该衍生测试用例集合中的测试用例。
通过上述方法,基于已有的测试用例集合中的测试用例,还可以生成新的测试用例,能够探寻出API中可能存在的依赖关系,保证API的测试更加全面。
第二方面,本申请实施例还提供了一种API测试装置,该API测试装置具有实现上述第一方面的方法实例中行为的功能,有益效果可以参见第一方面的描述此处不再赘述。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的设计中,所述装置的结构中包括获取模块、解析模块、生成模块、收集模块以及提供模块,这些模块可以执行上述第一方面方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
第三方面,本申请还提供了一种计算设备,所述计算设备包括处理器和存储器,还可以包括通信接口,所述处理器执行所述存储器中的程序指令执行上述第一方面或第一方面任一可能的实现方式提供的方法。所述存储器与所述处理器耦合,其保存测试应用程序接口的过程中必要的程序指令和数据。所述通信接口,用于与其他设备进行通信,如获取API文件、发送测试报告、发送测试用例等。
第四方面,本申请提供了一种计算设备系统,该计算设备系统包括至少一个计算设备。每个计算设备包括存储器和处理器。至少一个计算设备的处理器用于访问所述存储器中的代码以执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
第五方面,本申请提供了一种非瞬态的可读存储介质,所述非瞬态的可读存储介质被计算设备执行时,所述计算设备执行前述第一方面或第一方面的任意可能的实现方式中提供的方法。该存储介质中存储了程序。该存储介质包括但不限于易失性存储器,例如随机访问存储器,非易失性存储器,例如快闪存储器、硬盘(hard disk drive,HDD)、固态硬盘(solid state drive,SSD)。
第六方面,本申请提供了一种计算设备程序产品,所述计算设备程序产品包括计算机指令,在被计算设备执行时,所述计算设备执行前述第一方面或第一方面的任意可能的实现方式中提供的方法。该计算机程序产品可以为一个软件安装包,在需要使用前述第一方面或第一方面的任意可能的实现方式中提供的方法的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。
图1A为本申请提供的一种系统的架构示意图;
图1B为本申请提供的一种系统的架构示意图;
图2为本申请提供的一种场景的示意图;
图3为本申请提供的一种API测试方法的示意图;
图4A为本申请提供的一种确定API间依赖关系的方法示意图;
图4B为本申请提供的一种ODG示意图;
图4C为本申请提供的一种生成测试先知的方法示意图;
图4D为本申请提供的一种测试用例的示意图;
图4E为本申请提供的一种生成测试用例的方法示意图;
图4F为本申请提供的一种更新ODG的方法示意图;
图4G为本申请提供的一种发现新的API依赖关系的方法示意图;
图4H为本申请提供的一种代码覆盖反馈单元的结构示意图;
图5为本申请提供的一种API测试方法的示意图;
图6A为本申请提供的一种ODG示意图;
图6B为本申请提供的一种测试用例的示意图;
图7为本申请提供的一种API测试方法的示意图;
图8为本申请提供的一种API测试装置的结构示意图;
图9~图10为本申请提供的一种计算设备的结构示意图。
在对本申请实施例提供的一种应用程序接口测试方法进行说明之前,先对本申请实施例涉及的概念进行说明:
(1)、API定义文档
API定义文档包括API的描述信息,如API所调用的资源标识(如网页上元素的标识),API的参数定义(如输入参数结构体、输出参数结构体)、API中对资源的操作方法、以及 参数约束(如规定API的参数的数据取值范围或取值)。一个API定义文档中可以描述一个或多个API。
以Restful风格的API定义文档为例,该种API定义文档中记录了API的方法名、资源地址、API请求和API响应的消息体(也即API请求和API响应的消息格式)、以及API响应中携带的状态码。其中,资源地址可以为资源的统一资源定位器(uniform resource locator,URL)。
(2)、测试用例
在本申请实施例中测试用例为用于对API进行测试的用例,该测试用例中描述了API操作执行的步骤序列、每个步骤中发起的API请求的参数数据实例,该参数数据实例指示了API请求中的各个参数的具体取值。
(3)、API流量数据
API流量数据记录了生产环境或类生产环境节点之间在调用API进行交互时,所发送的API请求和对应的API响应。
其中,API请求为发送方(如客户端)发送给接收方(如服务端)的请求消息,包括请求地址、请求方法、请求消息头、请求参数、请求消息体等内容。
API响应为接收方返回给送方(客户端)的反馈消息,包括响应状态码、响应头、响应体等内容。
(4)、API操作
API操作是指通过调用API对资源的操作方法,API操作分为增查改删,遵从增查改删(Create,Read,Update,and Delete,CRUD)语义,也即描述的是对资源的创建,获取,修改,删除规则。API的操作也可以不限于创建、获取、修改、删除等。一个API可以理解为一个API操作。
以Restful风格API为例,获取资源操作为GET。创建资源操作为向一个新资源(如资源URL)发送PUT,或者向一个已有资源(如资源URL)发送POST。
替换资源操作可以为向一个已有资源发送PUT。修改资源操作(如修改资源的部分属性)可以为向一个已有资源发送PATCH。删除资源操作可以为向一个已有的资源发送DELETE。
(5)、API操作关系图
API操作关系图用于描述API操作之间的依赖关系。本申请实施例并不限定API操作关系图的具体类型,例如可以为操作依赖图(operation dependency graph,ODG)或操作转移概率图(operation transfer probability graph,OTPG)。
ODG描述了不同API操作之间的依赖关系。OTPG也可以描述API中操作的依赖关系,与ODG区别在于,OTPG还记录了API操作之间的转移概率,即一个API操作执行完之后执行另外一个操作的概率。
不同API操作之间的依赖关系可以表现为不同API操作针对同一资源执行时的依赖关系,还可以表现为不同API操作的参数(如API的输入参数或输出参数)之间的关联。
举例来说,以Restful风格的API为例,API操作之间的依赖关系可以遵循API定义文件中的静态数据,可以遵从资源CRUD语义规则,例如获取资源操作(GET)依赖于创建资源操作(PUT)。也可以为API A的资源操作输入参数取值依赖于API B的资源操作响应参数取值,例如接口操作GetPetById中的入参petId依赖于接口操作getPets的响应参数 petId。
操作转移概率图来源于API流量数据。可以按一定规则(例如用户、天)截断API流量数据,之后,统计该API流量数据中所有前后API操作中有参数依赖的API操作转移概率,例如Restful接口B、C、D均参数依赖于接口A,且A→B出现了700次,A→C出现了200次,A→D出现了100次,则A→B的转移概率为70%,A→C的转移概率为20%,A→D的转移概率为10%。
(6)、测试先知
测试先知描述的是调用API时的API请求以及API请求对应的API响应的预测规律,在本申请实施例中测试先知包括下列的部分或全部:预先预测的API请求和API请求对应的API响应的需遵循的规律、预先预测的API的输入参数与输出参数的分布情况和参数约束。
基于API定义文档可以确定API请求和API请求对应的API响应的需遵循的规律(可以称为显性的测试先知)。
基于API定义文档,可推导出显性的测试先知。以RestFul风格的API为例,在符合标准定义的前提下,判定响应状态码(2XX,4XX,5XX)是否符合预期,是一种显性的测试先知。例如在正常的输入参数条件下,状态码的预期结果应为2XX;在异常的输入参数条件下,状态码的预期结果应为4XX,若返回5XX则判定为失效。此外,API定义文档中明确定义的输入、输出参数结构体(schema),包括接口参数名,参数的类型、取值范围、枚举值范围、是否必须等,也可作为显性的测试先知。
基于API流量数据可以确定出API的输入参数与输出参数的正常分布以及参数间约束等隐性的测试先知。
API的输入参数与输出参数的分布情况可以包括下列的部分或全部:
API输出参数的范围,可以通过输出参数的最大值和最小值。
API输出参数的概率分布,也即输出参数为不同值时的概率。
API输入参数与输出参数的映射关系。以输入参数A和输出参数B为例,输入参数A和输出参数B的映射关系可以指示输入参数A和输出参数B之间的大小关系,如输入参数A>输出参数B,输入参数A=输出参数B,输入参数A<输出参数B,还可以指示当输入参数A等于第一值或属于第一范围时,输出参数B等于第二值或属于第二范围。
API输入参数与输出参数的关联关系,以输入参数A和输出参数B为例,输入参数A和输出参数B的关联关系可以为输入参数A与输出参数B同时出现、任意出现一个、或不能同时出现。
本申请实施例提供的应用程序接口测试用例生成方法可以由API测试装置执行,API测试装置既可以是一个硬件装置,例如:服务器、终端计算设备等,也可以是一个软件装置,具体为运行在硬件计算设备上的一套软件系统。本申请实施例中并不限定API测试装置所部署的位置。示例性的,如图1A所示,API测试装置可以运行在云计算设备系统(包括至少一个云计算设备,例如:服务器等),也可以运行在边缘计算设备系统(包括至少一个边缘计算设备,例如:服务器、台式电脑等),也可以运行在各种终端计算设备上,例如:笔记本电脑、个人台式电脑等。
API测试装置在逻辑上也可以是由多个模块构成的装置,如API测试装置可以包括获取模块、解析模块、收集模块、提供模块,API测试装置中的各个组成部分可以分别部署 在不同的系统或服务器中。示例性的,如图1B所示,装置的各部分可以分别运行在云计算设备系统、边缘计算设备系统或终端计算设备这三个环境中,也可以运行在这三个环境中的任意两个中。云计算设备系统、边缘计算设备系统和终端计算设备之间由通信通路连接,可以互相进行通信和数据传输。本申请实施例提供的应用程序接口API测试方法由运行在三个环境(或三个环境中的任意两个)中的API测试装置的各组合部分配合执行。
本申请实施例并不限定API测试装置的部署方式,例如API测试装置可以为部署在云端的应用程序,为能够为用户提供云服务,也即该API测试装置可以部署在边缘计算设备系统或云计算系统中,用户可以通过部署在用户侧的客户端从该API测试装置获取该云服务。该API测试装置也可以是部署在靠近用户侧的终端计算设备,例如,该API测试装置可以为该终端计算设备上的一个应用软件,也可以为该终端计算设备上一个应用软件的插件。
下面结合附图,对用户、API测试装置以及客户端之间的关系所适用的应用场景进行说明,参见图2。
图2中,示例性的绘制出了客户端的显示器向用户展示的界面,用户可以通过外部输入输出装置(如显示器、键盘以及鼠标等装置),在客户端上中进行操作,例如用户可以在客户端上创建测试任务、上传API定义文档、上传API流量数据等,用户还可以在客户端上对测试用例进行配置,如配置测试用例的测试场景、API的黑名单或白名单、API的黑名单或白名单、配置被测服务环境的域名以及所适应的计算节点(可以简称为环境信息)等信息。
API测试装置能够监控用户在客户端上的操作,根据用户上传的API文件以及对测试用例的配置,生成测试用例和测试先知,并触发服务节点执行该测试用例,收集在执行该测试用例时发起API请求和对应的API响应,确定在执行该测试用例时发起的API请求和对应的API响应与测试先知的匹配情况,并向用户提供在执行该测试用例时发起的API请求和对应的API响应与测试先知的匹配情况,也即执行本申请实施例提供的应用程序接口测试方法。
在本申请实施例中,API测试装置可以获取API定义文档和/或API流量数据,根据用户的配置,生成测试用例和测试先知,执行该测试用例,向用户提供执行该测试用例的过程中发起的API请求以及对应的API响应与测试先知的匹配情况。采用本申请实施例的方式能够自动完成测试用例的生成,以及测试用例的执行,可以不再需要人为参与,能够有效的提升测试用例的生成效率以及执行效率。另外,在本申请实施例中还能向用户反馈测试用例的执行结果,也即执行测试用例时发起的API请求和对应的API响应与测试先知的匹配情况,便于用于对测试用例的执行情况进行反馈,提升用户体验。
也即在本申请实施例中涉及的测试用例生成方式可以分为三种,第一种仅根据API定义文档生成测试用例。第二种为仅根据API流量数据生成测试用例。第三种为根据API定义文档和API流量数据生成测试用例。
下面分别对这三种方式下执行的API测试方法进行说明:
第一种、API测试装置根据API定义文档生成测试用例。
在第一种方式中,API测试装置在获取API定义文档后,根据API定义文档生成API操作关系图,并基于API操作关系图和用户的配置信息,生成测试用例和测试先知。API测试装置还可以将该测试用例发送至服务节点,触发服务节点执行测试用例,该获取该服 务节点在执行该测试用例的过程中发起的API请求以及对应的API响应,并对该API请求以及对应的API响应进行判定,生成测试报告,该测试报告可以包括该API请求以及对应的API响应与测试先知的匹配情况。可选的,该测试报告还可以包括测试用例和/或测试用例的覆盖率信息。
API测试装置还可以将该测试报告通过客户端提供给用户,用户对该测试报告进行确认,还可以根据该测试报告选择测试用例,生成测试用例脚本,以使得该测试用例可复用。
下面结合如图3对该种方式下的应用程序接口测试方法进行说明,该方法包括:
步骤301:用户通过客户端向API测试装置发送接口测试请求,该接口测试请求中携带API定义文档。可选的,该接口测试请求中还可以携带用户的配置信息。
该配置信息包括下列的部分或全部:
测试用例的测试场景、API黑名单或白名单、API参数黑名单或白名单、环境信息、是否提供测试用例的覆盖率信息、项目信息、组件信息。
其中,测试用例的测试场景可以指示应用该测试用例的场景,如测试用例的测试场景可以指示该测试用例应用于测试正常调用API的场景(含正常的调用序列和合规的入参)。测试用例的测试场景还可以指示该测试用例应用于测试异常调用API的场景,也即该测试用例主要对于异常调用API的场景测试(含乱序等异常的调用序列和违规的入参请求)进行检测。
API黑名单是指测试用例不需要检测的API所构成的名单,相反的,API白名单是指测试用例需要检测的API所构成的名单。
API参数黑名单是指测试用例不需要检测的API的参数所构成的名单,相反的,API参数白名单是指测试用例需要检测的API的参数所构成的名单。
环境信息用于指示该测试用例所需运行的服务环境,可以通过被测试服务域名或集群节点网际互连协议(internet protocol,IP)地址、端口指示该测试用例的被测服务环境。
测试用例的覆盖率信息用于描述测试用例对API的覆盖情况,也就是说描述测试用例所能检测到的API、和/或API中的代码或元素(元素如方法、类、分支)。测试用例的覆盖率信息可以包括不同粒度的覆盖率,如API粒度的覆盖率和代码粒度的覆盖率。
API粒度的覆盖率包括但不限于:场景覆盖率、API方法覆盖率(API方法覆盖率用于指示测试用例所能覆盖到的API数量)、API参数覆盖率(API参数覆盖率用于指示测试用例所能覆盖到的API参数)。
其中,场景覆盖率是指测试用例所能覆盖到的用户或测试(beta)用户在真实调用API时输入产生、输出参数取值的覆盖及API操作序列的覆盖。
代码粒度的覆盖率包括但不限于:代码覆盖率(代码覆盖率用于指示测试用例所能覆盖到的API的代码)、类覆盖率(类覆盖率用于指示测试用例所能覆盖到的API中类的数量)、方法覆盖率(方法覆盖率用于指示测试用例所能覆盖到的API中方法的数量)、行覆盖率(行覆盖率用于指示测试用例所能覆盖到的API中代码行的数量)、分支覆盖率(分支覆盖率用于指示测试用例所能覆盖到的API中分支的数量)。需要说明的是,上述覆盖率仅是举例,在具体应用中,覆盖率信息中也可以包括其他类型的覆盖率,凡是能够描述测试用了对API的覆盖情况均适用于本申请实施例。
项目信息是指测试对象(例如软件服务产品版本)立项项目号等信息,组件信息是指被测对象(微服务或嵌入式组件)编号、名称信息。
本申请实施例并不限定步骤301的执行方式,例如,用户可以在客户端上创建测试任务,并上传API定义文档、选择或输入配置信息。当客户端检测到用户的操作之后,可以向API测试装置发送接口测试请求。
在一些场景中,该接口测试请求中也可以不携带该配置信息,该配置信息可以是预先配置在API测试装置上的,也即该配置信息可以是默认的。
步骤302:API测试装置在接收到该接口测试请求之后,可以解析该API定义文档,生成ODG以及测试先知。
在步骤302中需要生成ODG和测试先知,下面分别对ODG以及测试先知的生成方式进行说明:
1、ODG
API测试装置可以解析API定义文档,分析API定义文档定义的API的参数,确定API的参数之间的依赖关系。其中,API的参数之间的依赖关系指示API的参数之间的引用关系,如API1的输出参数,为API2的输入参数,API2的输入需要引用API1输出,API2与API1的参数之间存在依赖关系,参数存在依赖关系也即表明API操作之间也存在依赖关系。故而,API测试装置可以根据API的参数之间的依赖关系生成ODG。
在本申请实施例中,API测试装置在生成ODG时,可以调用API文档解析器,将API定义文档输入至API文档解析器生成具有可读性的API中间表达,API中间表达与API定义文档所包含的信息可以等同,区别在于API中间表达与API定义文档的格式不同,API中间表达的格式是一种便于后续数据处理的格式,将API定义文档转换为API中间表达的方式使得不同格式的API定义文档经过格式转换可以生成统一数据格式的API中间表达,便于后续数据处理,也扩展了本申请实施例的应用范围。
本申请实施例并不限定转换API中间表达的方式,凡是能够统一数据格式的转换方式均适用于本申请实施例。
参见图4A,API测试装置生成API中间表达后,可以根据API中间表达生成ODG。在根据API中间表达生成ODG时,可以对API中间表达包括的不同的API进行分析,通过参数名的完全匹配(即参数名完全相同),子串匹配(即一参数名为另一参数的子串),分词匹配(即参数名词干完全相同),修改距离(即两参数名间的修改距离小于默认值)及增查改删(create,read,update,and delete,CRUD)语义(即对同一资源的创建,获取,修改,删除规则)构建API中参数之间的依赖关系,基于该API参数之间的依赖关系生成ODG。如图4B所示为ODG的一种示意图。
如4A中以API1和API2建立依赖为例进行说明,首先,对API1和API2中的参数进行匹配,若无参数匹配,基于CRUD语义匹配,确定API1和API2之间是否存在依赖关系,若通过CRUD语义匹配,匹配成功,添加依赖,如API1创建了资源A,API2修改了该资源A,则API1的创建操作和API2的修改操作之间存在依赖,添加API1的创建操作和API2的修改操作的依赖。若通过CRUD语义匹配,匹配失败,如API1作与API2中不存在对同一资源的操作,说明API和API2不存在依赖,继续对下一组API进行匹配。
若有参数匹配,则对参数进行进一步匹配,图4A中以参数1和参数2为例,其中,参数1确定API1的参数,参数2为API2的参数,确定参数1和参数2是否存在参数名完全匹配、是否存在子串匹配、是否存在分词匹配、计算修改距离等,若匹配成功,添加依赖,匹配识别,继续对下一组API进行匹配。
2、测试先知
API测试装置可以调用先知(Oracle)挖掘器对API定义文档进行分析,输出测试先知。
参见图4C,Oracle挖掘器对API定义文档进行分析时,可以对API定义文档或API中间表达进行静态分析、因果推断、分析频繁项集的分布,并结合贝叶斯网络,输出测试先知。
在本申请实施例中通过分析API定义文档可以获得测试先知,也就是说测试先知更加符合API定义文档,不需要人为配置测试先知,能够有效减少人为介入,保证了测试先知的准确性,进一步可以保证生成高效的测试用例。
步骤303:API测试装置可以根据配置信息和ODG生成测试用例集合。该测试用例集合中包括至少一个测试用例。如图4D所示,为一种测试用例的示意图。
参见图4E,若该配置信息指示测试用例应用于正常调用API的场景中,API测试装置可以根据ODG,遍历该ODG生成测试用例集合。API测试装置可以根据ODG中API操作之间的依赖关系,定义API操作的执行序列,还可以确定在调用API时的API请求的参数数据实例,该参数数据实例可以是API测试装置随机配置的,也可以是根据API定义文档中记录的参数约束配置的,使得该参数数据实例符合该参数约束。
若该配置信息指示测试用例应用于正常调用API的场景中,API测试装置可以根据ODG,对该ODG进行交叉变异,也即改变ODG定义的API操作之间的依赖关系,基于交叉变异后的ODG生成测试用例集合。API测试装置可以根据交叉变异后的ODG中API操作之间的依赖关系,定义API操作的执行序列,还可以确定在调用API时的API请求的参数数据实例,该参数数据实例可以是API测试装置随机配置的,也可以是根据预先配置的变异器(mutator)束配置的,mutator可以指示API输入参数或输出参数是否取反,是否改变参数类型,规定数值类型参数超过上下界,指示参数是否允许缺失,改变API中的数据结构(复制子节点,删除子节点,修改子节点),是否允许特殊编码格式作为参数值,是否改变参数名等。
需要说明的是,若该配置信息中包括API黑名单,该测试用例集合中的测试用例符合配置信息中的API黑名单。也即该测试用例集合中的测试用例不检测API黑名单中的API。若该配置信息中包括API参数黑名单,该测试用例集合中的测试用例符合配置信息中的API参数黑名单。也即该测试用例集合中的测试用例不检测API参数黑名单中的API参数。若该配置信息中包括API白名单,该测试用例集合中的测试用例符合配置信息中的API白名单。也即该测试用例集合中的测试用例检测API白名单中的API。若该配置信息中包括API参数白名单,该测试用例集合中的测试用例符合配置信息中的API参数白名单。也即该测试用例集合中的测试用例检测API参数白名单中的API参数。
步骤304:API测试装置触发服务节点执行该测试用例集合中的测试用例,获取服务节点在执行测试用例的过程中发起的API请求与对应的API响应。若配置信息中定义了环境信息,则该服务节点符合该环境信息。
API测试装置可以将该测试用例集合中的测试用例下发到服务节点,指示该服务节点执行该测试用例。服务节点在执行该测试用例时,服务节点可以基于该测试用例,调用测试用例中涉及的API,根据测试用例中指示API请求的参数数据实例发起API请求,与被 测服务节点进行信息交互。也即服务节点发送API请求给被测服务节点,并接收来自被测服务节点的API响应。API测试装置可以获得该API请求以及API响应。
步骤305:API测试装置根据服务节点在执行测试用例的过程中发起的API请求与对应的API响应和测试先知,确定目标测试用例,该目标测试用例为该测试用例集合中与测试先知不匹配的测试用例,也即目标测试用例在执行时发起的API请求和对应的API响应与测试先知不匹配。
参见图4F,API测试装置可以根据测试先知将API请求对应的API响应分为两类,一类为成功API响应,该成功API响应为符合测试先知的API响应,该成功API响应可以包括200响应、或400响应。一类为失败API响应,该失败API响应为不符合测试先知的API响应,该失败API响应可以为500响应。
步骤306:API测试装置根据目标测试用例更新ODG,更新后的ODG可以执行步骤303~步骤305。
API测试装置根据目标测试用例更新ODG时,可以利用目标测试用例进行迭代拆分,根据目标测试用例生成多个子测试用例,提取成功子测试用例和失败子测试用例,成功子测试用例是指执行该子测试用例的过程中的API请求以及对应的API响应为成功API响应,如符合测试先知的API请求,其中包括200响应、400响应。失败子测试用例是指执行该子测试用例的过程中的API请求以及对应的API响应为失败API响应,如不符合测试先知的API请求,其中包括500响应。之后,并可以对多个成功子测试用例进行组合,也可以多个失败测试子用例进行组合,还可以对成功子测试用例和失败子测试用例进行组合,并触发服务节点执行组合后的测试用例进行测试,根据测试结果确定API操作间的依赖关系。
参见图4G所示,目标测试用例中API测试顺序,也即先测试API1,之后测试API2,之后测试API3,之后测试API4。服务节点在执行目标测试用例时,API1和API2的API响应为200响应,API3的API响应为400响应,API4的API响应为与测试先知不符合的失败API响应,图4G中用0指示与测试先知不符合的失败API响应。将目标测试用例分为两个子测试用例,分别为用于测试API1和API4的子测试用例、以及用于测试API3和API4的子测试用例。其中,服务节点执行用于测试API1和API4的子测试用例的过程中,API1和API2的API响应为200响应和与测试先知不符合的失败API响应(并非200响应),用于测试API1和API4的子测试用例为失败子测试用例。服务节点执行用于测试API3和API4的子测试用例的过程中,API3的API响应为200响应,API4的API3响应为与测试先知不符合的失败API响应,用于测试API3和API4的子测试用例为失败子测试用例。继续对用于测试API3和API4的子测试用例进行拆分,分解为用于测试API3的子测试用例以及测试API4的子测试用例。服务节点执行用于测试API3的子测试用例的过程中,API3的API响应为200响应,为成功子测试用例。服务节点执行用于测试API4的子测试用例的过程中,API4的API响应为400响应,为成功子测试用例,将用于测试API4的子测试用例与用于测试API1和API2的子测试用例进行组合,根据服务节点执行该组合后的测试用例的结果确定API操作间的依赖关系。如执行了组合后的测试用例的结果指示API响应与测试先知匹配,则说明API操作间存在新的依赖关系,可以更新到ODG中,否则不更新。
API测试装置可以直接将该测试用例集合并展示给用户,API测试装置也可以继续执行一次或多次目标测试用例的确定过程,API测试装置在执行下一次目标测试用例集合的 确定过程时,可以利用上次确定的目标测试用例更新ODG,之后基于更新后的ODG执行步骤303~305,在每次目标测试用例的确定过程中都会产生一个测试用例集合。也即API测试装置可以迭代执行多次目标测试用例的确定过程,每次迭代过程中确定的目标测试用例可以用于更新ODG,之后,更新后的ODG可以用于下一次迭代,也即API测试装置可以执行步骤306。
步骤306:API测试装置根据目标测试用例更新ODG,API测试装置利用更新后的ODG进行下一次目标测试用例,也即利用更新后的ODG执行步骤303~305。
API测试装置可以多次执行步骤303~306,也即API测试装置执行多次迭代,本申请实施例并不限定API测试装置执行的迭代次数。该迭代次数可以是预先配置的,若API测试装置的迭代次数达到预先配置的次数值,API测试装置可以停止迭代。
API测试装置也可以利用迭代时间约束迭代次数,若API测试装置多次迭代的时间达到预先设定的时间值,API测试装置可以停止迭代,将每次迭代过程中执行测试用例的过程中发起的API请求和API响应与测试先知的匹配情况提供给用户。
步骤307:API测试装置可以汇总每次迭代过程中执行测试用例的过程中发起的API请求和API响应,生成测试报告。该测试报告中可以包括执行测试用例的过程中发起的API请求和API响应预测是测试先知的匹配情况,还可以包括测试用例集合。
若配置信息中执行需要提供测试用例的覆盖率信息,API测试装置还可以分析测试用例集合,生成该测试用例集合中测试用例的覆盖率信息,该测试用例的覆盖率信息可以作为测试报告的一部分。
步骤308:API测试装置将测试报告,提供给用户;若配置信息中执行需要提供测试用例的覆盖率信息,该测试包括还包括测试用例的覆盖率信息。
下面对测试用例的覆盖率信息的生成方式进行说明,API测试装置可以借助黑盒反馈和/或灰盒反馈生成测试用例的覆盖率信息。
灰盒反馈是指在测试用例被执行过程中,API测试装置收集测试用例的覆盖率信息,例如类覆盖率、方法覆盖率、模块覆盖率、行覆盖率、分支覆盖率等,API测试装置中提供模块中的代码覆盖反馈单元(例如Java Coverage Agent)可以用于收集测试用例的覆盖率信息。
代码覆盖反馈单元的结构如图4H所示,代码覆盖反馈单元主要包括三个组件:插桩组件(instrumentation),覆盖分析组件(coverage analysis),信息提供与控制组件(information/control)。首先代码覆盖反馈单元会在测试用例内部插入的探针,当程序执行触碰到探针的时候会记录下来执行信息以做下一步分析。出于稳定性的考虑,代码覆盖反馈单元重用了Jacoco的探针机制,但是在插入探针时进行了改进,允许根据用户提供的覆盖信息的收集详细程度来进行选择性插桩。因此,可以减少插入的探针数量,从而提高程序执行速度。在收集到原始的探针信息后,代码覆盖反馈单元需要比对类(class)文件的内容来生成详细的覆盖率信息。在本申请实施例中,允许代码覆盖反馈单元在被测程序的class被加载入内存之后缓存一份未插桩的class内容。透过这种机制,可以在收集到原始探针信息后自动进行下一步分析,以生成最终的覆盖率信息,无需用户干预。最后,代码覆盖反馈单元可以通过多种方式展示出收集到的覆盖率信息。其中允许用调用接口提供覆盖率信息展示收集以及展示服务,也就是说,允许自行查询覆盖率信息。
黑盒反馈,用于分析API响应,如分析API响应的状态码、响应头、消息体等,用于 产生API粒度的覆盖率信息(如场景覆盖率、API方法覆盖率信息、API产生覆盖率信息。
需要说明的是,在本申请实施例中,测试用例的覆盖率信息除了能够展示给用户,还可以用于多轮迭代中。当在每一轮迭代过程中,API测试装置可以生成该轮迭代过程中生成的测试用例集合中测试用例的覆盖率信息。API测试装置可以基于对测试用例的覆盖率信息测试用例集合进行进一步筛选。API测试装置可以借助遗传算法对筛选后的测试用例进行变异,生成一组新的测试用例。该组新的测试用例可以加入到下一轮迭代,如加入到下一轮迭代过程中生成的测试用例集合中,作为该测试用例集合中的一部分;继续下发到服务节点,触发服务节点执行该测试用例集合。
举例来说,API测试装置会根据预设的目标函数(可以理解为覆盖率条件)对测试用例集合进行筛选。在本申请实施例中目标函数可以根据测试用例的覆盖率信息等因素对测试用例进行评分。API测试装置可以保留评分高过预设阈值的测试用例,丢掉评分低于预设阈值的测试用例。
当然,在一种可能场景中,也可以不基于对测试用例的覆盖率信息测试用例集合进行进一步筛选,而是直接借助遗传算法对本轮迭代中测试用例集合中测试用例进行变异,生成一组新的测试用例,该组新的测试用例可以加入到下一轮迭代中,作为下一轮迭代过程中生成的测试用例集合的一部分。
由于测试用例集合中包括多个测试用例,无论API测试装置是否执行多次迭代,API测试装置获取的API请求对应的API响应的数量可能较多,API测试装置处理将API请求对应的API响应分为成功API响应和失败API响应外,还可以对失败API响应中的多个API响应进行聚类,将失败原因相同或失效位置相同的API响应归为一类,并标记失败原因或失效位置。例如,API测试装置可以将500响应归为一类,对于API响应与测试先知不一致的情况,可以根据不一致的位置(也即失效位置)进一步进行归类,将失效位置相同的API归为一类。
为了便于用户查看,API测试装置在向用户提供执行测试用例集合中测试用例的过程中的API响应与测试先知的匹配情况时,可以向用户展示经过了分类、聚类后的API响应,对于失败API响应,API测试装置还可以在展示API响应时,展示该API响应的失败原因或失效位置。
可选的,API测试装置还可以根据用户的选择生成该测试用例脚本。
用户可以展示测试用例中浏览该测试用例,还可以从中选择一个或多个测试用例,通过客户端指示API测试装置生成所选择的测试用例文本以及测试用例脚本。
测试用例文本中以自然语言描述了测试对象,测试预置条件,测试步骤,测试预期结果。测试用例脚本中以程序可执行语言描述了测试对象、测试方法,测试业务参数实例,测试环境参数实例,测试脚本可以被测试执行机Agent自动化执行。
第二种、API测试装置根据API流量数据生成测试用例。
在第二种方式中,API测试装置在获取API流量数据后,根据API流量数据生成操作转移概率图,并基于操作转移概率图,生成测试用例和测试先知。API测试装置还可以将该测试用例下发至服务节点,触发服务节点执行测试用例,该获取该服务节点在执行该测试用例的过程中发起的API请求以及对应的API响应,并根据测试先知对该API请求以及对应的API响应进行分析,生成该测试报告,该测试报告包括该API请求以及对应的API响应与测试先知的匹配情况,还可以包括测试用例的覆盖率信息和/或测试用例。
API测试装置还可以将该测试报告通过客户端提供给用户,用户对该测试报告进行确认,还可以根据该测试报告选择目标测试用例,生成目标测试用例脚本,以使得该目标测试用例可复用。
下面结合附图5,对本申请实施例提供的一种应用接口测试用例生成方式进行说明。
步骤501:用户通过客户端向API测试装置发送接口测试请求,该接口测试请求中携带API流量数据。可选的,该接口测试请求中还可以携带用户的配置信息。
该配置信息的说明可以参见前述说明,此处不再赘述。需要说明的是,在这种场景中,配置信息还可以包括敏感信息是指API流量数据中可能涉及到的用户账户、密码、IP地址等涉及个人隐私的信息。
本申请实施例并不限定步骤501的执行方式,例如,用户可以在客户端上创建测试任务,并上传API流量数据、选择或输入该测试用例的配置信息。当客户端检测到用户的操作之后,可以向API测试装置发送接口测试请求。
步骤502:API测试装置在接收到该测试接口测试请求之后,可以解析该API流量数据,生成操作转移概率图、测试先知以及参数约束字典。如图6A所示,为操作转移概率图的示意图。
API测试装置在解析该API流量数据时,还可以对该API流量数据进行数据清洗,例如,可以删除该API流程数据中的敏感信息,若配置信息中包括API黑名单,API测试装置可以删除该API流量数据中调用API黑名单中的API时的API请求以及对应的API响应。若配置信息中包括API白名单,API测试装置可以保留该API流量数据中调用API白名单中的API时的API请求以及对应的API响应。若配置信息中包括API参数黑名单,API测试装置可以删除该API流量数据中API参数黑名单中的参数。若配置信息中包括API参数白名单,API测试装置可以保留该API流量数据中API参数白名单中的参数。
之后,可以根据清洗后的API流量数据生成操作转移概率图以及测试先知,在步骤502中需要生成操作转移概率图和测试先知,下面分别对操作转移概率图以及测试先知的生成方式进行说明:
1、操作转移概率图
API测试装置可以分析API流量数据,通过参数匹配(即参数值相等)和CRUD语义分析(即对同一资源的创建,获取,修改,删除规则),生成操作转移概率图。
API测试装置分析API流量数据生成操作转移概率图的方式,与分析API定义文档生成操作依赖图的方式类似,API测试装置可以通过分析API流量数据,借助参数匹配以及CRUD语义分析的方式确定API的参数之间的依赖关系,进而确定API操作之间的依赖关系。
API测试装置还可以通过API流量数据中存在依赖关系的API出现的次数,确定API操作之间的依赖概率。
2、测试先知
API测试装置可以调用先知(Oracle)挖掘器对API流量数据进行分析,输出测试先知。
Oracle挖掘器对API流量数据进行分析时,可以对API流量数据进行静态分析、因果推断、分析频繁项集的分布,并结合贝叶斯网络,输出测试先知。
3、参数约束字典
参数约束字典记录了API参数的取值范围或取值,还可以记录参数之间的依赖关系,如参数之间的依赖关系可以同时出现,或不同时出现。
API测试装置可以根据API流量数据确定API各个参数的值的分布情况以及参数的出现情况,进而生成参数约束字典。
步骤503:API测试装置可以根据参数约束字典、配置信息和操作转移概率图生成测试用例集合。该测试用例集合中包括至少一个测试用例。如图6B所述为测试用例的一种示意图。
若该配置信息指示测试用例应用于正常调用API的场景中,API测试装置可以根据操作转移概率图,遍历该操作转移概率图生成测试用例集合。API测试装置可以根据操作转移概率图中API操作之间的依赖关系,定义API操作的执行序列,还可以确定在调用API时的API请求的参数数据实例,该参数数据实例可以是API测试装置随机配置的,也可以是根据参数约束字典配置的,使得该参数数据实例符合该参数约束字典。
若该配置信息指示测试用例应用于正常调用API的场景中,API测试装置可以根据操作转移概率图中记录的异常依赖关系(也即在异常调用情况下发现的依赖关系),生成测试用例集合。可选的,API测试装置还可以对测试用例集合进行约束,例如,API测试装置还可以利用变异算子对测试用例集合中测试用例涉及的参数进行变异,本申请实施例并不限定变异算子的具体类型。
需要说明的是,若该配置信息中包括API黑名单,该测试用例集合中的测试用例符合配置信息中的API黑名单。也即该测试用例集合中的测试用例不检测API黑名单中的API。若该配置信息中包括API参数黑名单,该测试用例集合中的测试用例符合配置信息中的API参数黑名单。也即该测试用例集合中的测试用例不检测API参数黑名单中的API参数。若该配置信息中包括API白名单,该测试用例集合中的测试用例符合配置信息中的API白名单。也即该测试用例集合中的测试用例检测API白名单中的API。若该配置信息中包括API参数白名单,该测试用例集合中的测试用例符合配置信息中的API参数白名单。也即该测试用例集合中的测试用例检测API参数白名单中的API参数。
步骤504:API测试装置触发服务节点执行该测试用例集合中的测试用例,获取服务节点在执行测试用例的过程中发起的API请求与对应的API响应。若配置信息中定义了服务环境域名,则该服务节点为服务环境域名中的节点。若配置信息中定义了服务环境节点,则该服务节点可以为配置信息中定义的服务环境节点。具体可以参见步骤304的相关说明,此处不再赘述。
步骤505:API测试装置根据服务节点在执行测试用例的过程中发起的API请求与对应的API响应和测试先知,确定目标测试用例,该目标测试用例为该测试用例集合中与测试先知不匹配的测试用例。具体可以参见步骤305的相关说明,此处不再赘述。
API测试装置根据目标测试用例更新操作转移概率图的方式与步骤306中根据目标测试用例更新ODG的方式类似,具体可以参见前述说明此处不再赘述。
API测试装置可以直接将该测试用例集合并展示给用户,API测试装置也可以继续执行一次或多次目标测试用例的确定过程,API测试装置在执行下一次目标测试用例集合的确定过程时,可以利用上次确定的目标测试用例更新操作转移概率图,之后基于更新后的操作转移概率图执行步骤303~305,在每次目标测试用例的确定过程中都会产生一个测试用例集合。也即API测试装置可以迭代执行多次目标测试用例的确定过程,每次迭代过程 中确定的目标测试用例可以用于更新操作转移概率图,之后,更新后的操作转移概率图可以用于下一次迭代,也即API测试装置可以执行步骤506。
步骤506:API测试装置根据目标测试用例更新操作转移概率图,更新后的操作转移概率图可以执行步骤503~步骤505。具体可以参见步骤306的相关说明,此处不再赘述。
步骤507:API测试装置可以汇总每次迭代过程中执行测试用例的过程中发起的API请求和API响应,生成测试报告。该测试报告中可以包括执行测试用例的过程中发起的API请求和API响应预测是测试先知的匹配情况,还可以包括测试用例集合,具体可以参见步骤307的相关说明,此处不再赘述。
步骤508:API测试装置将测试报告,提供给用户;若配置信息中执行需要提供测试用例的覆盖率信息,该测试包括还包括测试用例的覆盖率信息。具体可以参见步骤308的相关说明,此处不再赘述。
第三种、API测试装置根据API定义文档和API流量数据生成测试用例。
在第三种方式中,API测试装置在获取API定义文档和API流量数据后,根据API定义文档和API流量数据生成API操作关系图,并基于API操作关系图,生成测试用例和测试先知。API测试装置还可以将该测试用例下发至服务节点,触发服务节点执行测试用例,该获取该服务节点在执行该测试用例的过程中发起的API请求以及对应的API响应,并根据测试先知对该API请求以及对应的API响应进行判定,生成该测试报告,该测试报告包括该API请求以及对应的API响应与测试先知的匹配情况,还可以包括测试用例的覆盖率信息。
API测试装置还可以将该测试报告通过客户端提供给用户,用户对该测试报告进行确认,还可以根据该测试报告选择测试用例,生成测试用例脚本,以使得该测试用例可复用。
下面结合附图7,对本申请实施例提供的一种应用接口测试用例生成方式进行说明。
步骤701:用户通过客户端向API测试装置发送接口测试请求,该接口测试请求中携带API流量数据和API定义文档。可选的,该接口测试请求中还可以携带用户的配置信息。
该配置信息的说明可以参见前述说明,此处不再赘述。
本申请实施例并不限定步骤701的执行方式,例如,用户可以在客户端上创建测试任务,并上传API流量数据、API定义文档、选择或输入配置信息。当客户端检测到用户的操作之后,可以向API测试装置发送接口测试请求。
步骤702:API测试装置在接收到该接口测试请求之后,可以解析该API流量数据和API定义文档,生成API操作关系图、测试先知以及参数约束字典。API操作关系图是操作依赖图、操作转移概率图合并后的图。也就是说,API测试装置可以解析该API流量数据生成操作转移概率图,解析API定义文档生成操作依赖图。在生成了操作依赖图、操作转移概率图之后,将操作依赖图、操作转移概率图合并(也即取并集),生成API操作关系图。
API测试装置在解析该API流量数据时,还可以对该API流量数据进行数据清洗,关于数据清洗的方式可以参见前述说明,此处不再赘述。操作转移概率图、操作依赖图以及测试先知以及参数约束字典的生成方式可以参见前述说明此处不再赘述。
在这种方式中,由于API操作关系图包括了操作依赖图、操作转移概率图中的信息,使得API操作关系图中信息更加丰富,保证后续可以生成较为高效的测试用例。
步骤703:API测试装置可以根据参数约束字典、配置信息和API操作关系图生成测 试用例集合。该测试用例集合中包括至少一个测试用例。API测试装置根据配置信息和API操作关系图生成测试用例集合可以参见步骤303和步骤503的相关说明。
步骤704:API测试装置触发服务节点执行该测试用例集合中的测试用例,获取服务节点在执行测试用例的过程中发起的API请求与对应的API响应。若配置信息中定义了服务环境域名,则该服务节点为服务环境域名中的节点。若配置信息中定义了服务环境节点,则该服务节点可以为配置信息中定义的服务环境节点。具体可以参见步骤304的相关说明,此处不再赘述。
步骤705:API测试装置根据服务节点在执行测试用例的过程中发起的API请求与对应的API响应和测试先知,确定目标测试用例,该目标测试用例为该测试用例集合中与测试先知不匹配的测试用例。具体可以参见步骤305的相关说明,此处不再赘述。
步骤706:API测试装置根据目标测试用例更新API操作关系图,更新后的API操作关系图可以执行步骤703~步骤705。具体可以参见步骤306的相关说明,此处不再赘述。
API测试装置根据目标测试用例更新API操作关系图的方式与步骤306中根据目标测试用例更新ODG的方式类似,具体可以参见前述说明此处不再赘述。
API测试装置可以直接将该目标测试用例作为最终的测试用例,并展示给用户,API测试装置也可以继续执行一次或多次目标测试用例的确定过程,API测试装置在执行下一次,目标测试用例时,可以利用上次确定的目标测试用例更新API操作关系图,之后基于更新后的API操作关系图执行步骤703~305。也即API测试装置可以在生成最终的测试用例的过程为迭代过程,每次迭代过程中确定的目标测试用例可以用于更新API操作关系图,之后,更新后的API操作关系图可以用于下一次迭代,也即API测试装置可以执行步骤706。
步骤707:API测试装置可以汇总每次迭代过程中执行测试用例的过程中发起的API请求和API响应,生成测试报告。该测试报告中可以包括执行测试用例的过程中发起的API请求和API响应预测是测试先知的匹配情况,还可以包括测试用例集合。具体可以参见步骤307的相关说明,此处不再赘述。
步骤708:API测试装置将测试报告,提供给用户;若配置信息中执行需要提供测试用例的覆盖率信息,该测试包括还包括测试用例的覆盖率信息。具体可以参见步骤308的相关说明,此处不再赘述。
基于与方法实施例同一发明构思,本申请实施例还提供了一种API测试装置,该API测试装置用于执行上述方法实施例中API测试装置执行的方法。如图8所示,API测试装置800包括获取模块801、解析模块802、生成模块803、收集模块804以及提供模块805。具体地,在API测试装置中,各模块之间通过通信通路建立连接。
获取模块801,用于获取用户传输的应用程序接口API文件,API文件包括API定义文档和/或API流量数据,API定义文档包括API的描述信息,API流量数据包括调用API时,发起的API请求以及API请求对应的API响应。
解析模块802,用于解析API文件,生成API操作关系图和测试先知,API操作关系图用于描述API操作的依赖关系,测试先知为调用API时API请求以及对应的API响应的预测规律。
生成模块803,用于根据API操作关系图生成第一测试用例集合。
收集模块804,用于触发服务节点执行第一测试用例集合中的测试用例,获取服务节点在执行第一测试用例集合中测试用例的过程中所发起的API请求和对应的API响应。
提供模块805,用于确定执行所述第一测试用例集合中测试用例的过程中所发起的API请求和对应的API响应与所述测试先知的匹配情况,向用户提供在执行第一测试用例集合中测试用例的过程中所发起的API请求和对应的API响应与测试先知的匹配情况。
作为一种可能的实施方式,API测试装置可以执行多轮迭代,每一轮迭代以上一轮迭代的输出为输入,下面以后续执行的一轮迭代为例进行说明。
在该轮迭代中,生成模块803可以根据测试先知从第一测试用例集合中确定目标测试用例,其中,目标测试用例在执行时所发起的API请求和API响应与测试先知不匹配;之后,解析模块802根据目标测试用例更新API操作关系图,根据更新后的API操作关系图生成第二测试用例集合。之后,收集模块804可以触发服务节点执行第二测试用例集合中的测试用例,获取服务节点在执行第二测试用例集合中测试用例的过程中所发起的API请求和API响应。提供模块805可以根据测试先知确定服务节点在执行第二测试用例集合中测试用例的过程中所发起的API请求和API响应与测试先知的匹配情况,向所述用户提供在执行所述第二测试用例集合中测试用例的过程中所发起的API请求和对应的API响应与所述测试先知的匹配情况。
作为一种可能的实施方式,当API文件包括API流量数据,解析模块802在解析API的API文件时,可以生成API操作关系图和参数约束字典,参数约束字典包括API参数的取值范围。
作为一种可能的实施方式,第一测试用例集合中测试用例定义的API请求的参数符合参数约束字典。
作为一种可能的实施方式,获取模块801还可以获取用户的配置信息,配置信息用于指示测试用例需遵循的规则,配置信息包括下列信息的部分或全部:
测试用例的测试场景、API黑名单或白名单、API参数黑名单或白名单、是否提供测试用例的覆盖率信息。
作为一种可能的实施方式,第一测试用例集合中测试用例符合配置信息。
作为一种可能的实施方式,提供模块805还可以确定所述第一测试用例集合中的测试用例的覆盖率信息,测试用例的覆盖率信息描述测试用例对API的覆盖情况;向所述用户提供所述测试用例的覆盖率信息。
作为一种可能的实施方式,API测试装置还可以执行另一种迭代方式,在这种迭代方式中,API测试装置也可以执行多轮迭代,每一轮迭代以上一轮迭代的输出为输入,下面以后续执行的一轮迭代为例进行说明。
在该轮迭代中,生成模块803可以从所述第一测试用例集合中确定候选测试用例集合,其中,所述候选测试用例集合中的测试用例的覆盖率信息满足预设覆盖率条件;基于候选测试用例集合,生成衍生测试用例集合。之后,收集模块804可以触发服务节点执行衍生测试用例集合中的测试用例,获取服务节点在执行衍生测试用例集合中测试用例的过程中所发起的API请求和API响应。提供模块805可以根据测试先知确定服务节点在执行衍生测试用例集合中测试用例的过程中所发起的API请求和API响应与测试先知的匹配情况,生成测试报告,并展示测试报告。
本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成为一个模块中。上述集成的 模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
该集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是个人计算机,手机,或者网络设备等)或处理器(processor)执行本申请各个实施例该方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请还提供如图9所示的计算设备900。所述计算设备900包括总线901、处理器902、通信接口903和存储器904。处理器902、存储器904和通信接口903之间通过总线901通信。
其中,处理器902可以为中央处理器(central processing unit,CPU)。存储器904可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器904还可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器,HDD或SSD。存储器中存储有可执行代码,处理器902执行该可执行代码以执行前述图3、5、7所描述的方法。存储器904中还可以包括操作系统等其他运行进程所需的软件模块(如API测试装置800中的多个模块)。操作系统可以为LINUX
TM,UNIX
TM,WINDOWS
TM等。
本申请还提供一种计算设备系统,所述计算设备系统包括至少一个如图10所示的计算设备1000。所述计算设备1000包括总线1001、处理器1002、通信接口1003和存储器1004。处理器1002、存储器1004和通信接口1003之间通过总线1001通信。所述计算设备系统中的至少一个计算设备1000之间通过通信通路进行通信。
其中,处理器1002可以为CPU。存储器1004可以包括易失性存储器,例如随机存取存储器。存储器1004还可以包括非易失性存储器,例如只读存储器,快闪存储器,HDD或SSD。存储器1004中存储有可执行代码,处理器1002执行该可执行代码以执行前述图3、5、7描述的方法中的任意部分或全部。存储器中还可以包括操作系统等其他运行进程所需的软件模块。操作系统可以为LINUX
TM,UNIX
TM,WINDOWS
TM等。
所述计算设备系统中的至少一个计算设备1000之间通过通信网络互相建立通信,每个计算设备1000上运行API测试装置800中的任意一个或者任意多个模块。
上述各个附图对应的流程的描述各有侧重,某个流程中没有详述的部分,可以参见其他流程的相关描述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括计算机程序指令,在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例图3、5、7所述的流程或功能。
所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线或无线(例如红外、无线、微 波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如SSD)。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (19)
- 一种应用程序接口API测试方法,其特征在于,所述方法包括:获取用户传输的API文件,所述API文件包括API定义文档和/或API流量数据,其中,所述API定义文档包括API的描述信息,所述API流量数据包括调用API时的API请求以及所述API请求对应的API响应;解析所述API文件,生成API操作关系图和测试先知,所述API操作关系图用于描述API操作的依赖关系,所述测试先知为调用API时API请求以及对应的API响应的预测规律;根据所述API操作关系图生成第一测试用例集合;触发服务节点执行所述第一测试用例集合中的测试用例,获取所述服务节点在执行所述第一测试用例集合中测试用例的过程中所发起的API请求和对应的API响应;向所述用户提供在执行所述第一测试用例集合中测试用例的过程中所发起的API请求和对应的API响应与所述测试先知的匹配情况。
- 如权利要求1所述的方法,其特征在于,所述方法还包括:根据所述测试先知从所述第一测试用例集合中确定目标测试用例,其中,所述目标测试用例在执行时所发起的API请求和API响应与所述测试先知不匹配;根据所述目标测试用例更新所述API操作关系图,根据更新后的所述API操作关系图生成第二测试用例集合;触发服务节点执行所述第二测试用例集合中的测试用例,获取所述服务节点在执行所述第二测试用例集合中测试用例的过程中所发起的API请求和API响应;向所述用户提供在执行所述第二测试用例集合中测试用例的过程中所发起的API请求和对应的API响应与所述测试先知的匹配情况。
- 如权利要求1所述的方法,其特征在于,当所述API文件包括所述API流量数据,所述解析所述API文件,生成API操作关系图,包括:解析所述API文件,生成所述API操作关系图和参数约束字典,其中,所述参数约束字典包括API参数的取值范围。
- 如权利要求3所述的方法,其特征在于,所述第一测试用例集合中的测试用例定义的API请求的参数符合所述参数约束字典。
- 如权利要求1~4任一项所述的方法,其特征在于,所述方法还包括:获取用户的配置信息,所述配置信息用于指示测试用例需遵循的规则,所述配置信息包括下列信息中的部分或全部:测试用例的测试场景、API黑名单或白名单、API参数黑名单或白名单、是否提供测试用例的覆盖率信息。
- 如权利要求5所述的方法,其特征在于,所述第一测试用例集合中的测试用例符合所述配置信息。
- 如权利要求1~6任一项所述的方法,其特征在于,所述方法还包括:确定所述第一测试用例集合中的测试用例的覆盖率信息,所述测试用例的覆盖率信息描述测试用例对API的覆盖情况;向所述用户提供所述测试用例的覆盖率信息。
- 如权利要求7所述的方法,其特征在于,所述方法还包括:从所述第一测试用例集合中确定候选测试用例集合,其中,所述候选测试用例集合中的测试用例的覆盖率信息满足预设覆盖率条件;基于所述候选测试用例集合,生成衍生测试用例集合;触发所述服务节点执行所述衍生测试用例集合中的测试用例,获取所述服务节点在执行所述衍生测试用例集合中测试用例的过程中所发起的API请求和API响应。
- 一种API测试装置,其特征在于,所述测试装置包括获取模块、解析模块、生成模块、收集模块以及提供模块;所述获取模块,用于获取用户传输的API文件,所述API文件包括API定义文档和/或API流量数据,所述API定义文档包括API的描述信息,所述API流量数据包括调用API时,发起的API请求以及API请求对应的API响应;所述解析模块,用于解析所述API文件,生成API操作关系图和测试先知,所述API操作关系图用于描述所述API操作的依赖关系,所述测试先知为调用API时的API请求以及对应的API响应的预测规律;所述生成模块,用于根据所述API操作关系图生成第一测试用例集合;所述收集模块,用于触发服务节点执行所述第一测试用例集合中的测试用例,获取所述服务节点在执行所述第一测试用例集合中测试用例的过程中所发起的API请求和对应的API响应;所述提供模块,用于向所述用户提供在执行所述第一测试用例集合中的测试用例的过程中所发起的API请求和对应的API响应与所述测试先知的匹配情况。
- 如权利要求9所述的测试装置,其特征在于,所述生成模块,还用于根据所述测试先知从所述第一测试用例集合中确定目标测试用例,其中,所述目标测试用例在执行时所发起的API请求和API响应与所述测试先知不匹配;所述解析模块,还用于根据所述目标测试用例更新所述API操作关系图,根据更新后的所述API操作关系图生成第二测试用例集合;所述收集模块,还用于触发服务节点执行所述第二测试用例集合中的测试用例,获取所述服务节点在执行所述第二测试用例集合中测试用例的过程中所发起的API请求和API响应;所述提供模块,还用于向所述用户提供在执行所述第二测试用例集合中测试用例的过程中所发起的API请求和对应的API响应与所述测试先知的匹配情况。
- 如权利要求9所述的测试装置,其特征在于,当所述API文件包括所述API流量数据,所述解析模块在解析所述API文件,生成API操作关系图时,具体用于:解析所述API文件,生成所述API操作关系图和参数约束字典,其中,所述参数约束字典包括API参数的取值范围。
- 如权利要求11所述的测试装置,其特征在于,所述第一测试用例集合中测试用例定义的API请求的参数符合所述参数约束字典。
- 如权利要求9~12任一项所述的测试装置,其特征在于,所述获取模块,还用于:获取用户的配置信息,所述配置信息用于指示测试用例需遵循的规则,所述配置信息包括下列信息中的部分或全部:测试用例的测试场景、API黑名单或白名单、API参数黑名单或白名单、是否提供测 试用例的覆盖率信息。
- 如权利要求13所述的测试装置,其特征在于,所述第一测试用例集合中的测试用例符合所述配置信息。
- 如权利要求9~14任一所述的测试装置,其特征在于,所述提供模块,还用于确定所述第一测试用例集合中的测试用例的覆盖率信息,所述测试用例的覆盖率信息描述测试用例对API的覆盖情况;向所述用户提供所述测试用例的覆盖率信息。
- 如权利要求15所述的测试装置,其特征在于,所述生成模块,还用于:从所述第一测试用例集合中确定候选测试用例集合,其中,所述候选测试用例集合中的测试用例的覆盖率信息满足预设覆盖率条件;基于所述候选测试用例集合,生成衍生测试用例集合;所述收集模块,还用于触发所述服务节点执行所述衍生测试用例集合中的测试用例,获取所述服务节点在执行所述衍生测试用例集合中测试用例的过程中所发起的API请求和API响应。
- 一种计算设备,其特征在于,所述计算设备包括处理器和存储器;所述存储器,用于存储计算机程序指令;所述处理器执行调用所述存储器中的计算机程序指令执行如权利要求1至8中任一项所述的方法。
- 一种非瞬态的计算机可读存储介质,其特征在于,所述非瞬态的计算机可读存储介质被计算设备执行时,所述计算设备执行上述权利要求1至8中任一项所述的方法。
- 一种计算设备程序产品,其特征在于,所述计算设备程序产品包括计算机指令,在被计算设备执行时,所述计算设备执行如权利要求1至8中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP22758729.2A EP4270199A1 (en) | 2021-02-26 | 2022-01-21 | Application programming interface (api) testing method and device |
US18/366,600 US20230376408A1 (en) | 2021-02-26 | 2023-08-07 | Application programming interface test method and apparatus |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110220017.8A CN114968754A (zh) | 2021-02-26 | 2021-02-26 | 一种应用程序接口api测试方法以及装置 |
CN202110220017.8 | 2021-02-26 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US18/366,600 Continuation US20230376408A1 (en) | 2021-02-26 | 2023-08-07 | Application programming interface test method and apparatus |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2022179363A1 true WO2022179363A1 (zh) | 2022-09-01 |
Family
ID=82972893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2022/073096 WO2022179363A1 (zh) | 2021-02-26 | 2022-01-21 | 一种应用程序接口api测试方法以及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230376408A1 (zh) |
EP (1) | EP4270199A1 (zh) |
CN (1) | CN114968754A (zh) |
WO (1) | WO2022179363A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115203061A (zh) * | 2022-09-14 | 2022-10-18 | 广东美的暖通设备有限公司 | 接口自动化测试方法、装置、电子设备及存储介质 |
CN116471215A (zh) * | 2023-04-03 | 2023-07-21 | 中国电子技术标准化研究院 | 一种用于工业互联网云边端的融合接口自动化测试系统 |
WO2024045781A1 (zh) * | 2022-09-02 | 2024-03-07 | 华为云计算技术有限公司 | 一种云服务的测试方法及相关设备 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230004651A1 (en) * | 2021-06-30 | 2023-01-05 | Cisco Technology, Inc. | Penetration testing for api service security |
CN116155788B (zh) * | 2023-04-19 | 2023-06-20 | 鹏城实验室 | 网络安全测试方法、装置、设备及可读存储介质 |
CN117389908B (zh) * | 2023-12-12 | 2024-03-26 | 深圳市铱云云计算有限公司 | 接口自动化测试用例的依赖关系分析方法、系统及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106339312A (zh) * | 2015-07-17 | 2017-01-18 | 腾讯科技(深圳)有限公司 | Api测试方法和系统 |
CN109189666A (zh) * | 2018-08-02 | 2019-01-11 | 腾讯科技(北京)有限公司 | 接口测试方法、装置和计算机设备 |
CN110083526A (zh) * | 2019-03-15 | 2019-08-02 | 深圳壹账通智能科技有限公司 | 应用程序测试方法、装置、计算机装置及存储介质 |
CN110928774A (zh) * | 2019-11-07 | 2020-03-27 | 杭州顺网科技股份有限公司 | 一种基于节点式的自动化测试系统 |
CN110968505A (zh) * | 2019-11-15 | 2020-04-07 | 烟台中科网络技术研究所 | 一种api接口的自动化测试方法和系统 |
CN111382051A (zh) * | 2018-12-29 | 2020-07-07 | 北京数聚鑫云信息技术有限公司 | 一种api自动测试方法及测试装置 |
CN111949520A (zh) * | 2020-07-31 | 2020-11-17 | 上海中通吉网络技术有限公司 | 接口自动测试方法及设备 |
-
2021
- 2021-02-26 CN CN202110220017.8A patent/CN114968754A/zh active Pending
-
2022
- 2022-01-21 EP EP22758729.2A patent/EP4270199A1/en active Pending
- 2022-01-21 WO PCT/CN2022/073096 patent/WO2022179363A1/zh unknown
-
2023
- 2023-08-07 US US18/366,600 patent/US20230376408A1/en active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106339312A (zh) * | 2015-07-17 | 2017-01-18 | 腾讯科技(深圳)有限公司 | Api测试方法和系统 |
CN109189666A (zh) * | 2018-08-02 | 2019-01-11 | 腾讯科技(北京)有限公司 | 接口测试方法、装置和计算机设备 |
CN111382051A (zh) * | 2018-12-29 | 2020-07-07 | 北京数聚鑫云信息技术有限公司 | 一种api自动测试方法及测试装置 |
CN110083526A (zh) * | 2019-03-15 | 2019-08-02 | 深圳壹账通智能科技有限公司 | 应用程序测试方法、装置、计算机装置及存储介质 |
CN110928774A (zh) * | 2019-11-07 | 2020-03-27 | 杭州顺网科技股份有限公司 | 一种基于节点式的自动化测试系统 |
CN110968505A (zh) * | 2019-11-15 | 2020-04-07 | 烟台中科网络技术研究所 | 一种api接口的自动化测试方法和系统 |
CN111949520A (zh) * | 2020-07-31 | 2020-11-17 | 上海中通吉网络技术有限公司 | 接口自动测试方法及设备 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024045781A1 (zh) * | 2022-09-02 | 2024-03-07 | 华为云计算技术有限公司 | 一种云服务的测试方法及相关设备 |
CN115203061A (zh) * | 2022-09-14 | 2022-10-18 | 广东美的暖通设备有限公司 | 接口自动化测试方法、装置、电子设备及存储介质 |
CN116471215A (zh) * | 2023-04-03 | 2023-07-21 | 中国电子技术标准化研究院 | 一种用于工业互联网云边端的融合接口自动化测试系统 |
Also Published As
Publication number | Publication date |
---|---|
US20230376408A1 (en) | 2023-11-23 |
EP4270199A1 (en) | 2023-11-01 |
CN114968754A (zh) | 2022-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022179363A1 (zh) | 一种应用程序接口api测试方法以及装置 | |
US10769228B2 (en) | Systems and methods for web analytics testing and web development | |
US11743275B2 (en) | Machine learning based anomaly detection and response | |
US10394552B2 (en) | Interface description language for application programming interfaces | |
US11252168B2 (en) | System and user context in enterprise threat detection | |
US20170178026A1 (en) | Log normalization in enterprise threat detection | |
US8930402B1 (en) | Systems and methods for automatic collection of data over a network | |
US8713368B2 (en) | Methods for testing OData services | |
CN112154420B (zh) | 自动智能云服务测试工具 | |
US10986020B2 (en) | Reconstructing message flows based on hash values | |
CN111666205A (zh) | 一种数据审计的方法、系统、计算机设备和存储介质 | |
US20110238633A1 (en) | Electronic file comparator | |
EP3857853A1 (en) | System and methods for automated computer security policy generation and anomaly detection | |
CN111373377B (zh) | 用于请求者和提供者之间的错误处理的方法和系统 | |
WO2022151835A1 (zh) | 一种样例报文处理方法及装置 | |
US7783662B2 (en) | Federated information management | |
CN111651356A (zh) | 一种应用程序测试方法、装置及系统 | |
CN116594658B (zh) | 针对元数据的版本升级方法、装置、电子设备和介质 | |
JP7470769B1 (ja) | クラウドのapiの変更を分析する方法 | |
US11693851B2 (en) | Permutation-based clustering of computer-generated data entries | |
US20240037157A1 (en) | Increasing security of a computer program using unstructured text | |
WO2024086877A1 (en) | System, method and device for detecting excessive data exposures | |
CN117008921A (zh) | 元数据采集方法、电子设备、存储介质 | |
CN117149633A (zh) | 脚本处理的方法、装置、电子设备和存储介质 | |
CN113157462A (zh) | 数据管理方法、装置、设备、计算机可读存储介质及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 22758729 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2022758729 Country of ref document: EP Effective date: 20230726 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |