分布式大数据服务的自动化测试方法技术

技术编号:18950811 阅读:46 留言:0更新日期:2018-09-15 13:21
本发明专利技术提出一种分布式大数据服务的自动化测试方法,采用XML Schema进行测试接口的描述,提出了相应的规范,可以有效地对web应用或云平台的API进行描述。通过对API的XML的描述,本发明专利技术可以自动生成测试序列、测试脚本和测试数据。通过本发明专利技术,用户只需要对web应用或云平台的API进行描述,便可以自动化地构建测试序列、生成测试数据,从而达到自动化测试的目的,极大地减轻了用户的工作量,提高测试的效率和准确率,降低了测试的成本。同时也可以对web应用或云平台进行压力测试等人工测试很难完成的测试工作。

Automated test method for distributed large data services

The invention presents an automatic test method for distributed large data services, describes the test interface using XML Schema, and puts forward corresponding specifications, which can effectively describe the API of web applications or cloud platforms. By describing the XML of the API, the invention can automatically generate test sequences, test scripts and test data. By the invention, users can automatically construct test sequences and generate test data only by describing the API of web applications or cloud platforms, thus achieving the purpose of automatic testing, greatly reducing the workload of users, improving the efficiency and accuracy of testing, and reducing the cost of testing. At the same time, it can also test web applications or cloud platforms which are difficult to complete by manual testing.

【技术实现步骤摘要】
分布式大数据服务的自动化测试方法
本专利技术涉及分布式大数据服务的自动化测试
,具体为一种分布式大数据服务的自动化测试方法。
技术介绍
互联网以惊人的速度增长,网络应用已经渗透到人们生活的各个方面。目前,云计算平台(如亚马逊,Azure,Oracle和华为)为各种分布式服务(包括基础设施服务、存储服务和数据服务)提供相对稳定的应用编程接口(API)。云计算吸引越来越多的开发人员将其Web应用迁移到云平台。在云概念下,Web应用的发展与传统的中小型单机应用不同,Web应用程序正在成为具有大数据存储、大服务器背景和跨平台的多用户终端(例如PC端,Android端,IOS端和微信端等)的分布式应用程序,为适应不同的用户终端平台,Web应用控制层逐步提供稳定的应用接口API,以实现控制层和后台服务的跨平台。云计算平台或Web应用控制层围绕数据存储和访问展开应用和服务,它们对客户端提供的API多数是以数据服务为中心的,这些API称为数据服务API,例如在一个Web旅游信息系统中,控制层产品服务提供对产品的若干添加、修改、查找和删除的API应用编程接口;在一个提供平台及应用级服务的云计算平台中,网络会议服务提供对会议的若干增加、修改、查找和删除的API应用编程接口。一般而言,每种数据实体的数据服务API可以分为4种类型:添加数据,查找数据,修改数据和删除数据。伴随着云计算平台和Web应用控制层的数据服务API的不但出现和其广泛应用,其大量常规、重复和分布并发测试需求逐步提上日程,例如,云计算平台和Web应用在其集成、维护和演变升级的过程中,其数据服务API并不会被修改,但是对这些API的测试需要反复进行。由于目前数据服务API数量多、应用系统庞大、终端系统多样、服务部署更新和迭代频繁等原因,手动人工测试云计算平台和Web应用的负担重、效率低、成本高,甚至无法完成分布式测试的预期目标,所以分布式大数据服务API的自动化测试显得越来越重要。目前,国内外专家、学者和企业技术人员在软件自动化测试方面已经取得了一些成绩,例如,测试脚本的自动执行,单个服务的单个API的测试数据生成,但仍存在下述挑战:1、无法自动生成面向单个或多个服务应用的API测试数据序列和测试预言;2、无法自动生成测试脚本。
技术实现思路
由于数据服务的API接口稳定,并且可以划分为添加、修改、查找和删除4种类型的操作,同时,面向数据服务的业务逻辑并不复杂,且重复度高,但测试量大,所以,分布数据服务具备自动化测试的条件。本专利技术针对分布式大数据服务API的特点,提出一种分布式大数据服务的自动化测试方法,包括测试接口描述规范实例生成,以及基于测试接口描述规范的测试序列、测试数据、测试预言和测试脚本的自动化生成技术。通过本专利技术,用户可以实现单个服务API测试数据序列和测试预言的自动生成,以及有关联关系的若干服务API测试数据序列和测试预言的自动生成。这些测试数据和测试预言,在云计算平台和Web应用的集成和演变升级中可以被无数次复用,根据这些API测试序列和数据,本专利技术也提出了自动生成测试脚本的方法,根据测试脚本可以对数据服务进行分布并发测试。本专利技术可以运用于云计算平台、Web系统以及其他数据服务系统的研制中,在较少人工干预的情况下,对数据服务进行自动化测试,以持续不断地促进这些系统在集成和演变中的质量控制水平的提高。本专利技术的技术方案为:所述一种分布式大数据服务的自动化测试方法,其特征在于:包括以下步骤:步骤1:建立基于XMLSchema测试接口描述规范的实例;所述测试接口的描述规范通过XML标签对接口信息进行描述,内容包括服务信息标签、操作标签、接口标签、请求标签、响应标签、依赖标签、以及数据标签和数据标签的约束类型标签;描述规范支持的7种数据类型分别为XMLSchema支持的3种数据类型:内置数据类型,简单数据类型、复杂数据类型,以及附加的4种数据类型,分别为文件数据类型,图像数据类型,音频数据类型和视频数据类型;步骤2:以步骤1得到的基于XMLSchema测试接口描述规范的实例文档作为输入,分别解析每个文档,解析过程中,将描述文档中的信息存储在以下变量中:变量OperaterTypesMap:类型为key-value集合,key值为服务实例的标识id,value值为服务实例所含的操作标签;该变量用于存储服务的所有操作类型;变量AddInterfaceSetMap、DeleteInterfaceSetMap、UpdateInterfaceSetMap、FindInterfaceSetMap:类型为key-value集合,key值为服务实例的标识id,value值为接口集合;接口集合中元素为:接口标识id、请求数据和响应数据的参数列表;参数列表中的每个参数包含参数类型和参数名称两个属性;该变量用于存储各项操作类型中的具体操作实例;变量ParameterConstrainsMap:类型为key-value集合,key值为服务实例的标识id,value值为接口的约束集合;约束集合中元素为:接口标识id,参数约束列表;参数约束列表包含参数名称和约束条件;该变量用于存储各项具体操作的参数的约束;变量Premises:类型为集合,集合中元素值为当前服务实例的前驱服务的服务标识id;步骤3:自动生成操作测试模式:将步骤2得到的OperaterTypesMap作为输入,根据服务实例的标识id和OperaterTypeMap中的value值,将OperaterTypesMap变量中包含的操作进行组合,得到符合用户使用习惯的正则表达式集合作为服务实例相应的操作测试模式;步骤4:基于操作测试模式自动生成API测试序列和测试脚本:根据步骤3得到的操作测试模式生成实际的操作序列;根据约束规则删除不符合要求的操作序列;所述约束规则为:一个操作序列中,update之前add数量应当大于delete数量,否则删除该操作序列;一个操作序列中,add数量应当大于delete数量,否则删除该操作序列;在确定操作序列后,将操作序列中各操作标签下API接口集合按照操作序列进行排列,得到API测试序列;再将各个API测试序列分别写成测试脚本;步骤5:自动生成测试数据:以步骤4得到的测试脚本和步骤2得到的参数ParameterConstrainsMap作为输入,输出各个接口的测试数据,具体步骤为:步骤5.1:生成静态表,同时根据步骤4得到的测试脚本生成动态表的第1、2列;所述静态表用于枚举各操作类型对应依赖的操作类型;其中find依赖的操作类型为add,update,delete;update依赖的操作类型为add,find;delete依赖的操作类型为add,find,update;所述动态表包括5列,第1列表示该接口在脚本中的顺序位置,第2列表示接口类型,第3列表示测试输入数据中的对象标识及涉及的对象属性,第4列表示该接口的输出,第5列表示该接口的测试预言,记录接口预期输出;步骤5.2:按照测试脚本中的接口顺序对动态表进行迭代,迭代规则如下:步骤a:从第一个接口开始,对接口对应的动态表中数据逐个进行生成,直至所有的数据均生成;判断当前接口Ii的操作类型为add则转步骤b,否则转步骤c;步本文档来自技高网
...

【技术保护点】
1.一种分布式大数据服务的自动化测试方法,其特征在于:包括以下步骤:步骤1:建立基于XML Schema测试接口描述规范的实例;所述测试接口的描述规范通过XML标签对接口信息进行描述,内容包括服务信息标签、操作标签、接口标签、请求标签、响应标签、依赖标签、以及数据标签和数据标签的约束类型标签;描述规范支持的7种数据类型分别为XML Schema支持的3种数据类型:内置数据类型,简单数据类型、复杂数据类型,以及附加的4种数据类型,分别为文件数据类型,图像数据类型,音频数据类型和视频数据类型;步骤2:以步骤1得到的基于XML Schema测试接口描述规范的实例文档作为输入,分别解析每个文档,解析过程中,将描述文档中的信息存储在以下变量中:变量OperaterTypesMap:类型为key‑value集合,key值为服务实例的标识id,value值为服务实例所含的操作标签;该变量用于存储服务的所有操作类型;变量AddInterfaceSetMap、DeleteInterfaceSetMap、UpdateInterfaceSetMap、FindInterfaceSetMap:类型为key‑value集合,key值为服务实例的标识id,value值为接口集合;接口集合中元素为:接口标识id、请求数据和响应数据的参数列表;参数列表中的每个参数包含参数类型和参数名称两个属性;该变量用于存储各项操作类型中的具体操作实例;变量ParameterConstrainsMap:类型为key‑value集合,key值为服务实例的标识id,value值为接口的约束集合;约束集合中元素为:接口标识id,参数约束列表;参数约束列表包含参数名称和约束条件;该变量用于存储各项具体操作的参数的约束;变量Premises:类型为集合,集合中元素值为当前服务实例的前驱服务的服务标识id;步骤3:自动生成操作测试模式:将步骤2得到的OperaterTypesMap作为输入,根据服务实例的标识id和OperaterTypeMap中的value值,将OperaterTypesMap变量中包含的操作进行组合,得到符合用户使用习惯的正则表达式集合作为服务实例相应的操作测试模式;步骤4:基于操作测试模式自动生成API测试序列和测试脚本:根据步骤3得到的操作测试模式生成实际的操作序列;根据约束规则删除不符合要求的操作序列;所述约束规则为:一个操作序列中,update之前add数量应当大于delete数量,否则删除该操作序列;一个操作序列中,add数量应当大于delete数量,否则删除该操作序列;在确定操作序列后,将操作序列中各操作标签下API接口集合按照操作序列进行排列,得到API测试序列;再将各个API测试序列分别写成测试脚本;步骤5:自动生成测试数据:以步骤4得到的测试脚本和步骤2得到的参数ParameterConstrainsMap作为输入,输出各个接口的测试数据,具体步骤为:步骤5.1:生成静态表,同时根据步骤4得到的测试脚本生成动态表的第1、2列;所述静态表用于枚举各操作类型对应依赖的操作类型;其中find依赖的操作类型为add,update,delete;update依赖的操作类型为add,find;delete依赖的操作类型为add,find,update;所述动态表包括5列,第1列表示该接口在脚本中的顺序位置,第2列表示接口类型,第3列表示测试输入数据中的对象标识及涉及的对象属性,第4列表示该接口的输出,第5列表示该接口的测试预言,记录接口预期输出;步骤5.2:按照测试脚本中的接口顺序对动态表进行迭代,迭代规则如下:步骤a:从第一个接口开始,对接口对应的动态表中数据逐个进行生成,直至所有的数据均生成;判断当前接口Ii的操作类型为add则转步骤b,否则转步骤c;步骤b:当前接口Ii的操作类型为add,根据黑盒测试原则生成测试数据,并为每个数据集生成唯一的密钥,并将其填写在动态表中的第3列中,第4列填写接口标识,第5列为空;完成后转到步骤a,生成下一个接口的数据;步骤c:当前接口Ii的操作类型不是add,则该接口的输入数据依赖之前接口Ij的输入数据,j...

【技术特征摘要】
1.一种分布式大数据服务的自动化测试方法,其特征在于:包括以下步骤:步骤1:建立基于XMLSchema测试接口描述规范的实例;所述测试接口的描述规范通过XML标签对接口信息进行描述,内容包括服务信息标签、操作标签、接口标签、请求标签、响应标签、依赖标签、以及数据标签和数据标签的约束类型标签;描述规范支持的7种数据类型分别为XMLSchema支持的3种数据类型:内置数据类型,简单数据类型、复杂数据类型,以及附加的4种数据类型,分别为文件数据类型,图像数据类型,音频数据类型和视频数据类型;步骤2:以步骤1得到的基于XMLSchema测试接口描述规范的实例文档作为输入,分别解析每个文档,解析过程中,将描述文档中的信息存储在以下变量中:变量OperaterTypesMap:类型为key-value集合,key值为服务实例的标识id,value值为服务实例所含的操作标签;该变量用于存储服务的所有操作类型;变量AddInterfaceSetMap、DeleteInterfaceSetMap、UpdateInterfaceSetMap、FindInterfaceSetMap:类型为key-value集合,key值为服务实例的标识id,value值为接口集合;接口集合中元素为:接口标识id、请求数据和响应数据的参数列表;参数列表中的每个参数包含参数类型和参数名称两个属性;该变量用于存储各项操作类型中的具体操作实例;变量ParameterConstrainsMap:类型为key-value集合,key值为服务实例的标识id,value值为接口的约束集合;约束集合中元素为:接口标识id,参数约束列表;参数约束列表包含参数名称和约束条件;该变量用于存储各项具体操作的参数的约束;变量Premises:类型为集合,集合中元素值为当前服务实例的前驱服务的服务标识id;步骤3:自动生成操作测试模式:将步骤2得到的OperaterTypesMap作为输入,根据服务实例的标识id和OperaterTypeMap中的value值,将OperaterTypesMap变量中包含的操作进行组合,得到符合用户使用习惯的正则表达式集合作为服务实例相应的操作测试模式;步骤4:基于操作测试模式自动生成API测试序列和测试脚本:根据步骤3得到的操作测试模式生成实际的操作序列;根据约束规则删除不符合要求的操作序列;所述约束规则为:一个操作序列中,update之前add数量应当大于delete数量,否则删除该操作序列;一个操作序列中,add数量应当大于delete数量,否则删除该操作序列;在确定操作序列后,将操作序列中各操作标签下API接口集合按照操作序列进行排列,得到API测试序列;再将各个API测试序列分别写成测试脚本;步骤5:自动生成测试数据:以步骤4得到的测试脚本和步骤2得到的参数ParameterConstrainsMap作为输入,输出各个接口的测试数据,具体步骤为:步骤5.1:生成静态表,同时根据步骤4得到的测试脚本生成动态表的第1、2列;所述静态表用于枚举各操作类型对应依赖的操作类型;其中find依赖的操作类型为add,update,delete;update依赖的操作类型为add,find;delete依赖的操作类型为add,find,update;所述动态表包括5列,第1列表示该接口在脚本中的顺序位置,第2列表示接口类型,第3列表示测试输入数据中的对象标识及涉及的对象属性,第4列表示该接口的输出,第5列表示该接口的测试预言,记录接口预期输出;步骤5.2:按照测试脚本中的接口顺序对动态表进行迭代,迭代规则如下:步骤a:从第一个接口开始,对接口对应的动态表中数据逐个进行生成,直至所有的数据均生成;判断当前接口Ii的操作类型为add则转步骤b,否则转步骤c;步骤b:当前接口Ii的操作类型为add,根据黑盒测试原则生成测试数据,并为每个数据集生成唯一的密钥,并将其填写在动态表中的第3列中,第4列填写接口标识,第5列为空;完成后转到步骤a,生成下一个接口的数据;步骤c:当前接口Ii的操作类型不是add,则该接口的输入数据依赖之前接口Ij的输入数据,j<i,输入数据依赖规则为:遵循就近原则,优先考虑离当前接口Ii最近的接口Ij;对照静态表判断接口Ij的操作类型是否为接口Ii可依赖的;若不是依赖的,则向前遍历,直至找到可依赖的接口;若是依赖的,比较接口Ii的输入参数与接口Ij的输入参数或返回参数,若接口Ij的输入参数或返回参数能够满足接口Ii输入参数的要求,则为接口Ij与接口Ii建立数据依赖关系,将接口Ij的数据标识填充到接口Ii动态表第3列中,同时将接口Ii实际输出填入接口Ii动态表第4列,预期结果填入接口Ii动态表第5列,完成后转到步骤a,生成下一个接口的数据;若接口Ij的输入参数或返回参数不符合条件,则向前遍历,直至找到下一个依赖的接口;其中,若当前接口Ii的操作类型为delete...

【专利技术属性】
技术研发人员:马春燕李尚儒王慧朝
申请(专利权)人:西北工业大学
类型:发明
国别省市:陕西,61

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

1