一种基于数据库的统计准确性的测试方法及测试系统转让专利

申请号 : CN201510653932.0

文献号 : CN105373472B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨晓灿

申请人 : 北京中创信测信息技术有限公司

摘要 :

本发明涉及数据库领域,公开了一种基于数据库的统计准确性的测试方法,包括以下步骤:S1、自动化测试模型自动识别测试需求;S2、根据测试需求生成测试用例;S3、将测试用例中的SQL转换为测试脚本;S4、运行所述测试脚本,并汇总统计指标的测试结果,本发明还公开了基于数据库的统计准确性的测试系统。本发明的基于数据库的统计准确性的测试方法节省人力成本和时间成本,提高测试效率、缩短测试周期,完全杜绝测试过程中人为错误的发生,提高测试可靠性。

权利要求 :

1.一种基于数据库的统计准确性的测试方法,其特征在于,包括以下步骤:S1、自动化测试模型自动识别测试需求;

S2、根据测试需求生成测试用例;

S3、将测试用例中的SQL转换为测试脚本;

S4、运行所述测试脚本,并汇总统计指标的测试结果;

所述步骤S1之前还包括根据数据库的统计指标的测试需求模板,定义出测试需求,所述测试需求包括测试对象及其属性参数,和统计表的查询对象、查询来源、查询条件,以及记录表的查询对象、查询来源和查询条件;所述自动化测试模型为能够识别所述测试需求的自动化程序系统。

2.如权利要求1所述的基于数据库的统计准确性的测试方法,其特征在于,所述步骤S2进一步包括按照SQL语法规则自动生成测试用例,并将生成的测试用例按规范格式存储,所述测试用例包括测试对象及其属性,以及查询统计表的SQL和查询记录表的SQL。

3.如权利要求1所述的基于数据库的统计准确性的测试方法,其特征在于,所述步骤S3进一步包括按照SQL语法规则将测试用例自动转换为测试脚本,所述测试脚本为SQL组成的shell脚本。

4.如权利要求1-3中任意一项所述的基于数据库的统计准确性的测试方法,其特征在于,所述步骤S4进一步包括自动生成测试日志,所述测试日志中包含测试对象及其属性,以及对应的统计表查询结果和记录表查询结果,所述自动化测试模型对比每个测试对象的统计表查询结果和记录表查询结果,形成统计指标的测试结果,并标识出有差异的测试结果。

5.一种基于数据库的统计准确性的测试系统,其特征在于,包括以下单元:识别单元,用于识别并定义测试需求;

实例单元,用于生成测试用例;

转换单元,用于将测试用例中的SQL转换为测试脚本;

汇总单元,用于运行所述测试脚本,并汇总统计指标的测试结果;

所述系统还包括建模单元,用于根据数据库的统计指标的测试需求模板,定义出测试需求,所述测试需求包括测试对象及其属性参数,和统计表的查询对象、查询来源、查询条件,以及记录表的查询对象、查询来源和查询条件,进而建立能够识别所述测试需求的自动化测试模型。

6.如权利要求5所述的基于数据库的统计准确性的测试系统,其特征在于,所述实例单元进一步用于按照SQL语法规则自动生成测试用例,并将生成的测试用例按规范格式存储,所述测试用例包括测试对象及其属性,以及查询统计表的SQL和查询记录表的SQL。

7.如权利要求5所述的基于数据库的统计准确性的测试系统,其特征在于,所述转换单元进一步用于按照SQL语法规则将测试用例自动转换为测试脚本,所述测试脚本为SQL组成的shell脚本。

8.如权利要求5-7中任意一项所述的基于数据库的统计准确性的测试系统,其特征在于,所述汇总单元进一步用于自动生成测试日志,所述测试日志中包含测试对象及其属性,以及对应的统计表查询结果和记录表查询结果,所述自动化测试模型对比每个测试对象的统计表查询结果和记录表查询结果,形成统计指标的测试结果,并标识出有差异的测试结果。

说明书 :

一种基于数据库的统计准确性的测试方法及测试系统

技术领域

[0001] 本发明涉及数据库领域,尤其涉及一种基于数据库的统计准确性的测试方法及测试系统。

背景技术

[0002] 基于数据库的统计准确性测试,通常是对统计表的数据进行汇总查询,并与记录表的数据按一定规则汇总查询的结果相比较,以判断其测试结果是否正确。统计表是根据产品定义的规则,将记录表数据按一定时间粒度及不同维度产生的,因此,统计准确性测试,是一种验证这些规则是否正确实现的测试方法。在测试之前,需要分析产品需求,手工编写各个统计指标查询目标数据(即统计表)的SQL和查询源数据(即记录表)的SQL,测试执行时,逐个执行SQL,并比较二者查询结果是否一致。
[0003] 在现有的测试方法中,基于数据库的海量数据的统计准确性测试往往采用手工编写SQL,手工执行查询的方式进行验证。由于统计分析功能较多,一个系统的统计指标一般有成千上百个,都需要人工分析需求,并且手工编写SQL和手工执行SQL查询,测试期间往往需要耗费大量人力和时间,并且,当需求发生变化时,SQL的维护量也相当惊人。
[0004] 因为手工执行SQL效率很低,所以比较常用的做法是将这些SQL写成测试脚本,采用执行测试脚本的方式进行查询,得到测试结果,这样,可以在一定程度上提高测试执行的效率。由于频繁的需求变化以及人工编写SQL容易出现错误等原因,测试脚本往往需要投入较多人力和时间进行维护,而最终的测试结果,也需要手工汇总分析,人工判断测试结果的准确性,最终导致测试效率仍然较低。

发明内容

[0005] 为克服现有技术的不足,本发明的目的是:提供一种基于数据库的统计准确性的测试方法,通过建立基于数据库的统计准确性的自动化测试模型,采用自动化程序识别测试需求,生成测试用例,将测试用例中的SQL转换为测试脚本,并且汇总统计指标测试结果,极大地降低了人力成本和时间成本,缩短了统计准确性的测试周期。
[0006] 为了解决背景技术中的技术问题,本发明提供了一种基于数据库的统计准确性的测试方法,包括以下步骤:
[0007] S1、自动化测试模型自动识别测试需求;
[0008] S2、根据测试需求生成测试用例;
[0009] S3、将测试用例中的SQL转换为测试脚本;
[0010] S4、运行所述测试脚本,并汇总统计指标的测试结果。
[0011] 具体地,所述步骤S1之前还包括根据数据库的统计指标的测试需求模板,定义出测试需求,所述测试需求包括测试对象及其属性参数,和统计表的查询对象、查询来源、查询条件,以及记录表的查询对象、查询来源和查询条件;所述自动化测试模型为能够识别所述测试需求的自动化程序系统。
[0012] 优选地,所述步骤S2进一步包括按照SQL语法规则自动生成测试用例,并将生成的测试用例按规范格式存储,所述测试用例包括测试对象及其属性,以及查询统计表的SQL和查询记录表的SQL。
[0013] 具体地,所述步骤S3进一步包括按照SQL语法规则将测试用例自动转换为测试脚本,所述测试脚本为SQL组成的shell脚本。
[0014] 具体地,所述步骤S4进一步包括自动生成测试日志,所述测试日志中包含测试对象及其属性,以及对应的统计表查询结果和记录表查询结果,所述自动化测试模型对比每个测试对象的统计表查询结果和记录表查询结果,形成统计指标的测试结果,并标识出有差异的测试结果。
[0015] 本发明还提供了一种基于数据库的统计准确性的测试系统,包括以下单元:
[0016] 识别单元,用于识别并定义测试需求;
[0017] 实例单元,用于生成测试用例;
[0018] 转换单元,用于将测试用例中的SQL转换为测试脚本;
[0019] 汇总单元,用于运行所述测试脚本,并汇总统计指标的测试结果。
[0020] 具体地,所述系统还包括建模单元,用于根据数据库的统计指标的测试需求模板,定义出测试需求,所述测试需求包括测试对象及其属性参数,和统计表的查询对象、查询来源、查询条件,以及记录表的查询对象、查询来源和查询条件,进而建立能够识别所述测试需求的自动化程序系统。
[0021] 优选地,所述实例单元进一步用于按照SQL语法规则自动生成测试用例,并将生成的测试用例按规范格式存储,所述测试用例包括测试对象及其属性,以及查询统计表的SQL和查询记录表的SQL。
[0022] 具体地,所述转换单元进一步用于按照SQL语法规则将测试用例自动转换为测试脚本,所述测试脚本为SQL组成的shell脚本。
[0023] 具体地,所述汇总单元进一步用于自动生成测试日志,所述测试日志中包含测试对象及其属性,以及对应的统计表查询结果和记录表查询结果,所述自动化测试模型对比每个测试对象的统计表查询结果和记录表查询结果,形成统计指标的测试结果,并标识出有差异的测试结果。
[0024] 采用上述技术方案,本发明的基于数据库的统计准确性的测试方法通过建立基于数据库的统计准确性的自动化测试模型,采用自动化程序识别测试需求,生成测试用例,将测试用例中的SQL转换为测试脚本,并且汇总统计指标测试结果,极大地降低了人力成本和时间成本,缩短了统计准确性的测试周期。

附图说明

[0025] 为了更清楚地说明本发明的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
[0026] 图1是本发明实施例提供的基于数据库的统计准确性的测试方法的流程图;
[0027] 图2是本发明实施例提供的生成测试用例的流程图;
[0028] 图3是本发明实施例提供的生成测试脚本的流程图;
[0029] 图4是本发明实施例提供的汇总测试结果的流程图;
[0030] 图5是本发明实施例提供的基于数据库的统计准确性的测试系统的框图。

具体实施方式

[0031] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0032] 实施例1:图1为本发明实施例提供的基于数据库的统计准确性的测试方法的流程图,从图中可以清楚地看出,本实施例提供的基于数据库的统计准确性的测试方法包括以下步骤:
[0033] S1、自动化测试模型自动识别测试需求;
[0034] S2、根据测试需求生成测试用例;
[0035] S3、将测试用例中的SQL转换为测试脚本;
[0036] S4、运行所述测试脚本,并汇总统计指标的测试结果。
[0037] 具体地,所述步骤S1之前还包括根据数据库的统计指标的测试需求模板,定义出测试需求,所述测试需求包括测试对象及其属性参数,和统计表的查询对象、查询来源、查询条件,以及记录表的查询对象、查询来源和查询条件;所述自动化测试模型为能够识别所述测试需求的自动化程序系统。
[0038] 图2是本发明实施例提供的生成测试用例的流程图,从图中可以看出,测试需求中定义的主要内容包含:测试对象(即统计指标)及其属性信息(如指标类型、指标中文含义等),统计表的查询对象、查询来源和查询条件,对应记录表的查询对象、查询来源和查询条件;若统计表的数据来源于多个记录表,则包含多组记录表的查询对象、查询来源和查询条件。根据测试需求的定义,程序可以自动识别应根据何种规则模式形成SQL实例。测试对象及其属性信息、查询统计表的SQL和查询记录表的SQL是构成测试用例的主要内容,生成测试用例的后续活动需要生成测试脚本,因此,测试用例也应按约定的规范格式存储,使得生成测试脚本的程序可以自动识别所需信息。综上,所述步骤S2进一步包括按照SQL语法规则自动生成测试用例,并将生成的测试用例按规范格式存储,所述测试用例包括测试对象及其属性,以及查询统计表的SQL和查询记录表的SQL。
[0039] 图3是本发明实施例提供的生成测试脚本的流程图,所述步骤S3进一步包括按照SQL语法规则将测试用例自动转换为测试脚本,所述测试脚本为SQL组成的shell脚本。
[0040] 图4是本发明实施例提供的汇总测试结果的流程图,所述步骤S4进一步包括自动生成测试日志,所述测试日志中包含测试对象及其属性,以及对应的统计表查询结果和记录表查询结果,所述自动化测试模型对比每个测试对象的统计表查询结果和记录表查询结果,形成统计指标的测试结果,并标识出有差异的测试结果。
[0041] 统计准确性自动化测试由一系列相互依赖的测试活动组成,从分析产品需求开始,直至最终输出测试结果。每个测试活动都会输出该活动的测试文档或文件,作为下一个活动的输入。
[0042] 为使程序能够自动化完成测试过程,每一活动的输入必须具有统一的规范格式,使程序可以按照既定的规则获取信息并执行命令,为达到这一目标而设计的统计准确性测试需求模板、测试用例模板、测试脚本模板正是统计准确性自动化测试模型的产物。
[0043] 本发明实现的原理是:根据产品需求编写统计指标的查询SQL,形成测试用例,将测试用例中的SQL转换为测试脚本,执行测试脚本后,生成查询的测试日志,然后从测试日志中获取测试结果并汇总比较。
[0044] 本发明的关键技术在于查询SQL模式解析,统计表的数据是根据产品定义的规则,将记录表数据按一定时间粒度及不同维度产生的。因此,统计表的数据和满足定义的规则的记录表数据应满足“总量相等”原则。基于这个原则,对于任意统计指标,从统计表中查询的结果和从记录表中查询满足定义的规则的结果应该相等。统计准确性测试,就是分别从统计表和记录表查询满足定义的规则的数据,并比较二者查询结果的一致性。而查询方法就是分别编写及执行查询统计表的SQL和查询记录表的SQL。
[0045] 统计准确性测试的查询SQL,包含查询对象、查询来源和查询条件的描述。这些描述都遵循固定的SQL语法规则,对这些规则做概括提炼,形成一些固定的模式,这些模式包含查询对象、查询来源和查询条件的不同组合。对于不同的统计指标,这些信息是动态变化的。在查询SQL实例形成时,选择某些规则模式,就选择了这些模式所暗含的模式语义,即SQL语法规则。在测试需求中定义这些模式所包含的动态参数,即:查询对象、查询来源和查询条件,自动化程序就可以获取具体的参数信息,并识别对应的规则模式,形成查询SQL实例。例如,由哪些测试需求的信息生成查询统计表的SQL,由哪些信息生成查询记录表的SQL,SQL中是否存在查询条件,统计表的数据是由一个记录表还是多个记录表的数据构成等等,就分别适用于不同的规则模式,这是形成SQL实例的基础。
[0046] 每一个统计指标都需要形成两个SQL实例,即一个是查询统计表的SQL,另一个是查询记录表的SQL。
[0047] 每个单元化的模式实例都有模式输入参数,也有模式的输出参数。对于查询统计表的SQL,输入参数包括统计表的指标算法、统计表、统计表的查询条件。对于查询记录表的SQL,输入参数包括记录表的指标算法、记录表和记录表的查询条件。二者的输出参数就是根据对应的规则模式生成的SQL实例。
[0048] 综上所述,模式分析的过程,就是解释形成SQL实例的逻辑过程。
[0049] 正是由于对这些生成SQL实例的规则模式化之后所带来的语义规约,使得只需要在测试需求中定义SQL中的动态变化的参数,就可以按照对应的规则模式生成SQL实例,从而做到具有相同规则模式的SQL实例逻辑统一。测试需求模板就是在定义这些动态变化参数的输入格式基础上形成的。
[0050] 本发明采用VBA开发,只要安装了Excel 2007及以上版本软件的计算机,即可运行统计准确性的自动化程序,无需任何其他开发工具及运行环境。基于数据库的统计准确性自动化程序生成的SQL遵循标准的SQL语法规则,其SQL中动态变化的参数部分在测试需求中定义,而测试需求由人工分析并定义,因此生成的SQL与数据库类型无关,可适用于多种数据库。
[0051] 本发明提供的基于数据库的统计准确性自动化测试方法并不针对特定的业务功能,而是从通用的角度,用通用的测试方法和固定的逻辑覆盖去满足各种特定业务的统计准确性测试需求。这些需求是来自信令监测系统,是从监测系统的统计查询需求中提炼出来的,所以能覆盖监测系统已有的统计查询需求。
[0052] 实施例2:图5是本发明实施例提供的基于数据库的统计准确性的测试系统的框图,从图中可以看出,基于数据库的统计准确性的测试系统,包括以下单元:
[0053] 识别单元,用于识别并定义测试需求;
[0054] 实例单元,用于生成测试用例;
[0055] 转换单元,用于将测试用例中的SQL转换为测试脚本;
[0056] 汇总单元,用于运行所述测试脚本,并汇总统计指标的测试结果。
[0057] 具体地,所述系统还包括建模单元,用于根据数据库的统计指标的测试需求模板,定义出测试需求,所述测试需求包括测试对象及其属性参数,和统计表的查询对象、查询来源、查询条件,以及记录表的查询对象、查询来源和查询条件,进而建立能够识别所述测试需求的自动化测试模型。
[0058] 优选地,所述实例单元进一步用于按照SQL语法规则自动生成测试用例,并将生成的测试用例按规范格式存储,所述测试用例包括测试对象及其属性,以及查询统计表的SQL和查询记录表的SQL。
[0059] 具体地,所述转换单元进一步用于按照SQL语法规则将测试用例自动转换为测试脚本,所述测试脚本为SQL组成的shell脚本。
[0060] 具体地,所述汇总单元进一步用于自动生成测试日志,所述测试日志中包含测试对象及其属性,以及对应的统计表查询结果和记录表查询结果,所述自动化测试模型对比每个测试对象的统计表查询结果和记录表查询结果,形成统计指标的测试结果,并标识出有差异的测试结果。
[0061] 本发明的基于数据库的统计准确性的测试方法通过建立基于数据库的统计准确性的自动化测试模型,采用自动化程序识别测试需求,生成测试用例,将测试用例中的SQL转换为测试脚本,并且汇总统计指标测试结果,极大地降低了人力成本和时间成本,缩短了统计准确性的测试周期。
[0062] 以上所揭露的仅为本发明的几种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。