CN109271326A - 云数据库的测试方法及其装置、设备和存储介质 - Google Patents
云数据库的测试方法及其装置、设备和存储介质 Download PDFInfo
- Publication number
- CN109271326A CN109271326A CN201811433892.9A CN201811433892A CN109271326A CN 109271326 A CN109271326 A CN 109271326A CN 201811433892 A CN201811433892 A CN 201811433892A CN 109271326 A CN109271326 A CN 109271326A
- Authority
- CN
- China
- Prior art keywords
- test
- cloud database
- template
- structured query
- table structure
- 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/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/3692—Test management for test results analysis
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据库领域,公开了一种云数据库的测试方法及其装置、设备和存储介质。本发明中的云数据库的测试方法包括以下步骤:获取标准云数据库的测试表结构和对应所述测试表结构的结构化查询语句模板;基于获取到的所述测试表结构和结构化查询语句模板生成测试用例;向所述待测试云数据库和标准云数据库同时发送所述测试用例;根据所述待测试云数据库和标准云数据库基于所述测试用例返回的结果确定测试结果。本发明基于云数据库天然的用户数据和业务托管环境,抓取用户程序发往云数据库的SQL语句并生成相应的模板,基于模板自动生成测试用例,实现了对各种待测试云数据库的自动化测试,减少测试人力成本。
Description
技术领域
本发明涉及数据库领域,特别涉及一种云数据库的测试方法及其装置、设备和存储介质。
背景技术
现阶段,公有云正在蓬勃发展,公有云厂商纷纷推出云数据库产品和服务。相比传统数据库软件或服务,公有云云数据库能够跟公有云环境以及底层基础设施更深度和有机结合,利用公有云与生俱来的弹性、容灾、跨地域部署等能力,提供相比传统数据库软件更大的用户价值。对于一些新开发的云数据库,性能和功能的稳定性不确定,需要对其进行软件测试,目前的测试方法依然采用传统数据库软件测试方法,既手工编写测试用例的方法。既:
1.测试人员根据开发软件提供的SQL(Structured Query Language,结构化查询语言)规则说明手工编写测试用例(一个测试用例包括SQL语句以及该SQL语句的预期输出结果,一个规则说明对应的测试用例往往达数百个甚至上千个之多);
2.通过测试工具加载这些测试用例到数据库运行,并将数据库的返回结果和预期输出结果进行对比,如果返回结果符合预期则测试通过,否则视为存在bug并提交开发人员修复。
以上传统的数据库软件测试方法,主要存在两个问题:
1.手工编写测试用例,需要极大的人力成本,维护一个庞大的测试团队。以数据库行业龙头Oracle(甲骨文,公司名称)为例,Oracle维护了一个数千人的测试团队,测试人员和开发人员的比例是2:1,既1个开发要配备两个测试人员。而在业内其他公司,数据库软件的测试人员和开发人员的配置也都在1:1左右,既1个开发配置1个测试。
2.手工编写测试用例,测试用例的覆盖面、有效性依赖于测试人员的经验,有经验的测试人员和缺少经验的测试人员,编写出的测试用例的测试效果很很大差别。而测试人员大部分缺少数据库软件的用户(开发者)的SQL编写经验,不了解数据库软件用户要用SQL解决的问题,因此好的测试人员非常稀少,要培养一个测试人员需要高额成本。而数据厂商在测试上的投入,往往无法有效转化为数据库产品品质的提升。
发明内容
本发明的目的在于提供一种云数据库的测试方法及其装置、设备和存储介质,可实现对云数据库的自动化测试,极大地减少人力测试成本。
为解决上述技术问题,本发明的实施方式公开了一种云数据库的测试方法,包括:
获取标准云数据库的测试表结构和对应所述测试表结构的结构化查询语句模板;
基于获取到的所述测试表结构和结构化查询语句模板生成测试用例,其中,所述测试用例包括对应所述测试表结构的测试用表数据和对应所述结构化查询语句模板的测试用结构化查询语句;
向所述待测试云数据库和标准云数据库同时发送所述测试用例;
根据所述待测试云数据库和标准云数据库基于所述测试用例返回的结果确定测试结果;
其中,所述结构化查询语句模板是基于用户发往所述标准云数据库的多个结构化查询语句得到的。
在一示范例中,获取标准云数据库的测试表结构和对应所述测试表结构的结构化查询语句模板包括:
获取用户发往所述标准云数据库的多个结构化查询语句;
对获取的所述多个结构化查询语句进行脱敏处理得到所述结构化查询语句模板。
在另一示范例中,获取标准云数据库的测试表结构和对应所述测试表结构的结构化查询语句模板还包括:
获取所述标准云数据库的真实表结构;
对所述真实表结构进行脱敏处理以隐去用户数据,得到所述测试表结构。
在另一示范例中,基于获取到的所述测试表结构和结构化查询语句模板生成测试用例包括:
基于所述测试表结构中的字段类型生成测试用表数据,并根据所述结构化查询语句模板生成测试用结构化查询语句。
在另一示范例中,所述结构化查询语句模板的类型包括插入模板、更新模板、删除模板和选择模板;并且
基于获取到的所述测试表结构和结构化查询语句模板生成测试用例包括:
根据所述结构化查询语句模板所属的类型,生成所述测试用例中的测试用结构化查询语句。
在另一示范例中,根据所述待测试云数据库和标准云数据库基于所述测试用例返回的结果确定测试结果包括:
如果所述待测试云数据库和标准云数据库返回的结果相同,则表示所述待测试云数据库中与所述结构化查询语句模板对应的功能是正常的;如果所述待测试云数据库和标准云数据库返回的结果不同,则表示所述待测试云数据库中与所述结构化查询语句模板对应的功能存在异常。
本发明的实施方式还公开了一种云数据库的测试装置,该装置包括:
获取单元,用于获取标准云数据库的测试表结构和对应所述测试表结构的结构化查询语句模板;
生成单元,用于基于获取到的所述测试表结构和结构化查询语句模板生成测试用例,其中,所述测试用例包括对应所述测试表结构的测试用表数据和对应所述结构化查询语句模板的测试用结构化查询语句;
发送单元,用于向所述待测试云数据库和标准云数据库同时发送所述测试用例;
确定单元,用于根据所述待测试云数据库和标准云数据库基于所述测试用例返回的结果确定测试结果;
其中,所述结构化查询语句模板是基于用户发往所述标准云数据库的多个结构化查询语句得到的。
在一示范例中,所述获取单元通过以下方式实现:
获取用户发往所述标准云数据库的多个结构化查询语句,对获取的所述多个结构化查询语句进行脱敏处理得到所述结构化查询语句模板;
获取所述标准云数据库的真实表结构,对所述真实表结构进行脱敏处理以隐去用户数据,得到所述测试表结构。
在另一示范例中,所述结构化查询语句模板的类型包括插入模板、更新模板、删除模板和选择模板;并且
所述生成单元包括:
根据所述结构化查询语句模板所属的类型,生成所述测试用例中的测试用结构化查询语句。
在另一示范例中,所述确定单元通过以下方式实现:
如果所述待测试云数据库和标准云数据库返回的结果相同,则表示所述待测试云数据库中与所述结构化查询语句模板对应的功能是正常的;如果所述待测试云数据库和标准云数据库返回的结果不同,则表示所述待测试云数据库中与所述结构化查询语句模板对应的功能存在异常。
本发明的实施方式还公开了一种设备,包括存储有计算机可执行指令的存储器和处理器,所述处理器被配置为执行上述实施方式公开的云数据库的测试方法。
本发明的实施方式还公开了一种使用计算机程序编码的非易失性计算机存储介质,其中,所述计算机程序包括指令,当所述指令被一个以上的计算机执行时,所述指令使得所述一个以上的计算机执行上述实施方式公开的云数据库的测试方法。
本发明实施方式与现有技术相比,主要区别及其效果在于:
本发明通过自动抓取用户发往标准云数据库SQL语句生成相应的模板,自动产生测试用例,实现了对云数据库的自动化测试,极大地降低了测试人力成本,并基于用户发往标准云数据库的真实使用数据生成测试用例,确保数据库测试的稳定性和正确性。
进一步地,在生成结构化查询语句模板和测试表结构时进行脱敏处理,在测试时生成测试用例,保证测试所用的数据是后续生成的模拟数据,而非用户的真实数据,有效保护用户数据的安全性和隐私性。
附图说明
图1是根据本发明第一实施方式的云数据库的测试方法的流程示意图;
图2是根据本发明第二实施方式的云数据库的测试装置的结构示意图。
具体实施方式
在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
可以理解,在本发明中,获取用户的SQL语句后,只是用软件进行分析,真实数据不会对除用户外的第三方暴露,从而保证用户数据的安全性和隐私性。
此外,可以理解,本发明的技术方案适用于各种要进行测试的云数据库,特别地,对于新研发出的云数据库,其性能和功能的稳定性不确定,需要依靠标准云数据库对其进行测试,其中,标准云数据库可以是基于现有的成熟的商用数据库生成的性能和功能相对都比较稳定的云数据库。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
本发明第一实施方式涉及一种云数据库的测试方法。图1是该云数据库的测试方法的流程示意图。
具体地,如图1所示,该云数据库的测试方法包括以下步骤:
步骤101,获取标准云数据库的测试表结构和对应测试表结构的结构化查询语句模板。其中,结构化查询语句模板是基于用户发往标准云数据库的多个结构化查询语句得到的。优选地,对于新开发出的待测试云数据库,由于标准云数据库性能和功能相对更稳定,可以基于用户发往标准云数据库的多个结构化查询语句得到结构化查询语句模板。
可以理解,此处的测试表结构可以是数据库的真实表结构,例如,包括表名称、字段和表数据,其中,字段包括字段名、字段类型和字段宽度。也可以是将真实表结构进行脱敏处理后的测试表结构,例如,在一示范例中,该步骤包括:
获取标准云数据库的真实表结构;对真实表结构进行脱敏处理以隐去用户数据,得到测试表结构。例如,在获取真实表结构时,不获取其中的表数据,并将表名称、字段名进行脱敏处理隐去真实信息,仅保留字段类型和字段宽度。下面示出一个采用MD5消息摘要算法(MD5Message-Digest Algorithm)对真实表结构进行脱敏处理的示例:
假如抓取到的T表的建表语句是:
create table t_student(
id int,
name varchar(128),
score int
);
则脱敏后为:
其中:
t_fa41c351b27d8dd930debdc1d9696245对应t_student。
fa41c351b27d8dd930debdc1d9696245为student的md5值;
f_49f96038f20aa062772267b640a18d79字段对应id字段,49f96038f20aa062772267b640a18d79为id字段的md5值;
f_18697449d7c48cf32cdd4f14857e68ee为name的md5值;
f_a313445e787b0f1050b53b4570847720为name的md5值。
同样,在该步骤中,优选地,对获取到的用户发往标准云数据库的结构化查询语句也进行脱敏处理得到结构化查询语句模板,以将用户的结构化查询语句中的真实数据隐去,只保留结构化查询语句的结构信息,得到结构化查询语句的模板。例如,将用户发送的结构化查询语句中数据库名称、表名称和字段名隐去,保留字段类型和字段宽度。在一示范例中,该步骤包括:
获取用户发往标准云数据库的多个结构化查询语句;对获取的多个结构化查询语句进行脱敏处理得到结构化查询语句模板。其中,可以采用爬虫技术获取用户发往标准云数据库的多个结构化查询语句。例如,抓取到的一条SQL语句是:select id,name from twhere id=123;则脱敏后得到的SQL模板就是:select f_49f96038f20aa062772267b640a18d79,f_18697449d7c48cf32cdd4f14857e68ee from t_fa41c351b27d8dd930debdc1d9696245where f_18697449d7c48cf32cdd4f14857e68ee=?。
如此,在生成结构化查询语句模板和测试表结构时进行脱敏处理,在测试时生成测试用例,保证测试所用的数据是后续生成的模拟数据,而非用户的真实数据,有效保护用户数据的安全性和隐私性。
此后进入步骤102。
在步骤102中,基于获取到的测试表结构和结构化查询语句模板生成测试用例,其中,测试用例包括对应测试表结构的测试用表数据和对应结构化查询语句模板的测试用结构化查询语句(测试用SQL语句)。测试用表数据是指基于测试表结构生成的模拟真实表数据的表数据,在将真实表结构进行脱敏处理后,可以基于测试表结构中的表字段类型,模拟生成测试用表数据,并且一般采用SQL语句中的插入语句将其插入表中,而测试用SQL语句是指在SQL语句模板中填充缺失的字段数据后得到的SQL语句。
例如,抓取到的SQL模板是:
select f_49f96038f20aa062772267b640a18d79,f_18697449d7c48cf32cdd4f14857e68ee from t_fa41c351b27d8dd930debdc1d9696245where f_18697449d7c48cf32cdd4f14857e68ee=?
则可以将该select语句(选择语句)填充为:
select f_49f96038f20aa062772267b640a18d79,f_18697449d7c48cf32cdd4f14857e68ee from t_fa41c351b27d8dd930debdc1d9696245where f_18697449d7c48cf32cdd4f14857e68ee=1,并根据这条SQL语句的语义和t表的结构(假如t表有三个字段:id,name,score),自动补充一条insert语句(插入语句):insert into t_fa41c351b27d8dd930debdc1d9696245values(1,‘robert’,88);这一条insert语句(包含测试用表数据)和一条select语句,构成一个测试用例。
此后进入步骤103。
在步骤103中,向待测试云数据库和标准云数据库同时发送测试用例。例如,将上述例子中的insert语句和select语句同时发送到待测试云数据库和标准云数据库。
可以理解,在本发明各实施方式中,标准云数据库是指基于现有的成熟的数据库生成的云数据库,例如传统的开源或者商业数据库,这些数据库与本发明所提到的待测试云数据库的SQL接口保持一致,即在两种数据库中使用的SQL语句具有相通性,或者说本发明所提到的待测试云数据库兼容标准云数据库的功能。
此后进入步骤104。
在步骤104中,根据待测试云数据库和标准云数据库基于测试用例返回的结果确定测试结果。例如,在将上述例子中的insert语句和select语句同时发送到待测试云数据库和标准云数据库后,如果待测试云数据库和标准云数据库返回的结果相同,则表示待测试云数据库中与结构化查询语句模板对应的功能是正常的;如果待测试云数据库和标准云数据库返回的结果不同,则表示待测试云数据库中与结构化查询语句模板对应的功能存在异常。
此后结束本流程。
此外,可以理解,在一示范例中,优选地,对SQL语句模板进行分类,并基于分类后的SQL模板生成测试用例。例如,SQL模板的类型可以大致分为插入模板、更新模板、删除模板和选择模板,则在上述步骤102中,根据结构化查询语句模板所属的类型,生成测试用例中的测试用结构化查询语句。具体地,
1)如果SQL语句模板是插入模板(或者包括替换功能),则找到SQL语句对应的测试表结构,根据测试表结构中的字段类型,自动生成表数据填充到该模板,最终生成insert语句,并基于该insert语句生成一条select语句,insert语句和select语句构成一组测试用例。如此,insert语句将表数据插入表中以后,select语句对其进行选择,以获取insert语句在标准云数据库和待测试云数据库中插入的表数据,然后将获取的结果进行对比,得到测试结果。
2)如果SQL语句模板是更新模板(update模板),则找到SQL语句模板对应的测试表结构,根据测试表结构中的字段类型,先自动生成一条包含测试用表数据的insert语句,再根据update模板的结构,自动补充字段数据生成update语句,同时,为了验证更新结果,需要根据选择模板生成一条select语句,最终生成三条语句,一条insert语句,一条update语句,一条select语句,构成一组测试用例。如此,insert语句将表数据插入表中以后,update语句将该表数据进行更新,select语句对更新后的表数据进行选择,以获取update语句在标准云数据库和待测试云数据库中更新后的表数据,然后将获取的结果进行对比,得到测试结果。
3)假如SQL模板是删除模板(delete模板),则其生成SQL测试用例的方法和更新模板一致。
4)假如SQL模板是选择模板(select模板),则根据测试表结构中的字段类型,先生成一条或者若干条包含测试用表数据的insert语句(视SQL模板的内容而定,比如SQL模板中存在order by,group by等语句,则需要生成多条insert),然后再根据字段类型和select模板,生成一条SQL语句,最终生成一条或者若干条insert语句+一条select语句,构成一组测试用例。
此外,如果SQL模板是其他语句,比如数据定义语句或存储过程等,则不做处理(比如数据定义语句),或者人工介入处理(比如存储过程)。
本发明通过自动抓取用户发往标准云数据库SQL语句生成相应的模板,,自动产生测试用例,实现对待测试云数据库的自动化测试,极大地降低了测试人力成本,并基于用户发往标准云数据库的真实使用数据生成测试用例,确保了待测试云数据库测试的稳定性和正确性。
本发明的各方法实施方式均可以以软件、硬件、固件等方式实现。不管本发明是以软件、硬件、还是固件方式实现,指令代码都可以存储在任何类型的计算机可访问的存储器中(例如永久的或者可修改的,易失性的或者非易失性的,固态的或者非固态的,固定的或者可更换的介质等等)。同样,存储器可以例如是可编程阵列逻辑(Programmable ArrayLogic,简称“PAL”)、随机存取存储器(Random Access Memory,简称“RAM”)、可编程只读存储器(Programmable Read Only Memory,简称“PROM”)、只读存储器(Read-Only Memory,简称“ROM”)、电可擦除可编程只读存储器(Electrically Erasable Programmable ROM,简称“EEPROM”)、磁盘、光盘、数字通用光盘(Digital Versatile Disc,简称“DVD”)等等。
本发明第二实施方式涉及一种云数据库的测试装置。图2是该云数据库的测试装置的结构示意图。
具体地,如图2所示,该云数据库的测试装置包括:
获取单元,用于获取标准云数据库的测试表结构和对应测试表结构的结构化查询语句模板;
生成单元,用于基于获取到的测试表结构和结构化查询语句模板生成测试用例,其中,测试用例包括对应测试表结构的测试用表数据和对应结构化查询语句模板的测试用结构化查询语句;
发送单元,用于向待测试云数据库和标准云数据库同时发送测试用例;
确定单元,用于根据待测试云数据库和标准云数据库基于测试用例返回的结果确定测试结果;
其中,结构化查询语句模板是基于用户发往标准云数据库的多个结构化查询语句得到的。
优选地,确定单元通过以下方式实现:
如果待测试云数据库和标准云数据库返回的结果相同,则表示待测试云数据库中与结构化查询语句模板对应的功能是正常的;如果待测试云数据库和标准云数据库返回的结果不同,则表示待测试云数据库中与结构化查询语句模板对应的功能存在异常。
此外,优选地,在一示范例中,获取单元通过以下方式实现:
获取用户发往标准云数据库的多个结构化查询语句,对获取的多个结构化查询语句进行脱敏处理得到结构化查询语句模板;
获取标准云数据库的真实表结构,对真实表结构进行脱敏处理以隐去用户数据,得到测试表结构。
此外,优选地,在另一示范例中,结构化查询语句模板的类型包括插入模板、更新模板、删除模板和选择模板;并且生成单元包括:
根据结构化查询语句模板所属的类型,生成测试用例中的测试用结构化查询语句。
第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
本发明的第三实施方式涉及一种设备,该设备包括存储有计算机可执行指令的存储器和处理器,处理器被配置为执行上述实施方式公开的云数据库的测试方法。
本发明的第四实施方式涉及一种使用计算机程序编码的非易失性计算机存储介质,其中,计算机程序包括指令,当指令被一个以上的计算机执行时,指令使得一个以上的计算机执行上述实施方式公开的云数据库的测试方法。
本发明的第五实施方式涉及一种云数据库的测试方法,该测试方法包含以下几个步骤:
1.1通过系统管理账号(该账号一般用来做备份、运维等系统管理操作),登陆用户的数据库实例(包括待测试云数据库和标准云数据库),抓取该实例中的标准云数据库的测试表结构,但不抓取具体数据;同时,对抓取到的真实表结构做脱敏处理得到测试表结构,假如抓取到的T表的建表语句是:
create table t_student(
id int,
name varchar(128),
score int
);
则脱敏后为:
其中:
t_fa41c351b27d8dd930debdc1d9696245表对应t_student,fa41c351b27d8dd930debdc1d9696245为student的md5值;
f_49f96038f20aa062772267b640a18d79字段对应id字段,49f96038f20aa062772267b640a18d79为id字段的md5;
f_18697449d7c48cf32cdd4f14857e68ee为name的md5值;
f_a313445e787b0f1050b53b4570847720为name的md5值。
1.2通过爬虫技术,定期抓取用户业务发往用户数据库实例的标准云数据库的SQL语句,抓取之后做脱敏处理,最终只记录SQL语句的格式(称之为SQL模板),但不记录SQL语句的具体数据。比如,抓取到的一条sql是:select id,name from t where id=123;则脱敏后得到的SQL模板就是:select f_49f96038f20aa062772267b640a18d79,f_18697449d7c48cf32cdd4f14857e68ee from t_fa41c351b27d8dd930debdc1d9696245where f_18697449d7c48cf32cdd4f14857e68ee=?。
1.3将1.1,1.2步中的测试表结构和SQL模板,记录到待测试数据库中,供后续生成测试用例使用。说明:
抓取到的SQL模板,是整个测试方法的核心数据,具有极大的测试价值且风险低。理由是:
a.待测试云数据库最常见的使用方式,是用来替代传统的开源或商业数据库,且待测试云数据库保持和传统数据库一致,业务无需改造即可切换到待测试云数据库。在这个前提下,通过抓取用户业务发往传统数据库的SQL语句,提前让待测试云数据库跑通这些SQL语句,理论上就可以保证用户业务切换到待测试云数据库后,数据库运行的正确性和稳定性。而随着用户的SQL语句积累越多,在待测试云数据库上跑通得越多,待测试云数据库就越发健壮,产品品质日益提升;
b.爬虫技术抓取到用户业务的SQL语句后,将通过脱敏的方法取出SQL语句中真实的数据,而只得到SQL模板。SQL模板只包含这个SQL语句的结构,但不包含任何真实数据,因此用户数据安全性和隐私性是有保证的。既:通过程序抓取用户SQL语句,但抓取后的SQL语句只是用软件去做分析,判断SQL的结构是否存在问题,而真实数据不对除用户自己外的任何第三方暴露。
1.4对于抓取到的每一个SQL模板,基于用户的测试表结构,将该SQL模板,填充为SQL语句(补上缺失的字段数据),并自动补上能够让这条SQL语句发挥作用的insert语句,最终构成一组SQL语句。而这组SQL语句就构成了一个完整的测试用例,可用于对待测试云数据库进行测试。
比如,抓取到的SQL模板是:
select f_49f96038f20aa062772267b640a18d79,f_18697449d7c48cf32cdd4f14857e68ee from t_fa41c351b27d8dd930debdc1d9696245where f_18697449d7c48cf32cdd4f14857e68ee=?
则可以将该select语句填充为:
select f_49f96038f20aa062772267b640a18d79,f_18697449d7c48cf32cdd4f14857e68ee from t_fa41c351b27d8dd930debdc1d9696245where f_18697449d7c48cf32cdd4f14857e68ee=1。
并根据这条SQL语句的语义和t表的结构(假如t表有三个字段:id,name,score),自动补充一条insert语句:insert into t_fa41c351b27d8dd930debdc1d9696245values(1,‘robert’,88);这一条insert语句和一条select语句,成一个测试用例,可用来对待测试云数据库做测试。
1.5将每一组测试用例发送到两种数据库:
a.待测试云数据库实例,该实例运行了待测试云数据库软件
b.开源或商业数据库(即标准云数据库)实例,该实例运行了开源或商业数据库软件,且提供的SQL接口和SQL接口返回的语句,和待测试云数据库实例完全一样。
将开源或商业数据库实例生成的结果,用来和待测试云数据库的结果做对比。如果待测试云数据库实例返回的结果,和该开源或商业数据库实例一致,则认为待测试云数据库处理这组SQL用例是正确的,否则就是存在问题。
此外,生成测试用例的方式可以参考第一实施方式,在此不再赘述。
可以理解,本发明针对待测试云数据库自身的两个特点:a.SQL接口和SQL的返回预期结果,与传统的开源或商业数据库软件一致;b.大部分用户在使用待测试云数据库之前,其业务已经在公有云为用户部署的,基于开源或商业数据库软件的数据库实例上运行,创造性地提出了一种自动化测试方法和自动化测试装置,该装置利用公有云上用户数据实例已有的测试表结构和SQL语句模板,来自动化生成测试用例;利用待测试云数据库和传统开源或商业数据库软件SQL接口和返回结果一致的特点,先把自动生成的测试用例发往传统数据库软件获取返回结果,然后以此结果为预期结果去检测待测试云数据库处理自动生成的测试SQL的正确性。
通过这种方法实现了公有云上云数据库的测试自动化,相对于传统的,由测试人员手工编写测试用例的方法,极大地减少了测试成本,测试团队可以由传统数据库厂商的几千个到几十个人员规模,降低到1-2人规模(设置1-2的自动化测试系统研发团队,维护该自动化系统即可)。
同时,本发明考虑了用户数据的安全性和隐私性,创造性地提出了不爬取用户数据库真实数据,和SQL的真实数据,而是只爬取用户数据库表的结构信息和业务SQL的结构信息(既SQL模板,同时为了隐藏用户数据库名、表名和字段名指代的含义,采用如md5算法对用户的数据库名、表名和字段名做了脱敏处理),最后自动化生测试用户的软件装置来推导出测试用例,这种方法做到了:
1.无法通过测试用例推测用户数据库表的存储内容和各字段含义;
2.测试用例中的值都采用程序生成而来,不包含任何真实数据。
所以,可以有效保护用户数据的安全性和隐私性。
需要说明的是,本发明各设备实施方式中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本发明所提出的技术问题的关键。此外,为了突出本发明的创新部分,本发明上述各设备实施方式并没有将与解决本发明所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施方式并不存在其它的单元/模块。
需要说明的是,在本专利的权利要求和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (12)
1.一种云数据库的测试方法,其特征在于,包括:
获取标准云数据库的测试表结构和对应所述测试表结构的结构化查询语句模板;
基于获取到的所述测试表结构和结构化查询语句模板生成测试用例,其中,所述测试用例包括对应所述测试表结构的测试用表数据和对应所述结构化查询语句模板的测试用结构化查询语句;
向所述待测试云数据库和标准云数据库同时发送所述测试用例;
根据所述待测试云数据库和标准云数据库基于所述测试用例返回的结果确定测试结果;
其中,所述结构化查询语句模板是基于用户发往所述标准云数据库的多个结构化查询语句得到的。
2.根据权利要求1所述的测试方法,其特征在于,获取标准云数据库的测试表结构和对应所述测试表结构的结构化查询语句模板包括:
获取用户发往所述标准云数据库的多个结构化查询语句;
对获取的所述多个结构化查询语句进行脱敏处理得到所述结构化查询语句模板。
3.根据权利要求2所述的测试方法,其特征在于,获取标准云数据库的测试表结构和对应所述测试表结构的结构化查询语句模板还包括:
获取所述标准云数据库的真实表结构;
对所述真实表结构进行脱敏处理以隐去用户数据,得到所述测试表结构。
4.根据权利要求1至3中任一项所述的测试方法,其特征在于,基于获取到的所述测试表结构和结构化查询语句模板生成测试用例包括:
基于所述测试表结构中的字段类型生成测试用表数据,并根据所述结构化查询语句模板生成测试用结构化查询语句。
5.根据权利要求4所述的测试方法,其特征在于,所述结构化查询语句模板的类型包括插入模板、更新模板、删除模板和选择模板;并且
基于获取到的所述测试表结构和结构化查询语句模板生成测试用例包括:
根据所述结构化查询语句模板所属的类型,生成所述测试用例中的测试用结构化查询语句。
6.根据权利要求5所述的测试方法,其特征在于,根据所述待测试云数据库和标准云数据库基于所述测试用例返回的结果确定测试结果包括:
如果所述待测试云数据库和标准云数据库返回的结果相同,则表示所述待测试云数据库中与所述结构化查询语句模板对应的功能是正常的;如果所述待测试云数据库和标准云数据库返回的结果不同,则表示所述待测试云数据库中与所述结构化查询语句模板对应的功能存在异常。
7.一种云数据库的测试装置,其特征在于,包括:
获取单元,用于获取标准云数据库的测试表结构和对应所述测试表结构的结构化查询语句模板;
生成单元,用于基于获取到的所述测试表结构和结构化查询语句模板生成测试用例,其中,所述测试用例包括对应所述测试表结构的测试用表数据和对应所述结构化查询语句模板的测试用结构化查询语句;
发送单元,用于向所述待测试云数据库和标准云数据库同时发送所述测试用例;
确定单元,用于根据所述待测试云数据库和标准云数据库基于所述测试用例返回的结果确定测试结果;
其中,所述结构化查询语句模板是基于用户发往所述标准云数据库的多个结构化查询语句得到的。
8.根据权利要求7所述的云数据库的测试装置,其特征在于,所述获取单元通过以下方式实现:
获取用户发往所述标准云数据库的多个结构化查询语句,对获取的所述多个结构化查询语句进行脱敏处理得到所述结构化查询语句模板;
获取所述标准云数据库的真实表结构,对所述真实表结构进行脱敏处理以隐去用户数据,得到所述测试表结构。
9.根据权利要求8所述的云数据库的测试装置,其特征在于,所述结构化查询语句模板的类型包括插入模板、更新模板、删除模板和选择模板;并且
所述生成单元包括:
根据所述结构化查询语句模板所属的类型,生成所述测试用例中的测试用结构化查询语句。
10.根据权利要求7至9中任一项所述的测试方法,其特征在于,所述确定单元通过以下方式实现:
如果所述待测试云数据库和标准云数据库返回的结果相同,则表示所述待测试云数据库中与所述结构化查询语句模板对应的功能是正常的;如果所述待测试云数据库和标准云数据库返回的结果不同,则表示所述待测试云数据库中与所述结构化查询语句模板对应的功能存在异常。
11.一种设备,其特征在于,包括存储有计算机可执行指令的存储器和处理器,所述处理器被配置为执行如权利要求1至6中任一项所述的云数据库的测试方法。
12.一种使用计算机程序编码的非易失性计算机存储介质,其特征在于,所述计算机程序包括指令,当所述指令被一个以上的计算机执行时,所述指令使得所述一个以上的计算机执行如权利要求1至6中任一项所述的云数据库的测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811433892.9A CN109271326B (zh) | 2018-11-28 | 2018-11-28 | 云数据库的测试方法及其装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811433892.9A CN109271326B (zh) | 2018-11-28 | 2018-11-28 | 云数据库的测试方法及其装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109271326A true CN109271326A (zh) | 2019-01-25 |
CN109271326B CN109271326B (zh) | 2021-03-12 |
Family
ID=65186328
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811433892.9A Active CN109271326B (zh) | 2018-11-28 | 2018-11-28 | 云数据库的测试方法及其装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109271326B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109726136A (zh) * | 2019-01-28 | 2019-05-07 | 上海达梦数据库有限公司 | 数据库的测试方法、装置、设备和存储介质 |
CN110147319A (zh) * | 2019-04-19 | 2019-08-20 | 平安普惠企业管理有限公司 | 数据库测试方法、装置及计算机设备 |
CN110737594A (zh) * | 2019-09-19 | 2020-01-31 | 武汉迎风聚智科技有限公司 | 自动生成测试用例的数据库标准符合性测试方法及装置 |
CN110837471A (zh) * | 2019-11-06 | 2020-02-25 | 中国农业银行股份有限公司 | 一种测试方法、装置、服务器及存储介质 |
CN111026671A (zh) * | 2019-12-16 | 2020-04-17 | 腾讯科技(深圳)有限公司 | 测试用例集构建方法和基于测试用例集的测试方法 |
CN111045928A (zh) * | 2019-11-14 | 2020-04-21 | 用友网络科技股份有限公司 | 一种接口数据测试方法、装置、终端及存储介质 |
CN111159227A (zh) * | 2019-12-20 | 2020-05-15 | 中国建设银行股份有限公司 | 数据查询方法、装置、设备及存储介质 |
CN112948266A (zh) * | 2021-03-31 | 2021-06-11 | 建信金融科技有限责任公司 | 一种数据库语法测试系统、方法、装置、设备及存储介质 |
CN113722355A (zh) * | 2021-09-15 | 2021-11-30 | 中国银行股份有限公司 | 业务数据处理的测试方法及装置、电子设备、存储介质 |
CN113742200A (zh) * | 2020-05-28 | 2021-12-03 | 阿里巴巴集团控股有限公司 | 数据库版本升级的测试方法、设备及计算机可读介质 |
US11341028B2 (en) | 2020-01-02 | 2022-05-24 | International Business Machines Corporation | Structured query language runtime access path generation for deep test in a database |
WO2023030461A1 (zh) * | 2021-09-02 | 2023-03-09 | 中兴通讯股份有限公司 | 一种分布式数据库检测方法及装置 |
CN117520133A (zh) * | 2024-01-03 | 2024-02-06 | 梅州客商银行股份有限公司 | 银行核心系统全栈国产化数据库非功能测试的方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714066A (zh) * | 2012-09-29 | 2014-04-09 | Sap股份公司 | 基于模板的数据库分析器 |
CN107766431A (zh) * | 2017-09-18 | 2018-03-06 | 杭州安恒信息技术有限公司 | 一种基于语法解析的去参数化功能方法及系统 |
CN108319719A (zh) * | 2018-02-12 | 2018-07-24 | 腾讯科技(深圳)有限公司 | 数据库数据校验方法、装置、计算机设备和存储介质 |
-
2018
- 2018-11-28 CN CN201811433892.9A patent/CN109271326B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714066A (zh) * | 2012-09-29 | 2014-04-09 | Sap股份公司 | 基于模板的数据库分析器 |
CN107766431A (zh) * | 2017-09-18 | 2018-03-06 | 杭州安恒信息技术有限公司 | 一种基于语法解析的去参数化功能方法及系统 |
CN108319719A (zh) * | 2018-02-12 | 2018-07-24 | 腾讯科技(深圳)有限公司 | 数据库数据校验方法、装置、计算机设备和存储介质 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109726136A (zh) * | 2019-01-28 | 2019-05-07 | 上海达梦数据库有限公司 | 数据库的测试方法、装置、设备和存储介质 |
CN110147319A (zh) * | 2019-04-19 | 2019-08-20 | 平安普惠企业管理有限公司 | 数据库测试方法、装置及计算机设备 |
CN110737594A (zh) * | 2019-09-19 | 2020-01-31 | 武汉迎风聚智科技有限公司 | 自动生成测试用例的数据库标准符合性测试方法及装置 |
CN110837471A (zh) * | 2019-11-06 | 2020-02-25 | 中国农业银行股份有限公司 | 一种测试方法、装置、服务器及存储介质 |
CN110837471B (zh) * | 2019-11-06 | 2023-06-09 | 中国农业银行股份有限公司 | 一种测试方法、装置、服务器及存储介质 |
CN111045928A (zh) * | 2019-11-14 | 2020-04-21 | 用友网络科技股份有限公司 | 一种接口数据测试方法、装置、终端及存储介质 |
CN111045928B (zh) * | 2019-11-14 | 2024-03-26 | 用友网络科技股份有限公司 | 一种接口数据测试方法、装置、终端及存储介质 |
CN111026671A (zh) * | 2019-12-16 | 2020-04-17 | 腾讯科技(深圳)有限公司 | 测试用例集构建方法和基于测试用例集的测试方法 |
CN111026671B (zh) * | 2019-12-16 | 2023-11-03 | 腾讯科技(深圳)有限公司 | 测试用例集构建方法和基于测试用例集的测试方法 |
CN111159227B (zh) * | 2019-12-20 | 2023-04-14 | 建信金融科技有限责任公司 | 数据查询方法、装置、设备及存储介质 |
CN111159227A (zh) * | 2019-12-20 | 2020-05-15 | 中国建设银行股份有限公司 | 数据查询方法、装置、设备及存储介质 |
US11341028B2 (en) | 2020-01-02 | 2022-05-24 | International Business Machines Corporation | Structured query language runtime access path generation for deep test in a database |
CN113742200A (zh) * | 2020-05-28 | 2021-12-03 | 阿里巴巴集团控股有限公司 | 数据库版本升级的测试方法、设备及计算机可读介质 |
CN112948266B (zh) * | 2021-03-31 | 2023-06-20 | 建信金融科技有限责任公司 | 一种数据库语法测试系统、方法、装置、设备及存储介质 |
CN112948266A (zh) * | 2021-03-31 | 2021-06-11 | 建信金融科技有限责任公司 | 一种数据库语法测试系统、方法、装置、设备及存储介质 |
WO2023030461A1 (zh) * | 2021-09-02 | 2023-03-09 | 中兴通讯股份有限公司 | 一种分布式数据库检测方法及装置 |
CN113722355A (zh) * | 2021-09-15 | 2021-11-30 | 中国银行股份有限公司 | 业务数据处理的测试方法及装置、电子设备、存储介质 |
CN117520133A (zh) * | 2024-01-03 | 2024-02-06 | 梅州客商银行股份有限公司 | 银行核心系统全栈国产化数据库非功能测试的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109271326B (zh) | 2021-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109271326A (zh) | 云数据库的测试方法及其装置、设备和存储介质 | |
Pask | Conversation theory | |
Wilson et al. | Best practices for scientific computing | |
US9098630B2 (en) | Data selection | |
Schweigert et al. | Agile maturity model: analysing agile maturity characteristics from the SPICE perspective | |
CN109656912A (zh) | 数据模型管控方法、装置及服务器 | |
Amaro et al. | Capabilities and practices in DevOps: a multivocal literature review | |
CN103455589B (zh) | 产品工厂模式下的产品数据迁移方法、装置及系统 | |
CN109271382A (zh) | 一种面向全数据形态开放共享的数据湖系统 | |
CN103761189A (zh) | 一种测试用例管理方法及系统 | |
CN108132887A (zh) | 用户界面校验方法、装置、软件测试系统、终端及介质 | |
Mateen et al. | Robust approaches, techniques and tools for requirement engineering in agile development | |
Meire et al. | Samgi: Automatic metadata generation v2. 0 | |
CN108920564B (zh) | 基于区块链的人才管理方法及其终端 | |
CN103955429B (zh) | 确定回归测试范围的方法及装置 | |
Binamungu et al. | Detecting duplicate examples in behaviour driven development specifications | |
Konovalov et al. | Learning to extract events from knowledge base revisions | |
Rouly et al. | What are we teaching? Automated evaluation of cs curricula content using topic modeling | |
Molka et al. | Conformance checking for BPMN-based process models | |
Oladejo et al. | Electronic records management–a state of the art review | |
James | Automated students result management system using Oracle’s database, forms and reports | |
CN110188037B (zh) | 一种数据模拟方法及装置 | |
Vázquez-Barreiros et al. | Repairing alignments: striking the right nerve | |
Chikh et al. | Towards a dynamic software requirements specification | |
CN101246473B (zh) | 一种分词系统的评测方法和一种分词评测系统 |
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 |