当前位置: 首页 > 专利查询>四川大学专利>正文

一种基于依赖模型的REST接口测试用例生成方法技术

技术编号:35034489 阅读:18 留言:0更新日期:2022-09-24 23:10
本发明专利技术针对REST接口测试用例生成问题,首先解析REST接口的OpenAPI描述文档,收集接口操作间的数据依赖,据此建立操作间依赖模型。然后训练了一个基于BERT模型作的参数间依赖关系分类模型,利用该分类模型对所有参数进行依赖关系分类,建立参数间依赖模型。最后,基于两个依赖模型,利用约束求解器以及动态响应字典求解合法参数组合与合法参数值,并从三方面生成测试预言,得到完备的测试用例。该方法基于被测接口操作间与参数间的依赖关系,建立了具有实际业务意义的测试用例,能够达到较高的OpenAPI文档输入/输出度量覆盖率,可以有效地检测到REST接口内部异常,具有高效、实用等特点。点。

【技术实现步骤摘要】
一种基于依赖模型的REST接口测试用例生成方法


[0001]本专利技术属于软件工程中的软件测试领域,尤其涉及一种REST接口的测试用例生成方法。

技术介绍

[0002]REST架构风格定义了一组架构约束,基于这些约束所构建的API称为REST接口或RESTful接口。为了保证 REST 接口的质量,开放软件的接口在发布前都必须经过详细的测试,在目前已有研究中,大部分采用了基于模型的方法来生成REST接口测试用例,比如RESTler与RESTest模型。
[0003]RESTler模型通过分析各请求之间的生产者

消费者依赖关系,以及测试时的动态响应信息来生成请求序列;而RESTest模型使用了基于约束的方法和随机方法生成输入数据,具有测试覆盖率高、测试用例维护简单等优点。但是,一方面,目前基于模型的方法大多针对接口的单个操作进行测试,难以检测由多个连续操作触发的缺陷。另一方面,并未考虑接口各操作内部的参数间依赖关系,在有限时间成本内难以遍历整个参数空间,无法生成具有实际业务意义的参数组合。

技术实现思路

[0004]本专利技术公开了一种针对REST接口的测试用例生成方法。首先,利用REST接口的OpenAPI描述文档,收集接口操作间的数据依赖,建立操作间依赖模型。然后,构建了一个基于BERT的参数间依赖关系分类模型,使用此分类模型建立被测接口的参数间依赖模型。最后,基于操作间和参数间依赖模型,利用约束求解、动态响应字典生成具有合法参数组合的合理操作序列,并生成测试预言,得到完整的执行用例。
[0005]一种基于依赖模型的REST接口测试用例生成方法,主要包含以下四大步骤:步骤1,构建操作间依赖模型:首先,解析OpenAPI文档,收集待测接口的所有操作形成操作列表;然后,遍历操作列表,记录每个操作中输入数据与响应数据的参数字段名与数据模式;最后,利用分析规则检查所有操作的参数字段名与数据模式,提取不同操作间的共享数据,根据共享数据确定数据依赖关系,进而确定操作依赖关系,并据此建立操作间依赖模型。
[0006]步骤2,构建基于BERT的参数间依赖关系分类模型:首先,从已有研究以及API仓库中收集大量参数描述文本,对文本数据进行预处理后,以6:2:2比例划分训练集、验证集与测试集。使用预训练BERT模型作为特征提取器,获得训练集的向量表示;然后,将向量表示作为输入,针对四类参数间依赖关系:Require、Both、Either、None,训练一个由一层全连接层与一层Softmax层构成的参数间依赖关系分类器,使用验证
集调整模型超参数;最后,使用测试集评估模型分类效果,计算精确率、准确率、召回率和Macro

F1值。
[0007]步骤3,构建参数间依赖关系模型:依次从操作列表中取出一个操作,加载参数间依赖关系分类模型,对操作中的参数进行两两间参数关系分类;分析完成所有操作后,得到的部分参数间依赖关系可能不准确,需要识别并去除矛盾的依赖关系,最终获得参数间依赖关系模型。
[0008]步骤4,基于依赖模型生成测试用例:首先,利用已生成的操作间依赖模型,使用随机搜索方法生成操作序列;然后,将生成的操作序列与参数间依赖模型共同作为约束,使用约束求解器求解,以确定参数的合法组合;由于一些操作的参数值需要根据前序操作的输出值来确定,因此,使用动态响应字典来记录每次响应返回的负载数据,在每次调用时可从响应字典中查找相同结构的数据作为参数值;最后,从响应状态码、JSON

Schema以及Key

Value三个层次生成测试预言,获得完备的可执行测试用例。
[0009]本方法针对REST接口测试用例生成问题,首先解析REST接口的OpenAPI描述文档,根据字段名、数据模式收集接口操作间的数据依赖,根据数据依赖建立操作间依赖模型。然后使用预训练BERT模型作为特征提取器,获得参数描述文本的向量表示,建立参数间依赖关系分类模型。利用该分类模型对操作内所有参数进行依赖关系分类,建立参数间依赖模型。最后,基于操作间依赖模型生成操作序列,使用参数间依赖模型、约束求解器以及动态响应字典求解合法参数组合与合法参数值,根据OpenAPI文档定义,从响应码、JSON

Schema以及Key

Value三方面生成测试预言,得到完备可执行的测试用例。该方法基于被测接口操作间与参数间的依赖关系,建立了具有实际业务意义的测试用例,能够达到较高的OpenAPI文档输入/输出度量覆盖率,可以有效地检测到REST接口内部异常,具有高效、实用等特点。
附图说明
[0010]图1为本专利技术方法的流程示意图。
[0011]图2为参数间依赖关系分类模型架构。
[0012]图3为模型超参数设置。
具体实施方式
[0013]为了更加清楚地展示本专利技术的目的和技术方案,下面将结合具体的实施过程和附图,对本专利技术的具体实施方式和参数进行更加详细的描述。
[0014]一种基于依赖模型的REST接口测试用例生成方法,如图1所示,主要包含四个步骤。
[0015]步骤1,构建操作间依赖模型,如图1中的G1部分所示。
[0016]进一步的,步骤1包含3个子步骤。
[0017]步骤1

1,根据字段名确定数据依赖:
由于REST接口的输入参数或相应数据的字段名是高度语义化的,因此,可以通过判断不同操作的数据字段名是否具有相同语义来确定两个操作之间是否具有数据依赖:将OpenAPI文档中,各操作的parameters和requestBody元素中的数据字段名,与其他操作的responses元素中的数据字段名进行比较,判断字段名是否具有相同语义;在比较两个字段名是否具有相同语义时,首先,比较两个词是否相等,若相等则代表两个词具有相同语义;否则,进一步提取两个词的词干,如果词干相等则代表两个词词性不同但具有相同语义;如果两个操作的数据字段名包含相同语义,那么这两个操作将被视为存在数据依赖。
[0018]步骤1

2,根据数据模式确定数据依赖:由于OpenAPI文档中的复合数据类型使用Schema对象定义,因此,可以通过比较对应的Schema对象结构来判断复合数据中是否包含共享数据;Schema对象的比较过程即是判断一个Schema对象是否为另一个Schema对象的子结构:首先,比较两个数据模式定义的数据类型是否完全相同,若相同且都为原始数据类型,则代表两个数据模式完全相同;否则,两个数据模式不同。对于数据类型为复合数据类型的数据,递归判断两个数据模式的子结构是否相同;如果复合数据中存在共享数据,那么对应的操作将被视为存在数据依赖。
[0019]步骤1

3,根据数据依赖建立操作间依赖模型:根据1

1、1

2步骤所得到的数据依赖确定操作次序,建立操作间依赖关系模型G(N,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于依赖模型的REST接口测试用例生成方法,其特征在于,包括以下步骤:步骤1:构建操作间依赖模型:解析OpenAPI文档,根据待测接口各操作的参数字段名是否存在相同语义,以及复合数据类型中是否存在共享数据,判断是否存在数据依赖,进而根据数据依赖建立操作间依赖模型;步骤2:构建基于BERT的参数间依赖关系分类模型:模型包括两部分:第一部分为预训练BERT模型,主要任务是特征提取,即获得参数描述文本的向量表示;第二部分为一个分类器,主要利用第一部分提取的向量对参数进行关系分类;步骤3:构建参数间依赖模型:利用步骤2所生成的参数间依赖关系分类模型,对被测接口中每个操作的参数进行依赖关系分类,获得参数间依赖关系模型;步骤4:基于依赖模型生成测试用例:利用操作间依赖模型生成操作序列,并将生成的操作序列与参数间依赖模型共同作为约束,使用约束求解器、动态响应字典生成合法参数组合与合法参数值;最后,生成测试预言,获得完备的可执行测试用例。2.根据权利要求1所述方法,其特征在于,所述步骤2,构建基于BERT的参数间依赖关系分类模型,进一步包括:数据收集与预处理:从API仓库中收集接口文档,从中提取参数描述文本;然后,对收集的原始数据进行数据清洗,使用“#”与“$”符号标记出两个参数实体;最后,以6:2:2的比例划分训练集、验证集以及测试集;特征提取:使用预训练BERT模型作为特征提取器,获得训练集、验证集以及测试集的向量表示,从中提取参数词向量与句向量;参数间依赖关系分类器建立:建立一个由一层全连接层与一层Softmax层构成的参数间依赖关系分类器;以训练集的向量表示作为输入,使用验证集调整超参数,最后,使用多个指标在测试集上评估分类器效果。3.根据权利要求1所述方法,其特征在于,所述步骤4,基于依赖模型生成测试用例,进一步包括:根据操作间依赖模型生成操作序列:使用随机搜索方法,利用已生成的操作间依赖模型生成待测...

【专利技术属性】
技术研发人员:杨秋辉刘盈盈
申请(专利权)人:四川大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1