CN105893237A - 一种测试数据驱动的方法及设备 - Google Patents
一种测试数据驱动的方法及设备 Download PDFInfo
- Publication number
- CN105893237A CN105893237A CN201510470312.3A CN201510470312A CN105893237A CN 105893237 A CN105893237 A CN 105893237A CN 201510470312 A CN201510470312 A CN 201510470312A CN 105893237 A CN105893237 A CN 105893237A
- Authority
- CN
- China
- Prior art keywords
- test
- code
- data
- case
- equipment
- 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
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
本发明实施例提供一种测试数据驱动的方法及设备,用以解决现有技术中测试方式会导致数据校验部分的测试代码非常庞大,后续维护难度非常高的问题。本发明实施例测试设备通过调度代码确定每个测试用例对应的测试代码;并通过测试代码对应的测试用例中的测试数据进行测试。由于本发明实施例将代码和数据分开,后续在需要对不同的对象进行测试时,只需要维护测试数据即可,不需要每次再维护测试代码,从而较少了需要维护的测试代码,降低了维护难度。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种测试数据驱动的方法及设备。
背景技术
软件测试是一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程,即在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
目前智能云平台后端的WEB SERVER(网页服务)都是以REST API形态向客户端提供的。为了能够更好的为用户提供服务,需要对API(Application Programming Interface,应用程序编程接口)参数进行测试。
常规的API参数测试方案:
构建API接口请求参数(测试输入),发送http(Hyper Text TransportProtocol,超级文本传送协议)请求,获取返回的JSON(JavaScript ObjectNotation,轻量级的数据交换格式)数据,进行JSON数据校验。校验时,需要解析JSON数据,指定校验的key-value(键值)。
对于一个API接口,有多种测试输入(比如正常、非法、边界、不同业务分支等)。如果待测API参数多(业务复杂),对应的TestCase(测试用例)将会增加。
随着待测API参数的增加,目前的测试方式会导致数据校验部分的测试代码非常庞大,而且都是硬代码,后续维护难度非常高。
发明内容
本发明实施例提供一种测试数据驱动的方法及设备,用以解决现有技术中测试方式会导致数据校验部分的测试代码非常庞大,后续维护难度非常高的问题。
本发明实施例提供的一种测试数据驱动的方法,包括:
测试设备通过调度代码确定每个测试用例对应的测试代码;
所述测试设备通过测试代码对对应的测试用例中的测试数据进行测试;
其中,同一类测试用例对应的测试代码相同。
本发明实施例提供的一种测试数据驱动的设备,包括:
确定单元,用于通过调度代码确定每个测试用例对应的测试代码;
测试单元,用于通过测试代码对对应的测试用例中的测试数据进行测试;
其中,同一类测试用例对应的测试代码相同。
本发明实施例测试设备通过调度代码确定每个测试用例对应的测试代码;并通过测试代码对对应的测试用例中的测试数据进行测试。由于本发明实施例将代码和数据分开,后续在需要对不同的对象进行测试时,只需要维护测试数据即可,不需要每次再维护测试代码,从而较少了需要维护的测试代码,降低了维护难度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例测试数据驱动的方法流程图;
图2为本发明实施例采用线性链表建立对于关系的示意图;
图3为本发明测试数据驱动的设备结构示意图;
图4为本发明测试数据驱动的完整方法流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例测试设备通过调度代码确定每个测试用例对应的测试代码;并通过测试代码对对应的测试用例中的测试数据进行测试。由于本发明实施例将代码和数据分开,后续在需要对不同的对象进行测试时,只需要维护测试数据即可,不需要每次再维护测试代码,从而较少了需要维护的测试代码,降低了维护难度。
下面结合说明书附图对本发明实施例作进一步详细描述。
如图1所示,本发明实施例测试数据驱动的方法包括:
步骤101、测试设备通过调度代码确定每个测试用例对应的测试代码;
步骤102、所述测试设备通过测试代码对对应的测试用例中的测试数据进行测试;
其中,同一类测试用例对应的测试代码相同。
本发明实施例将代码和数据分开,生成每个测试用例对应的测试代码,后续可以直接使用每个测试用例对应的测试代码。
在实施中,每个测试对象会对应至少一个测试用例,测试设备通过测试代码对对应的测试用例中的测试数据进行测试,从而实现对测试对象进行测试。
本发明实施例将对应同一个测试对象的测试用例划分为一类(也就是说,同一类测试用例中的测试数据用于对同一个测试对象进行测试),对于同一类测试用例对应的测试代码相同。
在需要对不同的测试对象进行测试时,由于测试代码是对测试用例中的测试数据进行测试使用的代码,也就是说测试代码表示的是具体如何测试方法。对于同一类的测试用例,测试方法不会变,只是里面具体数据有变化,所以只需要维护测试数据,不需要每次再维护测试代码,从而减少了需要维护的测试代码,降低了维护难度。
在实施中,本发明实施例的测试设备可以通过python装饰器实现测试数据驱动,并且测试数据中包括解析并获取JSON数据的任意key-value(键值)方法,从而根据测试数据就可以进行测试。
本发明实施例将测试数据封装到测试用例中,并将多个测试用例分成多个集合,每个集合中的测试用例在一个测试包中。
可选的,本发明实施例将对应同一个API(Application ProgrammingInterface,应用程序编程接口)的测试用例划分到一个集合中。也就是说,测试包中的测试用例对应同一个API;
相应的,所述测试设备从每个测试包中确定每个测试用例。
比如API有一个参数(int A),需要测试在参数不同输入的情况下,对应返回值是否合法。
A等于0;
A小于0;
A大于0;
A溢出int值范畴
以上4中情况,其测试代码结构都一样,只不过校验返回值不同。本发明实施例只需要一份测试代码,而不需要像现有技术提供4份测试代码。测试人员只需要设计不同的测试数据即可。
在实施中,用户可以将生成的测试包置于规则配置文件中或数据库中,并将规则配置文件或数据库存储到所述测试设备能够读取到的存储实体中,比如可以存储到所述测试设备内部的存储实体中,也可以存储到所述测试设备能够读取到的外部的存储实体中。
相应的,测试设备通过测试代码对规则配置文件或数据库中对应的测试用例中的测试数据进行测试。
如果同一时间有多个测试包,测试设备可以采用轮询的方式读取测试包,并对读取的测试包中的测试用例中的测试数据进行测试;也可以采用其他方式,比如可以按照测试用例优先级从高到低读取测试包,并对读取的测试包中的测试用例中的测试数据进行测试;还可以按照测试包生成时间读取测试包,并对读取的测试包中的测试用例中的测试数据进行测试;还可以按照用户设定的顺序读取测试包,并对读取的测试包中的测试用例中的测试数据进行测试。
可选的,如果同一时间有多个测试包,测试设备还可以将所有测试包中的测试用例都读取出来,并对多个测试用例中的测试数据同时进行测试。
在实施中,本发明实施例在生成每个测试用例时,可以设定每个测试用例对应的测试代码。
基于此,本发明实施例建立了一个测试用例和测试代码的对应关系,该对应关系可以采用线性链表结构建立,也可以采用数组结构建立。如果采用线性链表结构建立,可以直接把新增加的测试用例和对应的测试代码添加到链表尾部。使用链表比数组更节省空间,并且可以更方便执行删除、添加等操作。
如图2所示,图中采用线性链表结构建立测试用例和测试代码的对应关系。
在实施中,所述测试设备根据测试用例和测试代码的对应关系,通过调度代码确定每个测试用例对应的测试代码。
比如图2中测试用例1对应测试代码1,测试用例2对应测试代码2,测试用例3对应测试代码3。
所述测试设备通过调度代码查询测试用例和测试代码的对应关系,从而确定测试用例1对应的测试代码是测试代码1。
在实施中,所述测试设备通过测试代码对对应的测试用例中的测试数据进行测试时,根据测试返回的数值和测试数据中的期望值进行比较得到测试结果。
可选的,所述测试设备通过测试代码对对应的测试用例中的测试数据进行测试之后,上报测试结果。
比如可以将测试结果以xml格式输出,从而可以在webserver上生成可视化报表。
基于上述方案,本发明实施例还提供一种测试数据驱动的设备,该设备可以为服务器等设备。如图3所示,本发明实施例网络侧设备包括:确定单元300和测试单元301。本发明实施例中的确定单元300和测试单元301可以通过硬件处理器(hardware processor)来实现相关功能单元。
确定单元300,用于通过调度代码确定每个测试用例对应的测试代码;
测试单元301,用于通过测试代码对对应的测试用例中的测试数据进行测试;
其中,同一类测试用例对应的测试代码相同。
本发明实施例将代码和数据分开,生成每个测试用例对应的测试代码,后续可以直接使用每个测试用例对应的测试代码。
在实施中,每个测试对象会对应至少一个测试用例,测试设备通过测试代码对对应的测试用例中的测试数据进行测试,从而实现对测试对象进行测试。
本发明实施例将对应同一个测试对象的测试用例划分为一类(也就是说,同一类测试用例中的测试数据用于对同一个测试对象进行测试),对于同一类测试用例对应的测试代码相同。
在需要对不同的测试对象进行测试时,由于测试代码是对测试用例中的测试数据进行测试使用的代码,也就是说测试代码表示的是具体如何测试方法。对于同一类的测试用例,测试方法不会变,只是里面具体数据有变化,所以只需要维护测试数据,不需要每次再维护测试代码,从而减少了需要维护的测试代码,降低了维护难度。
本发明实施例将测试数据封装到测试用例中,并将多个测试用例分成多个集合,每个集合中的测试用例在一个测试包中。
可选的,本发明实施例将对应同一个API的测试用例划分到一个集合中。也就是说,测试包中的测试用例对应同一个API;
相应的,所述确定单元300还用于:
从每个测试包中确定每个测试用例;
其中,所述测试包中的测试用例对应同一个API。
比如API有一个参数(int A),需要测试在参数不同输入的情况下,对应返回值是否合法。
A等于0;
A小于0;
A大于0;
A溢出int值范畴
以上4中情况,其测试代码结构都一样,只不过校验返回值不同。本发明实施例只需要一份测试代码,而不需要向现有技术提供4份测试代码。测试人员只需要设计不同的测试数据即可。
在实施中,用户可以将生成的测试包置于规则配置文件中或数据库中,并将规则配置文件或数据库存储到所述测试设备能够读取到的存储实体中,比如可以存储到所述测试设备内部的存储实体中,也可以存储到所述测试设备能够读取到的外部的存储实体中。
相应的,所述测试单元301具体用于:
通过测试代码对规则配置文件或数据库中对应的测试用例中的测试数据进行测试。
如果同一时间有多个测试包,确定单元300可以采用轮询的方式读取测试包,并由测试单元301对读取的测试包中的测试用例中的测试数据进行测试;也可以确定单元300采用其他方式,比如可以按照测试用例优先级从高到低读取测试包,并由测试单元301对读取的测试包中的测试用例中的测试数据进行测试;还可以按照测试包生成时间读取测试包,并由测试单元301对读取的测试包中的测试用例中的测试数据进行测试;还可以按照用户设定的顺序读取测试包,并由测试单元301对读取的测试包中的测试用例中的测试数据进行测试。
可选的,如果同一时间有多个测试包,确定单元300还可以将所有测试包中的测试用例都读取出来,并由测试单元301对多个测试用例中的测试数据同时进行测试。
在实施中,本发明实施例在生成每个测试用例时,可以设定每个测试用例对应的测试代码。
基于此,本发明实施例建立了一个测试用例和测试代码的对应关系,该对应关系可以采用线性链表结构建立,也可以采用数组结构建立。如果采用线性链表结构建立,可以直接把新增加的测试用例和对应的测试代码添加到链表尾部。使用链表比数组更节省空间,并且可以更方便执行删除、添加等操作。
如图2所示,图中采用线性链表结构建立测试用例和测试代码的对应关系。
在实施中,确定单元300具体用于:
根据测试用例和测试代码的对应关系,通过调度代码确定每个测试用例对应的测试代码。
比如图2中测试用例1对应测试代码1,测试用例2对应测试代码2,测试用例3对应测试代码3。
确定单元300通过调度代码查询测试用例和测试代码的对应关系,从而确定测试用例1对应的测试代码是测试代码1。
在实施中,所述测试单元301通过测试代码对对应的测试用例中的测试数据进行测试时,根据测试返回的数值和测试数据中的期望值进行比较得到测试结果。
可选的,所述测试单元301还用于:
通过测试代码对对应的测试用例中的测试数据进行测试之后,上报测试结果。
比如可以将测试结果以xml格式输出,从而可以在webserver上生成可视化报表。
如图4所示,本发明测试数据驱动的完整方法包括:
步骤401、测试设备从每个测试包中确定每个测试用例。
步骤402、所述测试设备根据测试用例和测试代码的对应关系,通过调度代码确定每个测试用例对应的测试代码。
步骤403、所述测试设备通过测试代码对规则配置文件或数据库中对应的测试用例中的测试数据进行测试。
步骤404、所述测试设备将测试结果以xml格式输出。
从上述内容可以看出:本发明实施例测试设备通过调度代码确定每个测试用例对应的测试代码;并通过测试代码对对应的测试用例中的测试数据进行测试。由于本发明实施例将代码和数据分开,后续在需要对不同的对象进行测试时,只需要维护测试数据即可,不需要每次再维护测试代码,从而较少了需要维护的测试代码,降低了维护难度。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种测试数据驱动的方法,其特征在于,包括:
测试设备通过调度代码确定每个测试用例对应的测试代码;
所述测试设备通过测试代码对对应的测试用例中的测试数据进行测试;
其中,同一类测试用例对应的测试代码相同。
2.根据权利要求1所述的方法,其特征在于,所述测试设备通过调度代码确定每个测试用例对应的测试代码之前,还包括:
所述测试设备从每个测试包中确定每个测试用例;
其中,所述测试包中的测试用例对应同一个应用程序编程接口API。
3.根据权利要求1所述的方法,其特征在于,所述测试设备通过调度代码确定每个测试用例对应的测试代码,包括:
所述测试设备根据测试用例和测试代码的对应关系,通过调度代码确定每个测试用例对应的测试代码。
4.根据权利要求1所述的方法,其特征在于,同一类测试用例中的测试数据用于对同一个测试对象进行测试。
5.根据权利要求1~4任一所述的方法,其特征在于,所述测试设备通过测试代码对对应的测试用例中的测试数据进行测试,包括:
所述测试设备通过测试代码对规则配置文件或数据库中对应的测试用例中的测试数据进行测试。
6.一种测试数据驱动的设备,其特征在于,包括:
确定单元,用于通过调度代码确定每个测试用例对应的测试代码;
测试单元,用于通过测试代码对对应的测试用例中的测试数据进行测试;
其中,同一类测试用例对应的测试代码相同。
7.根据权利要求6所述的设备,其特征在于,所述确定单元还用于:
从每个测试包中确定每个测试用例;
其中,所述测试包中的测试用例对应同一个API。
8.根据权利要求6所述的设备,其特征在于,所述确定单元具体用于:
根据测试用例和测试代码的对应关系,通过调度代码确定每个测试用例对应的测试代码。
9.根据权利要求6所述的设备,其特征在于,同一类测试用例中的测试数据用于对同一个测试对象进行测试。
10.根据权利要求6~9任一所述的设备,其特征在于,所述测试单元具体用于:
通过测试代码对规则配置文件或数据库中对应的测试用例中的测试数据进行测试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510470312.3A CN105893237A (zh) | 2015-08-04 | 2015-08-04 | 一种测试数据驱动的方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510470312.3A CN105893237A (zh) | 2015-08-04 | 2015-08-04 | 一种测试数据驱动的方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105893237A true CN105893237A (zh) | 2016-08-24 |
Family
ID=57002235
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510470312.3A Pending CN105893237A (zh) | 2015-08-04 | 2015-08-04 | 一种测试数据驱动的方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105893237A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107403112A (zh) * | 2017-07-31 | 2017-11-28 | 北京京东尚科信息技术有限公司 | 数据校验方法及其设备 |
CN109614313A (zh) * | 2018-10-25 | 2019-04-12 | 平安科技(深圳)有限公司 | 自动化测试方法、装置及计算机可读存储介质 |
CN110399296A (zh) * | 2019-06-29 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 测试客户端与服务端之间交互接口的方法、***和介质 |
CN111400181A (zh) * | 2020-03-13 | 2020-07-10 | 北京金山云网络技术有限公司 | 对象测试方法、装置和服务器 |
CN111651346A (zh) * | 2020-04-27 | 2020-09-11 | 平安医疗健康管理股份有限公司 | 前端组件的测试方法、装置、存储介质及计算机设备 |
-
2015
- 2015-08-04 CN CN201510470312.3A patent/CN105893237A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107403112A (zh) * | 2017-07-31 | 2017-11-28 | 北京京东尚科信息技术有限公司 | 数据校验方法及其设备 |
CN107403112B (zh) * | 2017-07-31 | 2020-07-31 | 北京京东尚科信息技术有限公司 | 数据校验方法及其设备 |
CN109614313A (zh) * | 2018-10-25 | 2019-04-12 | 平安科技(深圳)有限公司 | 自动化测试方法、装置及计算机可读存储介质 |
CN110399296A (zh) * | 2019-06-29 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 测试客户端与服务端之间交互接口的方法、***和介质 |
CN110399296B (zh) * | 2019-06-29 | 2022-12-27 | 苏州浪潮智能科技有限公司 | 测试客户端与服务端之间交互接口的方法、***和介质 |
CN111400181A (zh) * | 2020-03-13 | 2020-07-10 | 北京金山云网络技术有限公司 | 对象测试方法、装置和服务器 |
CN111651346A (zh) * | 2020-04-27 | 2020-09-11 | 平安医疗健康管理股份有限公司 | 前端组件的测试方法、装置、存储介质及计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Oñorbe et al. | How to zoom: bias, contamination and Lagrange volumes in multimass cosmological simulations | |
CN105893237A (zh) | 一种测试数据驱动的方法及设备 | |
CN103678113B (zh) | 计算机软件应用的自测试、及其方法和*** | |
CN109408375B (zh) | 接口文档的生成方法和装置 | |
CN106326116B (zh) | 产品测试的方法和装置 | |
CN109901968A (zh) | 一种自动化页面数据校验方法和装置 | |
CN108009080B (zh) | 一种代码扫描工具的评估方法及装置 | |
CN109840192B (zh) | 自动化测试的方法和装置 | |
CN106201856A (zh) | 一种多版本性能测试方法及装置 | |
Mak et al. | The statistical power of testing probabilistic seismic‐hazard assessments | |
CN110007921A (zh) | 一种代码发布方法及装置 | |
CN110083535A (zh) | 一种软件测试方法及装置 | |
CN109801677A (zh) | 测序数据自动化分析方法、装置和电子设备 | |
CN106095688A (zh) | 一种软件性能测试方法及装置 | |
Padilla et al. | The effect of assembly bias on redshift-space distortions | |
CN103955425B (zh) | 网页web探索测试装置及方法 | |
CN107066302A (zh) | 缺陷检测方法、装置及服务终端 | |
CN110334012A (zh) | 一种风险评估方法及装置 | |
CN112905451B (zh) | 应用程序的自动化测试方法及装置 | |
CN107688952A (zh) | 一种云计算的电子商务用户行为数据分析技术 | |
CN106649121A (zh) | 一种测试结果分析方法及装置 | |
Vasta et al. | Outlier detection for sensor systems (ODSS): A MATLAB macro for evaluating microphone sensor data quality | |
EP3901762A1 (en) | Distributed processing assistance apparatus, distributed processing assistance method, and program | |
Domainko et al. | A history of the gamma-ray burst flux at the Earth from Galactic globular clusters | |
Demetroullas et al. | Galaxy–galaxy and galaxy–cluster lensing with the SDSS and FIRST surveys |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160824 |