CN109344055B - 一种测试方法以及测试装置 - Google Patents

一种测试方法以及测试装置 Download PDF

Info

Publication number
CN109344055B
CN109344055B CN201811044818.8A CN201811044818A CN109344055B CN 109344055 B CN109344055 B CN 109344055B CN 201811044818 A CN201811044818 A CN 201811044818A CN 109344055 B CN109344055 B CN 109344055B
Authority
CN
China
Prior art keywords
test
database
test case
tested
result
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.)
Active
Application number
CN201811044818.8A
Other languages
English (en)
Other versions
CN109344055A (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.)
Wuhan Dream Database Co ltd
Original Assignee
Wuhan Dameng Database Co 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 Wuhan Dameng Database Co Ltd filed Critical Wuhan Dameng Database Co Ltd
Priority to CN201811044818.8A priority Critical patent/CN109344055B/zh
Publication of CN109344055A publication Critical patent/CN109344055A/zh
Application granted granted Critical
Publication of CN109344055B publication Critical patent/CN109344055B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases

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

本发明公开了一种测试方法以及测试装置,该测试方法包括:获取生产数据库的基准测试数据以及日志文件;根据基准测试数据以及日志文件创建测试用例;判断确定测试用例是否适用于待测数据库;若测试用例适用于待测数据库,则依据测试用例对待测数据库进行测试,并输出测试结果。该测试方法基于生产数据库的日志文件创建测试用例,由于日志文件能够真实的反应应用服务的实际使用场景,提高了测试用例的覆盖率以及实用性。在测试用例适用于待测数据库时,才基于测试用例对待测数据库进行测试,提高了测试的准确性,减小了误判情况的发生。

Description

一种测试方法以及测试装置
技术领域
本发明属于数据库技术领域,更具体地,涉及一种测试方法以及测试装置。
背景技术
数据库是数据有组织的集合,为各种计算机应用提供数据服务,例如查询、记录、更新等。随着信息化技术的发展,各种计算机应用层出不穷,为了保证数据库性能的稳定性,需要对数据库的性能、功能等进行测试。
为了提高数据库***测试的精准性,保障数据库满足对特定应用场景的功能要求和性能要求,模拟特定计算机应用对待测数据库进行测试成为广泛使用的测试方法。目前,模拟计算机应用服务进行数据库***测试的传统方法有两种:(1)搭建计算机应用服务,通过该应用服务对待测试数据库服务进行***测试;(2)搭建计算机应用服务,该应用服务连接一个代理程序,代理程序连接生产数据库服务以及待测数据库服务,通过代理程序将应用服务的数据库请求同时发送至生产数据库服务和待测数据库服务进行对比测试。
前述方法在实施过程中都需要依托于计算机应用服务的程序集对待测数据库进行测试,但是待测数据库提供的功能愈来愈复杂,使得从数据规模到结构化查询语言SQL(Structured Query Language,简写为SQL)的类型可能都不尽相同,由此带来的数据库***测试范围越来越大,计算机应用服务的程序集的需求也越来越多。作为数据库厂商,往往难以部署第三方所需要的应用服务的程序集,同时,如果应用服务的程序集与待测数据库不匹配时,会引起测试结果不准确的问题,进而导致对待测数据库的性能、功能产生误判情况的发生,测试结果的真实性和全面性存在缺陷。
鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种测试方法以及测试装置,其目的在于基于生产数据库的日志文件创建测试用例,由于日志文件能够真实的反映应用服务的实际使用场景,提高了测试用例的覆盖率以及实用性。在测试用例适用于待测数据库时,才基于测试用例对待测数据库进行测试,提高了测试的准确性,减小了误判情况的发生,由此解决难以部署第三方所需要的应用服务的程序集,同时,如果应用服务的程序集与待测数据库不匹配时,会引起测试结果不准确的问题,进而导致对待测数据库的性能、功能产生误判情况的发生,测试结果的真实性和全面性存在缺陷的技术问题。
为实现上述目的,本发明实施例采用如下技术方案:
第一方面,本发明提供了一种测试方法,所述测试方法包括:
获取生产数据库的基准测试数据以及日志文件;
根据所述基准测试数据以及所述日志文件创建测试用例;
判断确定所述测试用例是否适用于所述待测数据库;
若所述测试用例适用于所述待测数据库,则依据所述测试用例对所述待测数据库进行测试,并输出测试结果。
优选地,所述判断确定所述测试用例是否适用于所述待测数据库包括:
获取所述生产数据库的基准测试环境以及所述待测数据库的目标测试环境;
将所述基准测试环境与所述目标测试环境进行相似度匹配,获取所述基准测试环境和所述目标测试环境之间的相似度;
判断确定所述基准测试环境和所述目标测试环境之间的相似度是否大于预设的相似度阈值;
若所述基准测试环境和所述目标测试环境之间的相似度大于预设的相似度阈值,则所述测试用例适用于所述待测数据库。
优选地,所述基准测试环境和所述目标测试环境包括操作***平台、操作***版本、数据规模、客户端并发规模、硬件资源中的一项或者多项。
优选地,所述判断确定所述测试用例是否适用于所述待测数据库包括:
依据所述生产数据库和所述待测数据库之间的关联关系获取所述生产数据库和所述待测数据库之间的测试权重;
获取所述生产数据库运行所述测试用例的基准测试结果以及所述待测数据库运行所述测试用例的实际测试结果;
将所述实际测试结果与所述测试权重进行加权计算得到加权测试结果,并获取所述加权测试结果与所述基准测试结果的差异结果;
判断确定所述差异结果是否小于预设的差异结果阈值;
若所述差异结果小于预设的差异结果阈值,则所述测试用例适用于所述待测数据库。
优选地,所述测试方法还包括:
若所述差异结果大于预设的差异结果阈值,则所述测试用例不适用于所述待测数据库;
依据生产数据库和所述待测数据库之间的关联关系重新创建测试用例。
优选地,所述根据所述基准测试数据以及所述日志文件创建测试用例包括:
解析所述日志文件获取操作命令集;
根据所述基准测试数据以及所述操作命令集创建测试用例。
优选地,所述根据所述基准测试数据以及所述日志文件创建测试用例还包括:
按照预设的处理条件对所述操作命令集进行过滤处理得到第一操作命令集;
执行所述第一操作命令集,剔除执行失败的操作命令得到目标操作命令集;
根据所述基准测试数据以及所述操作命令集创建测试用例包括:
根据所述基准测试数据以及所述目标操作命令集创建测试用例。
优选地,所述测试方法还包括:
按照预设的时间间隔重新获取所述生产数据库的基准测试数据以及日志文件;
并依据重新获取到的基准测试数据以及日志文件创建新的测试用例;
判断确定所述新的测试用例与历史测试用例之间的差异是否大于预设的差异阈值,其中,所述历史测试用例为当前对所述待测数据库进行测试的测试用例;
若所述新的测试用例与所述历史测试用例之间的差异大于预设的差异阈值,则依据所述新的测试用例与所述历史测试用例之间的差异获取差异测试用例,依据所述新的测试用例和/或所述差异测试用例对待测数据库进行测试。
优选地,所述测试方法还包括:
按照预设的时间间隔在所述生产数据库上运行所述测试用例得到模拟测试结果;
判断确定所述模拟测试结果与预期测试结果之间的差异是否大于预设的差异阈值;
若所述模拟测试结果与预期测试结果之间的差异大于预设的差异阈值,则丢弃对应的测试用例,并重新创建新的测试用例;
若所述模拟测试结果与预期测试结果之间的差异小于预设的差异阈值,则执行判断确定所述测试用例是否适用于所述待测数据库。
第二方面,本发明提供一种测试装置,所述测试装置包括至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被程序设置为执行第一方面所述的测试方法。
第三方面,本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成第一方面所述的测试的方法。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:本发明的测试方法包括获取生产数据库的基准测试数据以及日志文件;根据所述基准测试数据以及所述日志文件创建测试用例;判断确定所述测试用例是否适用于所述待测数据库;若所述测试用例适用于所述待测数据库,则依据所述测试用例对所述待测数据库进行测试,并输出测试结果。本发明的测试方法一方面基于生产数据库的日志文件创建测试用例,由于日志文件能够真实的反映应用服务的实际使用场景,因此,基于日志文件创建的测试用例能够很好的模拟应用服务的实际使用场景,提高了测试用例的覆盖率以及实用性。另一方面,由于生产数据库与待测数据库之间可能存在差异,本发明判断确定测试用例是否适用于待测数据库,在测试用例适用于待测数据库时,才基于测试用例对待测数据库进行测试,提高了测试的准确性,减小了误判情况的发生。
附图说明
图1是本发明实施例提供的一种测试方法的流程示意图;
图2是图1中步骤12一具体实施例的流程示意图;
图3是图1中步骤12另一具体实施例的流程示意图;
图4是本发明实施例提供的另一种测试方法的流程示意图;
图5是本发明实施例提供的又一种测试方法的流程示意图;
图6是本发明实施例提供的一种测试装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1:
参阅图1,本实施例提供一种测试方法,该测试方法用于对待测数据库的性能、功能等进行测试,该测试方法包括如下步骤:
步骤10:获取生产数据库的基准测试数据以及日志文件。
在本实施例中,首先获取生产数据库的基准测试数据以及日志文件。其中,基准测试数据文件可以由生产数据库的副本或备份而得到,也可以直接从生产数据库中导出得到。
在实际应用场景中,生产数据库在运行时,会产生相应的日志文件,并将日志文件存储在本地或远端存储设备上。其中,日志文件主要记录有应用程序对数据库的操作行为,通过日志文件可以了解到应用程序对数据库进行了哪些操作以及具体的操作过程。举例说明,应用程序登陆数据库,并基于业务逻辑对数据库的数据进行了查询、修改操作等等,其中,该业务逻辑可能是一个交易行为,涉及货物查询、购物、支付、订单处理等行为。
步骤11:根据所述基准测试数据以及所述日志文件创建测试用例。
在本实施例中,测试装置根据基准测试数据以及日志文件生成测试用例。日志文件主要是对操作逻辑、有关数据的记录,不具备控制逻辑,因此测试装置需要根据基准测试数据以及日志文件生成测试用例,该测试用例实际上是用于对待测数据库进行测试的操作脚本。具体而言,解析所述日志文件以获取操作命令集,根据日志文件的结构,分析得到可执行的结构化查询语言SQL(Structured Query Language,简写为SQL)语句,并将执行参数与对应的SQL语句相关联得到操作命令集。然后,根据所述基准测试数据以及所述操作命令集创建测试用例。
在实际应用场景中,由于日志文件中可能记录有重复的操作或者不符合测试条件的操作,为了提高测试的效率,可以按照预设的条件对基于日志文件获取到的操作命令集进行过滤处理后,再创建测试用例。
在优选的实施例中,按照预设的处理条件对所述操作命令集进行过滤处理得到第一操作命令集,执行所述第一操作命令集,剔除执行失败的操作命令得到目标操作命令集。其中,预设的处理条件包括去重处理和操作对象筛选处理。
在实际应用场景中,首先对操作命令集进行去重处理,可以按照如下函数对操作命令集执行去重处理。
/**
*@author Administrator
*描述:用于去除重复类似的sql,减少测试sql数目
*/
public class ItemFilter{
HashMap<Integer,ArrayList<String>>mapFilter=new HashMap<Integer,ArrayList<String>>();
SqlLog log=null;
SqlLog log2=null;
public void setDelLog(String filename){
if(log!=null){
log.Close();
log2.Close();
}
log=new SqlLog(filename);
log2=new SqlLog(filename+".2.log");
}
public void finish(){
if(log!=null){
log.Close();
log2.Close();
}
}
在对操作命令集进行去重处理之后,再采用过滤器对操作命令集进行过滤处理,例如,每个过滤器包含一个SQL特征(如特定的SQL语句类型、操作特定对象的SQL)以及处理操作(如删除操作、相同或相似的操作保留一个或多个),使用过滤器反复处理操作命令集得到第一操作命令集。在实际应用场景中,可以按照如下函数执行过滤处理。
/**
*@Description:判断是否保留该sql
*@param:
*@return:boolean
*/
public boolean isKeep(String sql){
boolean flag=true;
if(sql==null
||sql.trim().length()==0){
return false;
}
if(isDeleteSql(sql)){//如果确认删除sql,那么不需要保留
log.logMessageNotPrint(sql+"\r\n");
return false;
}
int len=sql.split("\\s+").length;//根据空格分隔sql字符串
if(!mapFilter.containsKey(new Integer(len))){//if hash-code notexists,keep sql
ArrayList<String>tmp=new ArrayList<String>();
tmp.add(sql);
mapFilter.put(new Integer(len),tmp);
return true;
}
ArrayList<String>values=mapFilter.get(new Integer(len));
Iterator<String>it=values.iterator();
while(it.hasNext()){
String sqltmp=it.next();
if(sql.trim().equalsIgnoreCase(sqltmp)){//找到相同的sql,那么该sql不保留
log.logMessageNotPrint(sql+"\r\n");
flag=false;
break;
}
//to-do
//找到相似的sql,那么不保留,将删除的sql输入至临时文件
if(isSimilarSql(sql,sqltmp)){
log2.logMessageNotPrint(sql+"\r\n");
flag=false;
break;
}
}
if(flag){//sql need keep
values.add(sql);
mapFilter.put(new Integer(len),values);
}
return flag;
}
在对操作命令集进行过滤处理后得到的第一操作命令集内的SQL语句可能会存在执行失败的情况,在本实施例中,在得到第一操作命令集之后,还模拟执行所述第一操作命令集,剔除执行失败的操作命令之后得到目标操作命令集。然后,再根据所述基准测试数据以及所述目标操作命令集创建测试用例。
在本实施例中,基于日志文件创建测试用例,是对数据库的操作脚本。由于测试用例可以模拟应用程序对数据库的操作行为,相当于是应用程序对数据库操作行为的回放,由此可以在不依赖应用程序的前提下,对数据库进行真实而全面的测试。
步骤12:判断确定所述测试用例是否适用于所述待测数据库。
在实际应用场景中,由于生产数据库与待测数据库之间可能存在差异,依据生产数据库的基准测试数据和日志文件创建的测试用例可能与待测数据库不匹配,进而导致测试结果与待测数据库的实际性能不符,为了提高测试的准确性。本实施例判断确定测试用例是否适用于待测数据库,在测试用例适用于待测数据库时,才基于测试用例对待测数据库进行测试,提高了测试的准确性,减小了误判情况的发生。
关于测试用例是否适用于待测数据库可从不同的维度对进行判断确定。在可选的实施例中,可以依据生产数据库的基准测试环境以及待测数据库的目标测试环境进行判断。参阅图2,步骤12:判断确定所述测试用例是否适用于所述待测数据库具体包括如下步骤:
步骤1211:获取所述生产数据库的基准测试环境以及所述待测数据库的目标测试环境。
在本实施例中,获取所述生产数据库的基准测试环境以及所述待测数据库的目标测试环境。其中,基准测试环境为获取基准测试数据以及相应的日志文件时,生产数据库的实际工作环境,基准测试环境包括操作***平台、操作***版本、数据规模、客户端并发规模、硬件资源中的一项或者多项。目标测试环境为对待测数据库进行测试的待测数据库的工作环境,基准测试环境包括操作***平台、操作***版本、数据规模、客户端并发规模、硬件资源中的一项或者多项。
步骤1212:将所述基准测试环境与所述目标测试环境进行相似度匹配,获取所述基准测试环境和所述目标测试环境之间的相似度。
在本实施例中,将所述基准测试环境与所述目标测试环境进行相似度匹配,获取所述基准测试环境和所述目标测试环境之间的相似度。为了得到更准确的相似度,可以依据测试环境的类型配置相应的权重,例如,操作***平台和操作***版本配置为第一相似度权重值,数据库的客户端并发规模和硬件资源配置为第二相似度权重值。
举例而言,首先比对生产数据库和待测数据库的操作***平台以及操作***版本,依据生产数据库和待测数据库的操作***平台以及操作***版本之间的相似程度确定第一相似度,然后再比对生产数据库和待测数据库的客户端并发规模以及硬件资源,依据生产数据库和待测数据库的客户端并发规模以及硬件资源之间的相似度确定第二相似度,最后第一相似度乘以第一相似度权重值得到第一相似度加权值,第二相似度乘以第二相似度权重值得到第二相似度加权值,将第一相似度加权值和第二相似度加权值相叠加得到生产数据库和待测数据库之间的相似度。
其中,第一相似度权重和第二相似度权重依据实际情况而定。例如,生产数据库和待测数据库的操作***平台以及操作***版本相同,则第一相似度为1;生产数据库和待测数据库的客户端并发规模以及硬件资源存在差异,并确定第二相似度为0.9。由于操作***平台以及操作***版本对测试结果的决定性更大,预设第一相似度权重值为60%,第二相似度权重值为40%,生产数据库和待测数据库之间的相似度为1*60%+0.9*40%=0.96。
步骤1213:判断确定所述基准测试环境和所述目标测试环境之间的相似度是否大于预设的相似度阈值。
其中,预设的相似度阈值依据实际情况设计,可以为80%或90%,在此不做具体限定。
在本实施例中,判断确定所述基准测试环境和所述目标测试环境之间的相似度是否大于预设的相似度阈值。例如,预设的相似度阈值为90%,生产数据库和待测数据库之间的相似度为0.96,则生产数据库和待测数据库之间的相似度大于预设的相似度阈值。若生产数据库和待测数据库之间的相似度大于预设的相似度阈值,则执行步骤1214,若生产数据库和待测数据库之间的相似度小于预设的相似度阈值,则执行步骤1215。
步骤1214:若所述基准测试环境和所述目标测试环境之间的相似度大于预设的相似度阈值,则所述测试用例适用于所述待测数据库。
步骤1215:若所述基准测试环境和所述目标测试环境之间的相似度小于预设的相似度阈值,则所述测试用例不适用于所述待测数据库,重新创建测试用例。
在另一个可选的实施例中,可以依据生产数据库与待测数据库之间的关联关系进行判断确定测试用例是否适用于待测数据库。参阅图3,步骤12:判断确定所述测试用例是否适用于所述待测数据库具体包括如下步骤:
步骤1221:依据所述生产数据库和所述待测数据库之间的关联关系获取所述生产数据库和所述待测数据库之间的测试权重。
在本实施例中,依据所述生产数据库和所述待测数据库之间的关联关系获取所述生产数据库和所述待测数据库之间的测试权重。其中,关联关系可以由数据规模或者运行配置而定。
步骤1222:获取所述生产数据库运行所述测试用例的基准测试结果以及所述待测数据库运行所述测试用例的实际测试结果。
其中,基准测试结果可以为生产数据库运行测试用例的基准时间长度,相应地,实际测试结果为待测数据库运行测试用例的实际时间长度。可选地,测试结果也可以为其他指标。
步骤1223:将所述实际测试结果与所述测试权重进行加权计算得到加权测试结果,并获取所述加权测试结果与所述基准测试结果的差异结果。
步骤1224:判断确定所述差异结果是否小于预设的差异结果阈值。
在本实施例中,判断确定所述差异结果是否小于预设的差异结果阈值,若所述差异结果小于预设的差异结果阈值,执行步骤1225;若所述差异结果大于预设的差异结果阈值,执行步骤1226。
举例而言,同一条操作命令,在生产数据库和待测数据库配置基本一致的情况下,待测数据库的数据规模是生产数据库的数据规模的A倍时,则生产数据库和待测数据库之间的测试权重为1/A,生产数据库执行测试用例的基准历时为T1,待测数据库执行测试用例的实际历时为T2,按照实际历时乘以测试权重计算待测数据库执行测试用例的加权历时为T2*1/A。加权测试结果与基准测试结果的差异结果为T2*1/A-T1。
例如,待测数据库的数据规模是生产数据库的数据规模的2倍时,则生产数据库和待测数据库之间的测试权重为1/2,生产数据库执行测试用例的基准历时为4s,待测数据库执行测试用例的实际历时为9s,按照实际历时乘以测试权重计算待测数据库执行测试用例的加权历时为9s*1/2=4.5s。加权测试结果与基准测试结果的差异结果为4.5s-4s=0.5s。
其中,差异结果依据实际情况而定,例如,差异结果为1s。0.5s小于1s,则说明测试用例适用于待测数据库。
步骤1225:若所述差异结果小于预设的差异结果阈值,则所述测试用例适用于所述待测数据库。
步骤1226:若所述差异结果大于预设的差异结果阈值,则所述测试用例不适用于所述待测数据库,重新创建测试用例。
在本实施例中,若差异结果大于预设的差异结果阈值,则测试用例不适用于待测数据库,依据生产数据库和待测数据库之间的关联关系重新创建测试用例。
在又一个可选的实施例中,首先,依据生产数据库的基准测试环境以及待测数据库的目标测试环境进行判断得到二者的相似度,在生产数据库的基准测试环境以及待测数据库的目标测试环境的相似度达到预设的相似度阈值时,然后再依据生产数据库与待测数据库之间的关联关系得到二者的测试权重,联合生产数据库的基准测试环境以及待测数据库的目标测试环境的相似度和生产数据库与待测数据库之间的测试权重得到目标测试权重,然后用目标测试权重按照步骤1223~步骤1226的方式判断确定测试用例是否适用于待测数据库(将测试权重对应的值调整为目标测试权重对应的值)。
步骤13:若所述测试用例适用于所述待测数据库,则依据所述测试用例对所述待测数据库进行测试,并输出测试结果。
在本实施例中,若所述测试用例适用于所述待测数据库,则依据所述测试用例对所述待测数据库进行测试,并输出测试结果。
实施例2:
区别于上述实施例1,为了进一步确保测试用例的准确性,在本实施例中,当创建完测试用例后,还周期性的回归到生产数据库中进行模拟测试,依据模拟测试结果以及预期测试结果进行评估,判断确定测试用例是否可以真实的模拟用户的操作行为,如果模拟测试结果与预期测试结果的差异较小,则说明测试用例可以真实的模拟用户的操作行为,可以采用测试用例对待测试数据库进行测试;如果模拟测试结果与预期测试结果的差异较大,则说明测试用例不能真实的模拟用户的操作行为,重新创建测试用例。本实施例的测试方法的具体步骤请参阅图4。
步骤20:获取生产数据库的基准测试数据以及日志文件。
在本实施例中,首先获取生产数据库的基准测试数据以及日志文件。其中,基准测试数据文件可以由生产数据库的副本或备份而得到,也可以直接从生产数据库中导出得到。
其中,本实施例的步骤20与实施例1中的步骤10相同,具体的过程请参阅步骤10以及相关的文字描述。
步骤21:根据所述基准测试数据以及所述日志文件创建测试用例。
在本实施例中,测试装置根据基准测试数据以及日志文件生成测试用例。日志文件主要是对操作逻辑、有关数据的记录,不具备控制逻辑,因此测试装置需要根据基准测试数据以及日志文件生成测试用例,该测试用例实际上是用于对待测数据库进行测试的操作脚本。
其中,本实施例的步骤21与实施例1中的步骤10相同,具体的过程请参阅步骤10以及相关的文字描述。
步骤22:按照预设的时间间隔在所述生产数据库上运行所述测试用例得到模拟测试结果。
考虑到应用程序更新或者其他因素会引起作用于数据库操作命令集的改变(数据库日志文件也会改变),所以导致测试用例的改变,此时需要重新分析日志,生成测试用例。在本实施例中,按照预设的时间间隔在所述生产数据库上运行所述测试用例得到模拟测试结果。其中,预设的时间间隔可依据实际情况而定。步骤23:判断确定所述模拟测试结果与预期测试结果之间的差异是否大于预设的差异阈值。
其中,预期测试结果可以根据当前生产数据库输出的实际结果而定。
在本实施例中,获取生产数据库在执行与测试用例相匹配的操作时当前最新的输出结果,将所述当前最新的输出结果配置为预期测试结果。然后,判断确定所述模拟测试结果与预期测试结果之间的差异是否大于预设的差异阈值。若所述模拟测试结果与预期测试结果之间的差异大于预设的差异阈值,则执行步骤24;若所述模拟测试结果与预期测试结果之间的差异小于预设的差异阈值,则执行步骤25。
其中,差异阈值可以依据实际情况而定,在此,不做具体限定。步骤24:若所述模拟测试结果与预期测试结果之间的差异大于预设的差异阈值,则丢弃对应的测试用例,并重新创建新的测试用例。
在本实施例中,依据步骤20和步骤21重新创建新的测试用例。
步骤25:若所述模拟测试结果与预期测试结果之间的差异小于预设的差异阈值,则判断确定所述测试用例是否适用于所述待测数据库。
在本实施例中,若所述模拟测试结果与预期测试结果之间的差异小于预设的差异阈值,则判断确定所述测试用例是否适用于所述待测数据库。
关于测试用例是否适用于待测数据库的判定过程请具体参阅图1、图2、图3以及实施例1中相关的文字描述,在此,不做具体限定。
在实际应用场景中,应用程序更新引起数据库操作命令集的改变导致测试用例的改变。若应用程序的更新没有改变数据结构,则通过历史测试用例对待测数据库进行测试时可以输出预期的结果,无需重新创建新的测试用例。若应用程序的更新改变了数据结构,通过历史测试用例对生产数据库进行测试时,有可能会出现异常,则说明需要重新创建新的测试用例。
步骤26:若所述测试用例适用于所述待测数据库,则依据所述测试用例对所述待测数据库进行测试,并输出测试结果。
在本实施例中,若所述测试用例适用于所述待测数据库,则依据所述测试用例对所述待测数据库进行测试,并输出测试结果。
在另一个实施例中,按照预设的时间间隔重新获取所述生产数据库的基准测试数据以及日志文件,并依据重新获取到的基准测试数据以及日志文件创建新的测试用例。基于新的测试用例与历史测试用例的差异判断确定是否需要更换测试用例。具体方法流程请参阅图5。
步骤30:按照预设的时间间隔重新获取所述生产数据库的基准测试数据以及日志文件。
考虑到应用程序更新或者其他因素会引起作用于数据库操作命令集的改变(数据库日志文件也会改变),所以导致测试用例的改变,此时需要重新分析日志,生成测试用例。在本实施例中,按照预设的时间间隔重新获取所述生产数据库的基准测试数据以及日志文件,以创建新的测试用例。其中,预设的时间间隔可依据实际情况而定。
步骤31:并依据重新获取到的基准测试数据以及日志文件创建新的测试用例。
步骤32:判断确定所述新的测试用例与历史测试用例之间的差异是否大于预设的差异阈值,其中,所述历史测试用例为当前对所述待测数据库进行测试的测试用例。
在本实施例中,判断确定所述新的测试用例与历史测试用例之间的差异是否大于预设的差异阈值,若大于则说明需要更换测试用例,执行步骤33,若小于则说明无需更换测试用例,执行步骤34。其中,预设的差异阈值依据实际情况而定。
步骤33:若所述新的测试用例与所述历史测试用例之间的差异大于预设的差异阈值,则依据所述新的测试用例与所述历史测试用例之间的差异获取差异测试用例,依据所述新的测试用例和/或所述差异测试用例对待测数据库进行测试。
在本实施例中,若所述新的测试用例与所述历史测试用例之间的差异大于预设的差异阈值,则说明历史测试用例无法真实全面的对待测数据库进行测试,则需要更换测试用例。
举例而言,当依据历史测试用例已经输出测试结果时,为了提高测试的效率,可以仅依据差异测试用例对待测数据库进行测试,重点分析差异测试用例对应的测试结果。可选地,为了保证测试的准确性,也可以直接用新的测试用例对待测数据库重新进行测试。或者,可以采用差异测试用例和新的测试用例对待测数据库进行测试,并输出新的测试用例对应的测试结果以及差异测试用例对应的差异测试结果。关于更换测试用例的方式可以依据实际情况而定,在此不做具体限定。
步骤33:若所述新的测试用例与所述历史测试用例之间的差异小于预设的差异阈值,则无需更换测试用例。
在此需要说明的是创建测试用例的方法与实施例1中的步骤10以及步骤20相同,在此不再赘述。获取到新的测试用例或差异测试用例后也可依据实施例1中的步骤12以及步骤13判断确定新的测试用例或差异测试用例是否适用于待测数据库,在此不再赘述。
区别于现有技术,本发明的测试方法包括获取生产数据库的基准测试数据以及日志文件;根据所述基准测试数据以及所述日志文件创建测试用例;判断确定所述测试用例是否适用于所述待测数据库;若所述测试用例适用于所述待测数据库,则依据所述测试用例对所述待测数据库进行测试,并输出测试结果。本发明的测试方法一方面基于生产数据库的日志文件创建测试用例,由于日志文件能够真实的反应应用服务的实际使用场景,因此,基于日志文件创建的测试用例能够很好的模拟应用服务的实际使用场景,提高了测试用例的覆盖率以及实用性。另一方面,由于生产数据库与待测数据库之间可能存在差异,本发明判断确定测试用例是否适用于待测数据库,在测试用例适用于待测数据库时,才基于测试用例对待测数据库进行测试,提高了测试的准确性,减小了误判情况的发生。
实施例3:
请参阅图6,图6是本发明实施例提供的一种测试装置的结构示意图。本实施例的测试装置括一个或多个处理器61以及存储器62。其中,图6中以一个处理器61为例。
处理器61和存储器62可以通过总线或者其他方式连接,图6中以通过总线连接为例。
存储器62作为一种基于测试方法的非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如实施例1中的测试方法以及对应的程序指令。处理器61通过运行存储在存储器62中的非易失性软件程序、指令以及模块,从而执行测试方法的各种功能应用以及数据处理,实现实施例1或实施例2的测试方法的功能。
其中,存储器62可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器62可选包括相对于处理器61远程设置的存储器,这些远程存储器可以通过网络连接至处理器61。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
关于测试方法请参照图1~图6及相关的文字描述,在此不再赘述。
值得说明的是,上述装置和***内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的处理方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(Read Only Memory,简写为ROM)、随机存取存储器(Random AccessMemory,简写为RAM)、磁盘或光盘等。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种测试方法,其特征在于,所述测试方法包括:
获取生产数据库的基准测试数据以及日志文件;
根据所述基准测试数据以及所述日志文件创建测试用例;
判断确定所述测试用例是否适用于待测数据库;
若所述测试用例适用于所述待测数据库,则依据所述测试用例对所述待测数据库进行测试,并输出测试结果;
所述判断确定所述测试用例是否适用于所述待测数据库包括:
获取所述生产数据库的基准测试环境以及所述待测数据库的目标测试环境;
将所述基准测试环境与所述目标测试环境进行相似度匹配,获取所述基准测试环境和所述目标测试环境之间的相似度;
判断确定所述基准测试环境和所述目标测试环境之间的相似度是否大于预设的相似度阈值;
若所述基准测试环境和所述目标测试环境之间的相似度大于预设的相似度阈值,则所述测试用例适用于所述待测数据库。
2.根据权利要求1所述的测试方法,其特征在于,所述基准测试环境和所述目标测试环境包括操作***平台、操作***版本、数据规模、客户端并发规模、硬件资源中的一项或者多项。
3.根据权利要求1所述的测试方法,其特征在于,所述判断确定所述测试用例是否适用于所述待测数据库包括:
依据所述生产数据库和所述待测数据库之间的关联关系获取所述生产数据库和所述待测数据库之间的测试权重;
获取所述生产数据库运行所述测试用例的基准测试结果以及所述待测数据库运行所述测试用例的实际测试结果;
将所述实际测试结果与所述测试权重进行加权计算得到加权测试结果,并获取所述加权测试结果与所述基准测试结果的差异结果;
判断确定所述差异结果是否小于预设的差异结果阈值;
若所述差异结果小于预设的差异结果阈值,则所述测试用例适用于所述待测数据库。
4.根据权利要求3所述的测试方法,其特征在于,所述测试方法还包括:
若所述差异结果大于预设的差异结果阈值,则所述测试用例不适用于所述待测数据库;
依据所述生产数据库和所述待测数据库之间的关联关系重新创建测试用例。
5.根据权利要求1所述的测试方法,其特征在于,所述根据所述基准测试数据以及所述日志文件创建测试用例包括:
解析所述日志文件获取操作命令集;
根据所述基准测试数据以及所述操作命令集创建测试用例。
6.根据权利要求5所述的测试方法,其特征在于,所述根据所述基准测试数据以及所述日志文件创建测试用例还包括:
按照预设的处理条件对所述操作命令集进行过滤处理得到第一操作命令集;
执行所述第一操作命令集,剔除执行失败的操作命令得到目标操作命令集;
根据所述基准测试数据以及所述操作命令集创建测试用例包括:
根据所述基准测试数据以及所述目标操作命令集创建测试用例。
7.根据权利要求1所述的测试方法,其特征在于,所述测试方法还包括:
按照预设的时间间隔重新获取所述生产数据库的基准测试数据以及日志文件;
并依据重新获取到的基准测试数据以及日志文件创建新的测试用例;
判断确定所述新的测试用例与历史测试用例之间的差异是否大于预设的差异阈值,其中,所述历史测试用例为当前对所述待测数据库进行测试的测试用例;
若所述新的测试用例与所述历史测试用例之间的差异大于预设的差异阈值,则依据所述新的测试用例与所述历史测试用例之间的差异获取差异测试用例,依据所述新的测试用例和/或所述差异测试用例对待测数据库进行测试。
8.根据权利要求1所述的测试方法,其特征在于,所述测试方法还包括:
按照预设的时间间隔在所述生产数据库上运行所述测试用例得到模拟测试结果;
判断确定所述模拟测试结果与预期测试结果之间的差异是否大于预设的差异阈值;
若所述模拟测试结果与预期测试结果之间的差异大于预设的差异阈值,则丢弃对应的测试用例,并重新创建新的测试用例;
若所述模拟测试结果与预期测试结果之间的差异小于预设的差异阈值,则执行判断确定所述测试用例是否适用于所述待测数据库。
9.一种测试装置,其特征在于,所述测试装置包括至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被程序设置为执行如权利要求1~8任一项所述的测试方法。
CN201811044818.8A 2018-09-07 2018-09-07 一种测试方法以及测试装置 Active CN109344055B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811044818.8A CN109344055B (zh) 2018-09-07 2018-09-07 一种测试方法以及测试装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811044818.8A CN109344055B (zh) 2018-09-07 2018-09-07 一种测试方法以及测试装置

Publications (2)

Publication Number Publication Date
CN109344055A CN109344055A (zh) 2019-02-15
CN109344055B true CN109344055B (zh) 2020-05-19

Family

ID=65304976

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811044818.8A Active CN109344055B (zh) 2018-09-07 2018-09-07 一种测试方法以及测试装置

Country Status (1)

Country Link
CN (1) CN109344055B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110262961A (zh) * 2019-05-21 2019-09-20 深圳壹账通智能科技有限公司 工作流管理***的测试方法、装置、存储介质及终端设备
CN110908906B (zh) * 2019-11-18 2023-03-28 中国民航信息网络股份有限公司 一种回归测试方法及***
CN111579962A (zh) * 2020-05-07 2020-08-25 济南浪潮高新科技投资发展有限公司 一种测控设备自主可控性检测***及检测方法
CN111767222A (zh) * 2020-06-28 2020-10-13 杭州数梦工场科技有限公司 数据模型的验证方法、装置、电子设备、存储介质
CN112559316A (zh) * 2020-09-03 2021-03-26 ***股份有限公司 软件测试方法和设备、计算机存储介质以及服务器
CN112788640B (zh) * 2021-03-04 2022-08-05 惠州Tcl移动通信有限公司 通信设备测试方法、装置、存储介质及终端
CN113778835A (zh) * 2021-11-11 2021-12-10 广州粤芯半导体技术有限公司 压力测试方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1992017853A2 (en) * 1991-04-05 1992-10-15 Pattern Recognition, L.P. Direct data base analysis, forecasting and diagnosis method
CN102831052A (zh) * 2011-06-16 2012-12-19 ***股份有限公司 测试用例自动化生成装置及方法
CN104461863A (zh) * 2014-10-29 2015-03-25 中国建设银行股份有限公司 一种业务***测试方法、设备及***
CN104951399A (zh) * 2015-06-19 2015-09-30 北京齐尔布莱特科技有限公司 一种软件测试***和方法
CN107908549A (zh) * 2017-10-24 2018-04-13 北京小米移动软件有限公司 测试用例生成方法、装置及计算机可读存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1992017853A2 (en) * 1991-04-05 1992-10-15 Pattern Recognition, L.P. Direct data base analysis, forecasting and diagnosis method
CN102831052A (zh) * 2011-06-16 2012-12-19 ***股份有限公司 测试用例自动化生成装置及方法
CN104461863A (zh) * 2014-10-29 2015-03-25 中国建设银行股份有限公司 一种业务***测试方法、设备及***
CN104951399A (zh) * 2015-06-19 2015-09-30 北京齐尔布莱特科技有限公司 一种软件测试***和方法
CN107908549A (zh) * 2017-10-24 2018-04-13 北京小米移动软件有限公司 测试用例生成方法、装置及计算机可读存储介质

Also Published As

Publication number Publication date
CN109344055A (zh) 2019-02-15

Similar Documents

Publication Publication Date Title
CN109344055B (zh) 一种测试方法以及测试装置
CN109344056B (zh) 一种测试方法以及测试装置
CN109460349B (zh) 一种基于日志的测试用例生成方法和装置
JP6723989B2 (ja) データ駆動型検査用フレームワーク
CN109271326B (zh) 云数据库的测试方法及其装置、设备和存储介质
CN106951369B (zh) 一种联调测试的管理方法及装置
CN108763091B (zh) 用于回归测试的方法、装置及***
EP3674918B1 (en) Column lineage and metadata propagation
DE102021133809A1 (de) Verfahren und vorrichtung zur automatischen detektion von softwarefehlern
CN114490375B (zh) 应用程序的性能测试方法、装置、设备及存储介质
CN112148614B (zh) 回归测试方法及装置
CN113360394A (zh) 代码测试覆盖率统计方法及装置
Helal et al. Online correlation for unlabeled process events: A flexible CEP-based approach
CN109063040B (zh) 客户端程序数据采集方法及***
CN111221721A (zh) 一种单元测试案例自动化录制和执行方法及装置
CN111552648A (zh) 用于应用的自动验证方法和***
CN106681910B (zh) 一种基于主机代码解析生成测试案例的方法及装置
Maplesden et al. Performance analysis using subsuming methods: An industrial case study
CN115829412A (zh) 一种基于业务过程的指标数据量化处理方法、***及介质
CN114490413A (zh) 测试数据的准备方法及装置、存储介质和电子设备
CN113868283A (zh) 数据测试方法、装置、设备及计算机存储介质
CN113342632A (zh) 仿真数据自动化处理方法、装置、电子设备及存储介质
Pathania et al. Role of test case prioritization based on regression testing using clustering
CN112416727A (zh) 批处理作业的检核方法、装置、设备及介质
US8527465B1 (en) System and method for modeling data change over time

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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 430000 High-tech Avenue 999, Donghu New Technology Development Zone, Wuhan City, Hubei Province

Patentee after: Wuhan dream database Co.,Ltd.

Address before: 430000 High-tech Avenue 999, Donghu New Technology Development Zone, Wuhan City, Hubei Province

Patentee before: WUHAN DAMENG DATABASE Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220914

Address after: 430073 16-19 / F, building C3, future science and technology building, 999 Gaoxin Avenue, Donghu New Technology Development Zone, Wuhan City, Hubei Province

Patentee after: Wuhan dream database Co.,Ltd.

Patentee after: HUAZHONG University OF SCIENCE AND TECHNOLOGY

Address before: 430000 16-19 / F, building C3, future technology building, 999 Gaoxin Avenue, Donghu New Technology Development Zone, Wuhan, Hubei Province

Patentee before: Wuhan dream database Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230802

Address after: 16-19/F, Building C3, Future Science and Technology Building, No. 999 Gaoxin Avenue, Donghu New Technology Development Zone, Wuhan City, Hubei Province, 430206

Patentee after: Wuhan dream database Co.,Ltd.

Address before: 430073 16-19 / F, building C3, future science and technology building, 999 Gaoxin Avenue, Donghu New Technology Development Zone, Wuhan City, Hubei Province

Patentee before: Wuhan dream database Co.,Ltd.

Patentee before: HUAZHONG University OF SCIENCE AND TECHNOLOGY