CN116594862B - Dbms的测试方法、装置、电子设备及可读存储介质 - Google Patents
Dbms的测试方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN116594862B CN116594862B CN202310357787.6A CN202310357787A CN116594862B CN 116594862 B CN116594862 B CN 116594862B CN 202310357787 A CN202310357787 A CN 202310357787A CN 116594862 B CN116594862 B CN 116594862B
- Authority
- CN
- China
- Prior art keywords
- version
- dbms
- memory
- tested
- occupation amount
- 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
- 238000010998 test method Methods 0.000 title claims description 3
- 238000012360 testing method Methods 0.000 claims abstract description 148
- 238000000034 method Methods 0.000 claims abstract description 39
- 238000004590 computer program Methods 0.000 claims description 18
- 238000011161 development Methods 0.000 claims description 8
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 238000013522 software testing Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000009825 accumulation Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000001066 destructive effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
-
- 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/21—Design, administration or maintenance of databases
-
- 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/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
Abstract
本申请实施例提供了一种DBMS的测试方法、装置、电子设备及计算机可读存储介质,涉及软件测试技术领域。该方法包括:获取DBMS的待测试版本,对待测试版本进行内存统计准确性测试;若确定待测试版本的测试结果为不合格,则获取待测试版本之前的至少一个历史版本;基于版本从新至旧的顺序,逐个对各个历史版本进行内存准确性统计测试,直至得到测试结果为合格历史版本,将测试结果为合格的历史版本作为合格版本;确定待测试版本对应的代码和合格版本对应的代码之间的差异代码,将差异代码作为故障代码。本申请实施例实现了定位导致DBMS无法准确统计自身占用的内存的故障代码,避免DBMS在发布后出现OOM问题,提升了DBMS的稳定性。
Description
技术领域
本申请涉及软件测试技术领域,具体而言,本申请涉及一种DBMS的测试方法、装置、电子设备及计算机可读存储介质。
背景技术
操作系统会统计数据库管理系统(Database Management System,DBMS)在运行时占用的内存,判断DBMS占用的内存是否超过内存溢出阈值,若超过内存溢出阈值,则确定DBMS出现内存溢出(out of memory,OOM)问题,会强行控制或者终止运行DBMS,这会导致DBMS无法正常运行。
DBMS为保证自身的正常运行,会主动统计自身占用的内存,DBMS在确定自身的占用的内存较大时(即将超过内存溢出阈值时),主动释放一部分内存来防止OOM问题。可见,DBMS准确地统计自身占用的内存对DBMS的正常运行有十分重要的影响。
然而,现有方案发布的很多DBMS都无法准确地统计自身占用的内存,这是因为在DBMS开发和迭代的过程中,开发人员随时可能会引入一些对DBMS统计自身占用的内存产生破坏性的故障代码,这些故障代码会导致DBMS统计的内存占用量不准确,导致DBMS在运行时出现OOM的可能性。在实际开发过程中,为减少测试成本,并非是开发出一个版本,就对该版本进行测试,而是对开发出的功能较为完善的版本进行测试,在测试过程中若发现该版本存在OOM问题,就可以确定该版本的DBMS无法准确统计自身占用内存,开发人员可以定位到用于统计DBMS自身占用的内存的相关代码,却不能定位到导致该版本出现OOM问题的故障代码,因此,如何定位故障代码是一个亟待解决的问题。
发明内容
本申请实施例提供了一种DBMS的测试方法、装置、电子设备、计算机可读存储介质及计算机程序产品,用于解决背景技术中的技术问题。
根据本申请实施例的第一方面,提供了一种DBMS的测试方法,该方法包括:
获取DBMS的待测试版本,对待测试版本进行内存统计准确性测试,若确定待测试版本的测试结果为不合格,则获取待测试版本之前的至少一个历史版本;
基于版本从新至旧的顺序,逐个对各个历史版本进行内存统计准确性测试,直至得到测试结果为合格的历史版本,将测试结果为合格的历史版本作为合格版本;
确定待测试版本对应的代码和合格版本对应的代码之间的差异代码,将差异代码作为故障代码,基于故障代码对待测试版本的代码进行修复。
在一个可能的实现方式中,待测试版本以及各历史版本中的每个版本是基于以下方式进行内存统计准确性测试:
运行版本的DBMS,确定版本的DBMS在连续多个周期内统计的第一内存占用量是否准确,若确定版本的DBMS在所有周期内统计的第一内存占用量准确,则确定版本的测试结果为合格;第一内存占用量是DBMS自身在运行时统计的内存占用量;
若确定版本的DBMS在至少一个周期内统计的第一内存占用量不准确,则确定版本的测试结果为不合格。
在一个可能的实现方式中,确定版本的DBMS在连续多个周期内统计的第一内存占用量是否准确,包括:
在每个周期内,获取版本的DBMS上报的第一内存占用量;
从操作系统获取的第二内存占用量;第二内存占用量是操作系统在DBMS运行时统计的DBMS的内存占用量;
确定每个周期内第一内存占用量和第二内存占用量之间的差异;
若确定差异大于预设阈值,则确定版本的DBMS在周期内统计的第一内存占用量不准确;
若确定差异不大于预设阈值,则确定版本的DBMS在周期内统计的第一内存占用量准确。
在一个可能的实现方式中,第一内存占用量是基于以下方式确定的:版本的DBMS统计周期内的各次内存申请量对应的第一累计值和各次内存释放量对应的第二累计值,将第一累计值和第二累计值的差值作为第一内存占用量;
在一个可能的实现方式中,第二内存占用量是基于以下方式确定的:操作系统获取DBMS在周期的常驻集大小RSS,将RSS作为第二内存占用量。
在一个可能的实现方式中,将差异代码作为故障代码,之后还包括:
基于故障代码对待测试版本的代码进行修复,将修复后的待测试版本作为待发布版本。
对DBMS在开发阶段的待测试版本进行内存统计准确性测试,之后还包括:
若确定待测试版本的测试结果为合格,则将待测试版本作为待发布版本。
在一个可能的实现方式中,将差异代码作为故障代码,之后还包括:
发起针对故障代码的告警,以指示故障代码导致DBMS的待测试版本的测试结果为不合格。
根据本申请实施例的第二方面,提供了一种DBMS的测试装置,该装置包括:
历史版本获取模块,用于获取DBMS的待测试版本,对待测试版本进行内存统计准确性测试,若确定待测试版本的测试结果为不合格,则获取待测试版本之前的至少一个历史版本;
合格版本确定模块,用于基于版本从新至旧的顺序,逐个对各个历史版本进行内存统计准确性测试,直至得到测试结果为合格的历史版本,将测试结果为合格的历史版本作为合格版本;
故障代码确定模块,用于确定待测试版本对应的代码和合格版本对应的代码之间的差异代码,将差异代码作为故障代码,基于故障代码对待测试版本的代码进行修复。
根据本申请实施例的第三方面,提供了一种电子设备,该电子设备包括存储器、处理器及存储在存储器上的计算机程序,处理器执行程序时实现如第一方面所提供的方法的步骤。
根据本申请实施例的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的方法的步骤。
根据本申请实施例的第五方面,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中,当计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行实现如第一方面所提供的方法的步骤。
本申请实施例提供的技术方案带来的有益效果是:
本申请实施例通过获取DBMS的待测试版本,对待测试版本进行内存统计准确性测试,若确定待测试版本的测试结果为不合格,则获取待测试版本之前的各个历史版本;基于版本从新至旧的顺序,逐个对各个历史版本进行内存准确性统计测试,直至得到测试结果为合格的合格版本;确定待测试版本对应的代码和合格版本对应的代码之间的差异代码,将差异代码作为故障代码,可以准确发现导致待测试版本的DBMS无法进行内存统计准确性测试的故障代码,避免DBMS在发布后出现OOM问题,提升了DBMS的稳定性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种DBMS的测试方法的流程示意图;
图2为本申请实施例提供的在每个周期内判断DBMS统计的第一内存占用量是否准确的示意图;
图3为本申请实施例提供的又一种DBMS的测试方法的流程示意图;
图4为本申请实施例提供的一种DBMS的测试装置的结构示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”可以实现为“A”,或者实现为“B”,或者实现为“A和B”。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先对本申请涉及的几个名词进行介绍和解释:
数据库系统(database systems),是由数据库及其管理软件组成的系统。主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统(Database ManagementSystem,DBMS)。
数据库管理系统是数据库系统的核心软件,是在操作系统的支持下工作,解决如何科学地组织和存储数据,如何高效获取和维护数据的系统软件。其主要功能包括:数据定义功能、数据操纵功能、数据库的运行管理和数据库的建立与维护。
本申请提供的数据库管理系统DBMS的测试方法、装置、电子设备、计算机可读存储介质以及计算机程序产品,旨在解决现有技术的如上技术问题。
下面通过对几个示例性实施方式的描述,对本申请实施例的技术方案以及本申请的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
本申请实施例中提供了一种数据库管理系统DBMS的测试方法,如图1所示,该方法包括:
步骤S101,获取DBMS的待测试版本,对待测试版本进行内存统计准确性测试,若确定待测试版本的测试结果为不合格,则获取待测试版本之前的至少一个历史版本;
其中,内存统计准确性测试是指测试DBMS是否具备准确统计自身的内存占用量的能力。
对于DBMS而言,若DBMS出现内存溢出OOM问题,则该DBMS会被操作系统强行终止运行或者控制,为避免这种情况,DBMS可以统计自身占用的内存,在确定自身占用过多的内存时(超过内存溢出阈值),主动释放一部分内存来避免出现OOM问题,从而防止被强行终止运行或控制。
然而,由于DBMS开发和迭代的过程中,开发人员随时可能会引入一些对DBMS统计自身占用的内存产生破坏性的改动,或者引入无法被内存统计追踪到的功能,这会导致DBMS统计的内存不准确,若某版本的DBMS无法准确地统计自身占用的内存,那么该版本的DBMS在运行时,该DBMS统计的自身占用的内存会小于实际占用过多的内存,很大可能会出现以下场景:操作系统统计的DBMS在运行时实际占用的内存不小于内存溢出阈值,DBMS统计的自身在运行时占用的内存小于内存溢出阈值,虽然DBMS实际占用的内存超过了内存溢出阈值,但由于DBMS统计的自身的内存占用量不准确而误以为自身统计的内存占用量小于内存溢出阈值,没有及时释放内存占用量,导致OOM问题,因此,DBMS可以准确的统计自身占用的内存对DBMS的正常运行有着十分重要的作用。
DBMS在开发阶段会产生各种版本,每个版本虽然都可以统计自身占用的内存,但是除第一版本外的其他版本并非都可以准确地统计自身占用的内存,因此,待测试版本可以是除了第一版本之外的其他版本,待测试版本是否可以准确统计自身占用的内存是不确定的,例如,某DBMS有5个本班,基于版本从旧至新的顺序,分别为第一版本、第二版本、第三版本、第四版本以及第五版本,可将第二版本、第三版本、第四版本以及第五版本中的任意一个版本作为待测试版本,由于第五版本是功能较为完善的一个版本,可优先选择将该第五版本作为待测试版本。
本申请实施例进行内存准确性测试是指测试DBMS是否可以准确统计自身的内存占用量,即将DBMS统计的自身占用的内存和操作系统统计的内存进行比较,判断DBMS统计的自身占用的内存是否准确,若确定该版本的DBMS统计的内存准确,则确定该版本的DBMS通过测试,该版本的测试结果为合格;若确定该版本的DBMS统计的内存不准确,则确定该版本未通过测试,该版本的测试结果为不合格。
若确定待测试版本的测试结果为不合格,则需获取在开发阶段该待测试版本之前的至少一个历史版本,各个历史版本的DBMS也可以统计自身占用的内存,但是各个历史版本是否可以准确统计自身占用的内存同样是不确定的。
步骤S102,基于版本从新至旧的顺序,逐个对各个历史版本进行内存准确性统计测试,直至得到测试结果为合格的历史版本,将测试结果为合格的历史版本作为合格版本;
可以理解的是,在开发阶段各个版本是在之前的版本的基础上开发的,假设DBMS当前有5个版本,包括第1版本、第2版本、第3版本、第4版本以及第5版本,第1版本是最初版本,第1版本的DBMS可以准确统计自身占用的内存,第2版本是在第1版本的基础上开发的,第3版本是在第2版本的基础上开发的,第4版本是在第3版本的基础上开发的,第5版本是在第4版本的基础上开发的,即每一版本都是在前一历史版本基础上的进一步开发的,可将该第5个版本作为待测试版本。
本申请实施例在确定待测试版本的测试结果为不合格后,获取待测试版本之前的各个历史版本,基于版本从新至旧的顺序,逐个对各个历史版本进行内存统计准确性测试,判断各个历史版本的测试结果是否合格,在此过程中,若当前测试的版本的测试结果为不合格,则继续对该当前测试的版本的上一历史版本进行内存统计准确性测试,判断该历史版本的测试结果是否为合格,直至得到测试结果为合格的历史版本,将测试结果为合格的历史版本作为合格版本,即找到合格版本后,停止测试。
延续上例,第5版本是待测试版本,对第5版本进行内存统计准确性测试后,若确定第5版本的测试结果为不合格之后,需获取该第5版本之前的各个历史版本,第5版本之前的各个历史版本为第1版本、第2版本、第3版本、第4版本,版本从新至旧的顺序为第4版本、第3版本、第2版本、第1版本,即在确定第5版本的测试结果为不合格之后,对第4版本进行内存统计准确性测试,若第4版本的测试结果也不合格,则继续第3版本进行内存统计准确性测试,直到找到测试结果为合格的合格版本,假设第3版本的测试结果为合格,则第3版本为合格版本。
步骤S103,确定待测试版本对应的代码和合格版本对应的代码之间的差异代码,将差异代码作为故障代码。
可以理解的是,合格版本之后开发的各个历史版本和待测试版本的测试结果都是不合格,即从合格版本之后开始的各个版本统计的内存都是不准确的,这些版本在运行时很大可能会导致OOM问题。
为了确定导致待测试版本内存统计不准确的代码,将待测试版本对应的代码和合格版本对应的代码进行比较,确定待测试版本对应的代码和合格版本对应的代码之间的差异代码,将差异代码作为故障代码,故障代码即为导致待测试版本内存统计不准确的代码,故障代码可以是引入的对DBMS统计自身占用的内存产生破坏性的改动对应的代码,和/或引入的无法被内存统计追踪到的功能对应的代码,需对故障代码进行修复,可基于预设数据库中的预设修复方法对故障代码进行修复,也可由开发人员进行人工修复,修复后得到待发布版本,待发布版本的DBMS可以准确统计自身占用的内存。
本申请实施例通过获取DBMS的待测试版本,对待测试版本进行内存统计准确性测试,若确定待测试版本的测试结果为不合格,则获取待测试版本之前的各个历史版本;基于版本从新至旧的顺序,逐个对各个历史版本进行内存准确性统计测试,直至得到测试结果为合格的合格版本;确定待测试版本对应的代码和合格版本对应的代码之间的差异代码,将差异代码作为故障代码,可以准确发现导致待测试版本的DBMS无法进行内存统计准确性测试的故障代码,避免DBMS在发布后出现OOM问题,提升了DBMS的稳定性。
本申请实施例中提供了一种可能的实现方式,待测试版本以及各历史版本中的每个版本是基于以下方式进行内存统计准确性测试:
运行版本的DBMS,确定版本的DBMS在连续多个周期内统计的第一内存占用量是否准确,若确定版本的DBMS在所有周期内统计的第一内存占用量准确,则确定版本的测试结果为合格;第一内存占用量是DBMS自身在运行时统计的内存占用量;
若确定版本的DBMS在至少一个周期内统计的第一内存占用量不准确,则确定版本的测试结果为不合格。
OOM问题是在DBMS运行时发生的,因此,本申请实施例在对待测试版本和各个历史版本进行内存准确性测试发生在DBMS运行时,对于待测试版本以及各历史版本中的每个版本,运行该版本的DBMS,确定版本的DBMS在连续多个周期内统计的第一内存占用量是否准确,第一内存占用量是DBMS在运行时统计的自身的内存占用量,在每个周期内,该版本的DBMS统计该周期内的各次内存申请量对应的第一累计值和各次内存释放量对应的第二累计值,将第一累计值和第二累计值的差值作为第一内存占用量。
需判断该版本的DBMS在所有周期内统计的第一内存占用量是否准确,若确定该版本的DBMS在所有周期内统计的第一内存占用量准确,则确定版本的测试结果为合格;若确定该版本的DBMS在至少一个周期内统计的第一内存占用量不准确,则确定版本的测试结果为不合格。
本申请实施例中提供了一种可能的实现方式,确定版本的DBMS在连续多个周期内统计的第一内存占用量是否准确,包括:
在每个周期内,获取版本的DBMS上报的第一内存占用量;
从操作系统获取第二内存占用量;第二内存占用量是操作系统在DBMS运行时统计的DBMS的内存占用量;
确定每个周期内第一内存占用量和第二内存占用量之间的差异;
若确定差异大于预设阈值,则确定版本的DBMS在周期内统计的第一内存占用量不准确;
若确定差异不大于预设阈值,则确定版本的DBMS在周期内统计的第一内存占用量准确。
判断DBMS统计的第一内存占用量是否准确是需要比对的,如图2所示,其示例性示出了在每个周期内判断DBMS统计的第一内存占用量是否准确的示意图,具体的,在每个周期内从操作系统获取的第二内存占用量,第二内存占用量是操作系统在DBMS运行时统计的DBMS的内存占用量,第二内存占用量是DBMS的常驻集大小(Resident Set Size,RSS)。在从操作系统获取第二内存占用量后,确定每个周期内第一内存占用量和第二内存占用量之间的差异,该差异可以为第一内存占用量和第二内存占用量之间的差值,也可以为第一内存占用量和第二内存占用量之间的百分比差值,百分比差值=(第一内存占用量-二内存占用量)/第一内存占用量。判断差异是否大于预设阈值,若确定差异大于预设阈值,则确定版本的DBMS在周期内统计的第一内存占用量不准确;若确定差异不大于预设阈值,则确定版本的DBMS在周期内统计的第一内存占用量准确。
本申请实施例中提供了一种可能的实现方式,第一内存占用量是基于以下方式确定的:版本的DBMS统计周期内的各次内存申请量对应的第一累计值和各次内存释放量对应的第二累计值,将第一累计值和第二累计值的差值作为第一内存占用量;
在每个周期内,该版本的DBMS可能会申请至少一次的内存占用量,可确定DBMS在该周期内的各次内存申请量对应的第一累计值,此外,DBMS在确定自身占用的内存超过预设的内存溢出阈值时,会进行内存释放,即释放一部分内存占用量,因此需确定各次内存释放量对应的第二累计值,第一累计值和第二累计值的差值即为DBMS统计的第一内存占用量。
本申请实施例中提供了一种可能的实现方式,第二内存占用量是基于以下方式确定的:操作系统获取DBMS在周期的常驻集大小RSS,将RSS作为第二内存占用量。
RSS是指常驻内存集大小,表示DBMS相应的进程在RAM中占用实际物理内存的大小,可直接将该RSS作为第二内存占用量。
本申请实施例中提供了一种可能的实现方式,将所述差异代码作为故障代码,之后还包括:
基于故障代码对待测试版本的代码进行修复,将修复后的待测试版本作为待发布版本。
本申请实施例获得故障代码后,基于故障代码对待测试版本的代码进行修复,可基于预设数据库中的预设修复方法对故障代码进行修复,若基于预设数据库中的修复方法无法进行修复,可通过人工确定修复方法,并在人工修复后,将该修复方法合并至该数据库,以使得下次出现这种故障代码后,可直接进行修复。
在将待测试版本的代码进行修复后,得到修复后的待测试版本和修复后的待测试版本的代码,可直接将修复后的待测试版本作为待发布版本。
对DBMS在开发阶段的待测试版本进行内存统计准确性测试,之后还包括:
若确定待测试版本的测试结果为合格,则将待测试版本作为待发布版本。
本申请实施例若确定待测试版本的测试结果合格,则说明待测试版本未引入OOM问题,可直接将该待测试版本作为待发布版本。
本申请实施例中提供了一种可能的实现方式,将差异代码作为故障代码,之后还包括:
发起针对故障代码的告警,以指示故障代码导致DBMS的待测试版本的测试结果为不合格。
本申请实施例在得到故障代码后,发起针对故障代码的告警,从而指示开发人员故障代码是导致DBMS的待测试版本的测试结果为不合格的代码。
此外,在每一内存统计准确性测试不合格的版本,还需记录该版本的代码和该版本运行时操作系统的现场运行信息,将这些信息存储至入非易失性存储设备中,以便于后续的分析和排查。
如图3所示,其示例性示出了本申请实施例提供的又一种DBMS的测试方法的流程示意图,包括:
步骤S301,获取DBMS的待测试版本,对待测试版本进行内存统计准确性测试;
步骤S302,判断待测试版本的测试结果是否合格,若是,则执行步骤S303,若否,则执行步骤S304;
步骤S303,将待测试版本作为待发布版本,执行步骤S309;
步骤S304,获取待测试版本之前的至少一个历史版本;
步骤S305,基于版本从新至旧的顺序,逐个对各个历史版本进行内存统计准确性测试,直至得到测试结果为合格的历史版本,将测试结果为合格的历史版本作为合格版本;
步骤S306,确定待测试版本对应的代码和合格版本对应的代码之间的差异代码;
步骤S307,将差异代码作为故障代码,基于故障代码对待测试版本的代码进行修复;
步骤S308,将修复后的待测试版本作为待发布版本;
步骤S309,发布该待发布版本。
本申请实施例提供了一种DBMS的测试装置,如图4所示,该DBMS的测试装置40可以包括:
历史版本获取模块410,用于获取DBMS的待测试版本,对待测试版本进行内存统计准确性测试,若确定待测试版本的测试结果为不合格,则获取待测试版本之前的至少一个历史版本;
合格版本确定模块420,用于基于版本从新至旧的顺序,逐个对各个历史版本进行内存统计准确性测试,直至得到测试结果为合格的历史版本,将测试结果为合格的历史版本作为合格版本;
故障代码确定模块430,用于确定待测试版本对应的代码和合格版本对应的代码之间的差异代码,将差异代码作为故障代码。
本申请实施例通过获取DBMS的待测试版本,对待测试版本进行内存统计准确性测试,若确定待测试版本的测试结果为不合格,则获取待测试版本之前的各个历史版本;基于版本从新至旧的顺序,逐个对各个历史版本进行内存准确性统计测试,直至得到测试结果为合格的合格版本;确定待测试版本对应的代码和合格版本对应的代码之间的差异代码,将差异代码作为故障代码,可以准确发现导致待测试版本的DBMS无法进行内存统计准确性测试的故障代码,避免DBMS在发布后出现OOM问题,提升了DBMS的稳定性。
本申请实施例中提供了一种可能的实现方式,该装置还包括:
测试模块,用于运行版本的DBMS,确定版本的DBMS在连续多个周期内统计的第一内存占用量是否准确,若确定版本的DBMS在所有周期内统计的第一内存占用量准确,则确定版本的测试结果为合格;第一内存占用量是DBMS自身在运行时统计的内存占用量;若确定版本的DBMS在至少一个周期内统计的第一内存占用量不准确,则确定版本的测试结果为不合格。
本申请实施例中提供了一种可能的实现方式,测试模块具体用于在每个周期内,获取版本的DBMS上报的第一内存占用量;从操作系统获取的第二内存占用量;第二内存占用量是操作系统在DBMS运行时统计的DBMS的内存占用量;确定每个周期内第一内存占用量和第二内存占用量之间的差异;若确定差异大于预设阈值,则确定版本的DBMS在周期内统计的第一内存占用量不准确;若确定差异不大于预设阈值,则确定版本的DBMS在周期内统计的第一内存占用量准确。
本申请实施例中提供了一种可能的实现方式,第一内存占用量是基于以下方式确定的:版本的DBMS统计周期内的各次内存申请量对应的第一累计值和各次内存释放量对应的第二累计值,将第一累计值和第二累计值的差值作为第一内存占用量;
本申请实施例中提供了一种可能的实现方式,第二内存占用量是基于以下方式确定的:操作系统获取DBMS在周期的常驻集大小RSS,将RSS作为第二内存占用量。
本申请实施例中提供了一种可能的实现方式,该装置还包括:
待发布版本确定模块,用于基于所述故障代码对所述待测试版本的代码进行修复,将修复后的待测试版本作为待发布版本。
待发布版本确定模块,还用于若确定待测试版本的测试结果为合格,则将待测试版本作为待发布版本。
本申请实施例中提供了一种可能的实现方式,该装置还包括:
告警模块,用于发起针对故障代码的告警,以指示故障代码导致DBMS的待测试版本的测试结果为不合格。
本申请实施例的装置可执行本申请实施例所提供的方法,其实现原理相类似,本申请各实施例的装置中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
本申请实施例中提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行上述计算机程序以实现DBMS的测试方法的步骤,与相关技术相比可实现:本申请实施例通过获取DBMS的待测试版本,对待测试版本进行内存统计准确性测试,若确定待测试版本的测试结果为不合格,则获取待测试版本之前的各个历史版本;基于版本从新至旧的顺序,逐个对各个历史版本进行内存准确性统计测试,直至得到测试结果为合格的合格版本;确定待测试版本对应的代码和合格版本对应的代码之间的差异代码,将差异代码作为故障代码,实现了发现导致待测试版本的DBMS无法进行内存统计准确性测试的代码,避免DBMS在发布后出现OOM问题,提升了DBMS的稳定性。
在一个可选实施例中提供了一种电子设备,如图5所示,图5所示的电子设备5000包括:处理器5001和存储器5003。其中,处理器5001和存储器5003相连,如通过总线5002相连。可选地,电子设备5000还可以包括收发器5004,收发器5004可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器5004不限于一个,该电子设备5000的结构并不构成对本申请实施例的限定。
处理器5001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器5001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线5002可包括一通路,在上述组件之间传送信息。总线5002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线5002可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器5003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器5003用于存储执行本申请实施例的计算机程序,并由处理器5001来控制执行。处理器5001用于执行存储器5003中存储的计算机程序,以实现前述方法实施例所示的步骤。
其中,电子设备包可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图5所示的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。与现有技术相比可实现:本申请实施例通过获取DBMS的待测试版本,对待测试版本进行内存统计准确性测试,若确定待测试版本的测试结果为不合格,则获取待测试版本之前的各个历史版本;基于版本从新至旧的顺序,逐个对各个历史版本进行内存准确性统计测试,直至得到测试结果为合格的合格版本;确定待测试版本对应的代码和合格版本对应的代码之间的差异代码,将差异代码作为故障代码,实现了准确发现导致待测试版本的DBMS无法进行内存统计准确性测试的故障代码,避免DBMS在发布后出现OOM问题,提升了DBMS的稳定性。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。与现有技术相比可实现:本申请实施例通过获取DBMS的待测试版本,对待测试版本进行内存统计准确性测试,若确定待测试版本的测试结果为不合格,则获取待测试版本之前的各个历史版本;基于版本从新至旧的顺序,逐个对各个历史版本进行内存准确性统计测试,直至得到测试结果为合格的合格版本;确定待测试版本对应的代码和合格版本对应的代码之间的差异代码,将差异代码作为故障代码,实现准确发现导致待测试版本的DBMS无法进行内存统计准确性测试的故障代码,避免DBMS在发布后出现OOM问题,提升了DBMS的稳定性。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”、“1”、“2”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除图示或文字描述以外的顺序实施。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。
Claims (10)
1.一种数据库管理系统DBMS的测试方法,其特征在于,包括:
获取所述DBMS的待测试版本,对所述待测试版本进行内存统计准确性测试,所述内存统计准确性测试是指测试DBMS是否具备准确统计自身的内存占用量的能力;若确定所述待测试版本的测试结果为不合格,则获取所述待测试版本之前的至少一个历史版本;
基于版本从新至旧的顺序,逐个对各个所述历史版本进行内存统计准确性测试,直至得到测试结果为合格的历史版本,将测试结果为合格的历史版本作为合格版本;
确定所述待测试版本对应的代码和所述合格版本对应的代码之间的差异代码,将所述差异代码作为故障代码;所述待测试版本以及各历史版本中的每个版本是基于以下方式进行内存统计准确性测试:
运行所述版本的DBMS,在连续多个周期内,获取所述版本的DBMS上报的第一内存占用量,从操作系统获取第二内存占用量;所述第二内存占用量是所述操作系统在所述DBMS运行时统计的所述DBMS的内存占用量;
在每个周期内,根据所述第一内存占用量以及所述第二内存占用量,确定所述版本的DBMS在所述周期统计的第一内存占用量是否准确;
若确定所述版本的DBMS在至少一个周期内统计的第一内存占用量不准确,则确定所述版本的测试结果为不合格。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一内存占用量以及所述第二内存占用量确定所述版本的DBMS在所述周期统计的第一内存占用量是否准确,之后还包括:
若确定所述版本的DBMS在所有所述周期内统计的第一内存占用量准确,则确定所述版本的测试结果为合格;所述第一内存占用量是所述DBMS在运行时统计的自身的内存占用量。
3.根据权利要求1所述的方法,其特征在于,所述确定所述版本的DBMS在所述周期统计的第一内存占用量是否准确,包括:
确定每个周期内所述第一内存占用量和所述第二内存占用量之间的差异;
若确定所述差异大于预设阈值,则确定所述版本的DBMS在所述周期内统计的第一内存占用量不准确;
若确定所述差异不大于预设阈值,则确定所述版本的DBMS在所述周期内统计的第一内存占用量准确。
4.根据权利要求1-3任意一项所述的方法,其特征在于,所述第一内存占用量是基于以下方式确定的:所述版本的DBMS统计所述周期内的各次内存申请量对应的第一累计值和各次内存释放量对应的第二累计值,将所述第一累计值和第二累计值的差值作为所述第一内存占用量。
5.根据权利要求3所述的方法,其特征在于,所述第二内存占用量是基于以下方式确定的:所述操作系统获取所述DBMS在所述周期的常驻集大小RSS,将所述RSS作为所述第二内存占用量。
6.根据权利要求1所述的方法,其特征在于,所述将所述差异代码作为故障代码,之后还包括:
基于所述故障代码对所述待测试版本的代码进行修复,将修复后的待测试版本作为待发布版本;
对所述DBMS在开发阶段的待测试版本进行内存统计准确性测试,之后还包括:
若确定所述待测试版本的测试结果为合格,则将所述待测试版本作为待发布版本。
7.根据权利要求1所述的方法,其特征在于,所述将所述差异代码作为故障代码,之后还包括:
发起针对所述故障代码的告警,以指示所述故障代码导致所述DBMS的待测试版本的测试结果为不合格。
8.一种数据库管理系统DBMS的测试装置,其特征在于,包括:
历史版本获取模块,用于获取所述DBMS的待测试版本,内存统计准确性测试是指测试DBMS是否具备准确统计自身的内存占用量的能力;对所述待测试版本进行内存统计准确性测试,若确定所述待测试版本的测试结果为不合格,则获取所述待测试版本之前的至少一个历史版本;
合格版本确定模块,用于基于版本从新至旧的顺序,逐个对各个所述历史版本进行内存统计准确性测试,直至得到测试结果为合格的历史版本,将测试结果为合格的历史版本作为合格版本;
故障代码确定模块,用于确定所述待测试版本对应的代码和所述合格版本对应的代码之间的差异代码,将所述差异代码作为故障代码;
测试模块,用于基于以下方式对所述待测试版本以及各历史版本中的每个版本进行内存统计准确性测试:运行所述版本的DBMS,在连续多个周期内,获取所述版本的DBMS上报的第一内存占用量,从操作系统获取第二内存占用量;所述第二内存占用量是所述操作系统在所述DBMS运行时统计的所述DBMS的内存占用量;在每个周期内,根据所述第一内存占用量以及所述第二内存占用量,确定所述版本的DBMS在所述周期统计的第一内存占用量是否准确;若确定所述版本的DBMS在至少一个周期内统计的第一内存占用量不准确,则确定所述版本的测试结果为不合格。
9.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310357787.6A CN116594862B (zh) | 2023-04-04 | 2023-04-04 | Dbms的测试方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310357787.6A CN116594862B (zh) | 2023-04-04 | 2023-04-04 | Dbms的测试方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116594862A CN116594862A (zh) | 2023-08-15 |
CN116594862B true CN116594862B (zh) | 2024-05-03 |
Family
ID=87594469
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310357787.6A Active CN116594862B (zh) | 2023-04-04 | 2023-04-04 | Dbms的测试方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116594862B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105740122A (zh) * | 2016-01-26 | 2016-07-06 | 广东欧珀移动通信有限公司 | 一种手机内存泄漏的监测方法及监测系统 |
CN110347407A (zh) * | 2019-07-16 | 2019-10-18 | 武汉斗鱼鱼乐网络科技有限公司 | 一种获取内存占用量的方法、装置、计算机设备及介质 |
CN112596760A (zh) * | 2020-12-09 | 2021-04-02 | 武汉联影医疗科技有限公司 | 软件维护方法、装置和设备 |
CN115129600A (zh) * | 2022-07-04 | 2022-09-30 | 浙江大学 | 基于差分模糊测试的数据库管理系统测试方法和测试系统 |
CN115454696A (zh) * | 2022-09-06 | 2022-12-09 | 浙江大华技术股份有限公司 | 一种内存泄漏检测的方法、装置及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8051413B2 (en) * | 2006-11-30 | 2011-11-01 | Red Hat, Inc. | Development tool for footprint reduction |
-
2023
- 2023-04-04 CN CN202310357787.6A patent/CN116594862B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105740122A (zh) * | 2016-01-26 | 2016-07-06 | 广东欧珀移动通信有限公司 | 一种手机内存泄漏的监测方法及监测系统 |
CN110347407A (zh) * | 2019-07-16 | 2019-10-18 | 武汉斗鱼鱼乐网络科技有限公司 | 一种获取内存占用量的方法、装置、计算机设备及介质 |
CN112596760A (zh) * | 2020-12-09 | 2021-04-02 | 武汉联影医疗科技有限公司 | 软件维护方法、装置和设备 |
CN115129600A (zh) * | 2022-07-04 | 2022-09-30 | 浙江大学 | 基于差分模糊测试的数据库管理系统测试方法和测试系统 |
CN115454696A (zh) * | 2022-09-06 | 2022-12-09 | 浙江大华技术股份有限公司 | 一种内存泄漏检测的方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116594862A (zh) | 2023-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109284269B (zh) | 异常日志分析方法、装置、存储介质及服务器 | |
CN110764993A (zh) | 自动化测试方法及终端设备 | |
CN110674047B (zh) | 软件测试方法、装置及电子设备 | |
CN115686961A (zh) | 处理器测试方法、装置及电子设备 | |
US20200136988A1 (en) | Resource optimization and update method, server, and device | |
CN110597704B (zh) | 应用程序的压力测试方法、装置、服务器和介质 | |
CN115391228A (zh) | 精准测试方法、装置、设备及介质 | |
CN110134598B (zh) | 一种批量处理方法、装置及系统 | |
CN116594862B (zh) | Dbms的测试方法、装置、电子设备及可读存储介质 | |
CN112416725A (zh) | 一种压力测试方法及装置 | |
US8739091B1 (en) | Techniques for segmenting of hardware trace and verification of individual trace segments | |
CN110765005B (zh) | 软件可靠性评估方法和装置 | |
CN109829014B (zh) | 测试数据获取的方法及装置 | |
CN110716859A (zh) | 自动为修改的代码推送测试用例的方法及相关装置 | |
CN109471787B (zh) | 软件质量评价方法及装置、存储介质、电子设备 | |
CN112506781B (zh) | 测试监控方法、装置、电子设备、存储介质及程序产品 | |
CN112506806B (zh) | 用于调试程序的方法、电子设备及存储介质 | |
CN115202946A (zh) | 自动化测试方法、装置、设备、存储介质及程序产品 | |
CN115373929A (zh) | 测试方法、装置、设备、可读存储介质及程序产品 | |
CN103853643A (zh) | 由安全关键系统中的可编程电路测试存储器的装置和方法 | |
CN114968753A (zh) | 设备升级测试方法、介质、电子设备及测试系统 | |
CN109903165B (zh) | 一种模型合并方法和装置 | |
CN109165127B (zh) | 问题接口的定位方法、装置及电子设备 | |
CN113760696A (zh) | 一种程序问题定位方法、装置、电子设备和存储介质 | |
CN111404715B (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 |