CN108897687A - 一种基于数据驱动的api自动化测试方法和系统 - Google Patents
一种基于数据驱动的api自动化测试方法和系统 Download PDFInfo
- Publication number
- CN108897687A CN108897687A CN201810696063.3A CN201810696063A CN108897687A CN 108897687 A CN108897687 A CN 108897687A CN 201810696063 A CN201810696063 A CN 201810696063A CN 108897687 A CN108897687 A CN 108897687A
- Authority
- CN
- China
- Prior art keywords
- rule
- api
- parameter
- constraint
- test
- 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.)
- Granted
Links
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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于数据驱动的API自动化测试方法和系统,包括:执行API测试主入口;为API进行参数配置并填写基本信息;根据API的测试用例约束规则生成测试用例数据;执行测试用例数据;根据模板文件生成测试报告。本发明提供的API自动化测试方法具有很强的可复用性,同时能够大量减少人员手工编写测试用例的时间,节约时间成本,缩短测试周期,使用简单,配置灵活方便,同时减少人工操作,提高效率,降低开发人员的工作量,在最短的时间内发现缺陷问题,使其开发的接口模块调用时更加稳定和健壮。
Description
技术领域
本发明涉及软件测试领域,更具体地,涉及一种基于数据驱动的API自动化测试方法和系统。
背景技术
在软件开发过程中,程序的API接口在开发完毕后,一般由开发人员自己手动调试或使用工具测试,测试的内容也仅只验证该接口的正向功能和反向回传值是否正确,且远远不能保证自己开发的接口是否存在问题。而如今大型项目的软件系统开发中,后台的逻辑复杂程度远远高出很多,如何能够保证系统模块之间的数据交换传递正确、以及系统和系统之间的逻辑依赖关系,成为了一个非常重要的环节。
在传统测试领域中大部分以功能测试为主的场景中,存在如下问题:
1、测试人员大多没有开发基础,在对基于功能的API接口进行测试时,不知道如何测试,或测试用例无法覆盖功能点。测试时费时费力,测试周期太长。
2、基于功能的前端测试(或UI自动化测试),无法满足系统的安全要求,从技术实现上来说,可通过抓包等手段实现跳过前端验证去后台模拟请求数据。
3、开发人员开发工作量大,编写接口程序,无法详尽进行功能验证。
4.在开发过程中有效的保证模块接口的全功能测试,在最短的时间内发现缺陷问题,使其开发的接口模块调用时更加稳定和健壮。
发明内容
有鉴于此,本发明提供了一种基于约束规则生成数据并驱动API自动化测试方法及系统,包括:执行API测试主入口;为所述API进行参数配置并填写基本信息;根据所述API的测试用例约束规则生成测试用例数据;执行所述测试用例数据;根据模板文件生成测试报告;流程结束;其中,所述根据所述API的测试用例约束规则生成测试用例数据包括:读取配置文件中的所述基本信息;初始化;根据所述测试用例数据,设计公共约束规则,所述公共约束规则如下:规则1:按等价类分为有效取值范围和无效取值范围,结合需求约束规则,所述API的参数取值范围为1~N,则参数取值1-N为有效取值范围,参数取值<1或者参数取值>N为无效取值范围;规则2:按边界值分为左边界和右边界,结合需求约束规则,所述参数的取值范围为2~N,则大于N的值为右边界,取值为N+1,小于2的值为左边界,取值为1;规则3:特殊值,结合需求约束规则,所述参数的特殊值包括:None、Null、”、True、False、特殊字符、半角空格、全角空格、敏感字符;规则4:接口SQL注入约束,结合需求约束规则,根据自定义设计约束;规则5:其他项;规则5.1:结合需求约束规则,生成的ID为无符号32位的UUID;规则5.2:必选验证,结合需求约束规则,所述参数的总个数为X个,其中Y个为必选参数,则生成Y个必选参数;规则5.3:可选验证,结合需求约束规则,所述参数的总个数为X个,其中Y个为必选参数,则生成Y个必选参数+多个可选参数的组合,其中所述多个可选参数的个数范围是0~(X-Y);规则5.4:参数名称验证,结合需求约束规则,将所述参数的名称的字母统一为大写字母或小写字母;根据需求约束规则结合公共约束规则进行API测试用例数据的组装,遍历生成所述测试用例数据并进行存储。
与现有技术相比,本发明提供的基于数据驱动的API自动化测试方法及系统,至少实现了如下的有益效果:
1.根据测试用例约束规则,自动生成测试用例,也可以根据测试用例提取测试用例的约束规则,具有很强的可复用性,同时能够大量减少人员手工编写测试用例的时间,节约时间成本,缩短测试周期。
2.自动生成的测试用例可保存在外部文件或数据库中,以数据驱动进行无人值守的API自动化测试,减少人工操作,提高效率,降低开发人员的工作量。
3.使用简单,配置灵活方便,适合无编程经验人员进行辅助测试使用。
4.在开发过程中有效的保证模块接口的全功能测试,在最短的时间内发现缺陷问题,使其开发的接口模块调用时更加稳定和健壮。
当然,实施本发明的任一产品必不特定需要同时达到以上所述的所有技术效果。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
图1是本发明实施例提供的一种基于数据驱动的API自动化测试方法的流程图;
图2是本发明实施例提供的一种生成测试用例数据的流程图;
图3是本发明实施例提供的执行测试用例数据的流程图;
图4是本发明实施例提供的一种基于数据驱动的API自动化测试系统的框架图;
图5是本发明实施例提供的一种基于数据驱动的API的自动化测试系统的一种架构图;
图6是本发明实施例提供的一种手工请求返回值的示例数据;
图7是本发明实施例提供的另一种手工请求返回值的示例数据。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
实施例1:
如图1-2所示,图1是本发明实施例提供的一种基于数据驱动的API自动化测试方法的流程图,图2是本发明实施例提供的一种生成测试用例数据的流程图。如图1-2所示,本发明实施例提供一种基于数据驱动的API自动化测试方法,包括:
S1:执行API测试主入口;
S2:为API进行参数配置并填写基本信息;
S3:根据API的测试用例约束规则生成测试用例数据;
S4:执行测试用例数据;
S5:根据模板文件生成测试报告;
S6:流程结束;
其中,根据API的测试用例约束规则生成测试用例数据包括:
S3.1:读取配置文件中的基本信息;
S3.2:初始化;
S3.3:根据测试用例数据,设计公共约束规则,规则如下:
规则1:按等价类分为有效取值范围和无效取值范围,
结合需求约束规则,API的参数取值范围为1~N,则1-N为有效取值范围,参数取值<1或者参数取值>N为无效取值范围;
规则2:按边界值分为左边界和右边界,
结合需求约束规则,参数的取值范围为2~N,则大于N的值为右边界,取值为N+1,小于2的值为左边界,取值为1;
规则3:特殊值,
结合需求约束规则,参数的特殊值包括:None、Null、”、True、False、特殊字符、半角空格、全角空格、敏感字符;
规则4:接口SQL注入约束,
结合需求约束规则,根据自定义设计约束;
规则5:其他项,
规则5.1:结合需求约束规则,生成的ID为无符号32位的UUID;
规则5.2:必选验证
结合需求约束规则,参数的总个数为X个,其中Y个为必选参数,则生成Y个必选参数;
规则5.3:可选验证
结合需求约束规则,参数的总个数为X个,其中Y个为必选参数,则生成Y个必选参数+多个可选参数的组合,其中多个可选参数的个数范围是0~(X-Y);
规则5.4:参数名称验证
结合需求约束规则,将参数的名称的字母统一为大写字母或小写字母;
S3.4:根据需求约束规则结合公共约束规则进行API测试用例数据的组装,生成测试用例数据并进行存储。
需要进行说明的是,本发明实施例中的S1、S2等仅为了方便区分步骤,本发明对测试方法中具体步骤的顺序先后不作具体限制。
具体的,本发明进行测试时提取的公共约束规则方法,包括:
规则1:按等价类分为有效取值范围和无效取值范围,
结合需求约束规则,API的参数取值范围为1~N,则1-N为有效取值范围,参数取值<1或者参数取值>N为无效取值范围。
例如,如果是数值类型的参数,设某一API的参数取值范围为1~10,则1-10为有效取值范围,0、11或其他值为无效取值范围;如果是字符类型的参数,设某一API的参数长度取值范围为1~10,则长度在1-10的字符串为有效取值范围,长度<1或者长度>10的字符串为无效取值范围;如果参数是数组、链表或者结构体等特殊类型,设某一API的成员个数为10个,则1-10个成员为有效取值范围,其他个数的成员为无效取值范围。
本发明实施例所说的数值类型包括但不限于整型、长整型、单精度、双精度、浮点型;本发明实施例所说的字符类型包括但不限于字符型、字符串型。
需要说明的是,本发明实施例仅以参数取值范围为1~10进行举例说明,在实际应用中具体取值范围可以根据需要进行调整,即本发明对具体的取值范围不作具体限制。
规则2:按边界值分为左边界和右边界,
结合需求约束规则,参数的取值范围为2~N,则大于N的值为右边界,小于2的值为左边界。
例如,如果是整型数值类型的参数,设某一API的参数取值范围为2~10,则左边界为1,右边界为11;如果是浮点型数值类型的参数,设某一API的参数取值范围为2~10,则1.9为左边界,10.1为右边界;如果是字符类型的参数,设参数长度的范围是2字节~10字节,则参数长度的左边界为1字节,右边界为11字节;如果参数是数组、链表或者结构体等特殊类型,设某一API的成员个数为2~10个,则1个成员为左边界,11个成员为右边界。
需要说明的是,本发明实施例仅以参数取值范围为2~10进行举例说明,在实际应用中具体取值范围可以根据需要进行调整,即本发明对具体的取值范围不作具体限制。
规则3:特殊值,
结合需求约束规则,参数的特殊值包括:None、Null、”、True、False、特殊字符、半角空格、全角空格、敏感字符。
例如,输入空格、特殊字符‘!@#…)?》’、敏感字符(涉及敏感不举例,如果输入敏感字符,则提示非法或者敏感等)或者值的内容不填写等等。
规则4:接口SQL注入约束,
结合需求约束规则,根据自定义设计约束。
一般主要应用于调用系统登录接口进行系统权限认证等时候需要注入约束,通过一些特定的SQL语句来验证后台是否进行过滤处理。
假如用户名是admin,密码test。则填写SQL注入约束的内容为:’or1=1--,配置并指定用户名参数进行SQL注入。常规的SQL查询语句为select*from user where name=‘admin’and pwd=‘test’,通过该语句可以查询用户是否存在。通过SQL注入约束规则后指定参数执行测试用例,则后台会根据注入约束的内容进行注入,生成的SQL查询语句select*from user where name=‘’or 1=1--'and pwd=‘test’,则通过SQL注入约束后,即使在测试时不输入真的密码,后台查询中仍能查询为True,起到验证作用。
规则5:其他项,
规则5.1:结合需求约束规则,生成的ID为无符号32位的UUID。
在实际测试中,有一些接口需要传入唯一值,一般情况下使用UUID,为了保证每次UUID的值不一样,在测试时需要生成重复的UUID数据进行验证。
可以理解的是,本发明仅以UUID为例进行示例性说明,还可以包括时间类型的约束等,例如,提供日志服务的API,在调用该API接口进行日志操作记录时,会以当前时间为操作时间进行参数传递,此时配置当前时间为系统时间,则生成数据时,以系统时间为当前生成数据的时间进行保存。本发明的约束规则并不仅局限于此,本领域技术人员可以根据需要灵活配置。
规则5.2:必选验证,
结合需求约束规则,参数的总个数为X个,其中Y个为必选参数,则生成Y个必选参数。
例如,某一API参数的总个数为10个,其中3个为必选参数,则在进行接口调用的时候传入这3个必选参数。
规则5.3:可选验证,
结合需求约束规则,参数的总个数为X个,其中Y个为必选参数,则生成Y个必选参数+多个可选参数的组合,其中多个可选参数的个数范围是0~(X-Y)。
例如,某一API参数的总个数为10个,其中3个为必选参数,则在进行接口调用的时候传入3个必选参数+7个可选参数,其中可选参数的个数也是可以根据需要调整的,还可以采用5个6个等其他个数的可选参数。
规则5.4:参数名称验证,
结合需求约束规则,将参数的名称的字母统一为大写字母或小写字母。
例如,参数名称为BankName,在传参的时候全部小写bankname,或者全部大写BANKNAME。
需要说明的是,本发明实施例中公共约束规则中不是必须同时包括上述设置的规则,具体采用何种规则以及规则的组合根据需要可以调整,本发明对此不作具体限制。
本发明实施例中,在执行测试用例数据的过程中记录测试数据和测试子结果,待全部测试用例执行完毕后,再根据模板文件生成测试报告。
本发明实施例提供的基于数据驱动的API自动化测试方法,在设计公共约束规则的同时能够使用SQL进行自定义约束,至少能实现如下的有益效果:
1.根据测试用例约束规则,自动生成测试用例,也可以根据测试用例提取测试用例的约束规则,具有很强的可复用性,同时能够大量减少人员手工编写测试用例的时间,节约时间成本,缩短测试周期。
2.自动生成的测试用例可保存在外部文件或数据库中,以数据驱动进行无人值守的API自动化测试,减少人工操作,提高效率,降低开发人员的工作量。
3.使用简单,配置灵活方便,适合无编程经验人员进行辅助测试使用。
4.在开发过程中有效的保证模块接口的全功能测试,在最短的时间内发现缺陷问题,使其开发的接口模块调用时更加稳定和健壮。
实施例2:
请参见图1、图2、图3,图3是本发明实施例提供的执行测试用例数据的流程图。本发明实施例提供一种基于数据驱动的API自动化测试方法,包括:
S1:执行API测试主入口;
S2:为API进行参数配置并填写基本信息;具体的,为API进行参数配置并填写基本信息包括:根据人机交互界面进行参数配置、或者基于配置文件对进行参数配置;或者根据API的需求接口文档模版填写后进行文件解析。
S3:根据API的测试用例约束规则生成测试用例数据;
S4:执行测试用例数据;
S5:根据模板文件生成测试报告;其中,在根据模板文件生成测试报告前,测试用例数据执行完毕后,进行状态的返回。
S6:流程结束;
其中,根据API的测试用例约束规则生成测试用例数据包括:
S3.1:读取配置文件中的基本信息;
S3.2:初始化;
S3.3:根据测试用例数据,设计公共约束规则,规则如下:
规则1:按等价类分为有效取值范围和无效取值范围,
结合需求约束规则,API的参数取值范围为1~N,则1-N为有效取值范围,参数取值<1或者参数取值>N为无效取值范围;
规则2:按边界值分为左边界和右边界,
结合需求约束规则,参数的取值范围为2~N,则大于N的值为右边界,取值为N+1,小于2的值为左边界,取值为1;
规则3:特殊值,
结合需求约束规则,参数的特殊值包括:None、Null、”、True、False、特殊字符、半角空格、全角空格、敏感字符;
规则4:接口SQL注入约束,
结合需求约束规则,根据自定义设计约束;
规则5:其他项,
规则5.1:结合需求约束规则,生成的ID为无符号32位的UUID;
规则5.2:必选验证
结合需求约束规则,参数的总个数为X个,其中Y个为必选参数,则生成Y个必选参数;
规则5.3:可选验证
结合需求约束规则,参数的总个数为X个,其中Y个为必选参数,则生成Y个必选参数+多个可选参数的组合,其中多个可选参数的个数范围是0~(X-Y);
规则5.4:参数名称验证
结合需求约束规则,将参数的名称的字母统一为大写字母或小写字母;
S3.4:根据需求约束规则结合公共约束规则进行API测试用例数据的组装,生成测试用例数据并进行存储。其中,测试用例数据存储在文件或者数据库中。
其中,执行测试用例数据进一步包括:
S4.1:初始化;
S4.2:读取测试用例数据,获取测试用例数据的基本信息;
通常情况下,配置参数中数据存储格式包括xls格式、xml格式等,本发明实施例以xls为例进行说明。读取xls中的基本信息,例如:工作簿数量、所有工作簿中的接口的名称、接口描述、接口的测试地址、请求方法、参数名称和对应的参数值、预期结果等相关内容。
S4.3:根据测试用例数据的参数名称和参数内容,组装参数键值对;
S4.4:通过封装好的反射函数进行数据请求并获取返回值,如在请求过程中存在异常则进行异常处理后跳转至步骤S4.6;如果正常,则继续进行下一步骤;
可采用工具类封装的Call方法进行接口请求,该方法创建了一个客户端实例,通过getattr()函数进行对象属性值的获取,实现反射机制,获取API接口返回值并与预期结果进行比较判断。
S4.5:判断文件是否全部测试完毕,如果否,则跳至步骤S4.4;如果是,则继续进行下一步骤;
S4.6:进行日志记录以及测试子结果记录;
S4.7:根据报告模板文件以及测试子结果生成测试报告。
需要进行说明的是,本发明实施例中的S1、S2、S4.1、S4.2等均仅为了方便区分步骤,本发明对测试方法中具体步骤的顺序先后不作具体限制。
本发明实施例提供的基于数据驱动的API自动化测试方法,在设计公共约束规则的同时能够使用SQL进行自定义约束,至少能实现如下的有益效果:
1.根据测试用例约束规则,自动生成测试用例,也可以根据测试用例提取测试用例的约束规则,具有很强的可复用性,同时能够大量减少人员手工编写测试用例的时间,节约时间成本,缩短测试周期。
2.自动生成的测试用例可保存在外部文件或数据库中,以数据驱动进行无人值守的API自动化测试,减少人工操作,提高效率,降低开发人员的工作量。
3.使用简单,配置灵活方便,适合无编程经验人员进行辅助测试使用。
4.在开发过程中有效的保证模块接口的全功能测试,在最短的时间内发现缺陷问题,使其开发的接口模块调用时更加稳定和健壮。
实施例3:
请参见图4,图4是本发明实施例提供的一种基于数据驱动的API自动化测试系统的框架图。如图4所示,本发明还提供一种基于数据驱动的API自动化测试系统,包括:入口模块1、配置模块2、测试用例生成模块3、API测试引擎模块4、报告生成模块5,
所述入口模块1用于执行API测试主入口;
所述配置模块2用于为所述API进行参数配置并填写基本信息;
所述测试用例生成模块3用于根据所述API的测试用例约束规则生成测试用例数据;
所述API测试引擎模块4用于执行所述测试用例数据;
所述报告生成模块5用于根据模板文件生成测试报告;
流程结束;
其中,所述测试用例生成模块3根据所述API的测试用例约束规则生成测试用例数据包括:
读取配置文件中的所述基本信息;
测试用例生成模块3初始化;
根据所述测试用例数据,设计公共约束规则,规则如下:
规则1:按等价类分为有效取值范围和无效取值范围,
结合需求约束规则,所述API的参数取值范围为1~N,则参数取值1-N为有效取值范围,参数取值<1或者参数取值>N为无效取值范围;
规则2:按边界值分为左边界和右边界,
结合需求约束规则,所述参数的取值范围为2~N,则大于N的值为右边界,取值为N+1,小于2的值为左边界,取值为1;
规则3:特殊值,
结合需求约束规则,所述参数的特殊值包括:None、Null、”、True、False、特殊字符、半角空格、全角空格、敏感字符;
规则4:接口SQL注入约束,
结合需求约束规则,根据自定义设计约束;
规则5:其他项,
规则5.1:结合需求约束规则,生成的ID为无符号32位的UUID;
规则5.2:必选验证,
结合需求约束规则,所述参数的总个数为X个,其中Y个为必选参数,则生成Y个必选参数;
规则5.3:可选验证,
结合需求约束规则,所述参数的总个数为X个,其中Y个为必选参数,则生成Y个必选参数+多个可选参数的组合,其中所述多个可选参数的个数范围是0~(X-Y);
规则5.4:参数名称验证,
结合需求约束规则,将所述参数的名称的字母统一为大写字母或小写字母;
根据需求约束规则结合公共约束规则进行API测试用例数据的组装,生成所述测试用例数据并进行存储。
具体的,请参见图4和图5,图5是本发明实施例提供的一种基于数据驱动的API的自动化测试系统的一种架构图。本发明实施例提供API自动化测试系统的框架分为四个层级:配置层、框架层、测数数据层、输出层。
1)配置层10:配置模块2即处于配置层10,配置层10可以为API配置测试中的全局基础参数以及测试用例数据的约束规则。
2)框架层20:测试用例生成模块3、API测试引擎模块4、报告生成模块5处于框架层20,可选的,框架层20还包括工具模块7和日志模块8。
测试用例生成模块3主要通过配置层10中的测试用例数据的约束规则生成待测数据,根据全局基础参数设置的配置以文件或者数据库的方式进行存储。API测试引擎模块4在初始状态下,根据配置文件中的测试用例数据约束规则进行API测试数据生成,生成完毕后对测试数据进行自动化测试。通过状态返回值判断是否成功,无论成功与否都将结果对应写入日志文件中,并把测试子结果追加到测试结果集,测试完毕后生成测试报告。
报告生成模块5主要在测试完成后,对测试数据的汇总并生成可视化的测试报告文件,包含定义生成HTML模版、常规操作方法的封装等。
工具模块7主要提供文件操作读写,例如:获取工作簿数、通过索引获取工作簿名称、通过工作簿名称获取工作簿索引、通过工作簿名称和行列获取单元格值、通过工作簿名称和区域范围获取工作簿区域块的值,返回一个列表、设置单元格的值、常用相关操作的封装,例如生成UUID、生成随机数组、获取当前时间、修改字段Class键值对、连接Oracle数据库、生成随机测试数据、二进制文件流转换等。
日志模块8主要提供自动化测试过程中的记录,主要方法有创建实例Logger、创建Handler写日志文件、定义Handler的输出格式、获取日志输出等,对于日志的输出路径,则根据配置层中的全局基础参数获取。
3)测试数据层30:测试用例生成模块3生成的测试用例存放的文件或者数据库即处于测试数据层30,主要用于保存自动生成的测试用例集合。
4)输出层40:输出层40输出API测试引擎模块4执行完测试数据后生成的测试报告和过程记录日志文件。
本发明实施例提供的基于数据驱动的API自动化测试系统,至少能实现如下的有益效果:
1.根据测试用例约束规则,自动生成测试用例,也可以根据测试用例提取测试用例的约束规则,具有很强的可复用性,同时能够大量减少人员手工编写测试用例的时间,节约时间成本,缩短测试周期。
2.自动生成的测试用例可保存在外部文件或数据库中,以数据驱动进行无人值守的API自动化测试,减少人工操作,提高效率,降低开发人员的工作量。
3.使用简单,配置灵活方便,适合无编程经验人员进行辅助测试使用。
4.在开发过程中有效的保证模块接口的全功能测试,在最短的时间内发现缺陷问题,使其开发的接口模块调用时更加稳定和健壮。
实施例4:
请参见图6-图7,图6是本发明实施例提供的一种手工请求返回值的示例数据,图7是本发明实施例提供的另一种手工请求返回值的示例数据。
以下提供本发明通过基于数据驱动的API自动化测试方法及系统的应用实施例。
S1:执行API测试主入口;
S2:为API进行参数配置并填写基本信息;
设某一API需求接口文档如下:
API_Name: | TestDemo |
Describe: | 对关键字的搜索功能(举例) |
RequestAdress: | https://www.sojson.com/open/api/weather/json.shtml?city=南京 |
RequestType | Get |
LookupKey: | Success |
上述表格中,API_Name即为参数名、Describe即为关键字的描述或者注释、RequestAdress即为请求地址、RequestType即为请求类型、LookupKey为返回值的状态。
可以理解的是,本发明实施例仅以上述需求文档为例进行示例性说明,本发明实施例中解析的需求文档还可以包括:参数名、类型、长度、参数取值的最大值最小值、是否可以为空、注释等等,在此不一一进行列举,本发明对此也不作具体限制。
开始执行测试后,先对API的需求接口文档进行分析并进行基本信息填写,例如通过分析可知,上表的RequestAdress中,问号前面是请求的接口地址,问号后面的city是参数名称,等号后面的是参数值,并且该参数需要输入的数据是字符型数据,采用Get函数进行请求,LookupKey表示是否获取成功的状态。
需要说明的是,本发明实施例仅以API接口为HTTP协议传输为例进行说明,在实际应用中还可以采用SOAP协议等,本发明对此不作具体限制。
S3:根据API的测试用例约束规则生成测试用例数据。即根据分析的API需求信息进行测试用例数据生成。
S4:执行所述测试用例数据。
S5:根据模板文件生成测试报告。
请求的地址和参数都正确的情况下,服务器会把请求的内容进行返回,也就是返回值,正确的返回值如图6所示。当输入的参数不是指定格式的时候,后台系统要进行处理。例如,将上面表格中RequestAdress中的“南京”改为“nanjing”,则会提示Check theparameters,如图7所示。
S6:流程结束。
通过上述实施例可知,本发明提供的基于数据驱动的API自动化测试方法及系统,至少实现了如下的有益效果:
1.根据测试用例约束规则,自动生成测试用例,也可以根据测试用例提取测试用例的约束规则,具有很强的可复用性,同时能够大量减少人员手工编写测试用例的时间,节约时间成本,缩短测试周期。
2.自动生成的测试用例可保存在外部文件或数据库中,以数据驱动进行无人值守的API自动化测试,减少人工操作,提高效率,降低开发人员的工作量。
3.使用简单,配置灵活方便,适合无编程经验人员进行辅助测试使用。
4.在开发过程中有效的保证模块接口的全功能测试,在最短的时间内发现缺陷问题,使其开发的接口模块调用时更加稳定和健壮。
虽然已经通过例子对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上例子仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员应该理解,可在不脱离本发明的范围和精神的情况下,对以上实施例进行修改。本发明的范围由所附权利要求来限定。
Claims (10)
1.一种基于数据驱动的API自动化测试方法,其特征在于,包括:
执行API测试主入口;
为所述API进行参数配置并填写基本信息;
根据所述API的测试用例约束规则生成测试用例数据;
执行所述测试用例数据;
根据模板文件生成测试报告;
流程结束;
其中,所述根据所述API的测试用例约束规则生成测试用例数据包括:
读取配置文件中的所述基本信息;
初始化;
根据所述测试用例数据,设计公共约束规则,所述公共约束规则如下:
规则1:按等价类分为有效取值范围和无效取值范围,
结合需求约束规则,所述API的参数取值范围为1~N,则参数取值1-N为有效取值范围,参数取值<1或者参数取值>N为无效取值范围;
规则2:按边界值分为左边界和右边界,
结合需求约束规则,所述参数的取值范围为2~N,则大于N的值为右边界,取值为N+1,小于2的值为左边界,取值为1;
规则3:特殊值,
结合需求约束规则,所述参数的特殊值包括:None、Null、”、True、False、特殊字符、半角空格、全角空格、敏感字符;
规则4:接口SQL注入约束,
结合需求约束规则,根据自定义设计约束;
规则5:其他项;
规则5.1:结合需求约束规则,生成的ID为无符号32位的UUID;
规则5.2:必选验证,
结合需求约束规则,所述参数的总个数为X个,其中Y个为必选参数,则生成Y个必选参数;
规则5.3:可选验证,
结合需求约束规则,所述参数的总个数为X个,其中Y个为必选参数,则生成Y个必选参数+多个可选参数的组合,其中所述多个可选参数的个数范围是0~(X-Y);
规则5.4:参数名称验证,
结合需求约束规则,将所述参数的名称的字母统一为大写字母或小写字母;
根据需求约束规则结合公共约束规则进行API测试用例数据的组装,遍历生成所述测试用例数据并进行存储。
2.根据权利要求1所述的基于数据驱动的API自动化测试方法,其特征在于,执行所述测试用例数据进一步包括:
初始化;
读取所述测试用例数据,获取所述测试用例数据的基本信息;
根据所述测试用例数据的参数名称和参数内容,组装参数键值对;
步骤S4.4:通过封装好的反射函数进行数据请求并获取返回值,如在请求过程中存在异常则进行异常处理后跳转至步骤S4.6;如果正常,则继续进行下一步骤;
步骤S4.5:判断文件是否全部测试完毕,如果否,则跳至步骤S4.4;如果是,则继续进行下一步骤;
步骤S4.6:进行日志记录以及测试子结果记录;
根据报告模板文件以及所述测试子结果生成所述测试报告。
3.根据权利要求1所述的基于数据驱动的API自动化测试方法,其特征在于,
在所述根据模板文件生成所述测试报告前,所述测试用例数据执行完毕后,进行状态的返回。
4.根据权利要求1所述的基于数据驱动的API自动化测试方法,其特征在于,
所述测试用例数据存储在文件或者数据库中。
5.根据权利要求1所述的基于数据驱动的API自动化测试方法,其特征在于,
为所述API进行参数配置并填写基本信息包括:
根据人机交互界面进行参数配置、或者基于配置文件进行参数配置;
或者根据所述API的需求接口文档模版填写后进行文档解析。
6.一种基于数据驱动的API自动化测试系统,其特征在于,包括:
入口模块、配置模块、测试用例生成模块、API测试引擎模块、报告生成模块,
所述入口模块用于执行API测试主入口;
所述配置模块用于为所述API进行参数配置并填写基本信息;
所述测试用例生成模块用于根据所述API的测试用例约束规则生成测试用例数据;
所述API测试引擎模块用于执行所述测试用例数据;
所述报告生成模块用于根据模板文件生成测试报告;
流程结束;
其中,所述测试用例生成模块根据所述API的测试用例约束规则生成测试用例数据包括:
读取配置文件中的所述基本信息;
所述测试用例生成模块初始化;
根据所述测试用例数据,设计公共约束规则,规则如下:
规则1:按等价类分为有效取值范围和无效取值范围,
结合需求约束规则,所述API的参数取值范围为1~N,则参数取值1-N为有效取值范围,参数取值<1或者参数取值>N为无效取值范围;
规则2:按边界值分为左边界和右边界,
结合需求约束规则,所述参数的取值范围为2~N,则大于N的值为右边界,取值为N+1,小于2的值为左边界,取值为1;
规则3:特殊值,
结合需求约束规则,所述参数的特殊值包括:None、Null、”、True、False、特殊字符、半角空格、全角空格、敏感字符;
规则4:接口SQL注入约束,
结合需求约束规则,根据自定义设计约束;
规则5:其他项,
规则5.1:结合需求约束规则,生成的ID为无符号32位的UUID;
规则5.2:必选验证,
结合需求约束规则,所述参数的总个数为X个,其中Y个为必选参数,则生成Y个必选参数;
规则5.3:可选验证,
结合需求约束规则,所述参数的总个数为X个,其中Y个为必选参数,则生成Y个必选参数+多个可选参数的组合,其中所述多个可选参数的个数范围是0~(X-Y);
规则5.4:参数名称验证,
结合需求约束规则,将所述参数的名称的字母统一为大写字母或小写字母;
根据需求约束规则结合公共约束规则进行API测试用例数据的组装,遍历生成所述测试用例数据并进行存储。
7.根据权利要求6所述的基于数据驱动的API自动化测试系统,其特征在于,
所述API测试引擎模块执行所述测试用例数据进一步包括:
所述API测试引擎模块初始化;
读取所述测试用例数据,获取所述测试用例数据的基本信息;
根据所述测试用例数据的参数名称和参数内容,组装参数键值对;
步骤S4.4:通过封装好的反射函数进行数据请求并获取所述反射函数的返回值,根据所述返回值判断执行是否异常,如果异常,则进行异常处理并跳至步骤S4.6;如果正常,则继续进行下一步骤;
步骤S4.5:判断文件是否全部测试完毕,如果否,则跳至步骤S4.4;如果是,则继续进行下一步骤;
步骤S4.6:进行日志记录以及测试子结果记录;
根据报告模板文件以及所述测试子结果生成所述测试报告。
8.根据权利要求6所述的基于数据驱动的API自动化测试系统,其特征在于,
在所述根据模板文件生成所述测试报告前,所述API测试引擎模块在所述测试用例数据执行完毕后,进行状态的返回。
9.根据权利要求6所述的基于数据驱动的API自动化测试系统,其特征在于,
所述测试用例生成模块将所述测试用例数据存储在文件或者数据库中。
10.根据权利要求6所述的基于数据驱动的API自动化测试系统,其特征在于,
所述参数配置模块为所述API进行参数配置并填写基本信息包括:
根据人机交互界面进行参数配置、或者基于配置文件对进行参数配置;
或者根据所述API的需求接口文档模版填写后进行文档解析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810696063.3A CN108897687B (zh) | 2018-06-29 | 2018-06-29 | 一种基于数据驱动的api自动化测试方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810696063.3A CN108897687B (zh) | 2018-06-29 | 2018-06-29 | 一种基于数据驱动的api自动化测试方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108897687A true CN108897687A (zh) | 2018-11-27 |
CN108897687B CN108897687B (zh) | 2022-04-01 |
Family
ID=64346732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810696063.3A Active CN108897687B (zh) | 2018-06-29 | 2018-06-29 | 一种基于数据驱动的api自动化测试方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108897687B (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992508A (zh) * | 2019-03-22 | 2019-07-09 | 恒生电子股份有限公司 | 测试用例自动化生成方法、装置和电子设备 |
CN110287113A (zh) * | 2019-06-25 | 2019-09-27 | 四川长虹电器股份有限公司 | 自动化接口测试方法 |
CN110348225A (zh) * | 2019-07-09 | 2019-10-18 | 中国工商银行股份有限公司 | 针对应用程序接口的安全漏洞确定方法和装置 |
CN110362497A (zh) * | 2019-07-23 | 2019-10-22 | 上海金融期货信息技术有限公司 | 覆盖全异常字符的自动化api接口测试方法和系统 |
CN110532182A (zh) * | 2019-08-22 | 2019-12-03 | 锐捷网络股份有限公司 | 一种虚拟化平台的自动化测试方法及装置 |
CN110990248A (zh) * | 2019-10-11 | 2020-04-10 | 北京银企融合技术开发有限公司 | 接口用例测试系统、方法、计算机设备及存储介质 |
CN111190073A (zh) * | 2019-12-31 | 2020-05-22 | 中国电力科学研究院有限公司 | 一种电网广域量测交互与搜索服务系统 |
CN111240961A (zh) * | 2019-12-31 | 2020-06-05 | 中国电力科学研究院有限公司 | 一种基于电网大数据平台的数据库性能测试系统和方法 |
CN111382051A (zh) * | 2018-12-29 | 2020-07-07 | 北京数聚鑫云信息技术有限公司 | 一种api自动测试方法及测试装置 |
CN112131091A (zh) * | 2019-06-24 | 2020-12-25 | 百度在线网络技术(北京)有限公司 | 一种测试方法、装置及电子设备 |
CN112306855A (zh) * | 2019-08-02 | 2021-02-02 | 北大方正集团有限公司 | 接口自动化测试方法、装置、终端和存储介质 |
CN112380145A (zh) * | 2021-01-15 | 2021-02-19 | 树根互联技术有限公司 | Sdk生成方法、装置、设备及可读存储介质 |
CN112882931A (zh) * | 2021-02-06 | 2021-06-01 | 重庆富民银行股份有限公司 | 基于ddt的自动化测试方法及装置 |
CN113032241A (zh) * | 2019-12-09 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 一种测试数据处理方法、装置及存储介质 |
CN113342679A (zh) * | 2021-06-29 | 2021-09-03 | 汇付天下有限公司 | 接口测试方法及测试装置 |
CN113495831A (zh) * | 2020-04-03 | 2021-10-12 | 卫宁健康科技集团股份有限公司 | 基于关键字生成测试用例的方法、系统、设备及介质 |
CN114239486A (zh) * | 2021-12-03 | 2022-03-25 | 北京鸿合爱学教育科技有限公司 | 接口说明文档生成方法、装置、设备及存储介质 |
CN118101240A (zh) * | 2024-01-17 | 2024-05-28 | 北京安胜华信科技有限公司 | 一种api安全防护方法及系统 |
CN118132448A (zh) * | 2024-05-06 | 2024-06-04 | 成都赛力斯科技有限公司 | 测试用例处理方法、装置、计算机设备和存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096631A (zh) * | 2009-12-11 | 2011-06-15 | 华为技术有限公司 | 接口测试方法及装置 |
US20140359362A1 (en) * | 2011-12-31 | 2014-12-04 | China Unionpay Co., Ltd. | Information interaction test device and method based on automatic generation of associated test cases |
CN104866426A (zh) * | 2015-05-28 | 2015-08-26 | 华北计算技术研究所 | 软件测试综合控制方法及系统 |
CN105373469A (zh) * | 2014-08-25 | 2016-03-02 | 广东金赋信息科技有限公司 | 一种基于接口的软件自动化测试方法 |
CN105528294A (zh) * | 2015-12-29 | 2016-04-27 | 广东金赋信息科技有限公司 | 一种接口测试用例自动生成的方法及系统 |
CN106155891A (zh) * | 2015-04-02 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 接口测试方法、接口描述数据库生成方法及装置 |
CN107678942A (zh) * | 2017-08-30 | 2018-02-09 | 苏州朗动网络科技有限公司 | 一种api自动化测试方法 |
CN107729243A (zh) * | 2017-10-12 | 2018-02-23 | 上海携程金融信息服务有限公司 | 应用编程接口自动化测试方法、系统、设备及存储介质 |
-
2018
- 2018-06-29 CN CN201810696063.3A patent/CN108897687B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096631A (zh) * | 2009-12-11 | 2011-06-15 | 华为技术有限公司 | 接口测试方法及装置 |
US20140359362A1 (en) * | 2011-12-31 | 2014-12-04 | China Unionpay Co., Ltd. | Information interaction test device and method based on automatic generation of associated test cases |
CN105373469A (zh) * | 2014-08-25 | 2016-03-02 | 广东金赋信息科技有限公司 | 一种基于接口的软件自动化测试方法 |
CN106155891A (zh) * | 2015-04-02 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 接口测试方法、接口描述数据库生成方法及装置 |
CN104866426A (zh) * | 2015-05-28 | 2015-08-26 | 华北计算技术研究所 | 软件测试综合控制方法及系统 |
CN105528294A (zh) * | 2015-12-29 | 2016-04-27 | 广东金赋信息科技有限公司 | 一种接口测试用例自动生成的方法及系统 |
CN107678942A (zh) * | 2017-08-30 | 2018-02-09 | 苏州朗动网络科技有限公司 | 一种api自动化测试方法 |
CN107729243A (zh) * | 2017-10-12 | 2018-02-23 | 上海携程金融信息服务有限公司 | 应用编程接口自动化测试方法、系统、设备及存储介质 |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111382051A (zh) * | 2018-12-29 | 2020-07-07 | 北京数聚鑫云信息技术有限公司 | 一种api自动测试方法及测试装置 |
CN109992508A (zh) * | 2019-03-22 | 2019-07-09 | 恒生电子股份有限公司 | 测试用例自动化生成方法、装置和电子设备 |
CN112131091B (zh) * | 2019-06-24 | 2024-04-16 | 百度在线网络技术(北京)有限公司 | 一种测试方法、装置及电子设备 |
CN112131091A (zh) * | 2019-06-24 | 2020-12-25 | 百度在线网络技术(北京)有限公司 | 一种测试方法、装置及电子设备 |
CN110287113A (zh) * | 2019-06-25 | 2019-09-27 | 四川长虹电器股份有限公司 | 自动化接口测试方法 |
CN110348225A (zh) * | 2019-07-09 | 2019-10-18 | 中国工商银行股份有限公司 | 针对应用程序接口的安全漏洞确定方法和装置 |
CN110362497A (zh) * | 2019-07-23 | 2019-10-22 | 上海金融期货信息技术有限公司 | 覆盖全异常字符的自动化api接口测试方法和系统 |
CN112306855B (zh) * | 2019-08-02 | 2022-06-17 | 北大方正集团有限公司 | 接口自动化测试方法、装置、终端和存储介质 |
CN112306855A (zh) * | 2019-08-02 | 2021-02-02 | 北大方正集团有限公司 | 接口自动化测试方法、装置、终端和存储介质 |
CN110532182A (zh) * | 2019-08-22 | 2019-12-03 | 锐捷网络股份有限公司 | 一种虚拟化平台的自动化测试方法及装置 |
CN110532182B (zh) * | 2019-08-22 | 2023-05-16 | 锐捷网络股份有限公司 | 一种虚拟化平台的自动化测试方法及装置 |
CN110990248A (zh) * | 2019-10-11 | 2020-04-10 | 北京银企融合技术开发有限公司 | 接口用例测试系统、方法、计算机设备及存储介质 |
CN113032241A (zh) * | 2019-12-09 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 一种测试数据处理方法、装置及存储介质 |
CN113032241B (zh) * | 2019-12-09 | 2024-02-13 | 腾讯科技(深圳)有限公司 | 一种测试数据处理方法、装置及存储介质 |
CN111240961B (zh) * | 2019-12-31 | 2024-08-06 | 中国电力科学研究院有限公司 | 一种基于电网大数据平台的数据库性能测试系统和方法 |
CN111240961A (zh) * | 2019-12-31 | 2020-06-05 | 中国电力科学研究院有限公司 | 一种基于电网大数据平台的数据库性能测试系统和方法 |
CN111190073A (zh) * | 2019-12-31 | 2020-05-22 | 中国电力科学研究院有限公司 | 一种电网广域量测交互与搜索服务系统 |
CN111190073B (zh) * | 2019-12-31 | 2024-04-16 | 中国电力科学研究院有限公司 | 一种电网广域量测交互与搜索服务系统 |
CN113495831A (zh) * | 2020-04-03 | 2021-10-12 | 卫宁健康科技集团股份有限公司 | 基于关键字生成测试用例的方法、系统、设备及介质 |
CN113495831B (zh) * | 2020-04-03 | 2024-05-31 | 卫宁健康科技集团股份有限公司 | 基于关键字生成测试用例的方法、系统、设备及介质 |
CN112380145A (zh) * | 2021-01-15 | 2021-02-19 | 树根互联技术有限公司 | Sdk生成方法、装置、设备及可读存储介质 |
CN112882931A (zh) * | 2021-02-06 | 2021-06-01 | 重庆富民银行股份有限公司 | 基于ddt的自动化测试方法及装置 |
CN112882931B (zh) * | 2021-02-06 | 2023-05-09 | 重庆富民银行股份有限公司 | 基于ddt的自动化测试方法及装置 |
CN113342679A (zh) * | 2021-06-29 | 2021-09-03 | 汇付天下有限公司 | 接口测试方法及测试装置 |
CN114239486A (zh) * | 2021-12-03 | 2022-03-25 | 北京鸿合爱学教育科技有限公司 | 接口说明文档生成方法、装置、设备及存储介质 |
CN118101240A (zh) * | 2024-01-17 | 2024-05-28 | 北京安胜华信科技有限公司 | 一种api安全防护方法及系统 |
CN118132448A (zh) * | 2024-05-06 | 2024-06-04 | 成都赛力斯科技有限公司 | 测试用例处理方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108897687B (zh) | 2022-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108897687A (zh) | 一种基于数据驱动的api自动化测试方法和系统 | |
US11983098B1 (en) | Systems and methods for modeling and generating test requirements for software applications | |
US6993747B1 (en) | Method and system for web based software object testing | |
US6941546B2 (en) | Method and apparatus for testing a software component using an abstraction matrix | |
US8291387B2 (en) | Method and system for testing a software application interfacing with multiple external software applications in a simulated test environment | |
US6587969B1 (en) | Software system and methods for testing the functionality of a transactional server | |
US8386419B2 (en) | Data extraction and testing method and system | |
US6442714B1 (en) | Web-based integrated testing and reporting system | |
US11762717B2 (en) | Automatically generating testing code for a software application | |
US8001532B1 (en) | System and method for generating source code-based test cases | |
US20100306590A1 (en) | Automated Testing Platform for Event Driven Systems | |
US20160147637A1 (en) | Contextual debugging of sql queries in database-accessing applications | |
CN108959076A (zh) | 一种api在线调试方法 | |
CN106776343A (zh) | 一种Web应用程序自动化测试工具及方法 | |
CN102521354B (zh) | 一种数据库协议审计测试方法及装置 | |
US20080270841A1 (en) | Test case manager | |
US10445675B2 (en) | Confirming enforcement of business rules specified in a data access tier of a multi-tier application | |
EP1214656A1 (en) | Method and system for web based software object testing | |
US20120278708A1 (en) | Verifying configurations | |
Sun et al. | Specification-driven automated testing of GUI-based Java programs | |
US8510714B2 (en) | Implementing integrated documentation and application testing | |
Zun et al. | Research on automated testing framework for multi-platform mobile applications | |
da Costa Araújo et al. | ARRESTT: A framework to create reproducible experiments to evaluate software testing techniques | |
Robbert et al. | Automated test plan generator for database applications systems | |
Rastogi | Unified Functional Testing and Automation |
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 |