CN113434388A - 一种模型驱动的事务型数据库测试案例生成系统及方法 - Google Patents
一种模型驱动的事务型数据库测试案例生成系统及方法 Download PDFInfo
- Publication number
- CN113434388A CN113434388A CN202110614992.7A CN202110614992A CN113434388A CN 113434388 A CN113434388 A CN 113434388A CN 202110614992 A CN202110614992 A CN 202110614992A CN 113434388 A CN113434388 A CN 113434388A
- Authority
- CN
- China
- Prior art keywords
- database
- model
- driven
- data
- transaction
- 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
Images
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/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种模型驱动的事务型数据库测试案例生成系统,模型驱动的数据库模式生成器、模型驱动的数据生成器和模型驱动的事务生成器基于随机模型展开对应的生成任务;以模型驱动的方法生成测试案例特征项,并生成测试案例;模型驱动的数据库模式生成器生成合法有效的数据库模式;模型驱动的数据生成器基于生成数据蓝图,包括初始化数据技术以及动态数据库状态缩影描绘技术,支持生成合法有效的事务;生成蓝图定义测试过程中使用的数据以及数据分布;状态缩影技术追踪数据库的状态变迁;模型驱动的事务生成器生成事务模板并调用模型驱动的数据生成器实例化随机事务模板;测试事务加载器将实例化之后的事务加载到数据库中执行并记录负载轨迹。
Description
技术领域
本发明属于计算机技术领域,涉及一种模型驱动的事务型数据库测试案例生成系统及方法。
背景技术
从概念的提出至今,数据库系统已经经历了半个多世纪的发展。作为重要的系统软件,数据库系统通过提供数据存储、事务处理和查询优化等功能,使得应用程序员方便、高效地实现业务逻辑,无需关心底层复杂的数据保存、数据一致性和数据访问的细节实现逻辑,极大地推动了互联网行业的发展。互联网行业的发展也反向推动了数据管理系统的发展,满足不同应用需求的新型数据管理系统不断出现,包括众多的NoSQL系统和NewSQL系统,目前已知的数据管理系统已超过745个[1]。版本快速迭代给数据管理系统的测试工作带来了新的挑战。
传统手工编写测试案例的测试方法无法适应时下版本快速迭代的数据管理系统,存在如下局限性:第一,数据管理系统的输入空间复杂且庞大,比如对于关系数据库而言,支持众多的SQL语句、支持由SQL语句组成的事务、支持事务并行的执行,使用手工编写测试案例的方法面对如此庞大的输入空间导致测试效率极其低下;第二,数据库系统的版本更迭速度极快,使用手工编写测试案例的方法无法追赶上快速的版本更迭,即新版本的新特性难以加入到已有的测试案例中;第三,手工编写测试存在测试不充分问题,手工编写测试容易因为疏忽大意导致数据管理系统存在功能Bug,严重影响线上的应用业务。因此,对于数据库系统,目前急需自动化生成充分有效的测试案例的相关方法。
传统的OLTP基准测试,如TPC-C[2],只提取应用程序工作负载中最具代表性的部分,以便在不同的数据库系统之间进行公平的性能测试。测试案例的自动化生成技术是对当前数据库系统测试工作的有力补充,但是目前相关技术还远无法满足如今的测试需求。RAGS[3]是已知最早的测试SQL随机生成器,主要服务于Microsoft SQL Server的测试工作。RAGS可以根据已有测试数据库的模式信息,生成大量满足SQL语法的随机测试负载,包含Select语句和Update语句。尽管RAGS能够自动生成很多的测试SQL语句,但是生成的SQL大部分是无效的测试SQL,即无法测试数据库系统底层的代码逻辑,特别是事务相关的代码逻辑。GARan[4]在生成随机测试案例的过程中,根据测试案例在数据库上的执行反馈,利用遗传算法生成更符合预期的测试案例,提高针对特定数据库模块测试的代码覆盖率。然而,GARan仅聚焦于单条SQL语句的测试,无法生成并行处理的测试案例去测试数据库的事务功能。
为了更加充分地对数据库系统的事务功能进行测试,包括性能测试和功能测试,有必要提出一种面向主流关系模型的有效事务型数据库测试案例的技术。
发明内容
本发明将从模型驱动的角度出发分析如何实现有效的事务型数据库系统功能测试评估;将对该问题进行剖析并给出解决方案。本发明的目的可概括为:生成有效事务型数据库测试案例,对数据库系统的功能和性能进行更充分的测试。关键问题主要有:在复杂庞大的数据库代码规模下,如何自动化生成全面且可控的事务型数据库测试案例;在数据库动态变化的情况下,如何生成有效的事务型数据库测试案例。
本发明提出了一种模型驱动的事务型数据库测试案例生成系统,即Orca系统,Orca主要包含四个功能模块,即模型驱动的数据库模式生成器、模型驱动的数据生成器、模型驱动的事务生成器、测试事务加载器;
其中,所述模型驱动的数据库模式生成器、模型驱动的数据生成器和模型驱动的事务生成器都基于随机模型开展对应的生成任务;所述随机模型以模型驱动的方法生成测试案例特征项,基于这些特征项可以生成一个完整的测试案例;
其中,所述随机模型中的特征项按照<seed,distribution>的形式定义,其中seed表示采样的候选种子池,distribution表示采样的分布;所述模式生成器的随机模型中的特征项包括模式中表的数目、主键属性列的长度、外键长度和外键数目等;所述数据生成器的随机模型中的特征项包括数据量、每种数据类型的候选数据值以及数据分布等;所述事务生成器的随机模型的特征项包括事务长度、事务中操作的比例等;
所述模型驱动的数据库模式生成器负责基于数据库对象之间的依赖关系随机生成合法有效的数据库模式;所述模型驱动的数据生成器负责基于生成蓝图,包括初始化数据技术以及动态数据库状态缩影描绘技术,生成合法有效的事务;所述生成蓝图定义了测试过程中使用的数据以及数据分布;所述状态缩影描绘技术无需完整保存数据库状态,可以利用统计分布和数据分区的方法,以极低的时间和空间开销追踪数据库的状态变迁,使得空间复杂度为O(M)而不是O(N),其中M为用户自定义的有界值,N为数据库中的数据量;所述模型驱动的事务生成器负责随机生成事务模板并调用模型驱动的数据生成器实例化随机事务模板;所述测试事务加载器将实例化之后的事务加载到数据库中执行并记录负载轨迹。
本发明中,所述模型驱动的数据库模式生成器中,基于具体数据库的适配器和数据库对象之间的依赖关系生成满足语法和语义要求的数据库模式,其随机模型特征项包括:表的特征,完整性约束特征,索引特征,视图特征等。
本发明中,模型驱动的数据库模式生成器:以二元组<seed,distribution>的形式定义测试数据库表的规模以及分布,每张表的属性规模以及分布,索引的分布,属性类型的分布以及关系完整性约束分布等。模式生成器的随机模型中的特征项包括模式中表的数目、主键属性列的长度、外键长度和外键数目等,并且在随机生成的过程中保证数据库对象之间的依赖关系,从而生成语义上正确的数据库模式,最后适配具体的数据库语法生成合法有效的数据库模式。
本发明中,模型驱动的数据生成器:其负责基于生成蓝图函数式生成初始化数据以及基于状态缩影描绘技术动态生成有效的事务模板参数,从而实现可重复性、可计算性和可追踪性这三点数据生成要求。
本发明中,所述模型驱动的数据生成器基于生成蓝图和状态缩影描绘技术,生成测试过程中使用的数据,以极低的代价保证测试的可重复性、数据库状态的可追踪性。
本发明中,生成蓝图:包括主键数据分布、外键数据分布、非主键值属性数据分布和数据值生成参数,这些分布和参数都是通过随机模型中配置项进行随机抽样确定的,保证测试的可控性和随机性。生成蓝图定义了虚拟列,虚拟列中给出属性的逻辑值,从虚拟列出发构造主键以及非主键值属性对虚拟列的参照关系,前者为双射关系,即虚拟列与主键列可一一对应,后者是单射关系,即虚拟列确定非主键值,但反向计算,即非主键值不能确定虚拟列。虚拟列的引入以及双射和单射的关系极大降低测试案例的迁移成本、使得测试案例中使用的数据可重复。保留这些参数和函数即可实现迁移测试,而无需实际保留每一个真实数据,实现函数式初始数据库实例的生成。另外,为了加速数据生成,在初始数据库生成实例生成过程中引入虚拟列,生成数据的过程中将数据表主键值域划分成多个不相交的区间,每个区间指派给一个数据生成线程。
本发明中,定义访问分布与数据库修订分布的一致性,状态缩影技描绘术利用统计分布和分区算法降低追踪数据库状态变迁的开销,采用了高效的并发控制机制,并且自动处理死锁,从而使得在数据库状态变迁在满足给定分布的情况下实现有效事务型数据库测试案例的生成。
本发明中,基于状态缩影的事务模板实例化技术:由于关系型数据库在处理主键、外键和非主键值属性组存在完整性约束上的差别,那么事务生成时也需要考虑不同的完整性约束,才能保证生成有效操作。对于主键数据,由于存在唯一性约束,本发明采用分区算法技术将主键数据,划分为三类分区,从而降低追踪主键数据时的空间开销;对于外键和非主键值属性组,本发明利用数据统计分布追踪数据库状态,极大地降低了追踪数据库的时间和空间开销。为了降低空间开销和方便实现指定的访问分布,本发明为主键、外键和非主键值属性组引入逻辑值和真实值的概念。
本发明中,所述模型驱动的事务生成器中,利用传统自动机技术生成事务模板,基于状态缩影将事务模板进行实例化,生成一个合法有效的事务实例。
本发明中,逻辑值:即虚拟列的值空间实例,服务于生成事务型数据库测试案例,方便实现自定义访问分布和降低系统的运行内存开销,当数据需要导入数据库时,将逻辑值单射地转换成真实值导入到数据库中,从而达到数据生成的全面性和可控性的目的。所述真实值是指实际导入到数据库中的数据,所述逻辑值是指数据在测试案例生成系统中的逻辑表示,实现测试案例在数据生成方面的随机性;通过生成蓝图使得逻辑值和真实值存在一对一的映射关系。
本发明中,初始化数据生成:数据库模式中含有多张数据表,将数据表主键值域划分成多个不相交的区间,每个区间指派给一个数据生成线程;对于数据表中每一条记录的生成,首先,数据生成线程根据被指派的主键区间,按序获取一个逻辑主键值;然后,数据生成线程依次调用满足分布需求的外键属性和非主键值属性的生成函数并传入当前记录的逻辑主键值,得到对应的逻辑值外键值和逻辑非主键值;最后数据生成线程将逻辑主键值、逻辑外键值和逻辑非主键值转换成真实值并组装成一条记录异步写入文本持久化保存,使用数据库导入数据的命令完成初始化数据库的任务。
本发明中,模型驱动的事务生成器:利用已有自动机技术生成SQL模板,将这些SQL语句根据指定的随机模型组合成事务模板。
本发明中,测试事务加载器:基于状态缩影生成事务参数实现事务提交和状态缩影维护原子等价执行,从而在数据库不确定性调度事务的条件下,使得状态缩影能够实时追踪数据库的状态变迁,从而生成有效的事务,并且支持动态变化加载的线程数和加载频率。其随机模型特征项进一步包括:测试线程数、测试线程加载事务数、事务加载策略和负载轨迹记录策略等,其中测试线程数和测试线程加载事务数允许在运行过程中动态变化。
基于以上系统,本发明还提出了一种模型驱动的事务型数据库测试案例生成方法,所述方法包括以下步骤:
步骤1:基于随机模型开展对应的生成任务,所述随机模型以模型驱动的方法生成测试案例特征项,基于所述测试案例特征项生成完整的测试案例;
步骤2:随机生成合法有效的数据库模式;
步骤3:基于生成蓝图,包括初始化数据技术以及动态数据库状态缩影描绘技术,生成合法有效的事务;所述生成蓝图定义测试过程中使用的数据以及数据分布;所述状态缩影描绘技术追踪数据库的状态变迁;
步骤4:随机生成事务模板并调用模型驱动的数据生成器实例化事务模板;
步骤5:将实例化之后的事务加载到数据库中执行并记录负载轨迹。
本发明的有益效果包括:本发明提出的模型驱动的事务型数据库测试案例生成系统及方法,能够以可控制的方式、自动化地生成面向现今主流的关系型数据库的有效测试案例,以期望的方式访问数据库底层的数据,并且支持生成动态运行的可扩展事务负载。系统生成测试案例的过程中基于数学函数实现数据分区和统计分布,从而保证空间系统代价有界。另外,由于采用自动化生成技术,可以高效地生成大量不同的测试案例,有较高的代码覆盖度,从而帮助数据库开发者和使用者满足不同场景的测试需求。
附图说明
图1是本发明Orca系统架构图。
图2是本发明数据库模式生成例子示意图。
图3是本发明有效性测试示意图。
图4是本发明读操作访问分布测试示意图。
图5是本发明写操作访问分布测试示意图。
图6是本发明代码覆盖度测试示意图。
图7是本发明数据库模式生成速度测试示意图。
图8是本发明生成初始化数据速度测试示意图。
图9是本发明生成初始化数据空间消耗测试示意图。
具体实施方式
结合以下具体实施例和附图,对发明作进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。
本发明的基本架构:为了有效解决事务型数据库测试案例的自动化生成问题,本发明设计并实现了Orca系统,图1为其系统架构图。从图中可知,Orca主要包含四个功能模块,即模型驱动的数据库模式生成器、模型驱动的数据生成器、模型驱动的事务生成器、测试事务加载器;所述模型驱动的数据库模式生成器、模型驱动的数据生成器和模型驱动的事务生成器都基于随机模型开展对应的生成任务;所述随机模型以模型驱动的方法生成测试案例特征项,基于这些特征项可以生成一个完整的测试案例;
其中,所述随机模型中的特征项按照<seed,distribution>的形式定义,其中seed表示采样的候选种子池,distribution表示采样的分布;所述模式生成器的随机模型中的特征项包括模式中表的数目、主键属性列的长度、外键长度和外键数目等;所述数据生成器的随机模型中的特征项包括数据量、每种数据类型的候选数据值以及数据分布等;所述事务生成器的随机模型的特征项包括事务长度、事务中操作的比例等;
所述模型驱动的数据库模式生成器负责基于数据库对象之间的依赖关系随机生成合法有效的数据库模式;所述模型驱动的数据生成器负责基于生成蓝图,包括初始化数据技术以及动态数据库状态缩影描绘技术,生成合法有效的事务;所述生成蓝图定义了测试过程中使用的数据以及数据分布;所述状态缩影技术无需完整保存数据库状态,可以利用统计分布和数据分区的方法,以极低的时间和空间开销追踪数据库的状态变迁,使得空间复杂度为O(M)而不是O(N),其中M为用户自定义的有界值,N为数据库中的数据量;所述模型驱动的事务生成器负责生成事务模板并调用模型驱动的数据生成器实例化随机事务模板;所述测试事务加载器将实例化之后的事务加载到数据库中执行并记录负载轨迹。
Orca保存模型驱动的数据库模式生成器生成的随机数据库模式、保存模型驱动的事务生成器生成的随机事务模板在测试案例库中以作回归测试和对比测试之用。在测试事务加载方面,由于数据库调度事务是不确定性的,无法通过保存每一个测试事务实例进行重复测试,因此,Orca选择保存测试事务加载器加载事务的顺序,尽最大可能复现测试案例的策略。在数据生成方面,本发明选择只保存生成器而非保存测试数据库实例,原因在于测试数据库可能需要占用巨大的存储空间,使得测试案例库的维护和管理变得困难。比如,当需要拷贝测试案例库到另一个数据中心测试时,占用巨大存储空间的测试数据库会使整个传输过程异常漫长。此外,为了实现测试过程的可重复性,Orca中基于数据库模式的初始测试数据库实例生成是基于虚拟列确定的,即同一个测试案例中多次执行生成,测试初始数据库实例是完全相同的,因此,保存随机数据生成器可实现重复测试。
本发明模型驱动的数据库模式的生成:数据库模式是数据库中所有数据逻辑结构和特征的描述,往往由一组存在依赖关系的数据库对象组成。测试数据库模式在一定程度上决定了该测试数据库上可能出现的事务负载类型,因此为了能够生成更加全面的随机事务负载,以实现更充分的数据库系统测试,Orca生成的数据库模式要求类型丰富,能够覆盖主流的数据库应用。数据库模式常见的随机模型特征项包括:表的特征,完整性约束特征,索引特征,视图特征等。模型中以二元组<seed,distribution>的形式定义测试数据库表的规模以及分布,每张表的属性规模以及分布,索引的分布,属性类型的分布以及关系完整性约束分布等。随机模型里面的特征可以自由添加和删除。比如数据表规模的随机模型:<(3,10),Zipf[1.2]>表示从区间[3,10)中按照Skew=1.2的Zipf访问分布抽样确定数据表数目,分布可以是zipf,normal,uniform,gauss等。
为了保证生成的数据库模式合法有效,Orca基于上述随机模型配置项实例化每一个数据库对象,实例化的顺序严格按照数据库对象之间的依赖关系进行,从而保证生成的数据库模式合法有效,图2展示了一个生成数据库模式的例子,具体来说按以下步骤随机生成数据库模式:
步骤1:抽样确定数据表的数目,对每一张数据表完成步骤2。
步骤2:抽样确定主键属性列数目和类型,抽样确定外键数目和外键参考表,抽样确定非主键值属性组数目、长度和属性列的数据类型,抽样确定数据表上的索引。确定表上的索引项。
步骤3:抽样确定视图的数目,对每一张视图完成步骤4。
步骤4:采用在外键参考依赖图中的随机游走算法确定视图中的连接,具体来说,抽样确定视图中参与连接的第一张表,迭代抽样视图中参与连接的下一张表,直到到达指定长度为止。
本发明模型驱动的数据生成:第一,为了保证测试过程的可重复性,要求初始化数据生成是确定的。因为如果初始化数据的生成是非确定的,每次生成的测试案例存在较大的差异,从而难以保证多次测试结果的一致性;同时如果初始化数据是非确定的,因为理想执行结果无从得知。因此,非主键属性需要依据主键值函数式计算生成,但同时需要保证数据的随机性。第二,由于事务型负载执行的不确定性,即不断修改数据库的状态且状态的迁移具有不确定性。不同于面向应用的事务负载,随机事务负载中不存在事务逻辑,因此,在生成事务模板参数时需要追踪数据库的状态变迁,从而能够生成有效的测试负载。第三,为了缓解数据本身规模过大带来的内存和I/O开销,本发明在数据生成时使用虚拟列和逻辑值的概念,当数据需要导入数据库时将逻辑值函数式计算成真实值,真实值也可以函数式计算成逻辑值。引入逻辑值的概念,也方便实现特定的访问分布和数据分布。其中主键上的值与虚拟列的值是双射的,而非主键的值与虚拟列的值按照分布构建单射,即从虚拟列能计算得到唯一属性值,反之不存在唯一对应关系。
为了实现上述三点数据生成要求,本发明设计了基于生成蓝图的随机数据生成策略和基于状态缩影的事务模板实例化技术。
表1:数据生成蓝图
本发明定义了如表1所示的数据生成蓝图,包含一系列参数和函数组成,定义了测试过程中使用的数据,这些参数和函数是通过随机模型中配置项进行随机抽样确定的,保证测试的可控性和随机性,保留这些参数和函数即可实现迁移测试,而无需实际保留每一个真实数据。关系数据库对不同的数据有不同的完整性约束,因此,对主键(PK)、外键(FK)、非主键值属性组(NKG)分别定义一套参数和函数。为了降低空间开销和方便实现指定的访问分布,本发明为主键、外键和非主键值属性组引入逻辑值和真实值的概念,分别为LPK、LFK、LNKG、RPK、RFK和RNKG。
对主键,Capacity定义了数据表的最大容量,即数据表中最多支持的记录数目,LPK固定取值为[0,N);Partition(LPK)定义了数据表的分区算法,包括三类分区,第一类,静态区,不支持删除操作的区域,第二类,待删除动态区,支持删除操作的区域,第三类,待插入动态区,支持插入操作的区域;Origin、Step和PKF(LPK)定义了LPK和RPK的双射关系,转换方式采用直线等距抽样算法,保证了RPK的唯一性、可计算性和随机性。
对外键,外键在取值上等价于主键,因此LFK和RFK的双射关系等价于LPK和RPK的转换规则;DataDistribution(LPK)定义了基于LPK生成函数式外键初始值的规则,同时保证数据存在指定的数据分布;DataDistribution()定义了动态数据生成过程中的外键数据分布,必须等同于DataDistribution(LPK)中指定的数据分布,保证数据分布保持稳定不变,从而有利于追踪数据库的状态变迁。
对非主键值属性组,DataDistribution(LPK)定义了基于LPK生成函数式非主键值属性组初始值的规则,同时保证数据存在指定的数据分布;DataDistribution()定义了动态数据生成过程中的非主键值属性组数据分布,必须等同于DataDistribution(LPK)中指定的数据分布,保证数据分布保持稳定不变,从而有利于追踪数据库的状态变迁;NKF(LNKG)和ReadValueList(Index)定义了Pseudo LNKG和RNKG的双射关系,这里采用了一对一直接映射的方式完成转换,并且不影响降低内存和I\O开销的目的,基于LNKG任然方便使得特定的数据分布和访问分布。
主键、外键和非主键值属性组都有定义AccessDistribution(),其用于定义相关操作的访问分布。
如果为每一张数据表的每一个主键、外键和非主键值属性组都设置一个数据生成蓝本,那么保存蓝本本身的空间复杂度为O(N*M),其中N为数据表的数目,M为数据表中平均属性列数目。为了降低保存数据生成蓝本的空间开销,本发明采用资源池化的方式解决这个问题,即在资源池中保存指定数目的数据生成蓝本,数据库模式中的数据表复用资源池中的数据生成蓝本,那么保存数据生成蓝本的空间开销仅取决于资源池的大小。
本发明初始化数据库:由于测试需求,往往指定测试数据库具有庞大的数据量,因此测试数据库的并行生成是对Orca的基本要求。在数据库模式生成之后,会依据模式生成相应的测试初始化数据。在一个数据库模式中,一般会含有多张数据表,虽然数据表之间可能存在主外键参照关系,但是外键的生成机制并不依赖参照主键的生成,所以不同数据表的生成是可以完全并行的。对于同一个数据表,因为每条记录的生成是独立的,所以可以将数据表主键值域划分成多个不相交的区间,每个区间指派给集群上的一个数据生成线程,从而实现单个数据表的并行数据生成。
数据表中一条记录的生成主要分为如下三个步骤:
步骤1:数据生成线程根据被指派的主键区间,基于分区算法决定是否初始化某条记录,再将LPK转化成RPK。
步骤2:数据生成线程依次调用外键属性生成器和非主键值组属性器基于逻辑值函数式转换成真实值即为该条记录相应属性的生成值,从而保证初始数据函数式生成。
步骤3:数据生成线程将主键值、外键属性值和非主键值属性值的生成值组装成一条记录并异步写入文本中。
可以看出,记录的生成是流式的,生成一条记录就可以写出一条记录,不需要维护中间状态,内存占用小。同时,为了避免多线程在写文件上的冲突,Orca中每个数据生成线程都会有独立的输出文件。待测试数据库实例完全生成之后,Orca可利用目标数据库系统的数据导入功能按照数据表的参照拓扑序依次将数据表导入。总而言之,测试数据库实例可以实现多节点多线程完全并行的数据生成,以及利用流式的记录生成机制实现了数据生成过程的低内存消耗。
本发明希望生成随机的事务,对数据库进行更加充分地测试,弥补传统benchmark在功能测试上的缺陷。随机的事务表现在三个方面,事务的长度是随机的,事务中操作的类型是随机的,操作中的各类参数是随机的。然而,不同于传统benchmark中严格定义的事务,随机生成的事务不存在内部逻辑,如果事务中的访问参数采取盲目地随机生成会引发以下这个问题:事务中的操作无法深入到数据库的事务引擎,即无效操作。显然,这样的无效操作无法对数据库的深层代码逻辑进行测试。
本发明给出有效操作的定义:读操作,删除操作和更新操作的访问参数对应的数据一定在数据库中有存在的可能性,且概率尽可能大;插入操作对应的访问参数一定在数据库中有不存在的可能性,且概率尽可能大;插入操作和更新操作对应的数据参数满足关系数据库的完整性约束条件。
因此,为了解决无效操作的问题,本发明设计了基于状态缩影的事务生成技术,从而在保证操作随机性的情况下,使得操作访问参数的有效并且有效性程度可以控制,同时可以按照一定的访问分布选择访问参数,也有利于冲突控制,同时时间开销和空间开销在合理的范围内。
由于事务的调度在数据库中存在不确定性,即同样的负载施加在数据库上可能产生不同的结果。Orca通过数据状态缩影描绘技术追踪数据库的实时状态,从而使得操作有效。
表2:数据库状态缩影
本发明设计了如表2所示的状态缩影技术:由于关系型数据库在处理主键、外键和非主键值属性组存在完整性约束上的差别,那么事务模板参数生成时也需要考虑不同的完整性约束,才能保证生成有效操作。因此,表2分主键、外键和非主键值属性组分别进行讨论。
对主键而言,Orca通过分区算法,将LPK划分为三类,第一类,静态区,静态区记录在负载执行过程中不会被修改保持稳定存在,那么对于静态区记录不需要物理地维护每一个记录;第二类,待删除动态区,在初始化数据库时,这一类记录需要插入到数据库中,负载运行过程中支持对待删除动态区的删除操作;第三类,待插入动态区,在初始化数据库时,这一类记录不需要插入到数据库中,负载运行过程中支持对待插入动态区的插入操作。因此,通过分区算法可以保证记录类别划分的随机性和可控性,通过划分为三类分区,使得数据库状态维护的代价由O(C)降低为O(M),其中C为数据表的容量、M为动态区记录数,使得状态维护的开销存在边界,即取决于动态区记录数,并且保证随机负载支持操作的丰富性。当删除一条动态区记录时,可能会透明级联删除动态区中的其他记录,为了追踪数据库的状态,需要显示地做级联删除,因此,需要维护动态区记录的外键双向参考关系。另外,由于静态区数据不允许被删除,那么动态区记录的外键不能被静态区的记录参考,否则无法进行级联删除操作。
对外键和非主键值属性组而言,Orca利用数据分布追踪数据库的状态变迁;假设数据表中数据量足够大,那么如果外键和非主键值属性组的数据分布可以稳定保持,事务型负载的小数据量修改操作不会改变外键和非主键值属性组的数据分布,那么Orca就可以通过数据分布稳定追踪数据库的状态,从而生成有效的操作;但是,如果不满足假设,Orca尽量保证操作的访问分布与数据分布的倾斜中心一致,从而尽最大可能提高有效操作的概率。通过上述状态缩影技术,Orca极大地降低了追踪数据库状态的空间开销,并且将并发控制的粒度降到最低,即以动态记录为单位进行数据结构的并发控制,在测试事务加载中详细讨论采用的并发控制机制和面临的死锁问题。
本发明模型驱动的事务生成器:包括基于初始数据库状态和动态数据库状态缩影技术的事务生成。在随机模型定义每一类SQL的生成种子和分布,种子见表3。通过控制种子的粒度和种类,可令Orca在一个期望的负载空间中生成大规模负载,使得生成的测试负载能够更加充分地探索数据库的深层代码逻辑。
表3:SQL语句抽象语法树特征
基于状态缩影的事务模板实例化:在参数化的SQL语句中可以将参数分为两类,第一类,访问参数,决定了该操作访问哪些记录;第二类,数据参数,决定了操作设置到数据库中的数据,因此,事务模板实例化的过程即实例化访问参数和数据参数。
对于访问参数而言,Orca从状态缩影中选取一个有效参数填入事务模板中,具体来说,对于主键,Orca按照指定的访问分布抽样确定一个LPK,将LPK转换成RPK填入事务模板中;对于外键,Orca需要在所有LFK中按照指定的访问分布搜索一个满足外键约束条件的LFK,将LFK转换成RFK填入事务模板中;对于非主键值属性组,Orca按照指定的访问分布抽样确定LNKG,将LNKG转换成RNKG填入事务模板中。
对于数据参数而言,只有外键和非主键值属性组作为数据参数,为了方便追踪数据库的状态变迁,两者按照一定的访问分布生成逻辑值,再将逻辑值转换成真实值填入事务模板中。
本发明测试事务加载器:如果测试负载中仅有单个线程运行,那么利用状态缩影描绘技术填充事务模板中的参数,将实例化之后的事务加载到数据库中即可。然而,事务负载往往是多线程并行执行的,状态缩影是一个由多个加载线程所共享的数据结构,如果不对状态缩影进行并发控制会导致填充到事务模板中的参数无效。为了尽最大可能降低并发控制的开销,Orca以动态区记录为粒度对状态缩影进行并发控制,即保证状态缩影能够与数据库状态实时一致,又不限制测试负载的并发度。具体来说,在测试事务加载过程中按以下步骤实例化事务模板和维护状态缩影的一致性:
步骤1:对随机事务模板中的每一个操作模板,分别做步骤2、步骤3和步骤4,如果事务模板中的所有操作都成功执行,那么进入步骤5,否则,任何一个操作执行失败则立即进入步骤6。
步骤2:根据操作模板的类型,填充模板中的数据参数。数据参数可以分为两类,非主键值属性组和外键。对于非主键值属性组,按照数据生成蓝本中定义的数据分布抽样确定LNKG,再将LNKG转换成RNKG填入操作模板中;对于外键,在被参考表的所有LPK按照数据生成蓝本中定义的数据分布抽样确定LFK,然而,可能抽样结果LFK不满足外键约束而导致操作无效,为了解决这个问题,采用临近搜索算法搜索LFK,直到找到满足的LFK为止,最后将LFK转换成RFK填入操作模板中,如果找不到满足条件的LFK,则放弃执行当前操作,另外,在搜索满足条件的LFK过程中,访问被参考表LPK之前需要获取对应动态区记录上的读锁,对最终选中的LPK需要保留读锁到步骤4,保证操作中数据参数的新鲜性,搜索过程中的其他读锁可以释放。
步骤3:根据操作模板的类型,填充模板中的访问参数。访问参数可以分为三类,主键、外键和非主键值属性组。对于主键,在操作模板所针对的表中按照数据生成蓝图定义的访问分布抽样确定LPK,如果抽样得到的LPK不满足操作模板的要求,那么采用临近搜索算法找到合适的LPK,将LPK转换成RPK填入操作模板中,如果找不到,那么放弃执行当前操作,另外,在搜索满足条件的LPK过程中,访问LPK之前需要获取对应动态区记录上的读锁,对最终选中的LPK需要保留读锁到步骤4,保证操作中访问参数的新鲜性,搜索过程中的其他读锁可以释放;对于非主键值属性组和外键,按照状态缩影中定义的访问分布抽样参数,其他细节同步骤二确定键值属性组和外键类型的数据参数。另外,生成访问参数时要保证不能选择的相互矛盾的访问参数,相互矛盾的访问参数会导致无效操作。
步骤4:执行操作。将实例化之后的操作模板发送到数据库中执行,如果执行的操作是写操作,那么需要在线程本地按照写操作的语义修改状态缩影,保存在PrivateDynamic Record中,操作执行完毕,不论成功还是失败,都释放该操作所持有的所有读锁。
步骤5:提交事务。为了使得状态缩影能够实时追踪数据库的状态,Orca将事务提交和状态缩影维护原子等价执行。具体方法如下:事务提交之前,首先获取PrivateDynamic Record在状态缩影上所有Dynamic Record的写锁,当成功获取所有写锁之后,发送提交命令到数据库中,如果事务失败则释放所有的写锁,否则,将Private DynamicRecord对应地拷贝到状态缩影中并依次释放相应的写锁,从而保证事务提交和状态缩影维护原子等价执行。
步骤6:回滚事务。主动回滚整个事务,释放该事务占用的所有资源。
上述测试事务加载过程中,总体可以分为两个阶段,即读状态缩影和写状态缩影。读状态缩影的过程利用状态缩影实例化事务模板中的参数,并且通过读锁机制保证读取到的信息是一致有效的,读取过程中无需关心具体操作的语义,如果并行的操作之间出现并发冲突,完全交由数据库处理;写状态缩影的过程通过写锁将事务对数据库产生的修改原子等价地维护到状态缩影中,保证状态缩影的实时一致性。
上述测试事务加载过程中涉及到连续获取多个Dynamic Record上的锁,可能会产生死锁问题。值得注意的是,每个事务在获取写锁时一定已经释放所有的读锁,并且每个事务需要获取的写锁都是已知的,那么按照固定顺序获取一个事务的所有写锁可以避免写锁与写锁之间产生的死锁问题。然而,读锁的获取是不可预知,因此读锁和读锁之间、读锁和写锁之间可能会产生死锁,为此,Orca在获取读锁时设置了超时机制,当产生死锁时,将实例化操作时的所有读锁释放,重新实例化该操作,从而打破死锁。值得注意的是,可能存在一种极端情况,如果一个事务需要获取大量的写锁才能完成提交,可能该事务要等待很多读锁的释放,会导致该事务长时间得不到提交,即出现了Lock Trashing,因此,为了解决这个问题,Orca给写锁也设置了超时机制,如果写锁长期获取不到则释放所有的写锁,尝试重新获取所有的写锁,如果重试了很多次任然无法提交事务,那么回滚整个事务。
此外,在测试事务加载时,用户还可以设置是否预编译执行、测试并发度、客户端隔离级别、每个测试案例的预热时间等。
上述测试事务加载过程中需要详细记录每个操作的执行轨迹,即负载轨迹,记录负载轨迹有利于分析事务负载的行为,表4展示了负载轨迹的记录格式。
表4:负载轨迹记录格式
实施例
实施环境
所有实验使用的服务器配备了两个2.1GHz、8核心的Intel Xeon Silver 4100处理器,单台服务器同时可运行32个线程;服务器拥有120GB的内存,4TB的硬盘(RAID-5),磁盘阵列上配有4GB缓存。
实施例所用测试案例的随机模型
本实施例生成的模式包含3张表,平均每张表包含1个外键,平均每张表包含5个非主键值属性组,平均每个非主键值属性组包含4个属性列。每张表静态区和动态区比例为8:2,分区方式为Hash分区,每张表的Capacity为1000,每张表包含900条初始记录,数据分布为均匀分布。事务模板中查询语句、删除语句、插入语句和更新语句的比例为2:1:1:1。查询语句均为针对主键、外键或者非主键值属性的点读操作,删除语句、插入语句和更新语句均为基于主键的点写操作,语句的访问分布为均匀分布。每个事务模板包含5个语句,共生成1000个事务模板。本实施例事务加载器(线程)数目为16,每个线程加载5000个事务,隔离级别设置比例为1:1:1:1,分别为Read Uncommitted、Read Committed、Repeatable Read、Serializable。
实施例所用TPC-C的配置
TPC-C的扩展因子设置为3个仓库,设置10个并行的事务加载线程,每个线程连续加载事务,加载事务的比例为NewOrder:Payment:OrderStatus:Delivery:StockLevel=45:43:4:4:4,10个线程的隔离级别均为可串行化隔离级别。
实施结果及分析
在MySQL 5.6.45,Orca系统生成测试案例的有效性测试。
在事务负载动态运行的过程中,Orca要求每个操作按照期望的访问分布访问底层数据。本实施例统计了负载长期运行下有效操作的比例,图3给出了SELECT操作中无效操作和有效操作的比例,可以看到有效数据占99.4%。基于状态缩影技术,凡是成功生成的INSERT、DELETE、UPDATE操作都是有效的。为了验证数据访问分布情况,本实施例统计了对表所进行的读和写操作所访问数据的分布情况,写操作是指INSERT、DELETE、UPDETE,读操作是指SELECT操作,图4、图5分别展示了读操作与写操作的访问分布情况。可以看到,读操作在动态区和静态区上满足均匀访问分布,写操作在动态区上满足均匀访问分布,符合随机模型中的定义。
在MySQL 5.7.27下,Orca系统生成测试案例的覆盖度测试。
本实施例用相同的随机模型多次生成不同的测试案例并统计在MySQL 5.7.27下的代码覆盖度,并与评测基准TPC-C[2]产生的覆盖度进行了对比。本实施例选择了事务型数据库的关键代码进行覆盖度测试,包括四个模块的测试覆盖度,即log、lock、trx、read四个模块,选择行覆盖度作为度量指标。图6展示了实验结果,随着测试次数的增加,代码覆盖度在不断增加,可以明显看到,有些测试点存在明显的飞跃,比如,对于log模块,测试次数从15次增加到20次时,代码覆盖度提高约25行,说明该测试点所在的测试案例能够明显提高测试覆盖度,探索了之前测试点没有探索过的代码,相对平滑的测试点所在的测试案例产生的代码覆盖度与之前测试点产生的代码覆盖度重叠,由于Orca可以根据配置文件自由生成不同的测试案例,因此Orca系统具有更强的代码探索能力。另外,从图6中可以看出,评测基准TPC-C在lock和read模块的代码覆盖度相比于Orca系统低,评测基准TPC-C适合用于评测数据库系统的一般性能,不适用于对数据库的边缘情况进行功能测试。由于TPC-C负载的冲突率较低,使得事务的回滚率低,因此产生了很多重做日志和撤销日志,会频繁触发检查点机制和撤销日志的回收机制,因此TPC-C在log模块和trx模块的代码覆盖度了相比于Orca系统高。然而,Orca系统可以通过修改随机模型进行灵活地扩展,生成不同的测试案例,例如,可以降低事务间的冲突和提高写操作的比例,也可以动态变化事务加载器的数目,使得数据库系统内的资源分配处于动态变化之中,从而触发资源分配的相关代码,提高在log模块和trx模块上的代码覆盖度。
Orca系统的性能测试。
本实施例统计了生成100、150、200、250、300、350、400、450、500个数据库模式所需时间,图7展示了生成数据库模式的时间随数目的变化趋势。从图中可以看到,生成模式所需时间大致与模式数目线性正相关,以生成300个数据库模式时的时间计算,大致每小时可以生成430万个数据库模式。
本实施例统计了表Capacity为1000、1500、2000、2500、3000、3500、4000、4500、5000时,生成初始数据所耗时间以及初始数据占用的空间,其关系如图8、图9所示。从图中可以看到,生成初始数据所需时间以及占用的空间,均与表容量呈线性正相关。据本次测试数据推算,大致表容量每增加1000需要额外17.5MB的空间用于存放初始数据,需额外耗时0.24秒。
本实施例按操作类型统计了操作的生成时间以测量Orca系统通过状态缩影技术生成操作的性能,结果如表5所示,生成INSERT、DELETE、UPDTE、SELECT操作平均耗时分别为0.64ms、0.24ms、0.47ms、0.11ms。
表5:操作的生成时间
操作类型 | 平均生成时间(ms) |
INSERT | 0.64 |
DELETE | 0.24 |
UPDATE | 0.47 |
SELECT | 0.11 |
本实施例统计了所执行事务的生成时间、生成&执行时间,并计算了生成时间占比,结果如表6所示,每个事务的平均生成以及加载时间约为163ms,其中成功事务的平均生成以及加载时间为67ms,失败事务的平均生成及加载时间为219ms。在成功的事务当中,生成时间占比为3.9%,在失败事务和所有事务当中也能得出类似的结论,由此可见,Orca系统可以高效地生成事务,大部分时间耗费在事务执行上,事务执行的时间取决于数据库。
表6:事务生成、执行时间
操作类型 | 平均生成时间(ms) | 生成&执行时间(ms) | 生成时间占比 |
成功事务 | 2.6 | 66.9 | 3.9% |
失败事务 | 1.1 | 218.5 | 0.5% |
所有事务 | 1.6 | 163.2 | 1.0% |
参考文献
[1]Database ofDatabases[EB/OL].2021.https://dbdb.io/.
[2]TPC-C benchmark[EB/OL].1992.http://www.tpc.org/tpcc/.
[3]SLUTZ D R.Massive stochastic testing of SQL[C]//VLDB 1998,Proceedings of 24rd International Conference on Very Large Data Bases,NewYork City,New York,USA,August24-27,1998.1998:618-622.
[4]BATI H,GIAKOUMAKIS L,HERBERT S,et al.A genetic approach for randomtesting of database systems[C]//VLDB 2007,Proceedings of the 33rdInternational Conference on Very Large Data Bases,University ofVienna,Austria,September 23-27,2007.2007:1243-1251.
本发明的保护内容不局限于以上实施例。在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。
Claims (10)
1.一种模型驱动的事务型数据库测试案例生成系统,其特征在于,所述生成系统包括:模型驱动的数据库模式生成器、模型驱动的数据生成器、模型驱动的事务生成器、测试事务加载器;其中,
所述模型驱动的数据库模式生成器、所述模型驱动的数据生成器和所述模型驱动的事务生成器都基于随机模型开展对应的生成任务;所述随机模型以模型驱动的方法生成测试案例特征项,基于所述测试案例特征项生成完整的测试案例;
其中,所述随机模型中的特征项按照<seed,distribution>的形式定义,其中seed表示采样的候选种子池,distribution表示采样的分布;所述模式生成器的随机模型中的特征项包括模式中表的数目、主键属性列的长度、外键长度和外键数目;所述数据生成器的随机模型中的特征项包括数据量、每种数据类型的候选数据值以及数据分布;所述事务生成器的随机模型的特征项包括事务长度、事务中操作的比例;
所述模型驱动的数据库模式生成器负责基于数据库对象之间的依赖关系随机生成合法有效的数据库模式;
所述模型驱动的数据生成器负责基于生成蓝图,包括初始化数据技术以及动态数据库状态缩影描绘技术,生成合法有效的事务;所述生成蓝图定义测试过程中使用的数据以及数据分布;所述状态缩影描绘技术无需完整保存数据库状态,利用统计分布和数据分区的方法追踪数据库的状态变迁,使得空间复杂度为O(M),其中M为用户自定义的有界值;
所述模型驱动的事务生成器负责随机生成事务模板并调用模型驱动的数据生成器实例化事务模板;
所述测试事务加载器将实例化之后的事务加载到数据库中执行并记录负载轨迹。
2.如权利要求1所述的模型驱动的事务型数据库测试案例生成系统,其特征在于,所述模型驱动的数据库模式生成器中,基于具体数据库的适配器和数据库对象之间的依赖关系生成满足语法和语义要求的数据库模式,其随机模型特征项包括:表的特征,完整性约束特征,索引特征,视图特征。
3.如权利要求1所述的模型驱动的事务型数据库测试案例生成系统,其特征在于,所述模型驱动的数据库模式生成器以二元组<seed,distribution>的形式定义测试数据库表的规模以及分布,每张表的属性规模以及分布,索引的分布,属性类型的分布以及关系完整性约束分布,并且在随机生成的过程中保证数据库对象之间的依赖关系,从而生成语义上正确的数据库模式,最后适配具体的数据库语法生成合法有效的数据库模式。
4.如权利要求1所述的模型驱动的事务型数据库测试案例生成系统,其特征在于,所述模型驱动的数据生成器中,基于生成蓝图函数式生成初始化数据以及基于状态缩影描绘技术动态生成有效的事务模板参数,实现数据生成的可重复性、可计算性和可追踪性要求。
5.如权利要求4所述的模型驱动的事务型数据库测试案例生成系统,其特征在于,所述生成蓝图定义虚拟列,虚拟列中给出属性的逻辑值,从虚拟列出发构造主键以及非主键值属性对虚拟列的参照关系,前者为双射关系,即虚拟列与主键列可一一对应,后者是单射关系,即虚拟列确定非主键值。
6.如权利要求5所述的模型驱动的事务型数据库测试案例生成系统,其特征在于,在初始数据库生成实例生成过程中引入虚拟列,生成数据的过程中将数据表主键值域划分成多个不相交的区间,每个区间指派给一个数据生成线程。
7.如权利要求4所述的模型驱动的事务型数据库测试案例生成系统,其特征在于,定义访问分布与数据库修订分布的一致性,状态缩影描绘技术利用统计分布和分区算法降低追踪数据库状态变迁的开销,采用并发控制机制,并且自动处理死锁,使得在数据库状态变迁在满足给定分布的情况下实现有效事务型数据库测试案例的生成。
8.如权利要求1所述的模型驱动的事务型数据库测试案例生成系统,其特征在于,所述模型驱动的事务生成器中,利用传统自动机技术生成事务模板,基于状态缩影将事务模板进行实例化,生成合法有效的事务实例。
9.如权利要求1所述的模型驱动的事务型数据库测试案例生成系统,其特征在于,所述测试事务加载器中,基于状态缩影实例化事务实现事务提交和状态缩影维护原子等价执行,从而在数据库不确定性调度事务的条件下,使得状态缩影能够实时追踪数据库的状态变迁,从而生成有效的事务,并且支持动态变化加载的线程数和加载频率;所述测试事务加载器中随机模型特征项包括测试线程数、测试线程加载事务数、事务加载策略和负载轨迹记录策略。
10.一种模型驱动的事务型数据库测试案例生成方法,其特征在于,采用如权利要求1-9之任一项所述的模型驱动的事务型数据库测试案例生成系统,所述方法包括以下步骤:
步骤1:基于随机模型开展对应的生成任务,所述随机模型以模型驱动的方法生成测试案例特征项,基于所述测试案例特征项生成完整的测试案例;
步骤2:随机生成合法有效的数据库模式;
步骤3:基于生成蓝图,包括初始化数据技术以及动态数据库状态缩影描绘技术,生成合法有效的事务;所述生成蓝图定义测试过程中使用的数据以及数据分布;所述状态缩影描绘技术追踪数据库的状态变迁;
步骤4:随机生成事务模板并调用模型驱动的数据生成器实例化事务模板;
步骤5:将实例化之后的事务加载到数据库中执行并记录负载轨迹。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110614992.7A CN113434388B (zh) | 2021-06-02 | 2021-06-02 | 一种模型驱动的事务型数据库测试案例生成系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110614992.7A CN113434388B (zh) | 2021-06-02 | 2021-06-02 | 一种模型驱动的事务型数据库测试案例生成系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113434388A true CN113434388A (zh) | 2021-09-24 |
CN113434388B CN113434388B (zh) | 2022-04-05 |
Family
ID=77803613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110614992.7A Active CN113434388B (zh) | 2021-06-02 | 2021-06-02 | 一种模型驱动的事务型数据库测试案例生成系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113434388B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116225965A (zh) * | 2023-04-11 | 2023-06-06 | 中国人民解放军国防科技大学 | 一种面向io大小的数据库性能问题检测方法 |
US20230195605A1 (en) * | 2021-12-20 | 2023-06-22 | Google Llc | Method For Populating Spanner Databases In Test Environments |
CN116627973A (zh) * | 2023-05-25 | 2023-08-22 | 成都融见软件科技有限公司 | 一种数据定位系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105701008A (zh) * | 2014-12-10 | 2016-06-22 | 通用电气公司 | 用于安全关键的软件的集成自动化测试用例生成 |
CN109117363A (zh) * | 2018-06-28 | 2019-01-01 | 腾讯科技(深圳)有限公司 | 一种测试用例生成方法、装置及服务器 |
CN110058846A (zh) * | 2019-04-19 | 2019-07-26 | 深圳市康拓普信息技术有限公司 | 一种业务应用软件开发系统和方法 |
US20190278699A1 (en) * | 2018-03-08 | 2019-09-12 | Mayank Mohan Sharma | System and method for automated software test case designing based on Machine Learning (ML) |
CN111177569A (zh) * | 2020-01-07 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 基于人工智能的推荐处理方法、装置及设备 |
-
2021
- 2021-06-02 CN CN202110614992.7A patent/CN113434388B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105701008A (zh) * | 2014-12-10 | 2016-06-22 | 通用电气公司 | 用于安全关键的软件的集成自动化测试用例生成 |
US20190278699A1 (en) * | 2018-03-08 | 2019-09-12 | Mayank Mohan Sharma | System and method for automated software test case designing based on Machine Learning (ML) |
CN109117363A (zh) * | 2018-06-28 | 2019-01-01 | 腾讯科技(深圳)有限公司 | 一种测试用例生成方法、装置及服务器 |
CN110058846A (zh) * | 2019-04-19 | 2019-07-26 | 深圳市康拓普信息技术有限公司 | 一种业务应用软件开发系统和方法 |
CN111177569A (zh) * | 2020-01-07 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 基于人工智能的推荐处理方法、装置及设备 |
Non-Patent Citations (5)
Title |
---|
DON SLUTZ: ""Massive Stochastic Testing of SQL"", 《VLDB "98: PROCEEDINGS OF THE 24RD INTERNATIONAL CONFERENCE ON VERY LARGE DATA BASES》 * |
EBAN ESCOTT 等: ""Integrating Model-Based Testing in Model-Driven Web Engineering"", 《2011 18TH ASIA-PACIFIC SOFTWARE ENGINEERING CONFERENCE》 * |
周景才: ""基于模型驱动的测试用例自动生成技术研究"", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
蒋程 等: ""分布式流处理系统的容错性能基准测试"", 《软件工程》 * |
马跃 等: ""数据库通用基准性能测试系统的设计与实现"", 《贵州广播电视大学学报》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230195605A1 (en) * | 2021-12-20 | 2023-06-22 | Google Llc | Method For Populating Spanner Databases In Test Environments |
CN116225965A (zh) * | 2023-04-11 | 2023-06-06 | 中国人民解放军国防科技大学 | 一种面向io大小的数据库性能问题检测方法 |
CN116225965B (zh) * | 2023-04-11 | 2023-10-10 | 中国人民解放军国防科技大学 | 一种面向io大小的数据库性能问题检测方法 |
CN116627973A (zh) * | 2023-05-25 | 2023-08-22 | 成都融见软件科技有限公司 | 一种数据定位系统 |
CN116627973B (zh) * | 2023-05-25 | 2024-02-09 | 成都融见软件科技有限公司 | 一种数据定位系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113434388B (zh) | 2022-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113434388B (zh) | 一种模型驱动的事务型数据库测试案例生成系统及方法 | |
Hammond et al. | Programming with transactional coherence and consistency (TCC) | |
Shaikhha et al. | How to architect a query compiler | |
He et al. | High-throughput transaction executions on graphics processors | |
US9009726B2 (en) | Deterministic sharing of data among concurrent tasks using pre-defined deterministic conflict resolution policies | |
EP2608066B1 (en) | Many core algorithms for in-memory column store databases | |
Groß et al. | Bridging two worlds with RICE: integrating R into the SAP in-memory computing engine | |
Murray et al. | Steno: Automatic optimization of declarative queries | |
KR20180035035A (ko) | 데이터 엔진에서의 질의 최적화 방법 및 장치 | |
CN115904638A (zh) | 一种数据库事务智能管理方法及系统 | |
US10671427B2 (en) | Snapshot isolation in graphical processing unit hardware transactional memory | |
Kim et al. | {STRADS-AP}: Simplifying Distributed Machine Learning Programming without Introducing a New Programming Model | |
Chao-Qiang et al. | RDDShare: reusing results of spark RDD | |
Lu et al. | Doe: database offloading engine for accelerating SQL processing | |
CN112241354B (zh) | 一种面向应用的事务负载生成系统及事务负载生成方法 | |
Qu et al. | Application-oriented workload generation for transactional database performance evaluation | |
Ragunathan et al. | Improving the performance of Read-only Transactions through Speculation | |
Li | System Support of Concurrent Database Query Processing on a GPU | |
Weng et al. | Lauca: A Workload Duplicator for Benchmarking Transactional Database Performance | |
Poe et al. | TransPlant: A parameterized methodology for generating transactional memory workloads | |
Li et al. | Lauca: Generating Application-Oriented Synthetic Workloads | |
Housel | Pipelining: A technique for implementing data restructurers | |
Kozynchenko et al. | On a" keys-in-memory" approach to storage management and querying in object-oriented databases | |
Navasca | An Observational and Statistical Technique for Efficient Big Data Applications | |
Javadi Isfahani | Evaluating a modern in-memory columnar data management system with a contemporary OLTP workload |
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 |