CN102760096A - 测试用数据的生成方法、单元测试方法以及单元测试系统 - Google Patents

测试用数据的生成方法、单元测试方法以及单元测试系统 Download PDF

Info

Publication number
CN102760096A
CN102760096A CN201110106596XA CN201110106596A CN102760096A CN 102760096 A CN102760096 A CN 102760096A CN 201110106596X A CN201110106596X A CN 201110106596XA CN 201110106596 A CN201110106596 A CN 201110106596A CN 102760096 A CN102760096 A CN 102760096A
Authority
CN
China
Prior art keywords
test
data
type
insert
attribute
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
Application number
CN201110106596XA
Other languages
English (en)
Other versions
CN102760096B (zh
Inventor
杜刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201110106596.XA priority Critical patent/CN102760096B/zh
Publication of CN102760096A publication Critical patent/CN102760096A/zh
Priority to HK12113366.5A priority patent/HK1172705A1/zh
Application granted granted Critical
Publication of CN102760096B publication Critical patent/CN102760096B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种测试用数据的生成方法、单元测试方法以及单元测试系统,所述测试用数据的生成方法包括:获取数据对象的类型,利用JAVA反射机制获取所述数据对象的属性信息;根据所述数据对象的类型和属性信息,按照设定的规则生成用于进行插入测试或/和更新测试的测试用数据。所述单元测试方法包括:利用生成的用于进行插入测试的数据执行插入测试;当插入测试结果正确时,利用生成的用于进行更新测试的数据执行更新测试;当更新测试结果正确时,进行删除测试,并当删除测试结果正确时返回测试正确响应。通过本申请,可以提高生成测试用数据的效率,进而提高单元测试的效率。

Description

测试用数据的生成方法、单元测试方法以及单元测试系统
技术领域
本申请涉及软件测试领域,特别是涉及一种测试用数据的生成方法、单元测试方法以及单元测试系统。
背景技术
单元测试是对由源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。单元测试检查每个控制结构的分支以确保完全覆盖和最大可能的错误检查。
现有技术中,准备单元测试数据一般采用如下方法:
(1)手工创建数据对象并赋值。
(2)从外部数据数据源,如XML,EXCEL等读取;其中,XML或EXCEL的数据需要手工维护。
在实现本申请的过程中,发明人发现现有技术至少存在如下问题:
现有技术中,均需要手工准备测试数据,需要考虑数据类型和数据格式转换等问题。当数据库表结构发生变更时,需要进行手工调整。
发明内容
本申请的目的在于提供一种测试用数据的生成方法、单元测试方法以及单元测试系统,以提高测试用数据的生成效率,进而提高单元测试的效率,为此,本申请采用如下技术方案:
本申请提出一种测试用数据的生成方法,其特征在于,包括:
获取数据对象的类型,利用JAVA反射机制获取所述数据对象的属性信息;
根据所述数据对象的类型和属性信息,按照设定的规则生成用于进行插入测试或/和更新测试的测试用数据。
优选地,所述根据数据对象的类型和属性信息,生成测试用数据,具体为:
获取所述数据对象的属性的数据类型,并根据所述属性的数据类型,生成相应类型的属性值。
优选地,所述用于进行插入测试的数据根据以下规则之一或任意组合生成:
对于数据类型为字符串类型的属性,使用该属性的名称为所述进行插入测试的数据的相应属性字段赋值;
对于数据类型为数值类型的属性,根据随机数为所述进行插入测试的数据的相应属性字段赋值;
对于数据类型为日期类型的属性,使用系统当前时间为所述进行插入测试的数据的相应属性字段赋值;
对于数据类型为货币类型的属性,根据随机数为所述进行插入测试的数据的相应属性字段赋值,其中,币种类型为随机选择的币种类型。
优选地,所述用于进行更新测试的数据根据所述用于进行插入测试的数据生成,且所述用于进行更新测试的数据与所述用于进行插入测试的数据对应属性字段赋值不完全相同。
本申请提出一种利用上述方法生成的测试用数据实现的单元测试方法,该方法包括:
利用生成的用于进行插入测试的数据执行插入测试;
若插入测试结果正确,则利用生成的用于进行更新测试的数据执行更新测试;
若更新测试结果正确,则进行删除测试,并当删除测试结果正确时返回测试正确响应。
优选地,所述执行插入测试具体为:
通过调用数据访问对象DAO层访问代码,在待测数据库表中插入所述用于进行插入测试的数据;
根据返回的当前插入的数据的主键,在数据库表中查询所述主键对应的数据,并比较查询到的数据和所述用于进行插入测试的数据;若二者相同,则返回插入测试结果正确的响应;否则,返回插入测试结果异常的响应或/和查询测试结果异常的响应。
优选地,所述执行更新测试具体为:
通过调用DAO层访问代码,对待测数据库表中插入的所述用于进行插入测试的数据进行更新操作;
利用所述主键在更新后的数据库表中查询对应的数据,并比较查询到的数据和所述用于进行更新测试的数据;若二者相同,则返回更新测试结果正确的响应;否则,返回更新测试结果异常的响应或/和查询测试结果异常的响应。
优选地,插入测试结果正确时,根据所述用于进行插入测试的数据生成所述用于进行更新测试的数据。
本申请提出一种单元测试系统,包括:
获取模块,用于获取数据对象类型,并利用JAVA反射机制获取所述数据对象的属性信息;
生成模块,用于根据所述数据对象的类型和属性信息,按照设定的规则生成用于进行插入测试或/和更新测试的测试用数据;
测试模块,用于利用生成的用于进行插入测试的数据执行插入测试,并当插入测试结果正确时,利用生成的用于进行更新测试的数据执行更新测试,并当更新测试结果正确时,进行删除测试,并当删除测试结果正确时返回测试正确响应。
优选地,所述获取模块具体用于,获取所述数据对象的属性的数据类型;
所述生成模块具体用于,根据所述属性的数据类型,生成相应类型的属性值。
优选地,所述生成模块使用以下规则之一或任意组合生成用于进行插入测试的数据:
对于数据类型为字符串类型的属性,使用该属性的名称为所述进行插入测试的数据的相应属性字段赋值;
对于数据类型为数值类型的属性,根据随机数为所述进行插入测试的数据的相应属性字段赋值;
对于数据类型为日期类型的属性,使用系统当前时间为所述进行插入测试的数据的相应属性字段赋值;
对于数据类型为货币类型的属性,根据随机数为所述进行插入测试的数据的相应属性字段赋值,其中,币种类型为随机选择的币种类型。
优选地,所述生成模块具体用于,根据生成的所述用于进行插入测试的数据生成用于进行更新测试的数据;其中,所述用于进行更新测试的数据与所述用于进行插入测试的数据对应属性字段赋值不完全相同。
优选地,所述测试模块具体用于,在执行插入测试时,通过调用数据访问对象DAO层访问通过调用数据访问对象DAO层访问代码,在待测数据库表中插入所述用于进行插入测试的数据;根据返回的当前插入的数据的主键,在数据库表中查询所述主键对应的数据,并比较查询到的数据和所述用于进行插入测试的数据;若二者相同,则返回插入测试结果正确的响应;否则,返回插入测试结果异常的响应或/和查询测试结果异常的响应。
优选地,所述测试模块具体用于,在执行更新测试时,通过调用DAO层访问代码,对待测数据库表中插入的所述用于进行插入测试的数据进行更新操作;利用所述主键在更新后的数据库表中查询对应的数据,并比较查询到的数据和所述用于进行更新测试的数据;若二者相同,则返回更新测试结果正确的响应;否则,返回更新测试结果异常的响应或/和查询测试结果异常的响应。
优选地,所述生成模块具体用于,当插入测试结果正确时,根据所述用于进行插入测试的数据生成用于进行更新测试的数据。
本申请的实施例包括以下优点,因为通过获取数据对象类型,并利用JAVA反射机制自动获取该数据对象的属性信息,并根据获取到的数据对象的属性信息以及数据对象的类型自动生成测试用数据,提高了生成测试用户数据的效率,进而提高了单元测试的效率。当然,实施本申请的实施例的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
图1为本申请实施例中的数据生成方法流程示意图;
图2为本申请实施例中的单元测试方法流程示意图;
图3为本申请实施例中的单元测试系统的结构示意图。
具体实施方式
本申请实施例提供的技术方案中,通过获取数据对象的类型,并利用JAVA反射机制根据获取到的数据对象的类型自动获取该数据对象的属性信息,并根据获取到的数据对象的属性信息以及数据对象的类型自动生成测试用数据,以利用生成的测试用数据对DAO(Data Access Objects,数据访问对象)层代码进行测试。
在数据库应用系统中,通常可以将一个数据库表作为一个JAVA数据对象进行处理。其中,数据库表的类型即为相应数据对象的类型,数据库表的表项中的各字段分别为相应数据对象的相应属性。例如,一个网站的注册用户表可以作为一个JAVA数据对象,其中的每一个表项(一个表项记录有一个用户的相关信息)可以作为该JAVA数据对象的下一级数据对象,该下一级数据对象的类型可表示为user.class,用户表的表项中的不同字段(如姓名、出生日期等)分别对应数据对象的不同属性,如姓名属性、出生日期属性等。其中,姓名属性的数据类型为字符串(String)类型,出生日期属性的数据类型为日期类型。
本申请实施例以上述数据库应用系统为例,对测试用数据的生成及单元测试方法进行详细描述。
本申请实施例中,DAO层访问代码包含数据库对象(此处的数据库对象是指数据库表项)的增加、修改、删除、查询基本操作,如可通过insert、delete、update、query等语句实现,用户可以通过DAO层访问代码对数据库表进行数据库层的访问。本申请实施例中,利用基本的增加、修改、删除、查询等操作的单元测试,对DAO层访问代码的正确性进行测试。
下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
当用户编写了测试代码以对DAO层访问代码进行测试时,用户需要准备测试用数据,以使测试代码通过调用DAO层访问代码,利用该测试用数据对数据库表进行相应的操作,从而检测DAO层访问代码的相应语句是否正确。
如图1所示,为申请实施例中的数据生成方法流程的示意图。该实施例中,DAO层访问代码为访问数据库表A的访问代码,数据库表A可作为数据对象A被DAO层访问代码访问,测试用数据通常由单元测试系统生成,该流程可以包括以下步骤:
步骤101、单元测试系统获取数据对象的类型。
具体的,当用户需要通过对数据库表A的操作对DAO层访问代码的正确性进行测试时,首先需要生成针对数据库表A的测试用数据。单元测试系统可提供用户输入界面,供用户选择或输入测试用数据对象,本流程中,用户输入的测试用数据对象为数据库A,单元测试系统可根据用户的选择或输入操作获取数据库A的类型,该类型为用户表类型。
步骤102、单元测试系统利用JAVA反射机制获取该数据对象的属性信息。
JAVA反射机制是一种动态获取信息以及动态调用对象的方法的技术。通过JAVA反射机制,在系统运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能调用它的任意一个方法。
在本申请实施例中,当单元测试系统获取到数据对象A的类型时,可以利用JAVA反射机制根据数据对象A的类型信息自动获取数据对象A的属性信息。如,当数据库表A为注册用户表,该用户表的表项中包含用户名、年龄、注册日期以及账户余额等字段,则当单元测试系统获取到数据对象A的类型信息(user.class)时,可以自动获取数据对象A的属性信息,即用户名属性(字符串类型)、年龄属性(数值类型)、注册日期属性(日期类型)以及账户余额属性(Money类型)。
步骤103、单元测试系统根据数据对象类型和获取到的数据对象的属性信息,按照设定的规则生成测试用数据。
具体的,单元测试系统获取到数据对象的属性信息后,可以根据数据对象的属性的数据类型,生成相应类型的属性值。例如,对于上述数据对象A,其姓名属性的数据类型为字符串类型,年龄属性的数据类型为数字类型,注册日期属性的数据类型为日期类型,账户余额属性的数据类型为Money(货币)类型,因此,针对数据对象A的测试用数据中包含字符串类型的姓名字段、数值类型的年龄字段、日期类型的注册日期字段以及Money类型的账户余额字段。该测试用数据可以包括用于进行insert(插入)测试的数据及用于进行update(更新)测试的数据。
其中,用于进行insert测试的数据根据以下规则之一或任意组合生成:
对于数据类型为字符串类型的属性,使用该属性的名称为所述进行插入测试的数据的相应属性字段赋值;
对于数据类型为数值类型的属性,根据随机数为所述进行插入测试的数据的相应属性字段赋值;
对于数据类型为日期类型的属性,使用系统当前时间为所述进行插入测试的数据的相应属性字段赋值;
对于数据类型为货币类型的属性,根据随机数为所述进行插入测试的数据的相应属性字段赋值,其中,币种类型为随机选择的币种类型。
例如,针对数据对象A,用于进行insert测试的数据的生成过程为:使用姓名字段的字段名称“姓名”作为该字段的字段值,数据类型为String;根据随机数得到年龄字段的字段值,数据类型为int;将系统当前日期作为注册日期字段的字段值,数据类型为日期;根据随机数得到账户余额字段的字段值,币种类型可随机选择,不限定于人民币,也可以是欧元、法郎或英镑等其他币种,数据类型为Money。
需要注意的是,测试用数据中数据类型为货币类型的属性可以看作一个数据对象,该数据对象包括两个属性:金额和币种。其中,金额可以以分为单位,且根据随机数对其进行赋值;币种则可以为随机币种。
用于进行update测试的数据根据用于进行insert测试的数据生成,以保证用于进行update的数据与用于进行insert测试的数据的对应字段赋值不完全相同,其具体的生成规则可以如下:
在用于进行insert测试的数据中,对于String类型的属性字段,在该字段值后加上New后缀;对于数值类型的属性字段,在该字段值上加1;对于日期类型的属性字段,在该字段值的基础上增加一天;对于Money类型的属性字段,在该字段值的基础上加1。
其中,当用于进行insert测试的数据的String类型的属性字段再加上New后缀后字符长度超过预设最大字符串长度时,则直接对该字段值进行大小写变换,作为用于进行update测试的数据的String类型的属性字段的字段值。
用于进行insert测试的数据或用于进行update测试的数据生成以后,单元测试系统通过调用DAO层访问代码利用生成的测试数据对数据库表A进行相应的操作,以检测DAO层访问代码相应语句是否正确。
上文所述用于进行insert测试的数据生成规则以及用于进行update测试的数据生成规则只是举例性的说明,并不是本申请技术方案中所述数据生成规则的限定,本领域技术人员还可以设置其它的测试数据生成规则。
如图2所示,为本申请实施例中DAO单元测试方法流程的示意图,可以包括以下步骤:
步骤201、单元测试系统生成用于进行insert测试的数据。
步骤202、单元测试系统执行insert测试。若未发现异常,则转至步骤203;否则结束流程。
具体的,单元测试系统调用DAO层访问代码利用生成的用于进行insert测试的数据对数据库表A进行insert操作,以检测DAO层访问代码insert语句是否正确。其具体检测流程为:单元测试系统通过调用DAO层访问代码利用用于进行insert测试的数据对数据库进行insert操作,并根据返回的主键查找该主键对应的数据对象,并将查找到的数据对象与上述用于进行insert测试的数据进行比较,当二者相同时,则认为DAO层代码的insert语句正确,返回insert测试结果正确的响应;否则,认为DAO层代码中的insert语句或/和query(查询)语句出现了问题,返回insert测试结果异常的响应或/和query测试结果异常的响应。
步骤203、单元测试系统生成用于进行update测试的数据。
具体的,可以根据步骤201中生成的用于进行insert测试的数据按照相应的数据生成规则生成对应的用于进行update测试的数据。其中,需要保证用于进行update测试的数据的各属性字段的字段值与用于进行insert测试的数据的对应字段的字段值不完全相同。实际应用中,一般使用于进行update测试的数据的各属性字段的字段值与用于进行insert测试的数据的对应字段的字段值均不相同。
步骤204、单元测试系统执行update测试。若未发现异常,则转至步骤205,否则结束流程。
具体的,单元测试系统通过调用DAO层访问代码利用生成的用于进行update测试的数据对数据库表A进行update操作,以检测DAO层访问代码的update语句是否正确。其具体检测流程为:当步骤202中insert测试未发现异常时,单元测试系统通过调用DAO层访问代码利用生成的用于进行update测试的数据对数据库表A插入的用于进行insert测试的数据进行update操作,并根据步骤202中返回的主键查询该主键在更新后的数据库表中对应的数据对象,并将查询到的数据对象与用于进行update测试的数据进行对比,若二者相同,则认为DAO层代码的update语句正确,返回update测试结果正确的响应;否则,认为DAO层代码中的update语句或/和query语句出现了问题,返回update测试结果异常的响应或/和query测试结果异常的响应。
步骤205、单元测试系统执行delete(删除)测试。
具体的,当步骤204中update测试未发现问题时,单元测试系统通过调用DAO层访问代码利用步骤202中返回的主键对数据库表A进行delete操作,若操作成功,则认为DAO层代码delete语句正确,否则,认为DAO层代码delete语句出现了问题。
通过以上流程,本申请实施例通过基本的增加、修改、删除、查询操作的单元测试对DAO层访问代码相应语句的正确性进行了检测。
本申请的实施例包括以下优点,因为通过获取数据对象类型,并利用JAVA反射机制自动获取该数据对象的属性信息,并根据获取到的数据对象的属性信息以及数据对象的类型自动生成测试用数据,提高了生成测试用户数据的效率,进而提高了单元测试的效率。当然,实施本申请的实施例的任一产品并不一定需要同时达到以上所述的所有优点。
根据上述实施方式中提供的测试用数据生成方法以及单元测试方法,本申请实施例还提供了应用上述测试用数据生成方法以及单元测试方法的单元测试系统。
如图3所示,为本申请实施例中单元测试系统的结构示意图,可以包括:
获取模块31,用于获取数据对象类型,并利用JAVA反射机制获取该数据对象的属性信息;
生成模块32,用于根据该数据对象的类型和属性信息,按照设定的规则生成测试用数据;其中,该测试用数据包括用于进行插入测试的数据或/和用于进行更新测试的数据;
测试模块33,用于利用生成的用于进行插入测试的数据执行插入测试,并当插入测试结果正确时,利用生成的用于进行更新测试的数据执行更新测试,并当更新测试结果正确时,进行删除测试,并当删除测试结果正确时返回测试正确响应。
其中,获取模块31获取到数据对象的属性信息后,进一步获取该数据对象的属性的数据类型;生成模块32,则用于根据该数据对象的属性的数据类型生成相应类型的属性值。
具体的,生成模块32使用以下规则之一或任意组合生成用于进行插入测试的数据:
对于数据类型为字符串类型的属性,使用该属性的名称为所述进行插入测试的数据的相应属性字段赋值;
对于数据类型为数值类型的属性,根据随机数为所述进行插入测试的数据的相应属性字段赋值;
对于数据类型为日期类型的属性,使用系统当前时间为所述进行插入测试的数据的相应属性字段赋值;
对于数据类型为货币类型的属性,根据随机数为所述进行插入测试的数据的相应属性字段赋值,其中,币种类型为随机选择的币种类型。
生成模块32根据生成的所述用于进行插入测试的数据生成用于进行更新测试的数据;其中,用于进行更新测试的数据与用于进行插入测试的数据对应属性字段赋值不完全相同。
其中,在执行插入测试时,测试模块33可以具体用于,通过调用数据访问对象DAO层访问通过调用数据访问对象DAO层访问代码,在待测数据库表中插入用于进行插入测试的数据;根据返回的当前插入的数据的主键,在数据库表中查询所述主键对应的数据,并比较查询到的数据和用于进行插入测试的数据;若二者相同,则返回插入测试结果正确的响应;否则,返回插入测试结果异常的响应或/和查询测试结果异常的响应。
在执行更新测试时,测试模块33可以具体用于通过调用DAO层访问代码,对待测数据库表中插入的用于进行插入测试的数据进行更新操作;利用主键在更新后的数据库表中查询对应的数据,并比较查询到的数据和用于进行更新测试的数据;若二者相同,则返回更新测试结果正确的响应;否则,返回更新测试结果异常的响应或/和查询测试结果异常的响应。
其中,生成模块32可以具体用于,当插入测试结果正确时,根据用于进行插入测试的数据生成用于进行更新测试的数据。
本申请的实施例包括以下优点,因为通过获取数据对象类型,并利用JAVA反射机制自动获取该数据对象的属性信息,并根据获取到的数据对象的属性信息以及数据对象的类型自动生成测试用数据,提高了生成测试用户数据的效率,进而提高了单元测试的效率。当然,实施本申请的实施例的任一产品并不一定需要同时达到以上所述的所有优点。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本申请的保护范围。

Claims (15)

1.一种测试用数据的生成方法,其特征在于,包括:
获取数据对象的类型,利用JAVA反射机制获取所述数据对象的属性信息;
根据所述数据对象的类型和属性信息,按照设定的规则生成用于进行插入测试或/和更新测试的测试用数据。
2.如权利要求1所述的方法,其特征在于,所述根据数据对象的类型和属性信息,生成测试用数据,具体为:
获取所述数据对象的属性的数据类型,并根据所述属性的数据类型,生成相应类型的属性值。
3.如权利要求2所述的方法,其特征在于,所述用于进行插入测试的数据根据以下规则之一或任意组合生成:
对于数据类型为字符串类型的属性,使用该属性的名称为所述进行插入测试的数据的相应属性字段赋值;
对于数据类型为数值类型的属性,根据随机数为所述进行插入测试的数据的相应属性字段赋值;
对于数据类型为日期类型的属性,使用系统当前时间为所述进行插入测试的数据的相应属性字段赋值;
对于数据类型为货币类型的属性,根据随机数为所述进行插入测试的数据的相应属性字段赋值,其中,币种类型为随机选择的币种类型。
4.如权利要求3所述的方法,其特征在于,所述用于进行更新测试的数据根据所述用于进行插入测试的数据生成,且所述用于进行更新测试的数据与所述用于进行插入测试的数据对应属性字段赋值不完全相同。
5.一种利用如权利要求1-4任一项所述的方法生成的测试用数据实现的单元测试方法,其特征在于,该方法包括:
利用生成的用于进行插入测试的数据执行插入测试;
若插入测试结果正确,则利用生成的用于进行更新测试的数据执行更新测试;
若更新测试结果正确,则进行删除测试,并当删除测试结果正确时返回测试正确响应。
6.如权利要求5所述的方法,其特征在于,所述执行插入测试具体为:
通过调用数据访问对象DAO层访问代码,在待测数据库表中插入所述用于进行插入测试的数据;
根据返回的当前插入的数据的主键,在数据库表中查询所述主键对应的数据,并比较查询到的数据和所述用于进行插入测试的数据;若二者相同,则返回插入测试结果正确的响应;否则,返回插入测试结果异常的响应或/和查询测试结果异常的响应。
7.如权利要求6所述的方法,其特征在于,所述执行更新测试具体为:
通过调用DAO层访问代码,对待测数据库表中插入的所述用于进行插入测试的数据进行更新操作;
利用所述主键在更新后的数据库表中查询对应的数据,并比较查询到的数据和所述用于进行更新测试的数据;若二者相同,则返回更新测试结果正确的响应;否则,返回更新测试结果异常的响应或/和查询测试结果异常的响应。
8.如权利要求5所述的方法,其特征在于,插入测试结果正确时,根据所述用于进行插入测试的数据生成所述用于进行更新测试的数据。
9.一种单元测试系统,其特征在于,包括:
获取模块,用于获取数据对象类型,并利用JAVA反射机制获取所述数据对象的属性信息;
生成模块,用于根据所述数据对象的类型和属性信息,按照设定的规则生成用于进行插入测试或/和更新测试的测试用数据;
测试模块,用于利用生成的用于进行插入测试的数据执行插入测试,并当插入测试结果正确时,利用生成的用于进行更新测试的数据执行更新测试,并当更新测试结果正确时,进行删除测试,并当删除测试结果正确时返回测试正确响应。
10.如权利要求9所述的单元测试系统,其特征在于,
所述获取模块具体用于,获取所述数据对象的属性的数据类型;
所述生成模块具体用于,根据所述属性的数据类型,生成相应类型的属性值。
11.如权利要求10所述的单元测试系统,其特征在于,所述生成模块使用以下规则之一或任意组合生成用于进行插入测试的数据:
对于数据类型为字符串类型的属性,使用该属性的名称为所述进行插入测试的数据的相应属性字段赋值;
对于数据类型为数值类型的属性,根据随机数为所述进行插入测试的数据的相应属性字段赋值;
对于数据类型为日期类型的属性,使用系统当前时间为所述进行插入测试的数据的相应属性字段赋值;
对于数据类型为货币类型的属性,根据随机数为所述进行插入测试的数据的相应属性字段赋值,其中,币种类型为随机选择的币种类型。
12.如权利要求11所述的单元测试系统,其特征在于,所述生成模块具体用于,根据生成的所述用于进行插入测试的数据生成用于进行更新测试的数据;其中,所述用于进行更新测试的数据与所述用于进行插入测试的数据对应属性字段赋值不完全相同。
13.如权利要求9所述的单元测试系统,其特征在于,所述测试模块具体用于,在执行插入测试时,通过调用数据访问对象DAO层访问通过调用数据访问对象DAO层访问代码,在待测数据库表中插入所述用于进行插入测试的数据;根据返回的当前插入的数据的主键,在数据库表中查询所述主键对应的数据,并比较查询到的数据和所述用于进行插入测试的数据;若二者相同,则返回插入测试结果正确的响应;否则,返回插入测试结果异常的响应或/和查询测试结果异常的响应。
14.如权利要求13所述的单元测试系统,其特征在于,所述测试模块具体用于,在执行更新测试时,通过调用DAO层访问代码,对待测数据库表中插入的所述用于进行插入测试的数据进行更新操作;利用所述主键在更新后的数据库表中查询对应的数据,并比较查询到的数据和所述用于进行更新测试的数据;若二者相同,则返回更新测试结果正确的响应;否则,返回更新测试结果异常的响应或/和查询测试结果异常的响应。
15.如权利要求9所述的单元测试系统,其特征在于,所述生成模块具体用于,当插入测试结果正确时,根据所述用于进行插入测试的数据生成用于进行更新测试的数据。
CN201110106596.XA 2011-04-27 2011-04-27 测试用数据的生成方法、单元测试方法以及单元测试系统 Expired - Fee Related CN102760096B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201110106596.XA CN102760096B (zh) 2011-04-27 2011-04-27 测试用数据的生成方法、单元测试方法以及单元测试系统
HK12113366.5A HK1172705A1 (zh) 2011-04-27 2012-12-25 測試用數據的生成方法、單元測試方法以及單元測試系統

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110106596.XA CN102760096B (zh) 2011-04-27 2011-04-27 测试用数据的生成方法、单元测试方法以及单元测试系统

Publications (2)

Publication Number Publication Date
CN102760096A true CN102760096A (zh) 2012-10-31
CN102760096B CN102760096B (zh) 2016-03-30

Family

ID=47054560

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110106596.XA Expired - Fee Related CN102760096B (zh) 2011-04-27 2011-04-27 测试用数据的生成方法、单元测试方法以及单元测试系统

Country Status (2)

Country Link
CN (1) CN102760096B (zh)
HK (1) HK1172705A1 (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461560A (zh) * 2014-12-23 2015-03-25 北京京东尚科信息技术有限公司 一种信息类实例的转换方法
CN104461565A (zh) * 2014-12-25 2015-03-25 索尔思光电(成都)有限公司 一种光模块测试参数配置方法及系统
CN106250768A (zh) * 2016-07-21 2016-12-21 杭州安恒信息技术有限公司 一种数据库对象脚本安全漏洞的行为检测方法
CN106598853A (zh) * 2016-12-05 2017-04-26 广州唯品会信息科技有限公司 自动生成测试项目方法及系统
CN106708909A (zh) * 2015-11-18 2017-05-24 阿里巴巴集团控股有限公司 数据质量的检测方法和装置
CN108595342A (zh) * 2018-05-14 2018-09-28 杭州有赞科技有限公司 单元测试方法和装置
WO2018205545A1 (zh) * 2017-05-10 2018-11-15 平安科技(深圳)有限公司 数据生成方法、装置、终端及计算机可读存储介质
CN109240906A (zh) * 2018-07-24 2019-01-18 平安科技(深圳)有限公司 数据库配置信息适配方法、装置、计算机设备和存储介质
CN109815242A (zh) * 2019-02-02 2019-05-28 中国农业银行股份有限公司 一种数据处理方法及系统
CN112286783A (zh) * 2019-07-23 2021-01-29 北京中关村科金技术有限公司 生成数据库插入语句以及进行系统测试的方法、装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546576A (en) * 1995-02-17 1996-08-13 International Business Machines Corporation Query optimizer system that detects and prevents mutating table violations of database integrity in a query before execution plan generation
CN101046812A (zh) * 2006-06-12 2007-10-03 华为技术有限公司 一种数据库表记录构造与检查的方法及其装置
CN101118515A (zh) * 2007-09-11 2008-02-06 腾讯科技(深圳)有限公司 一种表单的自动测试方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546576A (en) * 1995-02-17 1996-08-13 International Business Machines Corporation Query optimizer system that detects and prevents mutating table violations of database integrity in a query before execution plan generation
CN101046812A (zh) * 2006-06-12 2007-10-03 华为技术有限公司 一种数据库表记录构造与检查的方法及其装置
CN101118515A (zh) * 2007-09-11 2008-02-06 腾讯科技(深圳)有限公司 一种表单的自动测试方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
綦建: "面向数据库的单元测试框架的设计与实现", 《中国优秀硕士学位论文全文数据库》, 15 December 2006 (2006-12-15) *

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461560A (zh) * 2014-12-23 2015-03-25 北京京东尚科信息技术有限公司 一种信息类实例的转换方法
CN104461560B (zh) * 2014-12-23 2018-06-15 北京京东尚科信息技术有限公司 一种信息类实例的转换方法
CN104461565B (zh) * 2014-12-25 2018-02-13 索尔思光电(成都)有限公司 一种光模块测试参数配置方法及系统
CN104461565A (zh) * 2014-12-25 2015-03-25 索尔思光电(成都)有限公司 一种光模块测试参数配置方法及系统
CN106708909B (zh) * 2015-11-18 2020-12-08 阿里巴巴集团控股有限公司 数据质量的检测方法和装置
CN106708909A (zh) * 2015-11-18 2017-05-24 阿里巴巴集团控股有限公司 数据质量的检测方法和装置
CN106250768B (zh) * 2016-07-21 2019-02-22 杭州安恒信息技术股份有限公司 一种数据库对象脚本安全漏洞的行为检测方法
CN106250768A (zh) * 2016-07-21 2016-12-21 杭州安恒信息技术有限公司 一种数据库对象脚本安全漏洞的行为检测方法
CN106598853A (zh) * 2016-12-05 2017-04-26 广州唯品会信息科技有限公司 自动生成测试项目方法及系统
WO2018205545A1 (zh) * 2017-05-10 2018-11-15 平安科技(深圳)有限公司 数据生成方法、装置、终端及计算机可读存储介质
CN108595342A (zh) * 2018-05-14 2018-09-28 杭州有赞科技有限公司 单元测试方法和装置
CN108595342B (zh) * 2018-05-14 2021-09-14 杭州有赞科技有限公司 单元测试方法和装置
CN109240906A (zh) * 2018-07-24 2019-01-18 平安科技(深圳)有限公司 数据库配置信息适配方法、装置、计算机设备和存储介质
CN109240906B (zh) * 2018-07-24 2021-08-06 平安科技(深圳)有限公司 数据库配置信息适配方法、装置、计算机设备和存储介质
CN109815242A (zh) * 2019-02-02 2019-05-28 中国农业银行股份有限公司 一种数据处理方法及系统
CN109815242B (zh) * 2019-02-02 2021-04-02 中国农业银行股份有限公司 一种数据处理方法及系统
CN112286783A (zh) * 2019-07-23 2021-01-29 北京中关村科金技术有限公司 生成数据库插入语句以及进行系统测试的方法、装置

Also Published As

Publication number Publication date
HK1172705A1 (zh) 2013-04-26
CN102760096B (zh) 2016-03-30

Similar Documents

Publication Publication Date Title
CN102760096B (zh) 测试用数据的生成方法、单元测试方法以及单元测试系统
CN110472068B (zh) 基于异构分布式知识图谱的大数据处理方法、设备及介质
US9594797B2 (en) Data quality assessment
CN109683953A (zh) 一种基于可视化界面进行配置文件处理的方法及装置
CN108984712A (zh) 基于业务场景的造数方法、设备及可读存储介质
CN105913316B (zh) 一种规则配置方法和装置
CN107357593A (zh) 源代码文件组建方法、装置、电子终端及可读存储介质
CN104331366A (zh) 一种测试用例设计效率提升方法及系统
CN107665171A (zh) 自动回归测试方法及装置
CN102236672A (zh) 一种数据导入方法及装置
CN109471857A (zh) 基于sql语句的数据修改方法、装置及存储介质
CN104133765B (zh) 网络活动的测试用例发送方法及测试用例服务器
CN104679500B (zh) 实体类自动生成实现方法及装置
CN110245145A (zh) 关系型数据库到Hadoop数据库的结构同步方法和装置
CN110022315A (zh) 一种块链式账本中的权重管理方法、装置及设备
CN103914290A (zh) 一种操作命令处理方法及装置
CN108491326A (zh) 测试行为重组方法、装置及存储介质
CN110309099A (zh) 接口管理方法、装置、设备及计算机可读存储介质
CN104615637A (zh) 数据交换方法及数据交换中间装置
CN112463634A (zh) 微服务架构下的软件测试方法及装置
CN111881042A (zh) 自动化测试脚本的生成方法、装置和电子设备
CN111159040A (zh) 一种测试数据生成方法、装置、设备及存储介质
CN103064780A (zh) 一种软件测试的方法及装置
CN112561690A (zh) 信用卡分期业务接口的测试方法、系统、设备及存储介质
CN107729047A (zh) 文档生成方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1172705

Country of ref document: HK

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160330

Termination date: 20200427