CN114153747A - 接口的测试方法、电子设备及计算机可读取存储介质 - Google Patents
接口的测试方法、电子设备及计算机可读取存储介质 Download PDFInfo
- Publication number
- CN114153747A CN114153747A CN202111568619.9A CN202111568619A CN114153747A CN 114153747 A CN114153747 A CN 114153747A CN 202111568619 A CN202111568619 A CN 202111568619A CN 114153747 A CN114153747 A CN 114153747A
- Authority
- CN
- China
- Prior art keywords
- interface
- log
- interfaces
- testing
- data
- 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/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/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种接口的测试方法、电子设备及计算机可读取存储介质,方法包括:确定日志元素,根据日志元素的数据确定各接口的接口日志;以预设的时间间隔获取各接口日志的日志元素的数据以生成新的接口日志,对新的接口日志、以及对应的历史接口日志进行等价类合并过滤处理以得到日志数据;对比各规格定义与对应的日志数据以生成中间表示;对中间表示进行检查以确定并过滤出所有接口中的问题接口;根据中间表示对问题接口的规格定义进行修改,并根据修改后的规格定义对问题接口进行测试。本方案通过规范接口日志的格式,保障了测试用例的可用性。利用中间表示确定问题接口,通过可量化的指标对接口行为进行控制,保证了测试完整性和接口一致性。
Description
技术领域
本发明涉及接口测试技术领域,特别涉及一种接口的测试方法、电子设备及计算机可读取存储介质。
背景技术
应用程序接口(Application programming interface,API)作为软件交互的一种中介,其接口文档则成为了软件交互的一种契约。然而由于接口文档和后端接口代码在软件交付的过程中常有一定的差异性,故如何保障契约的一致性,成为时常关注的问题。目前已知的方案可以通过基于日志驱动的接口自动化测试来保障契约的一致性,即将生产环境的日志经过清洗后导入到数据库中,以接口日志数据为基准,判断与预期接口的一致性。
目前已有的通过日志驱动的方式进行的接口测试,只是停留在复用测试方产生的接口日志来复现接口的行为,从而对接口做一些简单的合规性检测,并没有详细的可量化的指标来规范接口的行为并指导测试方进行完整的回归性测试,从而很难保证接口与其文档的一致性以及通过文档自动生成的接口制品的可用性。
发明内容
本发明的目的在于解决现有技术中接口测试时,测试的完整性难以保证,从而导致接口及其制品的一致性不高的问题。
为解决上述问题,本发明的实施方式公开了一种接口的测试方法,包括:
S1:确定接口对应的接口日志中需采集的日志元素,获取所有接口中各接口对应的接口日志的日志元素的数据,并根据日志元素的数据确定各接口的接口日志;
S2:以预设的时间间隔获取各接口日志的日志元素的数据以生成新的接口日志,分别对新的接口日志、以及对应的历史接口日志进行等价类合并过滤处理,以得到日志数据;
S3:获取各接口的规格定义,并对各规格定义与对应的日志数据进行对比,以生成对应于各接口的中间表示;
S4:对各中间表示进行检查,以确定出所有接口中的问题接口,并过滤问题接口;
S5:根据中间表示对问题接口的规格定义进行修改,并根据修改后的规格定义对问题接口进行测试。
采用上述方案,通过确定日志元素,统一了接口日志采集、上报的格式,保障了测试用例的可用性。并且,通过中间表示、问题接口这种可度量的指标体系,可以很直观的观察各接口的质量,且通过可量化的指标来规范和控制接口行为,测试的完整性得到保证,保证接口及其制品的一致性。
根据本发明的另一具体实施方式,本发明实施方式公开的接口的测试方法,接口的测试方法为基于契约的接口测试方法;并且,对各规格定义与对应的日志数据进行对比,以生成对应于各接口的中间表示,包括:对各规格定义与对应的日志数据进行对比,以生成对应于各接口的契约测试的中间表示;并且,对各中间表示进行检查,包括:利用准入控制系统对各契约测试的中间表示进行检查。
采用上述方案,由于采用了基于契约的接口测试方法,通过契约测试规范,检测接口文档不一致的问题,将契约测试规范作为准入控制系统的基线,使得前端的接口文档和后端接口代码的一致性更好。即利用契约测试,通过可量化的指标来规范和控制接口行为,测试的完整性得到保证,保证接口及其制品的一致性。
根据本发明的另一具体实施方式,本发明实施方式公开的接口的测试方法,步骤S1中,日志元素包括:接口名称或接口唯一标识、接口请求方法(Method)、接口请求响应的头(Header)和主体(Body)、接口请求时间、以及接口请求的唯一标识码(UUID)。
采用上述方案,通过确定日志元素,统一了接口日志采集、上报的格式,保障了测试用例的可用性。
根据本发明的另一具体实施方式,本发明实施方式公开的接口的测试方法,步骤S2中,以预设的时间间隔获取各接口日志的日志元素的数据以生成新的接口日志,包括:利用开源项目定时任务以预设的时间间隔获取各接口日志的日志元素以生成新的接口日志;并且,分别对新的各接口日志、以及对应的各接口日志进行等价类合并过滤处理,包括:分别将新的各接口日志、以及对应的各接口日志对应的数据进行合并;将各合并后的数据利用等价类划分法进行过滤;并且,以预设的时间间隔获取各接口日志的日志元素的数据以生成新的接口日志之前,还包括:建立持久化仓库;得到日志数据之后,还包括:将各接口的日志数据存储至持久化仓库;并且,步骤S3中,获取各接口的规格定义,并对各规格定义与对应的日志数据进行对比,包括:获取各接口的规格定义,从持久化仓库获取各接口的日志数据,并对各规格定义与对应的日志数据进行对比。
采用上述方案,通过对新的接口日志以及旧的接口日志进行合并、并将合并后的数据利用等价类划分法进行过滤,实现了接口日志等价类的替换和增加,实现更新和增量同步。并且,通过建立持久化仓库对日志数据统一进行存储,降低了数据丢失的可能性。将日志数据统一存储进持久化仓库,在后期调用数据的时候无需从各个位置搜寻数据,而直接从持久化仓库中检索调用即可,提高了调用数据的效率。
根据本发明的另一具体实施方式,本发明实施方式公开的接口的测试方法,步骤S2之后,还包括:
S2’:对经过过滤处理得到的错误接口,筛选出需要做破坏性更改且已进行后端服务修改的的接口,对筛选出的接口进行评审并执行等价类下线处理。
采用上述方案,过滤处理之后,下线错误接口及其等价类的接口,排除了错误接口,能使得接口测试的过程更稳定、结果更准确。
根据本发明的另一具体实施方式,本发明实施方式公开的接口的测试方法,步骤S3中,中间表示包括各接口的错误类型指标;其中,错误类型指标包括必填字段缺失、字段类型错误、以及字段大小写错误。
采用上述方案,通过生成中间表示的方式确定各个接口的错误类型指标,在后续测试的过程中可以将具有错误类型指标的接口进行过滤,进而使得接口测试的过程更稳定,测试结果更准确。
根据本发明的另一具体实施方式,本发明实施方式公开的接口的测试方法,步骤S3中,在生成对应于各接口的中间表示时,还包括:对各接口进行接口覆盖率检测、以及字段覆盖率检测;步骤S4中,问题接口为:
经过接口覆盖率检测得到的覆盖率不足的接口、经字段覆盖率检测得到的覆盖率不足的接口、或存在文档错误的接口;并且,步骤S4中,过滤问题接口,包括:阻止问题接口上线发布。
采用上述方案,将问题接口设定为满足经过接口覆盖率检测得到的覆盖率不足的接口、经字段覆盖率检测得到的覆盖率不足的接口、存在文档错误的接口中任一条件的接口,这些问题和错误为能够影响测试完整性、接口一致性的问题和错误,对这样的问题接口进行过滤,能够避免因接口出现问题导致测试结果、完整性和接口的一致性受到影响,也无需再对其他的错误进行检测,降低检测效率。并且,通过阻止问题接口上线发布,能够使得通过测试的接口都是满足契约一致性的接口,保证了测试的准确性和稳定性。
根据本发明的另一具体实施方式,本发明实施方式公开的接口的测试方法,步骤S5之后,还包括:从剩余的各接口中筛选出无法进行回归测试的接口;根据无法进行回归测试的接口、利用正则化方法生成白名单;其中,白名单为支持定时下线的白名单;根据白名单、以及对应的规格定义对剩余的各接口进行测试。
采用上述方案,对部分接口难以回归测试的问题,提供基于正则的白名单机制,如此一来,将难以进行回归测试的接口加入白名单,可以方便测试,且白名单支持定时下线,也便于对接口进行线上控制。
本发明的实施方式还公开了一种电子设备,包括:存储器,用于存储计算机程序,计算机程序包括程序指令;处理器,用于执行程序指令,以使电子设备执行如上任意实施方式所描述的接口的测试方法。
本发明的实施方式还公开了一种计算机可读取存储介质,计算机可读取存储介质存储有计算机程序,计算机程序包括程序指令,程序指令被电子设备运行以使电子设备执行如上任意实施方式所描述的接口的测试方法。
本发明的有益效果是:
本发明提供的接口测试方法,通过确定日志元素,统一了接口日志采集、上报的格式,保障了测试用例的可用性。并且,通过中间表示、问题接口这种可度量的指标体系,可以很直观的观察各接口的质量,且通过可量化的指标来规范和控制接口行为,测试的完整性得到保证,保证接口及其制品的一致性。进一步,采用了基于契约的接口测试方法,通过契约测试规范,检测接口文档不一致的问题,将契约测试规范作为准入控制系统的基线,使得前端的接口文档和后端接口代码的一致性更好。更进一步,通过确定且完整的准入控制体系,能够不遗漏任何可能出错的接口,提高了测试的准确性和可靠性。使用基于开源的分布式版本控制系统的持久化方案及持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)系统,使系统更轻量。
附图说明
图1是本发明实施例提供的接口的测试方法的流程示意图;
图2是本发明实施例提供的接口的测试方法的CI流程图。
具体实施方式
以下由特定的具体实施例说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其他优点及功效。虽然本发明的描述将结合较佳实施例一起介绍,但这并不代表此发明的特征仅限于该实施方式。恰恰相反,结合实施方式作发明介绍的目的是为了覆盖基于本发明的权利要求而有可能延伸出的其它选择或改造。为了提供对本发明的深度了解,以下描述中将包含许多具体的细节。本发明也可以不使用这些细节实施。此外,为了避免混乱或模糊本发明的重点,有些具体细节将在描述中被省略。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
应注意的是,在本说明书中,相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本实施例的描述中,需要说明的是,术语“上”、“下”、“内”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本实施例的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本实施例中的具体含义。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
为解决现有技术中接口测试时,测试的完整性难以保证,从而导致接口及其制品的一致性不高的问题,本发明的实施方式提供了一种接口的测试方法。具体地,参考图1,本发明提供的接口的测试方法包括以下步骤:
S1:确定接口对应的接口日志中需采集的日志元素,获取所有接口中各接口对应的接口日志的日志元素的数据,并根据日志元素的数据确定各接口的接口日志;
S2:以预设的时间间隔获取各接口日志的日志元素的数据以生成新的接口日志,分别对新的接口日志、以及对应的历史接口日志进行等价类合并过滤处理,以得到日志数据;
S3:获取各接口的规格定义,并对各规格定义与对应的日志数据进行对比,以生成对应于各接口的中间表示;
S4:对各中间表示进行检查,以确定出所有接口中的问题接口,并过滤问题接口;
S5:根据中间表示对问题接口的规格定义进行修改,并根据修改后的规格定义对问题接口进行测试。
更进一步,在根据本发明的该接口的测试方法中,测试方法能够对多个接口进行测试。其中,每个接口对应有多个接口日志,多个接口日志分别对应不同的时刻,即有新的接口日志和历史接口日志。每个接口日志中包含有多个日志元素,且同一接口对应的多个接口日志均具有相同的日志元素。每个接口还有对应的规格定义。
具体地,步骤S1中,日志元素的数据是指每个日志元素的值,例如,日志元素为接口请求的唯一标识码时,日志元素数据可以是550e8400-e29b-41d4-a716-446655440000。步骤S2中,预设的时间间隔可以任意设置,可以是5毫秒、8秒、甚至30分钟、1.5小时等时间间隔,本领域技术人员可以根据数据的更新时间、以及数据量综合确定。接口日志由日志元素的数据、以及其他固定要素组成。并且,日志采集的方式可以是推模式或者是拉模式,只要遵循日志采集的格式即可。在步骤S2中,历史接口日志即为步骤S1中的接口日志。日志数据即为对新的接口日志及历史接口日志进行等价类合并过滤处理后所得的关于接口日志的数据。步骤S3中,接口的规格定义是预先设定的,每个接口都有对应的规格定义。步骤S4中,通过策略引擎对中间表示进行检查。
采用上述方案,通过确定日志元素,统一了接口日志采集、上报的格式,保障了测试用例的可用性。并且,通过中间表示、问题接口这种可度量的指标体系,可以很直观的观察各接口的质量,且通过可量化的指标来规范和控制接口行为,测试的完整性得到保证,保证接口及其制品的一致性。
进一步,在根据本发明的该接口的测试方法中,接口的测试方法为基于契约的接口测试方法。并且,对各规格定义与对应的日志数据进行对比,以生成对应于各接口的中间表示,包括:对各规格定义与对应的日志数据进行对比,以生成对应于各接口的契约测试的中间表示。并且,对各中间表示进行检查,包括:利用准入控制系统对各契约测试的中间表示进行检查。具体地,准入控制系统,是一种依赖一定的策略,判断特定的外部数据是否可以被准入到内部,从而保障内部数据的可用性的一种系统。
更进一步,在根据本发明的该接口的测试方法中,基于契约的接口测试中的契约是指消费者驱动契约,将服务分为消费者端和生产者端,而消费者驱动的契约测试的核心思想在于是从消费者业务实现的角度出发,由消费者自己会定义需要的数据格式以及交互细节,并驱动生成一份契约文件。然后生产者根据契约文件来实现自己的逻辑,并在持续集成环境中持续验证。具有这样的步骤,由于采用了基于契约的接口测试方法,通过契约测试规范,检测接口文档不一致的问题,将契约测试规范作为准入控制系统的基线,使得前端的接口文档和后端接口代码的一致性更好。
进一步,在根据本发明的该接口的测试方法中,步骤S1中,日志元素包括:接口名称或接口唯一标识、接口请求方法(Method)、接口请求响应的头(Header)和主体(Body)、接口请求时间、以及接口请求的唯一标识码(UUID)。需要说明的是,本实施方式仅仅是示意性的列举了几种日志元素,事实上,本领域技术人员可以根据测试类型、以及所需数据对增加其他日志元素,本具体实施方式对此不作限制。还需要说明的是,本具体实施方式中日志元素对应的接口特指应用程序接口中的HTTP接口。更进一步,具有这样的步骤,通过确定日志元素,统一了接口日志采集、上报的格式,保障了测试用例的可用性。
进一步,在根据本发明的该接口的测试方法中,步骤S2中,以预设的时间间隔获取各接口日志的日志元素的数据以生成新的接口日志,包括:利用开源项目定时任务以预设的时间间隔获取各接口日志的日志元素以生成新的接口日志。并且,分别对新的各接口日志、以及对应的各接口日志进行等价类合并过滤处理,包括:分别将新的各接口日志、以及对应的各接口日志对应的数据进行合并;将各合并后的数据利用等价类划分法进行过滤。具体地,本具体实施方式中,通过GitLab CI(持续集成,Continuous Integration,CI)定时任务,即每隔一定的时间将采集到的最新日志与已有数据合并后通过等价类划分过滤。
更进一步,具有这样的步骤,实现了接口日志等价类的替换和增加,实现更新和增量同步。更为具体地,等价类划分法是指根据不同的输入将各接口日志对应的数据进行分类,并将各接口日志对应的数据分为有效等价类和无效等价类,并进行测试。在测试完成之后,则可以根据预设的过滤条件对有害信息进行过滤。需要说明的是,等价类划分条件可以根据接口的类型和接口日志对应的数据综合确定,本具体实施方式对此不作限制。在进行过滤处理时,本领域技术人员也可以根据实际需求确定过滤条件,该过滤条件可以是特定的IP地址或者特定的URL,本具体实施方式对此也不作限制。
更进一步,在根据本发明的该接口的测试方法中,以预设的时间间隔获取各接口日志的日志元素的数据以生成新的接口日志之前,还包括:建立持久化仓库。并且,得到日志数据之后,还包括:将各接口的日志数据存储至持久化仓库。也就是说,本具体实施方式中,需要建立持久化仓库(Git仓库)以存储日志数据。具有这样的方式,通过建立持久化仓库对日志数据统一进行存储,降低了数据丢失的可能性。更进一步,在根据本发明的该接口的测试方法中,步骤S3中,获取各接口的规格定义,并对各规格定义与对应的日志数据进行对比,包括:获取各接口的规格定义,从持久化仓库获取各接口的日志数据,并对各规格定义与对应的日志数据进行对比。具有这样的步骤,将日志数据统一存储进持久化仓库,在后期调用数据的时候无需从各个位置搜寻数据,而直接从持久化仓库中检索调用即可,提高了调用数据的效率。
更为具体地,本具体实施方式中,以预设的时间间隔获取各接口日志的日志元素的数据以生成新的接口日志具体采用以下方式:首先,以定时任务的方式按照时间片采集日志。通过这样的方式,保障了数据一定的实时性并避免了因日志的时间跨度过长导致采集的效率降低的问题。其次,每次采集时将当前的采集时间一并持久化到仓库中,通过这样的方式,避免重复采集以及方便在定时任务失效后做数据补偿。之后,等价类按一条接口日志请求响应的主体解析出的所有字段名称和字段类型的集合来划分。从而方便进行字段名称和类型的校验,其中对于嵌套的字段按照字段的层级关系展平后作为字段的路径名称;例如,这里对于数组会在路径中加“.N“的标识,对于结构体对象则在路径中加“.”的标识。另外对于相同等价类包含的多条接口日志只取请求时间最新的一条进行持久化,以便保存和查询。
进一步,在根据本发明的该接口的测试方法中,步骤S2之后,还包括:S2’:对经过过滤处理得到的错误接口,筛选出需要做破坏性更改且已进行后端服务修改的的接口,对筛选出的接口进行评审并执行等价类下线处理。也就是说,步骤S2之后,对于经过步骤S2中的过滤处理得到的错误接口,其中需要做破坏性更改且已进行后端服务修改的,支持在评审后通过正则匹配的方式进行等价类的下线,保障日志数据与后端服务的一致性,从而保障系统的稳定性。
进一步,在根据本发明的该接口的测试方法中,步骤S3中,中间表示包括各接口的错误类型指标。其中,错误类型指标包括必填字段缺失、字段类型错误、以及字段大小写错误。具体地,必填字段缺失是指当前接口对应日志中没有文档中定义的必填字段并成功调用;字段类型错误是指当前接口对应网关日志中对应字段的类型与文档中定义的不一致;字段大小写错误是指当前接口对应网关日志中对应字段的大小写与文档中定义的不一致。具有这样的步骤,通过生成中间表示的方式确定各个接口的错误类型指标,在后续测试的过程中可以将具有错误类型指标的接口进行过滤,进而使得接口测试的过程更稳定,测试结果更准确。需要理解的是,本实施方式仅仅是示意性的列举了接口错误类型指标包括以上几种类型,事实上,本领域技术人员还可以根据接口类型、并结合测试过程遇到的具体情况设定其他的错误类型指标。
进一步,在根据本发明的该接口的测试方法中,步骤S3中,在生成对应于各接口的中间表示时,还包括:对各接口进行接口覆盖率检测、以及字段覆盖率检测。具体地,接口覆盖率检测是指,对于所有官网显示的接口进行覆盖率检测;字段覆盖率检测是指,对于已覆盖的接口进行字段级别覆盖率检测。也就是说,在生成中间表示时,还包含了覆盖率指标分析。当然,本具体实施方式仅仅是示意性地列举了覆盖率指标包括接口覆盖率和字段覆盖率,本领域技术人员可以根据实际需要增加代码覆盖率或者其他覆盖率指标。
进一步,在根据本发明的该接口的测试方法中,步骤S4中,问题接口为:经过接口覆盖率检测得到的覆盖率不足的接口、经字段覆盖率检测得到的覆盖率不足的接口、或存在文档错误的接口。也就是说,本具体实施方式中,会对满足经过接口覆盖率检测得到的覆盖率不足的接口、经字段覆盖率检测得到的覆盖率不足的接口、存在文档错误的接口中任一条件的接口进行过滤。具有这样的步骤,将问题接口设定为满足经过接口覆盖率检测得到的覆盖率不足的接口、经字段覆盖率检测得到的覆盖率不足的接口、存在文档错误的接口中任一条件的接口,这些问题和错误为能够影响测试完整性、接口一致性的问题和错误,对这样的问题接口进行过滤,能够避免因接口出现问题导致测试结果、完整性和接口的一致性受到影响,也无需再对其他的错误进行检测,降低检测效率。
更进一步,在根据本发明的该接口的测试方法中,步骤S4中,过滤问题接口,包括:阻止问题接口上线发布。具有这样的步骤,通过阻止问题接口上线发布,能够使得通过测试的接口都是满足契约一致性的接口,保证了测试的准确性和稳定性。
更进一步,在根据本发明的较佳实施方式中,契约测试中间表示中还会将错误和覆盖率问题分层展示。分层展示的层级可以包括字段级、接口级和产品级。并且,经过正则匹配的策略引擎准入控制,过滤出覆盖率不足或存在文档错误的接口,阻止相应的接口上线发布。另外,还提供了基于契约测试中间表示的前端展示页面,方便更直观的查看接口的质量。
进一步,在根据本发明的该接口的测试方法中,步骤S5之后,还包括:从剩余的各接口中筛选出无法进行回归测试的接口;根据无法进行回归测试的接口、利用正则化方法生成白名单;根据白名单、以及对应的规格定义对剩余的各接口进行测试。其中,白名单为支持定时下线的白名单。具有这样的步骤,对部分接口难以回归测试的问题,提供基于正则的白名单机制,如此一来,将难以进行回归测试的接口加入白名单,可以方便测试,且白名单支持定时下线,也便于对接口进行线上控制。具体地,本具体实施方式中,对于现存部分接口难以回归测试的问题,提供基于正则的白名单机制的具体细节如下:白名单分类信息包括产品待下线、接口待下线、环境受限、产品受限。白名单规则的维度包含产品级规则、接口级规则以及请求响应字段的路径名称规则,其中字段路径名称跟划分等价类时的相同,所有规则均采用正则匹配的方式,并用通配符百分号(%)来替代零个或多个字符,方便书写。
接下来,参考图2描述一种具体的接口测试方法。该方法通过契约测试作为准入控制系统的基线,从而能够保证接口的一致性及其制品的可用性。该方法的具体步骤为:
首先,定义接口日志采集的格式,其中对于应用程序接口中的HTTP接口,包括以下元素:接口名称或接口唯一标识、接口请求方法(Method)、接口请求响应的头(Header)和主体(Body)、接口请求时间、接口请求的唯一标识码(UUID)。
其次,构建接口日志Git仓库,通过Git仓库的CI定时任务,每隔一定的时间将采集到的最新日志与已有数据合并,并通过等价类划分过滤后存储在仓库中(图2中的持久化存储),通过采集最新日志来进行等价类的替换和增加,实现了接口日志的更新和增量同步,具体细节如下:
(1)以定时任务的方式按照时间片采集日志,保障了数据一定的实时性并避免了因日志的时间跨度过长导致采集的效率降低的问题;
(2)每次采集时将当前的采集时间一并持久化到仓库中,避免重复采集以及方便在定时任务失效后做数据补偿;
(3)等价类按一条接口日志请求响应的主体解析出的所有字段名称和字段类型的集合来划分,从而方便进行字段名称和类型的校验,其中对于嵌套的字段按照字段的层级关系展平后作为字段的路径名称;例如,这里对于数组会在路径中加“.N“的标识,对于结构体对象则在路径中加“.”的标识。另外对于相同等价类包含的多条接口日志只取请求时间最新的一条进行持久化,以便保存和查询。
之后,对于经过过滤处理得到的错误接口,其中需要做破坏性更改且已进行后端服务修改的,支持在评审后通过正则匹配的方式进行等价类的下线,保障日志数据与后端服务的一致性,从而保障系统的稳定性。
接下来,将日志数据与接口规格定义做对比,生成契约测试中间表示,其中包含对应多种错误类型指标:
第一种,必填字段缺失,即当前接口对应日志中没有文档中定义的必填字段并成功调用;
第二种,字段类型错误,即当前接口对应网关日志中对应字段的类型与文档中定义的不一致;
第三种,字段大小写错误,即当前接口对应网关日志中对应字段的大小写与文档中定义的不一致。
之后,在生成契约测试中间表示时还包含了覆盖率指标分析。具体包括接口覆盖率分析,即对于所有官网显示的接口进行覆盖率检测;以及字段覆盖率分析,即对于已覆盖的接口进行字段级别覆盖率检测。
之后,契约测试中间表示中将错误和覆盖率问题分层展示,包括字段级、接口级和产品级,经过正则匹配的策略引擎准入控制,过滤出覆盖率不足或存在文档错误的接口,阻止相应的接口上线发布;另外,还提供了基于契约测试中间表示的前端展示页面,方便更直观的查看接口的质量。
之后,对于现存部分接口难以回归测试的问题,提供基于正则的白名单机制,白名单支持定时下线,具体细节如下:白名单分类信息:产品待下线、接口待下线、环境受限、产品受限。白名单规则的维度包含产品级规则、接口级规则以及请求响应字段的路径名称规则,其中字段路径名称跟划分等价类时的相同,所有规则均采用正则匹配的方式,并用通配符百分号(%)来替代零个或多个字符,方便书写。
该测试方法通过可度量的指标体系,可以很直观的观察,各接口的质量,通过确定且完整的准入控制体系,不遗漏任何可能出错的接口,使用基于Git持久化方案及CI/CD系统,使系统更轻量。
基于上述接口的测试方法,本具体实施方式还提供一种电子设备。该电子设备包括存储器,用于存储计算机程序,计算机程序包括程序指令;处理器,用于执行程序指令,以使电子设备执行如上实施方式所描述的接口的测试方法。进一步,在根据本发明的该电子设备中,本领域技术人员可以根据实际需要对存储器和处理器进行选择。
基于上述的接口测试方法,本具体实施方式还提供一种计算机可读取存储介质,计算机可读取存储介质存储有计算机程序,计算机程序包括程序指令,程序指令被电子设备运行以使电子设备执行如上实施方式所描述的接口的测试方法。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。本领域技术人员可以在形式上和细节上对其作各种改变,包括做出若干简单推演或替换,而不偏离本发明的精神和范围。
Claims (10)
1.一种接口的测试方法,其特征在于,包括:
S1:确定所述接口对应的接口日志中需采集的日志元素,获取所有接口中各所述接口对应的所述接口日志的日志元素的数据,并根据所述日志元素的数据确定各所述接口的接口日志;
S2:以预设的时间间隔获取各所述接口日志的日志元素的数据以生成新的接口日志,分别对所述新的接口日志、以及对应的历史接口日志进行等价类合并过滤处理,以得到日志数据;
S3:获取各所述接口的规格定义,并对各所述规格定义与对应的所述日志数据进行对比,以生成对应于各所述接口的中间表示;
S4:对各所述中间表示进行检查,以确定出所有所述接口中的问题接口,并过滤所述问题接口;
S5:根据所述中间表示对所述问题接口的规格定义进行修改,并根据修改后的所述规格定义对所述问题接口进行测试。
2.如权利要求1所述的接口的测试方法,其特征在于,所述接口的测试方法为基于契约的接口测试方法;并且
对各所述规格定义与对应的所述日志数据进行对比,以生成对应于各所述接口的中间表示,包括:
对各所述规格定义与对应的所述日志数据进行对比,以生成对应于各所述接口的契约测试的中间表示;并且
对各所述中间表示进行检查,包括:
利用准入控制系统对各所述契约测试的中间表示进行检查。
3.如权利要求2所述的接口的测试方法,其特征在于,所述步骤S1中,所述日志元素包括:
接口名称或接口唯一标识、接口请求方法、接口请求响应的头和主体、接口请求时间、以及接口请求的唯一标识码。
4.如权利要求1所述的接口的测试方法,其特征在于,所述步骤S2中,以预设的时间间隔获取各所述接口日志的日志元素的数据以生成新的接口日志,包括:
利用开源项目定时任务以预设的时间间隔获取各所述接口日志的日志元素以生成新的接口日志;并且
分别对新的各所述接口日志、以及对应的各所述接口日志进行等价类合并过滤处理,包括:
分别将新的各所述接口日志、以及对应的各所述接口日志对应的数据进行合并;
将各合并后的数据利用等价类划分法进行过滤;并且
以预设的时间间隔获取各所述接口日志的日志元素的数据以生成新的接口日志之前,还包括:
建立持久化仓库;
得到日志数据之后,还包括:
将各所述接口的所述日志数据存储至所述持久化仓库;并且
所述步骤S3中,获取各所述接口的规格定义,并对各所述规格定义与对应的所述日志数据进行对比,包括:
获取各所述接口的规格定义,从所述持久化仓库获取各所述接口的所述日志数据,并对各所述规格定义与对应的所述日志数据进行对比。
5.如权利要求1所述的接口的测试方法,其特征在于,所述步骤S2之后,还包括:
S2’:对经过所述过滤处理得到的错误接口,筛选出需要做破坏性更改且已进行后端服务修改的的接口,对筛选出的所述接口进行评审并执行等价类下线处理。
6.如权利要求1所述的接口的测试方法,其特征在于,所述步骤S3中,所述中间表示包括各接口的错误类型指标;其中
所述错误类型指标包括必填字段缺失、字段类型错误、以及字段大小写错误。
7.如权利要求1所述的接口的测试方法,其特征在于,所述步骤S3中,在生成对应于各所述接口的中间表示时,还包括:
对各所述接口进行接口覆盖率检测、以及字段覆盖率检测;
所述步骤S4中,所述问题接口为:
经过所述接口覆盖率检测得到的覆盖率不足的接口、经所述字段覆盖率检测得到的覆盖率不足的接口、或存在文档错误的接口;并且
所述步骤S4中,过滤所述问题接口,包括:
阻止所述问题接口上线发布。
8.如权利要求1所述的接口的测试方法,其特征在于,所述步骤S5之后,还包括:
从剩余的各所述接口中筛选出无法进行回归测试的接口;
根据无法进行回归测试的接口、利用正则化方法生成白名单;其中,所述白名单为支持定时下线的白名单;
根据所述白名单、以及对应的所述规格定义对剩余的各所述接口进行测试。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序,所述计算机程序包括程序指令;
处理器,用于执行所述程序指令,以使所述电子设备执行根据权利要求1-8任意一项所述的接口的测试方法。
10.一种计算机可读取存储介质,其特征在于,所述计算机可读取存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被电子设备运行以使电子设备执行如权利要求1-8任意一项所述的接口的测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111568619.9A CN114153747A (zh) | 2021-12-21 | 2021-12-21 | 接口的测试方法、电子设备及计算机可读取存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111568619.9A CN114153747A (zh) | 2021-12-21 | 2021-12-21 | 接口的测试方法、电子设备及计算机可读取存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114153747A true CN114153747A (zh) | 2022-03-08 |
Family
ID=80451724
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111568619.9A Pending CN114153747A (zh) | 2021-12-21 | 2021-12-21 | 接口的测试方法、电子设备及计算机可读取存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114153747A (zh) |
-
2021
- 2021-12-21 CN CN202111568619.9A patent/CN114153747A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Maro et al. | Software traceability in the automotive domain: Challenges and solutions | |
CN108959059B (zh) | 一种测试方法以及测试平台 | |
US20120192172A1 (en) | Updating a computer system | |
CN106095866B (zh) | 应用程序推荐方法、程序启动速度的优化方法和装置 | |
CN106844730B (zh) | 文件内容的显示方法及装置 | |
JP6438651B2 (ja) | 散在するログを探索して表示する方法及びシステム | |
CN111445121A (zh) | 风险评估方法和装置、存储介质及电子装置 | |
CN111522741B (zh) | 接口测试代码生成方法、装置、电子设备及可读存储介质 | |
Cysneiros et al. | Integrating non-functional requirements into data modeling | |
CN112036153B (zh) | 工单纠错方法、装置、计算机可读存储介质和计算机设备 | |
Yasmin et al. | A first look at the deprecation of RESTful APIs: An empirical study | |
Wen et al. | Blimp tracer: Integrating build impact analysis with code review | |
JP2009539078A (ja) | サンプルテスト結果およびそれぞれの結果コンテキスト情報を管理するシステムおよび方法 | |
Sae-Lim et al. | An investigative study on how developers filter and prioritize code smells | |
CN111061733B (zh) | 数据处理方法、装置、电子设备和计算机可读存储介质 | |
Sosnowski et al. | Analysing problem handling schemes in software projects | |
CN111341405B (zh) | 医用数据处理系统及方法 | |
CN114153747A (zh) | 接口的测试方法、电子设备及计算机可读取存储介质 | |
CN113918370A (zh) | 类别确定方法、装置、电子设备和存储介质 | |
Li et al. | Studying popular open source machine learning libraries and their cross-ecosystem bindings | |
Karlsson | The edit history of the national vulnerability database | |
Mujahid | Effective Dependency Management for the JavaScript Software Ecosystem | |
EP4287193A1 (en) | Computer-implemented methods and assessing for the presence of an anomaly in a laboratory instrument | |
CN116303104B (zh) | 自动化流程缺陷筛查管理方法、系统和可读存储介质 | |
CN114661513B (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 |