CN110413516A - 识别慢sql代码的方法及装置和电子设备 - Google Patents
识别慢sql代码的方法及装置和电子设备 Download PDFInfo
- Publication number
- CN110413516A CN110413516A CN201910636921.XA CN201910636921A CN110413516A CN 110413516 A CN110413516 A CN 110413516A CN 201910636921 A CN201910636921 A CN 201910636921A CN 110413516 A CN110413516 A CN 110413516A
- Authority
- CN
- China
- Prior art keywords
- test
- interface
- sql code
- test case
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- 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
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本申请实施例提供一种识别慢SQL代码的方法及装置和电子设备,所述方法基于分布式应用***,所述方法包括:针对目标软件的多层架构中数据访问层内的接口,为所述接口创建该接口调用的各个SQL代码的测试用例,并为所述测试用例构建测试数据;执行所述测试用例,获取所述测试用例执行后生成的执行日志;从所述执行日志中筛选执行时长大于阈值的目标执行日志;将所述目标执行日志对应测试用例的SQL代码确定为慢SQL代码。
Description
技术领域
本申请实施例涉及互联网技术领域,尤其涉及一种识别慢SQL代码的方法及装置和电子设备。
背景技术
在软件编程中,由于开发者的编程能力和业务的频繁迭代可能会产生慢SQL。所述慢SQL是指应用在运行一段时间业务后,由于部分SQL频繁地对数据库进行I/O操作,从而造成了该部分的SQL执行长时间占用CPU。对于应用来说,少量的慢SQL可能不影响业务正常运行,但是随着慢SQL增多到一定程度,最终会影响应用中其他业务功能的执行。
发明内容
本说明书实施例提供的一种识别慢SQL代码的方法及装置和电子设备:
根据本说明书实施例的第一方面,提供一种识别慢SQL代码的方法,所述方法基于分布式应用***,所述方法包括:
针对目标软件的多层架构中数据访问层内的接口,为所述接口创建该接口调用的各个SQL代码的测试用例,并为所述测试用例构建测试数据;
执行所述测试用例,获取所述测试用例执行后生成的执行日志;
从所述执行日志中筛选执行时长大于阈值的目标执行日志;
将所述目标执行日志对应测试用例的SQL代码确定为慢SQL代码。
根据本说明书实施例的第二方面,提供一种识别慢SQL代码的装置,所述装置基于分布式应用***,所述装置包括:
创建单元,针对目标软件的多层架构中数据访问层内的接口,为所述接口创建该接口调用的各个SQL代码的测试用例,并为所述测试用例构建测试数据;
测试单元,执行所述测试用例,获取所述测试用例执行后生成的执行日志;
筛选单元,从所述执行日志中筛选执行时长大于阈值的目标执行日志;
确定单元,将所述目标执行日志对应测试用例的SQL代码确定为慢SQL代码。
根据本说明书实施例的第三方面,提供一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为上述任一项识别慢SQL代码的方法。
本说明书实施例提供了识别慢SQL的方案,以DAO层内接口为单元测试,为接口创建测试用例以及测试数据;由于DAO层不体现业务属性,单元测试可以不受到外部***触发和业务数据的约束,从而可以实现测试灵活性和低成本;并且基于DAO层单元测试的方式,测试用例设计阶段可以自由的构建大量的数据,通过控制参数的输入可以对SQL代码进行分支覆盖的测试,如此测试过程可以不受测试设备的限制;同时采用自动化执行测试用例以及标准化筛选(筛选执行时长大于阈值的目标执行日志)可以提升识别效率和准确性。
附图说明
图1是本说明书一实施例提供的识别慢SQL代码的方法的流程图;
图2是本说明书一实施例提供的识别慢SQL代码的测试框架图;
图3是本说明书一实施例提供的识别慢SQL代码的装置的硬件结构图;
图4是本说明书一实施例提供的识别慢SQL代码的装置的模块示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
如前所述,在软件编程中,由于开发者的编程能力和业务的频繁迭代可能会产生慢SQL。所述慢SQL是指应用在运行一段时间业务后,由于部分SQL频繁地对数据库进行I/O操作,从而造成了该部分的SQL执行长时间占用CPU。对于应用来说,少量的慢SQL可能不影响业务正常运行,但是随着慢SQL增多到一定程度,最终会影响应用中其他业务功能的执行。
慢SQL在编程阶段通常无法识别,一般是在软件上线使用后伴随业务数据增多,才逐步显现出来的。因此,往往是在软件应用在分布式***上线一段时间后才发现慢SQL,此时需要定位应用源代码中的慢SQL,并对其修改,然后再上线。这样,需要中断线上旧应用的服务,并上传新应用,无疑对业务的正常运行产生危害。
为此,需要提供一种提前识别慢SQL代码的方案。
相关技术中,慢SQL通常是在应用上线前排查的。主要依靠人工评审和压力测试两种方法。
利用人工评审发现慢SQL,强依赖于评审人员对于SQL语句编写的技能和经验。无法实现统一标准,并且人工存在效率较低、成本较高;还不稳定的问题,存在漏审、错审的可能。
利用压力测试发现慢SQL时,测试覆盖率受到测试设备性能的限制。设备性能越强,可以发现的慢SQL越多,反之越少;由于测试设备不可能无限制增加,因此一般情况下通过压力测试是无法全部识别出慢SQL的,只能识别出一部分慢SQL。并且压力测试的周期较长,往往需要经历数月的周期,这对于应用迭代较快的应用来说是无法接受的。
为了解决上述问题,本申请提供了一种识别慢SQL代码的方案,能够不强依赖于人的SQL技能和不受测试设备的限制来进行慢SQL的识别、预警和采集。同时,该方案可以自动化执行,在软件持续发布中重复的被执行达到回归测试来保证软件质量基线的目的。
以下可以参考图1所示的一种识别慢SQL代码的方法为例加以介绍,所述方法可以基于分布式应用***,所述方法可以包括以下步骤:
步骤110:针对目标软件的多层架构中数据访问层内的接口,为所述接口创建该接口调用的各个SQL代码的测试用例,并为所述测试用例构建测试数据。
在实际应用中,慢SQL一般是由于频繁地对数据库进行操作导致的,可见慢SQL对应的业务操作往往是使用量较多较为频繁的SQL;因此,慢SQL对应的数据量通常不小。为此,可以仅针对那些业务数据量较大的接口进行识别;而无需针对所有接口;从而降低了业务复杂度,测试资源也可以相应减少。
在一实施例中,所述数据访问层的接口为符合预设条件的接口;
所述预设条件包括,
接口调用的数据表中数据量大于阈值。
在本申请中,在为软件设计数据库时,开发人员通常会根据业务特征,评估哪些数据表的数据量会比较大;这样就可以为这些数据表对应的DAO(数据访问层、Data AccessObject)配置测试环境。
以下可以结合图2所示的识别慢SQL代码方案的测试框架图进行理解。
DAO层为数据访问层,主要是通过调用SQL语句(一个或是一组)汇集了基础的数据库操作,并对其进行封装,对外提供出调用接口的。同时,DAO层不体现业务属性。任何慢SQL问题都能找到对应DAO层的一个接口。
通常对DAO层接口进行测试,测试用例可以不受到外部***触发和业务数据的约束。
为此,针对目标软件时,可以为DAO层中的接口创建各个SQL代码的测试用例,并为所述测试用例构建测试数据。一个接口可以对应有多个测试用例,但一个测试用例只会对应一个接口。所述测试数据可以从业务的数据库中提取;在测试用例执行后会产生相应的SQL执行日志;基于所述SQL执行日志记录的SQL执行时长就可以识别、确定哪些SQL代码是慢SQL代码。
在一实施例中,针对为所述接口创建该接口调用的各SQL代码的测试用例加以介绍:
以DAO层提供的接口为单位,为每个接口添加覆盖接口调用的各个SQL代码的测试用例。每个接口运行时都需要调用SQL代码;为此,可以针对该接口执行所需调用的各个SQL代码创建测试用例。
举例说明,针对实名认证结果查询的业务;测试用例的输入可以是用户姓名和身份证号。
测试用例设计:测试用例调用DAO层的查询接口查询“***实名认证账号库”。DAO层的框架会直接调用作为测试目标的SQL语句对数据库进行查询。根据身份证号码和姓名查询该用户是否是已经通过实名认证。如果未查到实名信息返回“实名认证未通过”的返回码;如果查到实名信息则返回“实名认证已通过”的返回码。
在一实施例中,针对为所述测试用例构建测试数据进行介绍:
创建测试用例后,还需要为测试用例的执行构建测试数据。具体地,可以通过自动化脚本,从数据库存储的历史业务数据中拉取部分业务数据作为测试数据。
所述测试数据包括正常业务数据和异常业务数据;
在执行测试用例时,如果接口调用了正常业务数据,则返回正常的测试结果;如果接口调用了异常业务数据,则返回表示异常的测试结果。
依然针对实名认证结果查询的业务为例:可以在“***实名认证账号库”中拉取大于100W的用户实名认证的业务数据。业务数据可以包含正常业务数据(50W已通过实名认证的人员信息),异常业务数据(50W未通过实名认证的数据)。
步骤120:执行所述测试用例,获取所述测试用例执行后生成的执行日志。
在为目标软件的接口创建各个SQL代码的测试用例以及构建了用于测试用例测试所需的测试数据后,可以开始进行测试。具体地,通过测试脚本执行每个测试用例,每个测试用例执行结束后一般都会生成对应的执行日志。也就是说每条执行日志都唯一对应了一个测试用例。一个测试用例可以对应多个执行日志。需要说明的是,执行日志中通过记录测试用例的唯一标识,以定位对应的测试用例。
步骤130:从所述执行日志中筛选执行时长大于阈值的目标执行日志。
步骤140:将所述目标执行日志对应测试用例的SQL代码确定为慢SQL代码。
在获取到测试用例执行后生成的执行日志后,可以根据这些执行日志的执行时长判断是否存在慢SQL。
一般的,慢SQL的执行时长都较长,因此可以通过设置阈值进行筛选。在某个执行日志的执行时长大于该阈值时,说明该执行日志对应的SQL代码为慢SQL代码;在某个执行日志的执行时长不大于该阈值时,说明该执行日志对应的SQL代码不为慢SQL代码。
所述阈值可以是预先设置的一个经验值。
随着计算机技术的不断发展,特别是人工智能的进步,所述阈值还可以是通过机器学习计算得到的。例如,基于历史确定的慢SQL,统计这些慢SQL的执行时长,再通过机器学习算法可以计算出一个最优的阈值。
再有的,所述阈值还可以是基于大数据技术计算得到的。例如,通过海量数据,发现大部分慢SQL的执行时长均大于3秒,那么就可以将本申请中的阈值也设定为3秒。
在确定哪些SQL代码是慢SQL代码后,还可以进行如下步骤中的任意一种或几种的组合:
1、采集所述慢SQL代码,并将所述慢SQL代码提供给测试方进行处理。
该步骤中,***在识别慢SQL代码后,可以记录这些慢SQL代码的信息,例如记录慢SQL代码的位置信息(位于哪部分代码块),慢SQL执行时长等,将慢SQL代码和/或相关信息发送给测试方,便于测试人员进行处理。
2、统计所述慢SQL代码的数量,当所述慢SQL代码的数量达到数量阈值时,向测试方发送预警通知。
通常情况下,少量的慢SQL可能并不会对业务正常执行产生明显影响。该步骤中,***并非识别出慢SQL就通知测试方,而是在累计识别出的慢SQL代码数量达到一个数量阈值时,再通知测试方;由测试人员统一对这批慢SQL进行处理;这样可以提升测试人员的处理效率,不会出现测试人员时刻需要处理慢SQL的情况。
3、统计所述慢SQL代码执行时长的总时长,当所述总时长达到时长阈值时,向测试方发送预警通知。
通常情况下,每个慢SQL的执行时长虽然超时但对于整个业务流程来说并不算明显。该步骤中,***并非识别出慢SQL就通知测试方,而是在累计识别出的慢SQL代码执行时长的总时长达到一个时长阈值时,再通知测试方;由测试人员统一对这批慢SQL进行处理;这样可以提升测试人员的处理效率,不会出现测试人员时刻需要处理慢SQL的情况。
在一实施例中,针对目标软件测试并识别慢SQL后,测试相关的测试用例就可以做持久化处理,并用于后续相同软件的慢SQL识别。
***可以持久化所述目标软件的多层架构中数据访问层内接口的测试用例。
通常,每个软件可以包含有唯一标识以及版本号;即所述目标软件包含有唯一标识以及版本号;
在持久化所述测试用例时,每个测试用例可以关联有目标软件的唯一标识;或者关联有目标软件的唯一标识以及版本号;
当目标软件迭代更新时,同样需要对新版本的目标软件进行慢SQL识别;此时,由于之前已经对旧版本识别过,而新旧版本的唯一标识是不变的;
因此,在接收到具有相同唯一标识的软件后,判断所述版本号是否为最新的版本号;
如果所述版本号为最新的版本号,获取所述唯一标识对应的持久化的测试用例;
在当前目标软件的版本号为最新的版本号时,直接获取持久化的关联相同唯一标识的测试用例;
并利用这些测试用例进行执行所述测试用例,获取所述测试用例执行后生成的执行日志的步骤。从而省去了重新创建测试用例构建测试数据的过程。
该实施例中,通过持久化测试用例,在后续新版本的目标软件发布前,复用该持久化的测试用例即可,保证新业务的变动产生相同的慢SQL能被及时发现。
通过上述实施例,能够不强依赖于人的SQL技能和不受测试设备的限制来进行慢SQL的识别、预警和采集。同时,该方案可以自动化执行,在软件持续发布中重复的被执行达到回归测试来保证软件质量基线的目的。
一方面的,本申请提供的慢SQL代码识别方案可以自动化执行,不受测试设备限制;即提升了识别效率也降低了识别成本。
另一方面,以DAO层内接口为单元测试的方式,由于DAO层不体现业务属性,单元测试用例不受到外部***触发和业务数据的约束;因此具备灵活性和低成本优点。
又一方面,基于DAO层单元测试的方式,测试用例设计阶段可以自由的构建大量的数据,通过控制参数的输入可以对SQL代码进行分支覆盖的测试。特别是能覆盖对外部因素有强依赖的情况,如依赖海量的用户注册数、异常情况下才会被调用的SQL分支等。这些在性能测试阶段是无法构建的场景。因此,本申请方案对于慢SQL的识别覆盖率较高,通常可以发现90%以上的慢SQL。
再一方面,基于DAO层的单元测试本质是一组测试代码。测试用例可以作为技术资产,反复使用。在后续的项目迭代中的复用从而缩短慢SQL发现的周期。同时,也能将自动化测试用例集成在持续集成的***中,保证软件的质量不因需求迭代而劣化。
值得一提的是,本申请提供的识别慢SQL代码的过程可以处于编码阶段或者测试阶段。当识别慢SLQ的过程提前到编码阶段时(即提交代码前),相当于将一部分***测试内容进行了前移,如此测试的前移可以大大减少目标软件在***测试阶段的时间成本、测试成本。
与前述识别慢SQL代码的方法实施例相对应,本说明书还提供了识别慢SQL代码的装置的实施例。所述装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机业务程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本说明书识别慢SQL代码的装置所在设备的一种硬件结构图,除了图3所示的处理器、网络接口、内存以及非易失性存储器之外,实施例中装置所在的设备通常根据识别慢SQL代码的实际功能,还可以包括其他硬件,对此不再赘述。
请参见图4,为本说明书一实施例提供的识别慢SQL代码的装置的模块图,所述装置对应了图1所示实施例,所述装置包括:
创建单元310,针对目标软件的多层架构中数据访问层内的接口,为所述接口创建该接口调用时各SQL代码的测试用例,并为所述测试用例构建测试数据;其中,所述SQL代码为所述调用接口关联的位于业务逻辑层内的SQL代码;
测试单元320,执行所述测试用例,获取所述测试用例执行后生成的执行日志;
筛选单元330,从所述执行日志中筛选执行时长大于阈值的目标执行日志;
确定单元340,将所述目标执行日志对应测试用例的SQL代码确定为慢SQL代码。
可选的,所述装置还包括:
采集单元,采集所述慢SQL代码,并将所述慢SQL代码提供给测试方进行处理。
可选的,所述装置还包括:
数量统计单元,统计所述慢SQL代码的数量,当所述慢SQL代码的数量达到数量阈值时,向测试方发送预警通知。
可选的,所述装置还包括:
时长统计单元,统计所述慢SQL代码执行时长的总时长,当所述总时长达到时长阈值时,向测试方发送预警通知。
可选的,所述数据访问层的接口为符合预设条件的接口;
所述预设条件包括,
接口调用的数据表中数据量大于阈值。
可选的,所述测试数据包括正常业务数据和异常业务数据;
所述测试单元中,在执行测试用例时,如果接口调用了正常业务数据,则返回正常的测试结果;如果接口调用了异常业务数据,则返回表示异常的测试结果。
可选的,所述装置还包括:
持久化单元,持久化所述测试用例。
可选的,所述目标软件包含有唯一标识以及版本号;在所述创建单元之前,还包括:
判断子单元,在接收到具有相同唯一标识的软件后,判断所述版本号是否为最新的版本号;
获取子单元,如果所述版本号为最新的版本号,获取所述唯一标识对应的持久化的测试用例;
复用子单元,利用所述持久化的测试用例重复执行所述执行单元。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上图4描述了识别慢SQL代码的装置的内部功能模块和结构示意,其实质上的执行主体可以为一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
针对目标软件的多层架构中数据访问层内的接口,为所述接口创建该接口调用时各SQL代码的测试用例,并为所述测试用例构建测试数据;其中,所述SQL代码为所述调用接口关联的位于业务逻辑层内的SQL代码;
执行所述测试用例,获取所述测试用例执行后生成的执行日志;
从所述执行日志中筛选执行时长大于阈值的目标执行日志;
将所述目标执行日志对应测试用例的SQL代码确定为慢SQL代码。
可选的,还包括:
采集所述慢SQL代码,并将所述慢SQL代码提供给测试方进行处理。
可选的,还包括:
统计所述慢SQL代码的数量,当所述慢SQL代码的数量达到数量阈值时,向测试方发送预警通知。
可选的,还包括:
统计所述慢SQL代码执行时长的总时长,当所述总时长达到时长阈值时,向测试方发送预警通知。
可选的,所述数据访问层的接口为符合预设条件的接口;
所述预设条件包括,
接口调用的数据表中数据量大于阈值。
可选的,所述测试数据包括正常业务数据和异常业务数据;
在执行测试用例时,如果接口调用了正常业务数据,则返回正常的测试结果;如果接口调用了异常业务数据,则返回表示异常的测试结果。
可选的,还包括:
持久化所述测试用例。
可选的,所述目标软件包含有唯一标识以及版本号;
在接收到具有相同唯一标识的软件后,判断所述版本号是否为最新的版本号;
如果所述版本号为最新的版本号,获取所述唯一标识对应的持久化的测试用例;
进行执行所述测试用例,获取所述测试用例执行后生成的执行日志的步骤。
在上述电子设备的实施例中,应理解,该处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,而前述的存储器可以是只读存储器(英文:read-only memory,缩写:ROM)、随机存取存储器(英文:random access memory,简称:RAM)、快闪存储器、硬盘或者固态硬盘。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于电子设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
Claims (17)
1.一种识别慢SQL代码的方法,其特征在于,所述方法基于分布式应用***,所述方法包括:
针对目标软件的多层架构中数据访问层内的接口,为所述接口创建该接口调用的各个SQL代码的测试用例,并为所述测试用例构建测试数据;
执行所述测试用例,获取所述测试用例执行后生成的执行日志;
从所述执行日志中筛选执行时长大于阈值的目标执行日志;
将所述目标执行日志对应测试用例的SQL代码确定为慢SQL代码。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
采集所述慢SQL代码,并将所述慢SQL代码提供给测试方进行处理。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
统计所述慢SQL代码的数量,当所述慢SQL代码的数量达到数量阈值时,向测试方发送预警通知。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
统计所述慢SQL代码执行时长的总时长,当所述总时长达到时长阈值时,向测试方发送预警通知。
5.根据权利要求1所述的方法,其特征在于,所述数据访问层的接口为符合预设条件的接口;
所述预设条件包括,
接口调用的数据表中数据量大于阈值。
6.根据权利要求1所述的方法,其特征在于,所述测试数据包括正常业务数据和异常业务数据;
在执行测试用例时,如果接口调用了正常业务数据,则返回正常的测试结果;如果接口调用了异常业务数据,则返回表示异常的测试结果。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
持久化所述测试用例。
8.根据权利要求7所述的方法,其特征在于,所述目标软件包含有唯一标识以及版本号;
在接收到具有相同唯一标识的软件后,判断所述版本号是否为最新的版本号;
如果所述版本号为最新的版本号,获取所述唯一标识对应的持久化的测试用例;
进行执行所述测试用例,获取所述测试用例执行后生成的执行日志的步骤。
9.一种识别慢SQL代码的装置,其特征在于,所述装置基于分布式应用***,所述装置包括:
创建单元,针对目标软件的多层架构中数据访问层内的接口,为所述接口创建该接口调用的各个SQL代码的测试用例,并为所述测试用例构建测试数据;
测试单元,执行所述测试用例,获取所述测试用例执行后生成的执行日志;
筛选单元,从所述执行日志中筛选执行时长大于阈值的目标执行日志;
确定单元,将所述目标执行日志对应测试用例的SQL代码确定为慢SQL代码。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
采集单元,采集所述慢SQL代码,并将所述慢SQL代码提供给测试方进行处理。
11.根据权利要求9所述的装置,其特征在于,所述装置还包括:
数量统计单元,统计所述慢SQL代码的数量,当所述慢SQL代码的数量达到数量阈值时,向测试方发送预警通知。
12.根据权利要求9所述的装置,其特征在于,所述装置还包括:
时长统计单元,统计所述慢SQL代码执行时长的总时长,当所述总时长达到时长阈值时,向测试方发送预警通知。
13.根据权利要求9所述的装置,其特征在于,所述数据访问层的接口为符合预设条件的接口;
所述预设条件包括,
接口调用的数据表中数据量大于阈值。
14.根据权利要求9所述的装置,其特征在于,所述测试数据包括正常业务数据和异常业务数据;
所述测试单元中,在执行测试用例时,如果接口调用了正常业务数据,则返回正常的测试结果;如果接口调用了异常业务数据,则返回表示异常的测试结果。
15.根据权利要求9所述的装置,其特征在于,所述装置还包括:
持久化单元,持久化所述测试用例。
16.根据权利要求15所述的装置,其特征在于,所述目标软件包含有唯一标识以及版本号;在所述创建单元之前,还包括:
判断子单元,在接收到具有相同唯一标识的软件后,判断所述版本号是否为最新的版本号;
获取子单元,如果所述版本号为最新的版本号,获取所述唯一标识对应的持久化的测试用例;
复用子单元,利用所述持久化的测试用例重复执行所述执行单元。
17.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为上述权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910636921.XA CN110413516B (zh) | 2019-07-15 | 2019-07-15 | 识别慢sql代码的方法及装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910636921.XA CN110413516B (zh) | 2019-07-15 | 2019-07-15 | 识别慢sql代码的方法及装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110413516A true CN110413516A (zh) | 2019-11-05 |
CN110413516B CN110413516B (zh) | 2023-08-25 |
Family
ID=68361465
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910636921.XA Active CN110413516B (zh) | 2019-07-15 | 2019-07-15 | 识别慢sql代码的方法及装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110413516B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112613176A (zh) * | 2020-12-23 | 2021-04-06 | 贝壳技术有限公司 | 慢sql语句预测方法及*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106980637A (zh) * | 2016-09-28 | 2017-07-25 | 平安科技(深圳)有限公司 | Sql审核方法和装置 |
CN109344056A (zh) * | 2018-09-07 | 2019-02-15 | 武汉达梦数据库有限公司 | 一种测试方法以及测试装置 |
CN109460349A (zh) * | 2018-09-19 | 2019-03-12 | 武汉达梦数据库有限公司 | 一种基于日志的测试用例生成方法和装置 |
-
2019
- 2019-07-15 CN CN201910636921.XA patent/CN110413516B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106980637A (zh) * | 2016-09-28 | 2017-07-25 | 平安科技(深圳)有限公司 | Sql审核方法和装置 |
WO2018058959A1 (zh) * | 2016-09-28 | 2018-04-05 | 平安科技(深圳)有限公司 | Sql审核方法、装置、服务器及存储设备 |
CN109344056A (zh) * | 2018-09-07 | 2019-02-15 | 武汉达梦数据库有限公司 | 一种测试方法以及测试装置 |
CN109460349A (zh) * | 2018-09-19 | 2019-03-12 | 武汉达梦数据库有限公司 | 一种基于日志的测试用例生成方法和装置 |
Non-Patent Citations (1)
Title |
---|
清华大学计算机与信息管理中心编: "轻量级Java EE体系架构程序开发", 中国铁道出版社 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112613176A (zh) * | 2020-12-23 | 2021-04-06 | 贝壳技术有限公司 | 慢sql语句预测方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN110413516B (zh) | 2023-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20160283357A1 (en) | Call stack relationship acquiring method and apparatus | |
CN111930617B (zh) | 基于数据对象化的自动化测试方法及装置 | |
CN109145051A (zh) | 分布式数据库的数据汇总方法及装置和电子设备 | |
CN114546738B (zh) | 服务器通用测试方法、***、终端及存储介质 | |
US9329979B2 (en) | Derivation of generalized test cases | |
US10229318B2 (en) | Activity-based robotic testing of wearable devices | |
CN111708712A (zh) | 用户行为测试用例的生成方法、流量回放方法及电子设备 | |
CN110413516A (zh) | 识别慢sql代码的方法及装置和电子设备 | |
CN109086198A (zh) | 数据库的测试方法、装置及存储介质 | |
CN109977020A (zh) | 一种自动化测试方法 | |
CN110046086A (zh) | 用于测试的期望数据生成方法及装置和电子设备 | |
CN111158987B (zh) | 微服务架构的健康检查方法及装置 | |
CN111538659A (zh) | 业务场景的接口测试方法、***、电子设备和存储介质 | |
CN115022201B (zh) | 一种数据处理功能测试方法、装置、设备及存储介质 | |
CN109656825A (zh) | 美术资源处理的方法及装置、电子设备、存储介质 | |
CN108563578A (zh) | Sdk兼容性检测方法、装置、设备及可读存储介质 | |
CN111367796B (zh) | 应用程序调试方法及装置 | |
CN110245066B (zh) | 应用运行环境创建方法、创建装置、电子设备及存储介质 | |
CN106230666A (zh) | 一种业务可用性的监控方法和监控*** | |
CN113630295B (zh) | 协议测试方法和装置 | |
CN110443043A (zh) | 一种对安卓应用程序的漏洞检测方法以及设备 | |
CN108763087A (zh) | 一种脚本测试方法、装置及*** | |
CN112882945B (zh) | 小程序数据处理方法、装置、设备及存储介质 | |
CN111143377A (zh) | 自动驾驶仿真数据收集方法、装置和*** | |
CN112749075B (zh) | 基于预设数据的业务测试方法、装置、存储介质及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |