CN108763474B - 获取交易相关性及执行回归测试的方法、装置及存储介质 - Google Patents
获取交易相关性及执行回归测试的方法、装置及存储介质 Download PDFInfo
- Publication number
- CN108763474B CN108763474B CN201810532064.4A CN201810532064A CN108763474B CN 108763474 B CN108763474 B CN 108763474B CN 201810532064 A CN201810532064 A CN 201810532064A CN 108763474 B CN108763474 B CN 108763474B
- Authority
- CN
- China
- Prior art keywords
- transaction
- correlation
- queue
- acquiring
- messages
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Engineering & Computer Science (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了获取交易相关性及执行回归测试的方法、装置及存储介质,所述获取交易相关性的方法包括:获取交易对应的SQL语句;解析所述SQL语句,获取交易操作信息和交易操作元素;根据所述交易操作信息、交易操作元素和交易相关性判断规则获取交易相关性。所述执行回归测试的方法包括:根据本发明公开的获取交易相关性的方法获取交易相关性之后,根据获取的交易相关性,调节并发队列中与出列报文相关的交易报文的优先级来执行回归测试。本发明提供的获取交易相关性及执行回归测试的方法,能够减少人力成本,提高测试效率和效果。
Description
技术领域
本发明涉及回归测试及相关性分析领域,更为具体而言,涉及获取交易相关性及执行回归测试的方法、装置及存储介质。
背景技术
当前类似SOA(Service-oriented Architecture,面向服务架构)架构的松耦合软件系统应用范围不断扩大,软件规模也不断扩张,测试规模和测试工作量也相应增加,为了最大限度的减少人工成本,同时提高测试效率和效果,提高软件系统安全性和健壮性,回归测试是一种可行的解决方案。
由于回归测试往往交易量很大,需要并发执行以提高其执行效率,而并发执行会导致交易实际执行的时间顺序被打乱,从而由于某些交易之间存在相互依赖关系导致的非预期执行失败。
解决此类问题最直接的方式是获取交易服务之间的相关性,使用相关性对交易发送顺序进行并发控制。交易服务之间的相关性一般只存在于书面的测试用例文档,不容易分析提取,并且分析过程需要消耗大量人力资源。
发明内容
鉴于现有技术的上述缺陷,本发明的目的在于提供获取交易相关性及执行回归测试的方法、装置及存储介质,对获取交易相关性给出一种自动化解决途径,节省人力成本,并且提高执行回归测试的效率。
本发明实施例的第一方面提供一种获取交易相关性的方法,其中,所述方法包括:获取交易对应的SQL(Structured Query Language,结构化查询语言)语句;解析所述SQL语句,获取交易操作信息和交易操作元素;根据所述交易操作信息、交易操作元素和交易相关性判断规则获取交易相关性。
进一步地,所述获取交易对应的SQL语句包括:根据交易执行的数据库存储过程获取交易对应的SQL语句。
具体地,所述交易操作信息包括表名、操作类型、交易编号、序号,所述交易操作元素包括字段名、字段值、where条件(数据库操作时使用的查询条件)。
进一步地,解析所述SQL语句包括:使用字符串匹配的方式解析所述SQL语句。
具体地,所述使用字符串匹配的方式解析所述SQL语句包括:获取所述SQL语句涉及到的所有表的表名;根据所述表名获取所述表名对应的表的所有字段名;查找所述SQL中与所述字段名匹配的字符串;判断所述与字段名匹配的字符串后是否存在等号,若存在,则将所述字段名与所述等号后的值作为所述表名对应的所述SQL语句的where条件。
进一步地,在根据所述交易操作信息、交易操作元素和交易相关性判断规则获取交易之间的相关性的过程中,所述交易操作信息和所述交易操作元素以集合的形式存储。
具体地,所述根据所述交易操作信息、交易操作元素和交易相关性判断规则获取交易之间的相关性包括:根据数据库操作的内在逻辑关系获取交易相关性判断规则;根据所述交易相关性判断规则计算交易相关性。
可选地,在所述根据交易相关性判断规则计算交易相关性的过程中,对所述计算过程进行并发处理。
可选地,在所述根据交易相关性判断规则计算交易相关性的过程中,利用集合计算公式计算交易之间的相关性并且分批进行所述计算。
本发明实施例的第二方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行本发明所述的任意一种获取交易相关性方法。
本发明实施例的第三方面提供一种执行回归测试的方法,所述方法包括:按照本发明所述的获取交易相关性的方法获取交易相关性;根据交易相关性,将具有相关性的交易集合内的交易报文按照发送时间排序,形成顺序队列;创建与所述顺序队列相对应的并发队列,将顺序队列中的交易报文依次放入并发队列中;根据交易相关性,判断并发队列中是否有与顺序队列中的出列报文直接相关的交易报文;若是,等待并发队列中与出列报文直接相关的交易报文发送完毕后,将所述出列报文依次放入并发队列中;若否,直接将所述出列报文依次放入并发队列中;将并发队列中的交易报文放入并发资源池中,并发执行回归测试。
可选地,在判断并发队列中有与顺序队列中的出列报文直接相关的交易报文之后,将并发队列中与出列报文直接相关的交易报文的发送优先级调高,优先发送所述与出列报文直接相关的交易报文,发送完毕后,将所述出列报文依次放入并发队列中。
本发明实施例的第四方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行本发明所述任意一种执行回归测试的方法。
本发明实施例的第五方面提供一种获取交易相关性的装置,包括:获取模块,用于获取交易对应的SQL语句;解析模块,用于解析所述SQL语句,获取交易操作信息和交易操作元素;计算模块,用于根据所述交易操作信息、交易操作元素和交易相关性判断规则获取交易相关性。
进一步地,所述获取模块根据交易执行的数据库存储过程获取交易对应的SQL语句。
具体地,所述交易操作信息包括表名、操作类型、交易编号、序号,所述交易操作元素包括字段名、字段值、where条件。
进一步地,所述解析模块使用字符串匹配的方式解析所述SQL语句。
具体地,所述解析模块包括:表名获取子模块,用于获取所述SQL语句涉及到的所有表的表名;字段名获取子模块,用于根据所述表名获取所述表名对应的表的所有字段名;查找子模块,用于查找所述SQL中与所述字段名匹配的字符串;判断子模块,用于执行下述操作:判断所述与字段名匹配的字符串后是否存在等号,若存在,则将所述字段名与所述等号后的值作为所述表名对应的所述SQL语句的where条件。
进一步地,在所述计算模块计算交易相关性的过程中,所述交易操作信息和交易操作元素以集合的形式存储。
具体地,所述计算模块根据所述交易操作信息、交易操作元素和交易相关性判断规则计算交易之间的相关性包括:根据数据库操作的内在逻辑关系获取交易相关性判断规则;根据交易操作信息、交易操作元素和所述交易相关性判断规则计算交易相关性
可选地,所述计算模块并发计算交易相关性。
可选地,所述计算模块利用集合计算公式计算交易之间的相关性并且分批进行所述计算。
本发明实施例的第六方面提供一种执行回归测试的装置,所述装置包括:相关性获取模块,用于按照本发明获取交易相关性的方法获取交易相关性;顺序模块,根据交易相关性将具有相关性的交易集合内的交易报文按照发送时间排序,形成顺序队列;并发模块,用于创建并发队列,按照顺序从顺序队列中接收交易报文,放入并发队列中;判断模块,用于根据交易相关性判断并发队列中是否有与顺序队列中的出列报文直接相关的交易报文;执行模块,将并发队列中的交易报文放入并发资源池中,并发执行回归测试。
可选地,所述装置还包括:优先级调节模块,用于将并发队列中所述与顺序队列中的出列报文相关的交易报文的优先级调高,优先发送所述与出列报文直接相关的交易报文。
本发明的有益效果是:本发明提供的获取交易相关性的方法、装置及存储介质,对松耦合架构系统中交易服务的相关性分析给出了一种自动化解决途径,能够节省大量的人力成本,获取的交易相关性不仅能够让软件工程师对系统交易之间的关系有直观的认识,而且为回归测试时交易的并发执行提供了依据。根据获取的交易相关性,本发明提供的执行回归测试的方法、装置及存储介质能够提高执行回归测试的并发程度,进一步提高执行回归测试的效率。
附图说明
图1是根据本发明实施例的获取交易相关性的方法流程示意图;
图2示出了根据本发明实施例获取的SQL语句的信息组织形式;
图3示出了本发明实施例SQL语句解析后的数据结构;
图4示出了根据本发明实施例使用字符串匹配的方式解析所述SQL语句的流程图;
图5示出了本发明实施例根据交易操作信息、交易操作元素和交易相关性判断规则获取交易相关性的流程;
图6示出了根据本发明实施例执行回归测试的方法流程图;
图7示出了根据本发明实施例的相关性交易集合无向图;
图8示出了根据本发明实施例的并发队列结构示意图;
图9示出了根据本发明实施例的获取交易相关性的装置示例框图;
图10示出了根据本发明实施例的解析模块的结构示意图;
图11示出了根据本发明实施例的计算模块的结构示意图;
图12示出了根据本发明实施例的执行回归测试的装置示意图。
具体实施方式
为了便于理解本发明技术方案的各个方面、特征以及优点,下面结合附图对本发明进行具体描述。应当理解,下述的各种实施方式只用于举例说明,而非用于限制本发明的保护范围。
图1是根据本发明实施例的获取交易相关性的方法流程示意图。参照图1,所述获取交易相关性的方法包括:
S1:获取交易对应的SQL语句;
S2:解析所述SQL语句,获取交易操作信息和交易操作元素;
S3:根据所述交易操作信息、交易操作元素和交易相关性判断规则获取交易相关性。
在本实施例的一种实施方式中,对于处理S1,可以使用数据库监控工具、从系统日志提取、静态或动态程序分析工具等方式获取系统中每个交易对应的SQL语句集合。举例来说,使用从系统日志提取的方式获取SQL语句的方法如下:
将系统的日志级别配置修改为打印SQL语句的对应级别,从包含SQL语句的日志文件中提取交易编号、交易时间以及其对应的SQL语句,将提取出的SQL语句信息保存到存储设备,其存储组织形式如图2所示。对于insert(插入)、update(更新)、delete(删除)与select(选择)混合出现的情况,由于实际中很少出现这类SQL,因此忽略这类混合类型的语句。
进一步地,对于处理S1,获取交易对应的SQL语句包括:根据交易执行的数据库存储过程获取交易对应的SQL语句。在本实施例的另一种实施方式中,对于某些系统中一些交易的数据库操作使用数据库存储过程的情况,不容易在执行过程中记录SQL语句,对于这些交易,根据交易执行的数据库存储过程获取所述交易对应的SQL语句。上述的获取处理过程由自动化程序实现,例如,从日志中提取交易中执行的数据库存储过程名称,然后使用以下SQL语句获取到存储过程内容:select text from user_source where name=UPPER(存储过程名)and type=’PROCEDURE’。获取到存储过程内容后,使用正则表达式等方式从所述存储过程内容中匹配关键字select、insert into等,获取到存储过程中的SQL语句集合,从而获取交易对应的SQL语句。
对于处理S2,具体地,所述交易操作信息包括表名、操作类型、交易编号、序号,所述交易操作元素包括字段名、字段值、where条件。
对于处理S2,在本实施例的一种实施方式中,使用插件解析所述SQL语句。例如,使用Java的插件JsqlParser将SQL语句中的各个关键词用Java类的形式进行对应解析,获取SQL语句对应的表名,字段,字段值等信息。图3示出了SQL语句解析后的数据结构。对每个交易的每个SQL语句都进行解析,获得全部SQL语句中的数据信息,解析后的SQL语句的数据结构如图3所示。下面给出了获取insert语句的表名、字段和字段值的示例代码。
进一步地,对于处理S2,使用字符串匹配的方式解析所述SQL语句。在本实施例的另一种实施方式中,在多个select语句嵌套或多表联合查询的情况下,使用JsqlParser无法解析出SQL语句的清晰结构。图4示出了使用字符串匹配的方式解析所述SQL语句的流程图,如图4所示,解析所述SQL语句的流程为:
S201:获取所述SQL语句涉及到的所有表的表名;
S202:根据所述表名获取所述表名对应的表的所有字段名;
S203:查找所述SQL语句中与所述字段名匹配的字符串;
S204:判断所述与字段名匹配的字符串后是否存在等号;
S205:若存在,则将所述字段名与所述等号后的值作为所述表名对应的所述SQL语句的字段值或where条件。
具体地,对于步骤S201,使用JsqlParser获取所述SQL语句涉及到的所有表的表名,然后对于获取到的所有表的表名,重复进行步骤S202到步骤S204。在SQL语句中出现等价式的情况下,将所述等价式转换为字段名=字段值的形式,例如:将字段1=字段2and字段1=abc的形式转换为:字段1=abc and字段2=abc的形式。对于SQL语句中出现where条件的情况,不解析where条件为非等号(大于小于号)的情况。
经过上述步骤S201~S204,最终SQL也解析为图3所示的数据结构形式。
进一步地,对于处理S3,在根据所述交易操作信息、交易操作元素和交易相关性判断规则获取交易之间的相关性的过程中,所述交易操作信息和交易操作元素以集合的形式存储。举例来说,可以使用类似redis(一种开源的,内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理)的内存数据库作为存储介质,利用所述内存数据库的非结构化、方便存储集合数据并进行集合运算、高效性以及方便分布式处理等特点,将解析后的SQL以集合的形式存储到redis中。在此存储过程中,每条SQL语句之间没有影响,将解析后的SQL语句的数据进行并发存储。例如,将日志文件分为多个子文件并发解析,将每个并发程序解析出的SQL语句的数据以集合的形式并发保存到redis中。
在存储的过程中,将交易操作信息作为集合名称,将交易操作元素作为集合内容,存储为第一集合,所述第一集合的集合名称为:表名-操作类型-交易编号-序号,所述第一集合的集合元素为字段值或where条件。同时,将相同表名的操作类型、交易编号、序号最大值存储到第二集合中,所述第二集合的集合名称为:表名,所述第二集合的集合元素为操作类型、交易编号、序号最大值。举例来说,将交易ABC的第一条SQL语句:insert into table1(column1,column2,column)values(11,22,33)对应的交易操作信息存储为第一集合,则该SQL语句对应的第一集合的集合名为table1-insert-ABC-1,集合元素为(column1=11,column2=22,column3=33)。同时,将涉及到同一表名的SQL语句对应的交易操作信息存储为第二集合,则该第二集合的集合名为table1,集合元素为(insert,ABC,100)、(select,DE33,160)(update,HF21,230)。示例中所示的第二集合table1{(insert,ABC,100),(select,DE33,160),(update,HF21,230)}表示对于表table1,存在insert操作类型的ABC交易,调用次数为100次,存在select操作类型的DE33交易,调用次数为160次,存在update操作类型的HF21交易,调用次数为230次。当交易ABC的SQL语句使用update语句时,其存储为两个第一集合,所述第一集合的一个集合的集合名为table1-update-ABC-where-1,其集合内容为where条件,另一个集合的集合名为table-update-ABC-column-1,集合内容为update语句中的字段名。当交易ABC的SQL语句使用select语句时,其存储为两个第一集合,所述第一集合的一个集合的集合名为table1-select-ABC-where-1,其集合内容为where条件,另一个集合的集合名为table-select-ABC-column-1,集合内容为select语句中的字段名。图5示出了处理S3的流程,根据图5,处理S3进一步包括:
S301:根据数据库操作的内在逻辑关系获取交易相关性判断规则;
S302:根据交易操作信息、交易操作元素及所述交易相关性判断规则计算交易相关性。
具体地,对于两个任意两个交易,若改变它们的执行顺序可能导致两个交易或其中一个交易执行后返回不同结果,则称两个交易相关。下面详细说明步骤S301。
根据每个交易对数据库增删查改操作的一般内在逻辑关系,获得的交易相关性判断规则如下:
规则1:对于两个交易,交易1和交易2,若满足如下条件:存在一条交易1调用到的某张表的insert语句SQL1,同时存在一条交易2调用到的同一张表的select或update或delete语句SQL2,且SQL1的字段值集合包含SQL2的where条件集合,则认为交易1和交易2相关。
例如如下两个交易的SQL语句:
交易1的SQL1:
insert into table1(column1,column2,column3)values(11,22,33);
交易2的SQL2:
select*from table1where column1=11and column2=22;
两个SQL操作同一张表table1,其中SQL1的字段值集合(column1=11,column2=22,column3=33)包含SQL2的where条件集合(column1=11,column2=22),则认为两个SQL语句对应的交易相关,从而认为交易1与交易2相关。
规则2:对于两个交易,交易1和交易2,若满足如下条件:存在一条交易1调用到的某张表的update语句SQL1,同时存在一条交易2调用到的同一张表的select语句SQL2,且SQL1中的字段名集合(不包括where条件中的字段名)与SQL2中的字段名集合(包括查询字段名和where条件中的字段名)的交集不为空,即两个集合中包含相同元素,则认为交易1和交易2相关。
例如如下两个SQL语句:
交易1的SQL1:
update table1set column1=11,column2=22where column3=33;
交易2的SQL2:
select column1from table1where column4=66;
两个SQL操作同一张表table1,其中SQL1的字段名集合(column1,column2)与SQL2的字段名和where条件中字段名的合并集合(column1,column4)具有共同的元素column1,即交集非空,则认为这两个SQL语句对应相关,从而认为交易1和交易2相关。
规则3:对于两个交易,交易1和交易2,若满足如下条件:存在一条交易1调用到的某张表的delete语句SQL1,同时存在一条交易2调用到的同一张表的select语句或update语句,则认为交易1和交易2相关。
例如如下两个SQL语句:
交易1的SQL1:
delete from table1where column2=22and column3=33;
交易2的SQL2:
select*from table1where column3=33;
两个SQL操作同一张表table1,认为两个SQL语句对应相关,从而认为交易1和交易2相关。
又例如如下两个SQL语句:
交易1的SQL1:
update table1set column2=22where column3=33;
交易2的SQL2:
delete from table1where column1=11and column3=33;
两个SQL操作同一张表table1,认为两个SQL语句对应相关,从而认为交易1和交易2相关。
对于数据库系统的select语句使用select*(*表示查询所有字段名)的情况,在使用本发明所述的交易相关性判断规则判断交易之间是否相关时,将*转义为所有字段名进行存储之后再进行所述判断。
获取交易相关性判断规则后,进行步骤S302。举例来说,对于第二集合中的表table1{(insert,ABC,100),(select,DE33,160),(update,HF21,230)}涉及到的交易计算交易ABC和交易DE33,计算两个交易之间相关性的处理如下:
A、对集合table1-insert-ABC-1到集合table1-insert-ABC-100循环;
B、对集合table1-select-DE33-1到集合table1-select-DE33-160循环;
C、交易ABC的操作类型为insert,交易DE33的操作类型为select,符合条件1,根据条件1,若查找到集合table1-insert-ABC-n的字段值集合包含table1-select-DE33-m的where条件集合,则交易ABC与交易DE33相关。
D、若循环结束,没有找到包含关系,则交易ABC与交易DE33不相关。
对于表table1涉及到的交易ABC和DE33,DE33和HF21,HF21和ABC,分别根据对交易的操作类型选取对应的交易相关性判断规则,按所述交易相关性判断规则判断交易的SQL语句对应的第一集合之间是否具有包含关系,进而获取交易之间的相关性。利用相同方式处理其余全部表,既可获得所有交易的相关性。
可选地,为提高集合运算的效率,对S3所述的计算过程进行并发处理。例如采用在redis上执行lua脚本的方式,一次脚本交互即可获得两个交易之间的相关性。
可选地,在S3计算交易相关性的过程中,利用集合计算公式计算交易之间的相关性。例如:利用集合计算A包含B,B包含C,可推出A包含C,集合计算中空集是任何集合的子集,优先计算空集,优先计算元素少的集合。
同时,在计算时,首先判断两个交易是否计算过相关性,如果已经计算过两个交易之间的相关性并且已经确认为相关,不再进行重复计算,来节省内存,减少运算量。因此对于数据量大的交易,采用分批计算,例如,将解析后的SQL数据分批导入redis进行计算来节省内存,同时,若部分数据计算已经可以确定交易之间具有相关性,则对所述交易对应的数据,无需进行全部导入计算。
通过本发明实施例提供的获取交易相关性的方法,能够使用自动化解决途径获得松耦合架构系统中交易服务的相关性,节省大量的人力资源。并且,获取的交易相关性能够让软件工程师对系统交易之间的关系有直观的认识,同时也为回归测试时交易的并发执行提供了依据。
本发明的实施例的第二方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有程序,所述程序在被计算设备(例如,计算机、处理器等)执行时实现前述实施例所述的获取交易相关性的方法。(更具体而言,实现该方法中的各个处理、步骤或逻辑)。
本发明实施例的第三方面提供一种执行回归测试的方法。图6示出了执行回归测试的方法流程图,如图6所示,所述方法包括:
S21:按照上述实施例所述的获取交易相关性的方法获取交易相关性;
S22:根据交易相关性,将具有相关性的交易集合内的交易报文按照发送时间排序,形成顺序队列;
S23:创建与所述顺序队列相对应的并发队列,将顺序队列中的交易报文依次放入并发队列中;
S24:根据交易相关性,判断并发队列中是否有与顺序队列中的出列报文直接相关的交易报文;
S25:若是,等待并发队列中与出列报文直接相关的交易报文发送完毕后,将所述出列报文依次放入并发队列中;若否,直接将所述出列报文依次放入并发队列中;
S36:将并发队列中的交易报文放入并发资源池,并发执行回归测试。
图7示出了根据本发明实施例的相关性交易集合无向图。如图7所示,相关性交易集合1、相关性交易集合2、相关性交易集合3之间没有连线,代表其表示的交易集合之间无相关性。图8示出了根据本发明实施例的并发队列结构。如图8所示,将图7中相关性交易集合内的交易报文按照发送时间排序,形成一个顺序队列,然后创建一个与所述顺序队列对应的并发队列,按照顺序将顺序队列中的交易报文依次放入并发队列,在放入时需满足如下条件:所述交易报文对应的交易没有相关交易存在于并发队列中。例如图7中相关性交易集合1,若并发队列中存在交易B和交易D的交易报文,对应的顺序队列中的出列报文为交易A的交易报文,交易A分别与交易B、交易D直接相关,则此时发生阻塞,直到并发队列中的交易B和交易D的交易报文发送完毕后,才将交易A的交易报文放入对应的并发队列。若并发队列中只存在交易E和交易F的报文,交易E、交易F与交易A都不相关,则可直接将交易A的交易报文放入并发队列中。
可选地,判断并发队列中有与顺序队列中的出列报文直接相关的交易报文之后,将并发队列中与出列报文直接相关的交易报文的发送优先级调高,优先发送所述与出列报文直接相关的交易报文,发送完毕后,将所述出列报文依次放入并发队列中。参考图7、图8,若并发队列中存在交易B和交易D的交易报文,对应的顺序队列中的出列报文为交易A的交易报文,交易A分别与交易B、交易D直接相关,则此时将并发队列中交易B和交易D的交易报文的发送优先级调高,优先发送交易B和交易D,使的顺序队列中交易A的交易报文能够更快的放入到并发队列中。以这种方式,提高了执行回归测试的并发度。
本发明的实施例的第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有程序,所述程序在被计算设备(例如,计算机、处理器等)执行时实现如前述实施例所述的执行回归测试的方法。(更具体而言,实现该方法中的各个处理、步骤或逻辑)。
本发明实施例的第五方面提供一种获取交易相关性的装置。图9示出了根据本发明实施例的获取交易相关性的装置示例框图,如图9所示,所述装置包括获取模块31,用于获取交易对应的SQL语句;解析模块32,用于解析所述SQL语句,获取交易操作信息和交易操作元素;计算模块33,用于根据所述交易操作信息和交易操作元素获取交易相关性。
进一步地,所述获取模块31根据交易执行的数据库存储过程获取交易对应的SQL语句。
具体地,交易操作信息包括表名、操作类型、交易编号、序号,所述交易操作元素包括字段名、字段值或where条件。
进一步地,所述解析模块32使用字符串匹配的方式解析所述SQL语句。
具体地,如图10所示,所述解析模块32包括:表名获取子模块321,用于获取所述SQL语句涉及到的所有表的表名;字段名获取子模块322,用于根据所述表名获取所述表名对应的表的所有字段名;查找子模块323,用于查找所述SQL中与所述字段名匹配的字符串;判断子模块324,用于执行下述操作:判断所述与字段名匹配的字符串后是否存在等号,若存在,则将所述字段名与所述等号后的值作为所述表名对应的所述SQL语句的where条件。
进一步地,在所述计算模块计算交易相关性的过程中,所述交易操作信息和交易操作元素以集合的形式存储。
具体地,如图11所示,所述计算模块33包括:判断规则获取子模块331,用于根据数据库操作的内在逻辑关系获取交易相关性判断规则;计算子模块332,用于根据所述交易相关性判断规则计算交易相关性。
可选地,所述计算模块33并发计算交易相关性。
可选地,所述计算模块33利用集合计算公式计算交易之间的相关性并且分批进行所述计算。
本发明实施例的第六方面提供一种执行回归测试的装置,图12示出了根据本发明实施例的执行回归测试装置的装置示例框图。所述装置包括:相关性获取模块41,用于根据本发明获取交易相关性的方法获取交易相关性;顺序模块42,根据交易相关性将具有相关性的交易集合内的交易报文按照发送时间排序,形成顺序队列;并发模块43,用于创建并发队列,按照顺序从顺序队列中接收交易报文,放入并发队列中;判断模块44,用于根据交易相关性判断并发队列中是否有与顺序队列中的出列报文直接相关的交易报文;执行模块46,用于将并发队列中的交易报文放入并发资源池,执行回归测试。
进一步地,所述执行回归测试的装置还包括:优先级调节模块45,用于将并发队列中所述与顺序队列中的出列报文相关的交易报文的优先级调高,优先发送所述与出列报文直接相关的交易报文。
所述领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置、模块的具体工作过程,可以参考前述方法实施例中对应的过程,在此不再赘述。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本领域技术人员应当理解,以上所公开的仅为本发明的实施方式而已,当然不能以此来限定本发明之权利范围,依本发明实施方式所作的等同变化,仍属本发明权利要求所涵盖的范围。
Claims (21)
1.一种执行回归测试的方法,其特征在于,包括:
获取交易相关性;
根据交易相关性,将具有相关性的交易集合内的交易报文按照发送时间排序,形成顺序队列;
创建与所述顺序队列相对应的并发队列,将顺序队列中的交易报文依次放入并发队列中;
根据交易相关性,判断并发队列中是否有与顺序队列中的出列报文直接相关的交易报文;若是,等待并发队列中与出列报文直接相关的交易报文发送完毕后,将所述出列报文依次放入并发队列中;若否,直接将所述出列报文依次放入并发队列中;
将并发队列中的交易报文放入并发资源池中,并发执行回归测试;
其中,获取交易相关性包括:
获取交易对应的SQL语句;
解析所述SQL语句,获取交易操作信息和交易操作元素;
根据所述交易操作信息、交易操作元素和交易相关性判断规则获取交易相关性。
2.根据权利要求1所述的方法,其特征在于,判断并发队列中有与顺序队列中的出列报文直接相关的交易报文之后,
将并发队列中与出列报文直接相关的交易报文的发送优先级调高,优先发送所述与出列报文直接相关的交易报文,发送完毕后,将所述出列报文依次放入并发队列中。
3.根据权利要求1所述的方法,其特征在于,所述获取交易对应的SQL语句包括:根据交易执行的数据库存储过程获取交易对应的SQL语句。
4.根据权利要求1所述的方法,其特征在于,所述交易操作信息包括表名、操作类型、交易编号、序号,所述交易操作元素包括字段名、字段值或where条件。
5.根据权利要求4所述的方法,其特征在于,解析所述SQL语句包括:使用字符串匹配的方式解析所述SQL语句。
6.根据权利要求5所述的方法,其特征在于,所述使用字符串匹配的方式解析所述SQL语句包括:
获取所述SQL语句涉及到的所有表的表名;
根据所述表名获取所述表名对应的表的所有字段名;
查找所述SQL语句中与所述字段名匹配的字符串;
判断与所述字段名匹配的字符串后是否存在等号,若存在,则将所述字段名与所述等号后的值作为所述表名对应的所述SQL语句的where条件。
7.根据权利要求1所述的方法,其特征在于,在根据所述交易操作信息、交易操作元素和交易相关性判断规则获取交易之间的相关性的过程中,所述交易操作信息和所述交易操作元素以集合的形式存储。
8.根据权利要求7所述的方法,根据所述交易操作信息、交易操作元素和交易相关性判断规则获取交易之间的相关性包括:
根据数据库操作内在逻辑关系获取交易相关性判断规则;
根据所述交易相关性判断规则、所述交易操作信息和所述交易操作元素计算交易相关性。
9.根据权利要求8所述的方法,其特征在于,在计算交易相关性的过程中,对所述计算过程进行并发处理。
10.根据权利要求8所述的方法,其特征在于,在计算交易相关性的过程中,利用集合计算公式计算交易之间的相关性并且分批进行所述计算。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行以实现权利要求1至10任意一项所述的方法的步骤。
12.一种执行回归测试的装置,其特征在于,所述装置包括:
相关性获取模块,用于获取交易相关性;
顺序模块,根据交易相关性将具有相关性的交易集合内的交易报文按照发送时间排序,形成顺序队列;
并发模块,用于创建并发队列,按照顺序从顺序队列中接收交易报文,放入并发队列中;
判断模块,用于根据交易相关性判断并发队列中是否有与顺序队列中的出列报文直接相关的交易报文;
执行模块,用于将并发队列中的交易报文放入并发资源池中,并发执行回归测试;
其中,获取交易相关性包括:
获取交易对应的SQL语句;
解析所述SQL语句,获取交易操作信息和交易操作元素;
根据所述交易操作信息、交易操作元素和交易相关性判断规则获取交易相关性。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括:优先级调节模块,用于将并发队列中与顺序队列中的出列报文直接相关的交易报文的优先级调高,优先发送与出列报文直接相关的交易报文。
14.根据权利要求12所述的装置,其特征在于,所述获取交易对应的SQL语句包括:根据交易执行的数据库存储过程获取交易对应的SQL语句。
15.根据权利要求12所述的装置,其特征在于,所述交易操作信息包括表名、操作类型、交易编号、序号,所述交易操作元素包括字段名、字段值或where条件。
16.根据权利要求15所述的装置,其特征在于,解析所述SQL语句包括:使用字符串匹配的方式解析所述SQL语句。
17.根据权利要求16所述的装置,其特征在于,所述使用字符串匹配的方式解析所述SQL语句包括:
获取所述SQL语句涉及到的所有表的表名;
根据所述表名获取所述表名对应的表的所有字段名;
查找所述SQL语句中与所述字段名匹配的字符串;
判断与所述字段名匹配的字符串后是否存在等号,若存在,则将所述字段名与所述等号后的值作为所述表名对应的所述SQL语句的where条件。
18.根据权利要求12所述的装置,其特征在于,在根据所述交易操作信息、交易操作元素和交易相关性判断规则获取交易之间的相关性的过程中,所述交易操作信息和所述交易操作元素以集合的形式存储。
19.根据权利要求18所述的装置,根据所述交易操作信息、交易操作元素和交易相关性判断规则获取交易之间的相关性包括:
根据数据库操作内在逻辑关系获取交易相关性判断规则;
根据所述交易相关性判断规则、所述交易操作信息和所述交易操作元素计算交易相关性。
20.根据权利要求19所述的装置,其特征在于,在计算交易相关性的过程中,对所述计算过程进行并发处理。
21.根据权利要求19所述的装置,其特征在于,在计算交易相关性的过程中,利用集合计算公式计算交易之间的相关性并且分批进行所述计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810532064.4A CN108763474B (zh) | 2018-05-29 | 2018-05-29 | 获取交易相关性及执行回归测试的方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810532064.4A CN108763474B (zh) | 2018-05-29 | 2018-05-29 | 获取交易相关性及执行回归测试的方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108763474A CN108763474A (zh) | 2018-11-06 |
CN108763474B true CN108763474B (zh) | 2021-10-22 |
Family
ID=64003597
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810532064.4A Active CN108763474B (zh) | 2018-05-29 | 2018-05-29 | 获取交易相关性及执行回归测试的方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108763474B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110659517A (zh) * | 2019-08-30 | 2020-01-07 | 深圳壹账通智能科技有限公司 | 数据验证方法、装置、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105825428A (zh) * | 2016-04-22 | 2016-08-03 | 中国农业银行股份有限公司 | 一种面向商业银行的生产模拟测试方法和系统 |
CN106294565A (zh) * | 2016-07-27 | 2017-01-04 | 中国农业银行股份有限公司 | 一种数据库访问方法及系统 |
CN106330987A (zh) * | 2015-06-15 | 2017-01-11 | 交通银行股份有限公司 | 动态负荷均衡方法 |
CN106980670A (zh) * | 2017-03-23 | 2017-07-25 | 深圳市证通电子股份有限公司 | 交易报文生成方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8056141B2 (en) * | 2006-09-13 | 2011-11-08 | Imperva, Inc. | Method for monitoring stored procedures |
-
2018
- 2018-05-29 CN CN201810532064.4A patent/CN108763474B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106330987A (zh) * | 2015-06-15 | 2017-01-11 | 交通银行股份有限公司 | 动态负荷均衡方法 |
CN105825428A (zh) * | 2016-04-22 | 2016-08-03 | 中国农业银行股份有限公司 | 一种面向商业银行的生产模拟测试方法和系统 |
CN106294565A (zh) * | 2016-07-27 | 2017-01-04 | 中国农业银行股份有限公司 | 一种数据库访问方法及系统 |
CN106980670A (zh) * | 2017-03-23 | 2017-07-25 | 深圳市证通电子股份有限公司 | 交易报文生成方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108763474A (zh) | 2018-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180032375A1 (en) | Data Processing Method and Apparatus | |
CN108984155B (zh) | 数据处理流程设定方法和装置 | |
US8904352B2 (en) | Systems and methods for processing source code during debugging operations | |
GB2508503A (en) | Batch evaluation of remote method calls to an object oriented database | |
CN108052394A (zh) | 基于sql语句运行时间的资源分配的方法及计算机设备 | |
CN110427188B (zh) | 单测断言程序的配置方法、装置、设备及存储介质 | |
CN109710220B (zh) | 关系型数据库查询方法、装置、设备及存储介质 | |
US11132363B2 (en) | Distributed computing framework and distributed computing method | |
CN112883030A (zh) | 数据收集方法、装置、计算机设备和存储介质 | |
CN111427784B (zh) | 一种数据获取方法、装置、设备及存储介质 | |
CN106202323B (zh) | 一种日志的处理方法和装置 | |
US20140156696A1 (en) | Dynamic generation of database queries in query builders | |
CN117076719A (zh) | 一种基于大语言模型的数据库联合查询方法、装置和设备 | |
CN110704472A (zh) | 数据查询统计方法及装置 | |
CN108763474B (zh) | 获取交易相关性及执行回归测试的方法、装置及存储介质 | |
CN111221888A (zh) | 大数据分析系统及方法 | |
CN110580170B (zh) | 软件性能风险的识别方法及装置 | |
US10606728B2 (en) | Framework for detecting source code anomalies | |
CN116049232A (zh) | 一种子查询抽取方法、装置、电子设备和存储介质 | |
CN115857918A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113495723B (zh) | 一种调用功能组件的方法、装置及存储介质 | |
CN111159213A (zh) | 一种数据查询方法、装置、系统和存储介质 | |
CN110515653B (zh) | 文档生成方法、装置、电子设备及计算机可读存储介质 | |
CN110895529B (zh) | 结构化查询语言的处理方法及相关装置 | |
CN113448985A (zh) | 一种api接口生成方法、调用方法、装置及电子设备 |
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 |