CN113971175A - 软件测试方法、装置及存储介质 - Google Patents
软件测试方法、装置及存储介质 Download PDFInfo
- Publication number
- CN113971175A CN113971175A CN202010717468.8A CN202010717468A CN113971175A CN 113971175 A CN113971175 A CN 113971175A CN 202010717468 A CN202010717468 A CN 202010717468A CN 113971175 A CN113971175 A CN 113971175A
- Authority
- CN
- China
- Prior art keywords
- structured query
- category
- database
- optimization
- query statement
- 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.)
- Pending
Links
- 238000013522 software testing Methods 0.000 title claims abstract description 58
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000004458 analytical method Methods 0.000 claims abstract description 80
- 238000005457 optimization Methods 0.000 claims description 108
- 238000012360 testing method Methods 0.000 claims description 29
- 238000004590 computer program Methods 0.000 claims description 8
- 238000002546 full scan Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000012512 characterization method Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- 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/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- 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—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- 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
- 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/242—Query formulation
- G06F16/2433—Query languages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提出一种软件测试方法、装置及存储介质,其中方法包括:获取待测软件的运行日志,运行日志包括预设时间段内多个结构化查询语句对数据库的运行记录,结构化查询语句包括关键词、属性信息以及查询条件;根据关键词以及属性信息,对多个结构化查询语句进行聚类,得到多个类别的结构化查询语句;针对每个类别,根据类别的结构化查询语句对数据库的运行记录,生成与类别相对应的分析结果;根据分析结果对数据库的索引、表关联方式、结构化查询语句中的至少一种进行优化。该方法能够及时发现潜在的慢查询情况并解决,保证了产品的稳定性,提高了用户体验。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种软件测试方法、装置及计算机可读存储介质。
背景技术
目前的软件产品,通常会采用结构化查询语句对数据库中的数据进行查询、插入、更新、删除等操作,以实现软件产品的功能。对于该软件产品,一般是在线上使用过程中,在数据库表量很大的情况下,若某个结构化查询语句的查询时间特别长,影响用户对软件的使用体验时,才能确定存在慢查询,并解决该问题,难以及时发现软件产品中的慢查询情况,影响用户对软件的使用体验。
发明内容
本申请的目的旨在至少在一定程度上解决上述技术问题之一。
为此,本申请的第一个目的在于提出一种软件测试方法,该方法通过结构化查询语句的类别对软件的运行日志中的结构化查询语句的运行记录进行自动分析,且生成对应的分析结果,以便结合多个类别的分析结果对结构化查询语句进行优化,能够及时发现潜在的慢查询情况并解决,保证了产品的稳定性,提高了用户体验。
本申请的第二个目的在于提出一种软件测试装置。
本申请的第三个目的在于提出另一种软件测试装置。
本申请的第四个目的在于提出一种非临时性计算机可读存储介质。
为达上述目的,本申请第一方面实施例提出了一种软件测试方法,包括:获取待测软件的运行日志,所述运行日志包括预设时间段内多个结构化查询语句对数据库的运行记录,所述结构化查询语句包括关键词、属性信息以及查询条件;根据所述关键词以及属性信息,对所述多个结构化查询语句进行聚类,得到多个类别的结构化查询语句;针对每个类别,根据所述类别的结构化查询语句对数据库的运行记录,生成与所述类别相对应的分析结果;根据所述分析结果对所述数据库的索引、表关联方式、结构化查询语句中的至少一种进行优化。
本申请实施例的软件测试方法,通过获取待测软件的运行日志,所述运行日志包括预设时间段内多个结构化查询语句对数据库的运行记录,所述结构化查询语句包括关键词、属性信息以及查询条件;根据所述关键词以及属性信息,对所述多个结构化查询语句进行聚类,得到多个类别的结构化查询语句;针对每个类别,根据所述类别的结构化查询语句对数据库的运行记录,生成与所述类别相对应的分析结果;根据所述分析结果对所述数据库的索引、表关联方式、结构化查询语句中的至少一种进行优化。该方法通过结构化查询语句的类别对软件的运行日志中的结构化查询语句的运行记录进行自动分析,且生成对应的分析结果,以便结合多个类别的分析结果对结构化查询语句进行优化,能够及时发现潜在的慢查询情况并解决,保证了产品的稳定性,提高了用户体验。
为达上述目的,本申请第二方面实施例提出了一种软件测试装置,包括:获取模块,用于获取待测软件的运行日志,所述运行日志包括预设时间段内多个结构化查询语句对数据库的运行记录,所述结构化查询语句包括关键词、属性信息以及查询条件;聚类模块,用于根据关键词以及属性信息,对所述多个结构化查询语句进行聚类,得到多个类别的结构化查询语句;生成模块,用于针对每个类别,根据所述类别的结构化查询语句对数据库的运行记录,生成与所述类别相对应的分析结果;优化模块,用于根据所述分析结果对所述数据库的索引、表关联方式、结构化查询语句中的至少一种进行优化。
本申请实施例的软件测试装置,通过获取待测软件的运行日志,所述运行日志包括预设时间段内多个结构化查询语句对数据库的运行记录,所述结构化查询语句包括关键词、属性信息以及查询条件;根据所述关键词以及属性信息,对所述多个结构化查询语句进行聚类,得到多个类别的结构化查询语句;针对每个类别,根据所述类别的结构化查询语句对数据库的运行记录,生成与所述类别相对应的分析结果;根据所述分析结果对所述数据库的索引、表关联方式、结构化查询语句中的至少一种进行优化。该装置可实现通过结构化查询语句的类别对软件的运行日志中的结构化查询语句的运行记录进行自动分析,且生成对应的分析结果,以便结合多个类别的分析结果对结构化查询语句进行优化,能够及时发现潜在的慢查询情况并解决,保证了产品的稳定性,提高了用户体验。
为达上述目的,本申请第三方面实施例提出了另一种软件测试装置,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如上所述的软件测试方法。
为了实现上述目的,本申请第四方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的软件测试方法。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本申请一个实施例的软件测试方法的流程示意图;
图2为根据本申请另一个实施例的软件测试方法的流程示意图;
图3为根据本申请又一个实施例的软件测试方法的流程示意图;
图4为根据本申请一个实施例的软件测试装置的结构示意图;
图5为根据本申请一个实施例的另一种软件测试装置的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
下面参考附图描述本申请实施例的软件测试方法、装置及存储介质。本申请提供的软件测试方法的执行主体为软件测试装置,软件测试装置可以为终端设备、服务器等硬件设备,或者为硬件设备上安装的软件。
图1为本申请实施例提供的一种软件测试方法的流程示意图。如图1所示,该软件测试方法包括以下步骤:
步骤110,获取待测软件的运行日志,运行日志包括预设时间段内多个结构化查询语句对数据库的运行记录,结构化查询语句包括关键词、属性信息以及查询条件。
在本申请实施例中,待测软件可为未上线的软件产品,也可为已部分上线的软件产品。
作为一种示例,为了减少软件测试时的计算量,降低测试成本,可以为待测软件的运行日志的获取设置触发条件,例如,待测软件的运行日志的获取过程例如可以为,判断是否到达测试时间点,其中,测试时间点的数量为多个,周期性进行设置;在到达测试时间点时,获取待测软件在所述测试时间点之前最近的运行日志。在未到达测试时间点时,软件测试装置继续监控当前时间点,直至到达测试时间点时,获取待测软件在测试时间点之前最近的运行日志。
也就是说,软件测试装置可预先设置测试时间点,其中,测试时间点的数量可为多个,多个测试时间点周期性进行设置,比如,24小时内设置6个测试时间点,每4小时设置一个测试时间点。在当前时间到达测试时间点时,可获取待测软件在测试时间点之前最近的运行日志,也就是说,待测软件的运行日志可能有多个,比如,预设时间段为1天,多个运行日志例如可以为,包括第一天内的多个结构化查询语句对数据库的运行记录的运行日志,包括第二天内的多个结构化查询语句对数据库的运行记录的运行日志等。为了提高软件测试结果的实时性,因此,可获取待测软件在测试时间点之前最近的运行日志。在本申请实施例中,软件测试装置可通过指令接口读取待测软件的运行日志。其中,需要说明的是,结构化查询语句可包括关键词、属性信息以及查询条件等。比如,以结构化查询语句select id,status,code from t where time>’2019-11-01’为例,其中,select、from、where为关键词,表示该结构化查询语句的功能;id、status、code为属性信息;time>’2019-11-01’为条件。
在测试环境中,为了防止运行日志的文件过大,也避免每次测试时对重复的运行记录进行测试,可对数据库进行配置,限制每个运行日志中运行记录的数量。作为一种示例,在获取待测软件的运行日志之前,可获取对数据库的第一配置信息,第一配置信息包括:至少一个时间段,以及每个时间段分别对应的存储路径;将第一配置信息提供给数据库,以使数据库在获取到结构化查询语句的运行记录时,按照结构化查询语句的执行时间点所确定得到的存储路径存储所述结构化查询语句的运行记录,得到至少一个运行日志。
也就是说,测试人员可预先对数据库进行第一配置信息配置,软件测试装置在获取到该第一配置信息后,可将该第一配置信息提供给数据库,数据库在获取到多个结构化查询语句的运行记录时,可获知每个结构化查询语句的执行时间点在第一配置信息中所属的时间段,根据该时间段对应的存储路径将所述结构化查询语句的运行记录进行存储,从而可得到至少一个运行日志。其中,需要说明的是,第一配置信息可包括但不限于:至少一个时间段,以及每个时间段分别对应的存储路径。其中,时间段比如为12:00-13:00、13:00-14:00等。
作为另一种示例,在获取待测软件的运行日志之前,可获取对数据库的第二配置信息,第二配置信息包括:至少一个时间段,以使数据库按照至少一个时间段对总运行日志进行拆分,得到每个时间段的运行日志。
也就是说,在获取待测软件的运行日志之前,测试人员可预先对数据库进行第二配置信息配置,软件测试装置在获取到第二配置信息后,可将第二配置信息提供给数据库,数据库在获取到结构化查询语句的所有运行记录时,生成总运行日志,接着,数据库可按照第二配置信息中的至少一个时间段对总运行日志进行拆分,从而得到每个时间段的运行日志。其中,需要说明的是,第二配置信息中可包括但不限于:至少一个时间段。时间段比如为12:00-13:00、13:00-14:00等。
需要理解的是,由于待测软件的运行日志可分为不同的类型,比如,运行日志可分为普通查询日志、慢查询日志、错误日志等,不同的日志会有不同的配置信息,结构化查询语句的运行记录根据配置信息会分配到对应的日志中进行存储。因此,软件测试装置需发送不同的获取请求以获取待测试软件的不同类型的运行日志。为了节省相关请求资源,在本申请实施例中,在获取待测软件的运行日志之前,可获取对数据库的第三配置信息,将第三配置信息提供给数据库,以便数据库根据第三配置信息将所有的运行记录分配到慢查询日志中,从而在获取运行日志时,只需要获取待测软件的慢查询日志。
也就是说,在获取待测软件的运行日志之前,测试人员可预先对数据库按照第三配置信息进行配置,软件测试装置在获取到第三配置信息后,可将第三配置信息提供给数据库,数据库在获取到结构化查询语句的运行记录时,可判断结构化查询语句的运行记录的执行时间长度是否大于预设响应时间阈值,即是否大于零值,当结构化查询语句的运行记录的执行时间长度为非零值时,将该结构化查询语句存储至慢查询日志中,从而能够将所有结构化查询语句的运行记录存储为慢查询日志,从而软件测试装置在获取运行日志时,只需要获取慢查询日志中预设时间段内的运行记录即可。其中,需要说明的是,获取运行日志时,只需要发送慢查询日志相关的请求,而不需要发送其他类型日志相关的请求,节省了请求资源。
步骤120,根据关键词以及属性信息,对多个结构化查询语句进行聚类,得到多个类别的结构化查询语句。
可选地,针对任意两个结构化查询语句,根据两个结构化查询语句的关键词以及属性信息,确定两个结构化查询语句的相似度;将对应的相似度大于或者等于预设相似度阈值的两个结构化查询语句聚类到一起,生成多个类别的结构化查询语句。
也就是说,针对多个结构化查询语句中的任意两个结构化查询语句,可将所述两个结构化查询语句的关键字以及属性信息进行比对,根据相关相似度算法确定所述两个结构化查询语句的相似度,将对应的相似度与预设相似度阈值进行比对,将对应的相似度大于或等于预设相似度阈值的两个结构化查询语句聚类到一起,从而生成多个类别的结构化查询语句。其中,相似度算法比如为编辑距离计算算法、杰卡德系数计算算法等。
作为一种示例,可采用计算机程序设计语言(如python)开发工具,对运行日志进行扫描,获取到多个结构化查询语句中的任意两个结构化查询语句中的关键词以及属性信息,将所述任意两个结构化查询语句的关键词以及属性信息,结合相似度算法进行相似度计算,将对应的相似度大于或等于预设相似度阈值的两个结构化查询语句聚类到一起,从而生成多个类别的结构化查询语句。比如,将对应的相似度大于或等于预设相似度阈值的两个结构化查询语句进行变量替换,实现所述两个结构化查询语句的聚类,进而得到多个类别的结构化查询语句。
举例而言,将结构化查询语句select id,status,code from t where time>’2019-11-01’和select id,status,code from t where time>’2019-11-02’进行变量替换,变成select id,status,code from t where time>’?’,则select id,status,codefrom t where time>’?’可表示这一类型的结构化查询语句。
步骤130,针对每个类别,根据类别的结构化查询语句对数据库的运行记录,生成与类别相对应的分析结果。
在本申请实施例中,针对多个类别的结构化查询语句中的每个类别,可根据该类别的结构化查询语句在运行日志中对数据库的运行记录,生成与所述类别相对应的分析结果。其中,需要说明的是,每个类别相对应的分析结果可包括以下参数中至少一种:平均执行时间长度、最大的执行时间长度、执行次数、最近的执行时间点、平均扫描行数、最大扫描行数、平均返回行数、最大返回条数等。
举例而言,可分别统计每个类别对应的所有结构化查询语句对数据库的运行记录,比如,每个类别对应的所有结构化查询语句的执行时间、执行次数、最近的执行时间点、扫描行数、返回行数、返回条数等测试记录,接着,对每个类别的对应的所有结构化查询语句对数据库的运行记录进行比较分析,可生成该类别相对应的分析结果,如,对每个类别的结构化查询语句的执行时间进行取平均值,可得该类别的结构化查询语句的平均执行时间;又如,对每个类别对应的所有结构化查询语句的执行时间进行比较,可得到该类别对应的所有的结构化查询语句的最大的执行时间长度。
步骤140,根据分析结果对数据库的索引、表关联方式、结构化查询语句中的至少一种进行。
为了能够及时发现潜在的慢查询情况并解决,在本申请实施例中,在生成多个类别相对应的分析结果后,可根据待排序参数对多个类别的分析结果进行排序,并获取多个类别的分析结果中,排序在前的预设数量的类别的结构化查询语句的执行计划,根据该执行计划以及预设的优化策略,确定对应的类别是否为待进行索引优化的类别,在确定所述类别为待进行索引优化的类别后,对数据库的索引、表关联方式、结构化查询语句中至少一种的优化建议。具体详见后续实施例的描述。
综上,通过结构化查询语句的类别对软件的运行日志中的结构化查询语句的运行记录进行自动分析,且生成对应的分析结果,以便结合多个类别的分析结果对结构化查询语句进行优化,能够及时发现潜在的慢查询情况并解决,保证了产品的稳定性,提高了用户体验。
为了能够及时发现潜在的慢查询情况并解决,在本申请实施例中,如图2所示,在生成多个类别相对应的分析结果后,可根据待排序参数对多个类别的分析结果进行排序,并获取多个类别的分析结果中,排序在前的预设数量的类别的结构化查询语句的执行计划,根据该执行计划以及预设的优化策略,确定对应的类别是否为待进行索引优化的类别,在确定所述类别为待进行索引优化的类别后,对数据库的索引、表关联方式、结构化查询语句中至少一种的优化建议。图1所示实施例的步骤140中包括如下步骤:
步骤210,确定分析结果中的待排序参数。
在本申请实施例中,可将多个类别的分析结果中的一个或者多个参数确定为待排序参数。比如,可将多个类别的分析结果中的结构化查询语句的执行次数、最大的执行时间长度作为待排序参数。
步骤220,根据待排序参数对多个类别的分析结果进行排序,得到排序结果。
作为一种示例,待排序参数为多个类别的分析结果中的一个参数时,可将多个类别的分析结果直接根据待排序参数进行排序,从而可得到多个类别的分析结果对应的排序结果。比如,将多个类别的分析结果中的结构化查询语句的执行次数作为待排序参数,将多个类别的分析结果按照结果化查询语句的执行次数从大到小的顺序进行排序。
作为另一种示例,待排序参数为多个类别的分析结果中的多个参数时,可将待排序参数中的多个参数分别设置不同的权重,比如,在多个类别的分析结果优先按照待排序参数中的某个参数进行排序时,可将该参数对应的权重设置为最大。接着,针对每个待排序参数,可根据对应的权重对待排序参数进行排序,获取排序参数的排序结果,确定排序结果中每个类别的分析结果的权重,结合待排序参数的权重以及排序结果中每个类别的分析结果的权重,确定各个类别的分析结果在该待排序参数下的排序分数;针对每个类别的分析结果,结合在每个待排序参数下的排序分数,确定综合排序分数,进而确定综合排序结果,比如,按照综合排序分数从高到低进行排序。其中,需要说明的是,权重大小可根据具体情况进行设置。本申请不做具体限制。
步骤230,获取排序结果中排序在前的预设数量的类别。
在本申请实施例中,得到排序结果后,可将排序结果中排序在前的预设数量的分析结果进行获取,并获取该分析结果对应的类别。比如,预设数量为10,可获取排序结果中排序在前10位的分析结果,并获取该前10位分析结果对应的类别。
步骤240,针对预设数量的类别中的每个类别,获取类别的结构化查询语句的执行计划,其中,执行计划用于表征类别的结构化查询语句的查询方式。
作为一种示例,在获取到排序结果中排序在前的预设数量的类别后,对于预设数量的类别中的每个类别,可确定出该类别对应的结构化查询语句,将每个类别的结构化查询语句通过结构化查询语句的相关命令(比如,explain),生成对应的执行计划,从而可获取每个类别的结构化查询语句的执行计划。
其中,需要说明的是,执行计划用于表征类别的结构化查询语句的查询方式。在本申请实施例中,所述类别的结构化查询语句可为索引查询、全扫描查询或者半扫描查询。在生成执行计划时,可采用相关标记词进行标记,根据不同的标记词即可确定该执行计划对应的查询类型。比如,执行计划中出现using index等标记词时,也就是根据索引进行查询,该执行计划表征该类别的结构化查询语句为索引查询;又比如,执行计划中出现“ALL、using where”时,对所有数据进行全部扫描查询或者对指定数据进行查询,该执行计划表征该类别的结构化查询语句为全扫描查询;再比如,执行计划中出现“range、where”时,也就是查询某一范围内的数据,可对该范围内的数据进行扫描查询,该执行计划表征该类别的结构化查询语句为半扫描查询。
步骤250,根据执行计划以及预设的优化策略,确定类别是否为待进行索引优化的类别,以及对数据库的索引、表关联方式、结构化查询语句中至少一种的优化建议。
在本申请实施例中,在执行计划表征所述类别的结构化查询语句为全扫描查询或者半扫描查询时,可确定出该类别为可进行优化的类别,并判断该类别的结构化查询语句是否满足预设的优化条件,在该类别的结构化查询语句满足预设的优化条件时,根据所述类别的结构化查询语句所满足的优化条件,对数据库的索引、表关联方式、结构化查询语句中至少一种进行优化建议。详见后续实施例的描述。
另外,为了提升开发人员对于优化结构化查询语句的能力,并减少沟通成本,提高开发效率,在本申请实施例中,在获取到多个类别的分析结果、执行计划以及优化建议后,软件测试装置可将多个类别的分析结果、执行计划以及优化建议进行展示,比如,可通过配置开发人员的相关邮箱,在测试完成时,可将相关的具有潜在的慢查询情况的结构化查询语句以及优化建议,输出到开发人员邮箱,开发人员可以直接查看并采取相关的优化措施进行优化。
综上,在生成多个类别相对应的分析结果后,可根据待排序参数对多个类别的分析结果进行排序,并获取多个类别的分析结果中,排序在前的预设数量的类别的结构化查询语句的执行计划,根据该执行计划以及预设的优化策略,确定对应的类别是否为待进行索引优化的类别,在确定所述类别为待进行索引优化的类别后,对数据库的索引、表关联方式、结构化查询语句中至少一种的优化建议,能够及时发现潜在的慢查询情况并解决,保证了产品的稳定性,提高了用户体验。
为了更好地对结构化查询语句进行优化,在本申请实施例中,如图3所示,在执行计划表征所述类别的结构化查询语句为全扫描查询或者半扫描查询时,可确定出该类别为可进行优化的类别,并判断该类别的结构化查询语句是否满足预设的优化条件,在该类别的结构化查询语句满足预设的优化条件时,根据所述类别的结构化查询语句所满足的优化条件,对数据库的索引、表关联方式、结构化查询语句中至少一种进行优化建议。在图2所示实施例的步骤250中包括如下步骤:
步骤310,在执行计划表征类别的结构化查询语句为全扫描查询或者半扫描查询时,确定类别为可进行优化的类别。
在本申请实施例中,类别的结构化查询语句可为索引查询、全扫描查询或者半扫描查询。在生成执行计划时,可采用相关标记词进行标记,根据不同的标记词即可确定该执行计划对应的查询类型。比如,执行计划中出现using index等标记词时,也就是根据索引进行查询,该执行计划表征该类别的结构化查询语句为索引查询;又比如,执行计划中出现“ALL、using where”时,对所有数据进行全部扫描查询或者对指定数据进行查询,该执行计划表征该类别的结构化查询语句为全扫描查询;再比如,执行计划中出现“range、where”时,也就是查询某一范围内的数据,可对该范围内的数据进行扫描查询,该执行计划表征该类别的结构化查询语句为半扫描查询。
可以理解,类别的结构化查询语句为索引查询时,可快速定位到数据库中的某条数据,速度较快,无需进行优化。因此,在执行计划表征类别的结构化查询语句为全扫描查询或者半扫描查询时,可确定该类别为可进行优化的类别。
举例而言,比如,执行计划中出现“ALL、using where”等标记词时,也就是执行计划表征类别的结构化查询语句为全扫描查询时,则确定该类别为可进行优化的类别。又比如,执行计划中出现“range、where”时,也就是执行计划表征类别的结构化查询语句为半扫描查询时,则确定该类别为可进行优化的类别。
步骤320,在类别为可进行优化的类别时,判断类别的结构化查询语句是否满足预设的优化条件。
在本申请实施例中,在类别的结构化查询语句为可进行优化的类别时,也就是类别的结构化查询语句为全扫描查询或者半扫描查询时,可判断所述类别的结构化查询语句是否满足预设的优化条件。作为一种示例,可将所述类别的结构化查询语句的对应的分析结果与预设的优化条件进行比对,可确定所述类别的结构化查询语句是否满足预设的优化条件,其中,预设的优化条件可包括以下条件中的任意一种或者多种:扫描的行数大于预设行数阈值、扫描的多个行数的属性种类大于预设种类阈值、存在大表驱动小表的情况、存在关联表中的字段没有索引的情况。其中,需要说明的是,扫描的行数可为分析结果中的平均扫描行数或者最大扫描行数。
步骤330,在类别的结构化查询语句满足预设的优化条件时,确定类别为待进行优化的类别。
在本申请实施例中,在类别的结构化查询语句满足预设的优化条件时,也就是类别的结构化查询语句对应的分析结果中与预设的优化条件进行比对时,在类别的结构化查询语句满足预设的优化条件时,比如,满足以下条件中的任意一种或多种:扫描的行数大于预设行数阈值、扫描的多个行数的属性种类大于预设种类阈值、存在大表驱动小表的情况、存在关联表中的字段没有索引的情况,可将该类别确定为待进行优化的类别。
步骤340,根据类别的结构化查询语句所满足的优化条件,确定对数据库的索引、表关联方式、结构化查询语句中至少一种的优化建议。
需要理解的是,由于待进行优化的类别的结构化查询语句可满足优化条件中的任意一种或者多种,因此,根据类别的结构化查询语句所满足的优化条件,可确定对数据库的索引、表关联方式、结构化查询语句中至少一种的优化建议。
可以理解的是,扫描的行数大于预设行数阈值,和/或,扫描的多个行数的属性种类大于预设种类阈值时,扫描时间较长,对应的结构化查询语句的执行时间也较长,因此,在本申请实施例中,在所满足的优化条件为扫描的行数大于预设行数阈值,和/或,扫描的多个行数的属性种类大于预设种类阈值时,确定所述优化建议为对数据库的索引进行优化,或者对结构化查询语句进行优化。
作为一种示例,扫描的行数大于预设行数阈值,和/或,扫描的多个行数的属性种类大于预设种类阈值时,获取类别的结构化查询语句的属性信息,属性信息包括:数据表的标识,以及属性名称;根据属性信息查询数据库,确定数据库中数据表的属性名称所在列是否建立有索引;若数据库中数据表的属性名称所在列未建立有索引,则确定类别下对数据库的索引的优化建议。若数据库中数据表的属性名称所在列建立有索引,则确定类别的结构化查询语句的优化建议。
也就是说,在所满足的优化条件为扫描的行数大于预设行数阈值,和/或,扫描的多个行数的属性种类大于预设种类阈值时,可获取类别的结构化查询语句的属性信息,其中,属性信息可包括数据表的标识,以及属性名称,数据表的标识可用于标识数据表,属性名称可用于确定数据表中的属性。接着,根据属性信息查询数据库,根据属性信息中的数据表的标识可确定数据库中需要查询的数据表,根据属性信息中的属性名称可确定数据表中的属性,从而可确定该属性在数据表中所在列是否建立索引,若数据库中数据表的属性名称所在列未建立有索引,通过匹配规则,可输出数据库中数据表的属性名称所在列未建立有索引的提示,并确定出所述类别下对数据库的索引的优化建议。若数据库中数据表的属性名称所在列建立有索引,可确定出该类别的结构化查询语句的优化建议。比如,对于建立索引的结构化查询语句的where语句中的字段进行分析,可确定对于该结构化查询语句建立的索引是否合理。若该索引不合理,可确定出该类别的结构化查询语句的优化建议。
需要说明的是,对于扫描的行数大于预设行数阈值,但扫描的多个行数的属性种类小于或等于预设种类阈值时,比如,以多个行数的属性为性别为例,属性种类为男和女,该属性种类小于预设的种类阈值(比如3),即使每个属性种类对应多行数据,在查询时,类别的结构化查询语句对应的结果分析中的最大扫描行数大于预设行数阈值,但扫描的多个行数的属性种类较少,即使给每个属性种类加上索引,也不能有效的减少执行时间。
作为另一种示例,在所满足的优化条件为存在大表驱动小表的情况时,确定优化建议为对表关联方式的优化建议。
也就是说,在所满足的优化条件为存在大表驱动小表的情况时,类别的结构化查询语句查询数据表时的效率较低,可确定出优化建议为对表关联方式的优化建议,比如,确定优化建议为小表驱动大表的关联方式的优化建议。
作为再一种示例,在所满足的优化条件为存在关联表中的字段没有索引时,确定优化建议为对数据库的索引的优化建议。
也就是说,在所满足的优化条件为存在关联表中的字段没有索引时,可进行缺少相关的关联索引的提示,输出数据库的索引的最优化建议。
综上,通过在执行计划表征所述类别的结构化查询语句为全扫描查询或者半扫描查询时,可确定出该类别为可进行优化的类别,并判断该类别的结构化查询语句是否满足预设的优化条件,在该类别的结构化查询语句满足预设的优化条件时,根据所述类别的结构化查询语句所满足的优化条件,对数据库的索引、表关联方式、结构化查询语句中至少一种进行优化建议,能够及时发现潜在的慢查询情况并解决,保证了产品的稳定性,提高了用户体验。
本申请实施例的软件测试方法,通过获取待测软件的运行日志,运行日志包括预设时间段内多个结构化查询语句对数据库的运行记录,结构化查询语句包括关键词、属性信息以及查询条件;根据关键词以及属性信息,对多个结构化查询语句进行聚类,得到多个类别的结构化查询语句;针对每个类别,根据类别的结构化查询语句对数据库的运行记录,生成与类别相对应的分析结果;根据分析结果对所述数据库的索引、表关联方式、结构化查询语句中的至少一种进行优化。该方法通过结构化查询语句的类别对软件的运行日志中的结构化查询语句的运行记录进行自动分析,且生成对应的分析结果,以便结合多个类别的分析结果对结构化查询语句进行优化,能够及时发现潜在的慢查询情况并解决,保证了产品的稳定性,提高了用户体验。
与上述几种实施例提供的软件测试方法相对应,本申请的一种实施例还提供一种软件测试装置,由于本申请实施例提供的软件测试装置与上述几种实施例提供的软件测试方法相对应,因此在前述软件测试方法的实施方式也适用于本实施例提供的软件测试装置,在本实施例中不再详细描述。图4为根据本申请一个实施例的软件测试装置的结构示意图。如图4所示,该软件测试装置400包括:获取模块410、聚类模块420、生成模块430、优化模块440。
其中,获取模块410,用于获取待测软件的运行日志,运行日志包括预设时间段内多个结构化查询语句对数据库的运行记录,结构化查询语句包括关键词、属性信息以及查询条件;聚类模块420,用于根据关键词以及属性信息,对所述多个结构化查询语句进行聚类,得到多个类别的结构化查询语句;生成模块430,用于针对每个类别,根据类别的结构化查询语句对数据库的运行记录,生成与类别相对应的分析结果;优化模块440,用于根据分析结果对数据库的索引、表关联方式、结构化查询语句中的至少一种进行优化。
作为本申请实施例的一种可能实现方式,获取模块410还用于获取对数据库的第一配置信息,第一配置信息包括:至少一个时间段,以及每个时间段分别对应的存储路径;将第一配置信息提供给数据库,以使数据库在获取到结构化查询语句的运行记录时,按照所述结构化查询语句的执行时间点所确定得到的存储路径存储结构化查询语句的运行记录,得到至少一个运行日志。
作为本申请实施例的一种可能实现方式,获取模块410还用于获取对数据库的第二配置信息,所述第二配置信息包括:至少一个时间段,以使数据库按照所述至少一个时间段对总运行日志进行拆分,得到每个时间段的运行日志。
作为本申请实施例的一种可能实现方式,获取模块410还用于获取对数据库的第三配置信息,所述第三配置信息中的预设响应时间阈值为零;获取模块410具体用于获取所述待测软件的慢查询日志。作为本申请实施例的一种可能实现方式,获取模块410具体用于判断是否到达测试时间点,其中,测试时间点的数量为多个,周期性进行设置;在到达测试时间点时,获取待测软件在测试时间点之前最近的运行日志。
作为本申请实施例的一种可能实现方式,聚类模块420具体用于针对任意两个结构化查询语句,根据两个结构化查询语句的关键词以及属性信息,确定两个结构化查询语句的相似度;将对应的相似度大于或者等于预设相似度阈值的两个结构化查询语句聚类到一起,生成多个类别的结构化查询语句。
作为本申请实施例的一种可能实现方式,分析结果包括以下参数中至少一种:平均执行时间长度、最大的执行时间长度、执行次数、最近的执行时间点、平均扫描行数、最大扫描行数、平均返回行数、最大返回条数。
作为本申请实施例的一种可能实现方式,优化模块440具体用于确定分析结果中的待排序参数;根据待排序参数对多个类别的分析结果进行排序,得到排序结果;获取排序结果中排序在前的预设数量的类别;针对预设数量的类别中的每个类别,获取类别的结构化查询语句的执行计划,其中,执行计划用于表征类别的结构化查询语句的查询方式;根据执行计划以及预设的优化策略,确定类别是否为待进行索引优化的类别,以及对数据库的索引、表关联方式、结构化查询语句中至少一种的优化建议。
作为本申请实施例的一种可能实现方式,优化模块440还用于在执行计划表征类别的结构化查询语句为全扫描查询或者半扫描查询时,确定类别为可进行优化的类别;在类别为可进行优化的类别时,判断类别的结构化查询语句是否满足预设的优化条件;在类别的结构化查询语句满足预设的优化条件时,确定类别为待进行优化的类别;根据类别的结构化查询语句所满足的优化条件,确定对数据库的索引、表关联方式、结构化查询语句中至少一种的优化建议。
作为本申请实施例的一种可能实现方式,优化条件包括以下条件中的任意一种或者多种:扫描的行数大于预设行数阈值、扫描的多个行数的属性种类大于预设种类阈值、存在大表驱动小表的情况、存在关联表中的字段没有索引的情况。
作为本申请实施例的一种可能实现方式,优化模块440还用于在所满足的优化条件为扫描的行数大于预设行数阈值,和/或,扫描的多个行数的属性种类大于预设种类阈值时,确定优化建议为对数据库的索引进行优化,或者对结构化查询语句进行优化;在所满足的优化条件为存在大表驱动小表的情况时,确定优化建议为对表关联方式的优化建议;在所满足的优化条件为存在关联表中的字段没有索引时,确定优化建议为对数据库的索引的优化建议。
作为本申请实施例的一种可能实现方式,优化模块440还用于获取类别的结构化查询语句的属性信息,属性信息包括:数据表的标识,以及属性名称;根据属性信息查询数据库,确定数据库中数据表的属性名称所在列是否建立有索引;若数据库中数据表的属性名称所在列未建立有索引,则确定类别下对数据库的索引的优化建议;若数据库中数据表的属性名称所在列建立有索引,则确定类别的结构化查询语句的优化建议。
作为本申请实施例的一种可能实现方式,软件测试装置400还包括:展示模块。
其中,展示模块用于展示所述多个类别的分析结果、执行计划以及优化建议。
本申请实施例的软件测试装置,通过获取待测软件的运行日志,运行日志包括预设时间段内多个结构化查询语句对数据库的运行记录,结构化查询语句包括关键词、属性信息以及查询条件;根据关键词以及属性信息,对多个结构化查询语句进行聚类,得到多个类别的结构化查询语句;针对每个类别,根据类别的结构化查询语句对数据库的运行记录,生成与类别相对应的分析结果;根据分析结果对所述数据库的索引、表关联方式、结构化查询语句中的至少一种进行优化。该装置可实现通过结构化查询语句的类别对软件的运行日志中的结构化查询语句的运行记录进行自动分析,且生成对应的分析结果,以便结合多个类别的分析结果对结构化查询语句进行优化,能够及时发现潜在的慢查询情况并解决,保证了产品的稳定性,提高了用户体验。
为了实现上述实施例,本申请还提出另一种软件测试装置,图5为本申请实施例提供的另一种软件测试装置的结构示意图。该软件测试装置包括:
存储器1001、处理器1002及存储在存储器1001上并可在处理器1002上运行的计算机程序。
处理器1002执行所述程序时实现上述实施例中提供的软件测试方法。
进一步地,软件测试装置还包括:
通信接口1003,用于存储器1001和处理器1002之间的通信。
存储器1001,用于存放可在处理器1002上运行的计算机程序。
存储器1001可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器1002,用于执行所述程序时实现上述实施例所述的软件测试方法。
如果存储器1001、处理器1002和通信接口1003独立实现,则通信接口1003、存储器1001和处理器1002可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture,简称为EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器1001、处理器1002及通信接口1003,集成在一块芯片上实现,则存储器1001、处理器1002及通信接口1003可以通过内部接口完成相互间的通信。
处理器1002可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
为了实现上述实施例,本申请实施例还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例的软件测试方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (16)
1.一种软件测试方法,其特征在于,包括:
获取待测软件的运行日志,所述运行日志包括预设时间段内多个结构化查询语句对数据库的运行记录,所述结构化查询语句包括关键词、属性信息以及查询条件;
根据所述关键词以及属性信息,对所述多个结构化查询语句进行聚类,得到多个类别的结构化查询语句;
针对每个类别,根据所述类别的结构化查询语句对数据库的运行记录,生成与所述类别相对应的分析结果;
根据所述分析结果对所述数据库的索引、表关联方式、结构化查询语句中的至少一种进行优化。
2.根据权利要求1所述的方法,其特征在于,所述获取待测软件的运行日志之前,还包括:
获取对数据库的第一配置信息,所述第一配置信息包括:至少一个时间段,以及每个时间段分别对应的存储路径;
将所述第一配置信息提供给所述数据库,以使所述数据库在获取到结构化查询语句的运行记录时,按照所述结构化查询语句的执行时间点所确定得到的存储路径存储所述结构化查询语句的运行记录,得到至少一个运行日志。
3.根据权利要求1所述的方法,其特征在于,所述获取待测软件的运行日志之前,还包括:
获取对数据库的第二配置信息,所述第二配置信息包括:至少一个时间段,以使数据库按照所述至少一个时间段对总运行日志进行拆分,得到每个时间段的运行日志。
4.根据权利要求1所述的方法,其特征在于,所述获取待测软件的运行日志之前,还包括:
获取对所述数据库的第三配置信息,所述第三配置信息中的预设响应时间阈值为零;
则获取待测软件的运行日志,具体为:
获取所述待测软件的慢查询日志。
5.根据权利要求1所述的方法,其特征在于,所述获取待测软件的运行日志,包括:
判断是否到达测试时间点,其中,所述测试时间点的数量为多个,周期性进行设置;
在到达所述测试时间点时,获取所述待测软件在所述测试时间点之前最近的运行日志。
6.根据权利要求1所述的方法,其特征在于,所述根据所述关键词以及属性信息,对所述多个结构化查询语句进行聚类,得到多个类别的结构化查询语句,包括:
针对任意两个结构化查询语句,根据所述两个结构化查询语句的关键词以及属性信息,确定所述两个结构化查询语句的相似度;
将对应的相似度大于或者等于预设相似度阈值的两个结构化查询语句聚类到一起,生成多个类别的结构化查询语句。
7.根据权利要求1所述的方法,其特征在于,所述分析结果包括以下参数中至少一种:平均执行时间长度、最大的执行时间长度、执行次数、最近的执行时间点、平均扫描行数、最大扫描行数、平均返回行数、最大返回条数。
8.根据权利要求1所述的方法,其特征在于,所述根据所述分析结果对所述数据库的索引、表关联方式、结构化查询语句中的至少一种进行优化,包括:
确定所述分析结果中的待排序参数;
根据待排序参数对所述多个类别的分析结果进行排序,得到排序结果;
获取所述排序结果中排序在前的预设数量的类别;
针对所述预设数量的类别中的每个类别,获取所述类别的结构化查询语句的执行计划,其中,所述执行计划用于表征所述类别的结构化查询语句的查询方式;
根据所述执行计划以及预设的优化策略,确定所述类别是否为待进行索引优化的类别,以及对所述数据库的索引、表关联方式、结构化查询语句中至少一种的优化建议。
9.根据权利要求8所述的方法,其特征在于,所述根据所述执行计划以及预设的优化策略,确定所述类别是否为待进行索引优化的类别,以及对所述待测软件的索引、表关联方式、结构化查询语句中至少一种的优化建议,包括:
在所述执行计划表征所述类别的结构化查询语句为全扫描查询或者半扫描查询时,确定所述类别为可进行优化的类别;
在所述类别为可进行优化的类别时,判断所述类别的结构化查询语句是否满足预设的优化条件;
在所述类别的结构化查询语句满足预设的优化条件时,确定所述类别为待进行优化的类别;
根据所述类别的结构化查询语句所满足的优化条件,确定对所述数据库的索引、表关联方式、结构化查询语句中至少一种的优化建议。
10.根据权利要求9所述的方法,其特征在于,所述优化条件包括以下条件中的任意一种或者多种:扫描的行数大于预设行数阈值、扫描的多个行数的属性种类大于预设种类阈值、存在大表驱动小表的情况、存在关联表中的字段没有索引的情况。
11.根据权利要求10所述的方法,其特征在于,所述根据所述类别的结构化查询语句所满足的优化条件,确定所述类别下对所述数据库的索引、表关联方式、结构化查询语句中至少一种的优化建议,包括:
在所满足的优化条件为扫描的行数大于预设行数阈值,和/或,扫描的多个行数的属性种类大于预设种类阈值时,确定所述优化建议为对所述数据库的索引进行优化,或者对结构化查询语句进行优化;
在所满足的优化条件为存在大表驱动小表的情况时,确定所述优化建议为对表关联方式的优化建议;
在所满足的优化条件为存在关联表中的字段没有索引时,确定所述优化建议为对所述数据库的索引的优化建议。
12.根据权利要求11所述的方法,其特征在于,所述在所满足的优化条件为扫描的行数大于预设行数阈值,和/或,扫描的多个行数的属性种类大于预设种类阈值时,确定所述优化建议为对所述数据库的索引进行优化,或者对结构化查询语句进行优化,包括:
获取所述类别的结构化查询语句的属性信息,所述属性信息包括:数据表的标识,以及属性名称;
根据所述属性信息查询所述数据库,确定所述数据库中所述数据表的属性名称所在列是否建立有索引;
若所述数据库中所述数据表的属性名称所在列未建立有索引,则确定所述类别下对所述数据库的索引的优化建议;
若所述数据库中所述数据表的属性名称所在列建立有索引,则确定所述类别的结构化查询语句的优化建议。
13.根据权利要求8所述的方法,其特征在于,还包括:
展示所述多个类别的分析结果、执行计划以及优化建议。
14.一种软件测试装置,其特征在于,包括:
获取模块,用于获取待测软件的运行日志,所述运行日志包括预设时间段内多个结构化查询语句对数据库的运行记录,所述结构化查询语句包括关键词、属性信息以及查询条件;
聚类模块,用于根据所述关键词以及属性信息,对所述多个结构化查询语句进行聚类,得到多个类别的结构化查询语句;
生成模块,用于针对每个类别,根据所述类别的结构化查询语句对数据库的运行记录,生成与所述类别相对应的分析结果;
优化模块,用于根据所述分析结果对所述数据库的索引、表关联方式、结构化查询语句中的至少一种进行优化。
15.一种软件测试装置,其特征在于,包括:
存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-13中任一所述的软件测试方法。
16.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-13中任一所述的软件测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010717468.8A CN113971175A (zh) | 2020-07-23 | 2020-07-23 | 软件测试方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010717468.8A CN113971175A (zh) | 2020-07-23 | 2020-07-23 | 软件测试方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113971175A true CN113971175A (zh) | 2022-01-25 |
Family
ID=79585450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010717468.8A Pending CN113971175A (zh) | 2020-07-23 | 2020-07-23 | 软件测试方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113971175A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114911817A (zh) * | 2022-04-19 | 2022-08-16 | 北京百度网讯科技有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN115481141A (zh) * | 2022-09-30 | 2022-12-16 | 中国银行股份有限公司 | 一种结构化查询语言的辅助优化方法及装置 |
WO2025077548A1 (zh) * | 2023-10-09 | 2025-04-17 | 阿里云计算有限公司 | 数据库查询请求的数据处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019349A (zh) * | 2019-04-02 | 2019-07-16 | 深圳前海微众银行股份有限公司 | 语句预警方法、装置、设备及计算机可读存储介质 |
CN110275793A (zh) * | 2019-06-27 | 2019-09-24 | 咪咕文化科技有限公司 | 一种用于MongoDB数据分片集群的检测方法及设备 |
CN110795614A (zh) * | 2019-09-27 | 2020-02-14 | 广东浪潮大数据研究有限公司 | 一种索引自动优化方法及装置 |
CN111352921A (zh) * | 2020-02-19 | 2020-06-30 | 中国平安人寿保险股份有限公司 | 基于elk的慢查询监控方法、装置、计算机设备及存储介质 |
-
2020
- 2020-07-23 CN CN202010717468.8A patent/CN113971175A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019349A (zh) * | 2019-04-02 | 2019-07-16 | 深圳前海微众银行股份有限公司 | 语句预警方法、装置、设备及计算机可读存储介质 |
CN110275793A (zh) * | 2019-06-27 | 2019-09-24 | 咪咕文化科技有限公司 | 一种用于MongoDB数据分片集群的检测方法及设备 |
CN110795614A (zh) * | 2019-09-27 | 2020-02-14 | 广东浪潮大数据研究有限公司 | 一种索引自动优化方法及装置 |
CN111352921A (zh) * | 2020-02-19 | 2020-06-30 | 中国平安人寿保险股份有限公司 | 基于elk的慢查询监控方法、装置、计算机设备及存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114911817A (zh) * | 2022-04-19 | 2022-08-16 | 北京百度网讯科技有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN115481141A (zh) * | 2022-09-30 | 2022-12-16 | 中国银行股份有限公司 | 一种结构化查询语言的辅助优化方法及装置 |
WO2025077548A1 (zh) * | 2023-10-09 | 2025-04-17 | 阿里云计算有限公司 | 数据库查询请求的数据处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109240901B (zh) | 性能分析方法、性能分析装置、存储介质和电子设备 | |
CN113971175A (zh) | 软件测试方法、装置及存储介质 | |
CN110554958B (zh) | 图数据库测试方法、系统、设备和存储介质 | |
CN110287440B (zh) | 搜索引擎优化方法、装置、计算机设备及计算机可读存储介质 | |
JP7125900B2 (ja) | 複合的ダイアディック又はマルチプルなカウンターパーティ関係を発見するために使用される多次元再帰的学習プロセス及びシステム | |
JPH1196010A (ja) | 分類装置 | |
JP2007193485A (ja) | 情報検索適切度判定処理プログラム,オペレータスキル判定処理プログラム,および最良事例作成処理プログラム | |
CN110716539A (zh) | 一种故障诊断分析方法和装置 | |
CN111753186A (zh) | 群体筛选方法、装置、设备及存储介质 | |
CN114637760A (zh) | 一种智能问答方法及系统 | |
CN109408385B (zh) | 一种基于缺陷规则和分类反馈的缺陷发现方法 | |
CN108182287A (zh) | 一种自动问答方法、装置及服务器 | |
CN113204642A (zh) | 文本聚类方法、装置、存储介质和电子设备 | |
JP2019053519A (ja) | 分類装置、分類方法及び分類プログラム | |
US20070219646A1 (en) | Device performance approximation | |
CN105989066A (zh) | 一种信息处理方法和装置 | |
CN111913937A (zh) | 数据库运维方法和装置 | |
CN108304330B (zh) | 内容提取方法、装置和计算机设备 | |
CN112965912B (zh) | 接口测试用例生成方法、装置和电子设备 | |
CN113378304A (zh) | 一种车辆性能目标的确定方法、装置、存储介质及设备 | |
CN118445302A (zh) | 数据库管理系统性能容量评估方法及装置 | |
CN117763414A (zh) | 充电行为画像的构建方法、装置、电子设备及存储介质 | |
CN110334096A (zh) | 一种对非分区表进行分区并行读取的方法及装置 | |
CN113821501B (zh) | 一种数据归档方法及装置 | |
JP2021124777A (ja) | 質問応答生成装置、質問応答システム、質問応答生成方法及び質問応答生成プログラム |
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 |