CN109992502A - 应用软件性能自动检测分析方法、装置、设备及介质 - Google Patents

应用软件性能自动检测分析方法、装置、设备及介质 Download PDF

Info

Publication number
CN109992502A
CN109992502A CN201711492783.XA CN201711492783A CN109992502A CN 109992502 A CN109992502 A CN 109992502A CN 201711492783 A CN201711492783 A CN 201711492783A CN 109992502 A CN109992502 A CN 109992502A
Authority
CN
China
Prior art keywords
analysis
application software
source code
model
result
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
Application number
CN201711492783.XA
Other languages
English (en)
Inventor
张洪林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
China Mobile Group Sichuan Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Group Sichuan Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd, China Mobile Group Sichuan Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201711492783.XA priority Critical patent/CN109992502A/zh
Publication of CN109992502A publication Critical patent/CN109992502A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3616Software analysis for verifying properties of programs using software metrics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种应用软件性能自动检测分析的方法、装置、设备及介质。该方法包括:获取应用软件;对所述应用软件的源码进行分析,获得源码分析结果;对所述应用软件所连接的数据库模型进行分析,获得模型分析结果;及基于所述源码分析结果、所述模型分析结果和/或其他自定义因素,对所述应用软件进行智能分析,获得智能分析结果。根据本发明的技术方案,能够提早发现源码合规性、数据处理性能情况,预先解决应用软件上线后的一些隐患,可节约应用软件开发及后期运维大量的工作量。

Description

应用软件性能自动检测分析方法、装置、设备及介质
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种应用软件性能自动检测分析的方法、装置、设备及介质。
背景技术
随着计算机技术的发展,应用软件在人们生活中日益不可或缺,同时人们对应用软件的性能要求也越来越高。因此,应用软件的性能测试变得越来越重要。
目前比较常见的应用软件性能检测方法,大致可以分为两种:
1.通过测试工具对应用软件进行性能测试。例如,采用性能测试的工具进行模拟测试。该技术手段从一定程度上也可以发现软件性能问题,但是,它依赖测试人员的专业水平和数据模拟准确性和量级,并且测试出的性能问题无法快速定位问题的根源;
2.通过加强软件开发流程进行质量控制。例如,通过设计评审、编订代码规范、加强代码走查来及时发现应用程序的性能问题。但是,这些都需要人力手动来做。一方面这对生产流程及人员的技术水平要求比较高,另一方面会浪费大量的人力和时间,成本较高。
综上所述,如何在设计、开发测试阶段去检测、分析、评估应用软件的性能,准确地定位问题根源并且节省测试成本,是应用软件检测领域亟需解决的技术问题。
发明内容
本发明实施例提供了一种应用软件性能自动检测分析方法、装置、设备及介质,能够提高应用软件测试的效率。
第一方面,本发明实施例提供了一种应用软件性能自动检测分析方法,方法包括:获取应用软件;对所述应用软件的源码进行分析,获得源码分析结果;对所述应用软件所连接的数据库模型进行分析,获得模型分析结果;及基于所述源码分析结果、所述模型分析结果和/或其他自定义因素,对所述应用软件进行智能分析,获得智能分析结果。
第二方面,本发明实施例提供了一种应用软件性能自动检测分析装置,装置包括:获取模块,被配置为获取应用软件;源码分析模块,被配置为对应用软件的源码进行分析,获得源码分析结果;模型分析模块,被配置为对应用软件所连接的数据库模型进行分析,获得模型分析结果;及智能分析模块,被配置为基于所述源码分析结果、所述模型分析结果和/或其他自定义因素,对所述应用软件进行智能分析,获得智能分析结果。
本发明实施例提供了一种应用软件性能自动检测分析设备,包括:至少一个处理器、至少一个存储器以及存储在存储器中的计算机程序指令,当计算机程序指令被处理器执行时实现如上述实施方式中第一方面的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序指令,当计算机程序指令被处理器执行时实现如上述实施方式中第一方面的方法。
本发明实施例提供的应用软件性能自动检测分析方法、装置、设备及介质,通过抽取应用软件中与数据性能处理相关的源码,分析源码文件之间的关系、函数之间调用关系、数据模型合规性等信息,根据代码规则库和模型规则库,自动检测分析出应用软件性能存在的问题;并可通过智能化分析手段给出改进建议。这使得传统每周一次代码审查提升到一天一次甚至半天一次,有效提高代码质量自动化管理水平。另外,也可以预先发现应用可能存在的性能问题,减少生产环境发生故障概率。
综上,基于本提案的应用软件性能自动检测分析方法、装置、设备及介质,不仅可以解决代码走查的自动化问题,同时也可将应用软件性能检测工作提前到开发阶段,并深入到源码级。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明一种示例性实施例的应用软件性能自动检测分析***的结构示意图;
图2示出了本发明一种示例性实施例的应用软件性能自动检测分析的流程示意图;
图3示出了本发明一种示例性实施例的源码分析的流程示意图;
图4示出了本发明一种示例性实施例的源码分析的流程示意图;
图5示出了本发明一种示例性实施例的源码文件的调用关系示意图;
图6示出了本发明一种示例性实施例的源码分析的流程示意图;
图7示出了本发明一种示例性实施例的模型分析的流程示意图;
图8示出了本发明一种示例性实施例的智能分析的流程示意图;
图9示出了本发明一种示例性实施例的智能分析模型;
图10示出了本发明一种示例性实施例的应用软件性能自动检测分析装置的结构示意图;
图11示出了本发明一种示例性实施例的源码分析模块的结构示意图;
图12示出了本发明一种示例性实施例的模型分析模块的结构示意图;
图13示出了本发明一种示例性实施例的智能分析模块的结构示意图;
图14示出了本发明一种示例性实施例的应用软件性能自动检测分析平台的示意图;及
图15示出了本发明一种示例性实施例的应用软件性能自动检测分析设备的硬件设备示意图。
具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
图1示出了本发明一种示例性实施例的应用软件性能自动检测分析***的结构示意图。如图1所示,应用软件性能自动检测分析***100包括但不限于客户端110、网络120、服务器130和数据库140。
客户端110是指能够存储、安装、运行和/或编辑应用软件的装置。此处的应用软件,是指用户为了特定用途、通过各种程序设计语言编制的应用程序的集合。应用软件所使用的程序设计语言包括Java、C、C++、C#、Python、Visual Basic.Net、PHP、Ruby、R、Matlab,也可以采用本技术领域的其他编程语言。客户端110可以包括手机111、掌上电脑112、笔记本113、台式计算机114以及其他智能终端(例如可穿戴智能设备、无人驾驶汽车、无人机、智能机器人等)。
网络120用以传输数据和信息。网络120可以是有线网络或无线网络,例如:电缆网络、有线网络、光纤网络、远程通信网络、内联网、互联网、局域网(LAN)、无线局域网(WLAN)、城域网(MAN)、广域网(WAN)、公共开关电话网络(PSTN)、蓝牙网络、ZigBee网络、近场通讯(NFC)网络等。
服务器130用来处理和分析信息和数据。在本发明中,服务器130中可以包括应用软件性能自动检测分析装置131,用来检测分析从客户端110处发来的应用软件。服务器130可以是本地的,也可以是远程的。为理解方便,服务器130中仅示例性绘制了一个服务器。然而,本发明中可以包括多个服务器,因此本发明中描述的由一个服务器实现的操作和/或方法也可以共同地或独立地由多个服务器实现。另外,虽未示出,但服务器130中还可以包括其他组件,包括但不限于数据库、存储器、处理器、通信接口、显示器等中的一种或多种。
数据库140是按照数据结构来组织、存储和管理数据的仓库。在一些实施例中,数据库140可以存储供服务器130执行或使用的数据和/或指令,服务器130可以通过执行或使用所述数据和/或指令以实现本发明所描述的示例性方法。数据库140可以是单纯的存储设备,也可以是具有分析和处理功能的服务器。例如,数据库140可以为大容量存储器、可移动存储器、挥发性读写存储器、只读存储器(ROM)等。数据库140也可以在一个云平台上实现。所述云平台可以包括私有云、公共云、混合云、社区云、分布云、云之间、多重云等。
图2示出了本发明一种示例性实施例的应用软件性能自动检测分析的流程示意图。应用软件性能自动检测分析方法200可以由服务器130中的一个或多个部件实施。例如,应用软件性能自动检测分析方法200可以由应用软件性能自动检测分析装置131实施(详见图10及其描述)。
在步骤201,服务器130获取应用软件。在一些实施例中,服务器130可以通过网络120获取,或直接获取客户端110需要进行性能检测的应用软件。
在步骤203,服务器130对所述应用软件的源码进行分析,获得源码分析结果。关于源码分析的方法,请参见图3至图6及其描述。
在步骤205,服务器130对所述应用软件所连接的数据库模型进行分析,获得模型分析结果。关于模型分析的方法,请参见图7及其描述。
在步骤207,服务器130基于所述源码分析结果、所述模型分析结果和/或其他自定义因素,对所述应用软件进行智能分析,获取智能分析结果。关于智能分析的方法,请参见图8、图9及其描述。
图3示出了本发明一种示例性实施例的源码分析的流程示意图。源码分析方法300可以由服务器130中的一个或多个部件实施。例如,源码分析方法300可以由应用软件性能自动检测分析装置131实施(详见图10及其描述)。
在步骤301,服务器130获取所述应用软件的源码文件。待检测的应用软件可以存储在客户端110本地,也可以存储在数据库140中,服务器130可以从客户端110或数据库140中调取应用软件的源码文件。例如,如果应用软件存储在SVN代码数据库中,服务器130可以从SVN代码服务器上获取该应用软件的源码文件。源码文件是指按照各种程序设计语言编写的文本文件,里面包含源码数据。
在步骤303,服务器130根据编程语言解析规则,解析所述源码文件。在解析源码文件时,既可以针对源码文件中所有数据进行解析(即,全量解析),也可以针对源码文件中部分数据进行解析(即,采量解析)。解析后的源码文件可以存放在服务器130或数据库140中。
在步骤305,服务器130分析解析后的源码文件,获得源码分析结果。所述源码分析结果包括源码文件之间的关联关系和/或函数之间的调用关系。对于源码文件的分析,可以通过本申请中设计的模型算法(例如,智能分析模型),也可以采用本技术领域其他常见的方法。
服务器130获得源码分析结果后,可以通过显示模块可视化地展示给用户,也可以通过网络120发送给客户端110。为理解方便,请参见图5,它示出了某一实施例中源码文件的调用关系示意图,如图,源码文件A.xml被B.dao调用,B.dao被C.service调用,C.service又被D.action调用。
图4示出了本发明一种示例性实施例的源码分析的流程示意图。源码分析方法400可以由服务器130中的一个或多个部件实施。例如,源码分析方法400可以由应用软件性能自动检测分析装置131实施(详见图10及其描述)。
在步骤401,服务器130从所述源码分析结果中抽取与数据处理性能相关的数据。所述源码分析结果可由图3中的源码分析方法300获取。在一些实施例中,服务器130抽取源码分析结果中与数据处理性能相关的数据进行分析,也可以抽取其他数据。
在步骤403,服务器130基于所述数据处理性能相关的数据,获取数据性能处理过程和/或代码逻辑的分析结果。关于数据性能处理过程的分析,可以具体到某一个数据处理性能。例如,对于数据排序这一数据处理性能,可以先基于图3中源码分析方法300获得的源码文件的调用关系,在调用关系的基础上,可以对调用与被调用源码文件,进行端到端的分析。
代码业务逻辑一般都放在service层,为理解方便,请参见图5中的C.service源码文件。假设C.servcie中具有某一方法函数a(参数1,参数2),对其进行深度分析后,发现函数a又调用了E.service的函数b(参数1,参数2),函数b采用的是多线程处理技术。在进行代码逻辑分析时,可以对所述每个线程的处理性能进行评估。例如,可根据外部输入的需要处理的数据量级,分析多线程在一定的时间周期内是否能完成任务的处理,从而实现对代码逻辑的性能评测。
图6示出了本发明一种示例性实施例的源码分析的流程示意图。源码分析方法600可以由服务器130中的一个或多个部件实施。例如,源码分析方法600可以由应用软件性能自动检测分析装置131实施(详见图10及其描述)。
在步骤601,服务器130获取所述与数据处理性能相关的数据中的SQL语句。SQL语句用来存储、查询、更新和管理应用软件所连接的数据库。
在步骤603,服务器130根据模型分析规则,分析所述SQL语句相关的数据库模型,获得对象模型分析结果。数据库模型包括数据库逻辑模型,可以根据应用软件所构建的业务实体模型进行抽象。所述模型分析规则来自于规则模块1008,例如可以包括模型规则、索引规则、关联规则等(详见图10及其描述),它们可以用来检测数据库模型设计是否合理,例如是否有外键、索引的数量。对于数据库模型的要求,一般是不能有外键、索引数量最好不超过3个、索引必须生效等。服务器130可以对SQL语句相关的部分数据库模型进行分析,也可以对SQL语句相关的所有数据库模型进行分析。根据模型分析规则,服务器130能够定位出SQL语句存在的问题,获得对象模型分析结果。
在步骤605,服务器130分析所述SQL语句的执行效率,获得SQL性能分析结果。所述执行效率可以包括SQL语句的执行时长、执行成本等因素。在分析SQL语句的执行效率时,对于不同的数据库可以采用不同的分析方式。例如,mysql可以采用explain,sqlserver可以采用SETSTATISTICS IO ON或SET STATISTICS TIME ON等。通过对SQL语句的执行效率的自动化分析,能够定位出SQL语句存在的问题,获得SQL性能分析报告。
在步骤607,服务器130整合所述对象模型分析结果与所述SQL性能分析结果,获得综合分析报告。整合方法可以包括融合、对比、加权、去冗等。例如,服务器130可以将所述对象模型分析结果与所述SQL性能分析结果,融合在一起,综合分析后,给出SQL语句的优化建议。该优化建议可以通过显示模块可视化地展示给用户,也可以通过网络120发送给客户端110。
通过对于源码分析方法300、400与600,可以将应用软件性能分析的结果与应用程序的函数、源码文件的关系定位出来,提高应用性能问题修复的效率。另一方面,源码分析结果可以以报告的形式输出或传输给客户端110,方便查看。根据源码分析结果,可以快速定位到相关的功能模块及开发人员,从而可快速解决问题。
需要注意的是,对于源码分析方法300、400与600,本领域的技术人员可以省略某些步骤,增加某些步骤,调整某些步骤的顺序。诸如此类的变形,均在本发明的保护范围之内。
图7示出了本发明一种示例性实施例的模型分析的流程示意图。模型分析方法700可以由服务器130中的一个或多个部件实施。例如,模型分析方法可以由应用软件性能自动检测分析装置131实施(详见图10及其描述)。
在步骤701,服务器130将所述应用软件连接至对应的数据库。数据库的连接方式可以包括开放数据库互连(Open Database Connectivity,ODBC)、数据访问对象(DataAccess Objects,DAO)、远程数据对象(Remote Data Objects,RDO)、OLE DB或ADO(ActiveXData Object)等。
在步骤703,服务器130获取所述应用软件涉及的数据库操作对象。所述数据库操作对象包括表、视图、索引、触发器、存储过程、用户、序列等。在一些实施例中,服务器130和/或数据库140还可以将获取的数据库操作对象进行存储。
在步骤705,服务器130分析所述数据库操作对象,获取逻辑模型。例如,服务器130可以将所述应用软件所构建的业务实体模型进行抽象,获取数据库逻辑模型。
在步骤707,服务器130根据模型分析规则,匹配获取的逻辑关系模型,获得对象模型分析结果。模型分析规则可以来自规则模块1008,例如模型规则、索引规则、关联规则等(详见图10及其描述),另外还可以包括一些自定义分析规则。根据模型分析规则,可以对数据库模型中的主键、外键、索引及字段长度定义、类型定义、视图、慢SQL进行分析。根据自定义分析规则,可以在表数据量大小、数据库模型是否有外键、主键是否建立索引等角度进行深入分析。
以表的索引分析为例,一方面要要分析数据库模型是否建了索引,另一方面要分析索引是否失效。例如,有些表的模型在设计时,设计人员可能并没有想到数据量级或被关联查询的频度,所以这不会设计索引。但是,索引也不能滥用,索引并不是建立的越多越好,对索引的数量也要进行一定的控制。这些问题将会反映到所述对象模型分析结果中,供用户优化数据库模型设计。
模型分析方法700可以实现从应用软件相关的数据库中自动获取数据库模型,并针对数据库模型集合中的表、SQL语句及外部输入控制条件,进行多维度分析,实现对数据库模型字段、索引及主外键全面分析,发现模型设计的问题,同时也支持自定义规则分析,从而充分保证模型分析的合理性和准确定性。
需要注意的是,对于模型分析方法300、400与600,本领域的技术人员可以省略某些步骤,增加某些步骤,调整某些步骤的顺序。诸如此类的变形,均在本发明的保护范围之内。
图8示出了本发明一种示例性实施例的智能分析的流程示意图。智能分析方法800可以由服务器130中的一个或多个部件实施。例如,模型分析方法可以由应用软件性能自动检测分析装置131实施(详见图10及其描述)。
在步骤801,服务器130获取智能分析模型。所述智能分析模型的获取方式,可以是直接从服务器130或数据库140中调取现有的智能分析模型,也可以在每次测试时建立一个新的智能分析模型。所述智能分析模型可以基于自我学习或机器学习算法,包括但不限于线性回归算法、逻辑回归算法、决策树算法、支持向量机算法(Support Vector Machine,SVM)、神经网络算法(Artificial Neural Network,ANN)、循环神经网络算法(RecurrentNeural Network,DNN)、朴素贝叶斯算法(Naive Bayesian,NB)、K最近邻算法(K-Means)、K均值算法、随机森林算法、降维算法(Dimensionality Reduction)、梯度提升算法(Gradient Boost)、生成对抗网络算法(Generative Adversarial Networks,GAN)、深度学习算法等中的一种或几种。
在步骤803,服务器130获取所述源码分析结果、所述模型分析结果和/或其他自定义因素。获取这三类数据,是为了提取智能分析模型所用的特征向量。
在步骤805,服务器130基于所述智能分析模型,处理获取所述源码分析结果、所述模型分析结果和/或其他自定义因素,对所述应用软件进行智能分析,获取智能分析结果。由于综合了源码分析结果、所述模型分析结果和/或其他自定义因素,所述智能分析结果对应用软件性能的评价比较全面,能实现分析判断的准确性。
建立智能分析模型的过程可以通过以下步骤实现:
S1:获取应用软件性能智能分析的数据。
所述数据可以包括所述的源码分析结果、模型分析结果、以及其他数据。在一些实施例中,还可以对数据进一步预处理,例如转换数据格式、对数据采样、去除噪音、数据量化、属性分解、属性合并等。
S2:从所述数据中提取特征向量。
其中,每个特征向量包括至少一个特征属性,每一个特征属性代表可能影响应用软件性能的一个参量。根据本发明,可以提取三类特征向量,包括源码分析类特征向量、模型分析类特征向量及其他特征向量。
其中,源码分析类特征向量可以SQL语句分析为例进行说明。例如,源码分析类特征向量包括以下特征属性中的至少一个:SQL语句、类型、表集合、所用函数、执行时长等。所述类型是指***、删除或查询,所述执行时长是指当前SQL执行的时间。假设在某实施例中,选取了以上所有特征属性,那么该源码分析类特征向量可以记作:
SQL=(SQL语句,类型,表集合,所用函数,执行时长)。
模型分析类特征向量中的特征属性可以包括以下中的至少一个:表名、有无主键、有无外键、有无索引、索引数量、数据量级、操作特性等。其中,所述数据量级与操作特性可以由人工设定。所述数据量级是指表的容量上限,所述操作特性是指标表示***、删除、查询以及哪个操作次数更多。假设在某实施例中,选取了以上所有特征属性,那么该模型分析类特征向量可以记作:
表=(表名,有无主键,有无外键,有无索引,索引数量,数据量级,操作特性)。
其他特征向量中的特征属性,可以是一些自定义因素,例如可以包括数据处理的量级、是否批处理、并发处理数量等其他跟业务相关的因素。
S3:基于所述特征向量,构建智能分析模型。
为理解方便,下面以决策树算法模型的构建为例进行描述。需要说明的是,本发明还可以包括其他智能分析模型,根据本发明的精神和实质作出的变形,例如增减特征属性、替换成其他机器学习算法、调整目标函数等,均在本发明的包含范围之内。
如图9所示,所述决策树算法构建一个树结构。所述树结构可以是二叉树或非二叉树。它每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。
使用该决策树算法模型进行决策的过程,可以从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。
例如,根节点为“SQL类型”,在其下一分支是关于特征属性“类型”上的测试。若“类型”的测试结果是“***”,则进入非叶节点“判断是否是批处理事物”,若类型的测试结果是“查询”,则进入非叶节点“SQL表数量”。依次类推,不再赘述。
本申请可以采用一种局部最优策略的树构建算法,该算法的具体执行步骤如下:
通过将取样数据相继划分成不同的子集,以递归方式建立树结构。设Mt是与结点t相关联的取样记录集,而y={y1,y2,......,yc}是类标号,算法的递归定义如下:
(1)如果Mt中所有记录都属于同一个类,则t是叶结点,用yt标记;
(2)如果Mt中包含属于多个类的记录,则选择一个属性测试条件,将记录划分成较小的子集。对于测试条件的每个输出,创建一个子女结点,并根据测试结果将Mt中的记录分布到子女结点中。然后,对于每个子女结点,递归地调用该算法,从而完成一系列的不同情况下的决策分析,并输出分析的结果。
S4:优化所述智能分析模型。
在一些实施例中,还可以对建立的智能分析模型进一步优化。例如,可以通过一些评价指标,对所建立的智能分析模型作出评价。如果智能分析模型出现问题,可以调整数据范围、特征向量等,对其进行优化。
所述建立的智能分析模型,可以存储在服务器130和/或数据库140中,方便下一次做应用软件性能分析测试时使用。
图10示出了本发明一种示例性实施例的应用软件性能自动检测分析装置的结构示意图。如图10所示,应用软件性能自动检测分析装置131包括获取模块1002、源码分析模块1004、模型分析模块1006、规则模块1008、智能分析模块1010以及输出模块1012。
其中,所述获取模块1002用于获取待检测的应用软件,也可以用于获取待检测应用软件的源码文件。
所述源码分析模型1004用于所述应用软件的源码进行分析,获得源码分析结果。具体地,参见图11,源码分析模型1004可以进一步包括解析单元1102、抽取单元1104、对象模型分析单元1106、性能分析单元1108以及整合单元1110。所述解析单元1102可以用于根据编程语言解析规则,解析源码文件。所述抽取单元1104可以用于从所述源码分析结果中抽取与数据处理性能相关的数据。所述对象模型分析单元1106可以用于根据模型分析规则,分析所述SQL语句相关的数据库模型,获得对象模型分析结果。所述性能分析单元1108用于分析所述SQL语句的执行效率,获得SQL性能分析结果。所述整合单元1110用于整合所述对象模型分析结果与所述SQL性能分析结果,获得综合分析报告。
所述模型分析模块1006用于对所述应用软件所连接的数据库模型进行分析,获得模型分析结果。具体地,参见图12,模型分析模块1006可以进一步包括连接单元1202、操作对象获取单元1204、逻辑模型构建单元1206以及对象模型分析单元1208。其中,所述连接单元1202用于将所述软件连接至对应的数据库。所述操作对象获取单元1204用于获取所述应用软件涉及的数据库操作对象703。所述逻辑模型构建单元1206用于分析所述数据库操作对象,获取逻辑模型。所述对象模型分析单元1208用于根据模型分析规则,匹配获取的逻辑模型,获得对象模型分析结果。
所述规则模块1008用于为所述模型分析模块1006和/或所述智能分析模块1010提供规则。规则模块1008可以把业务决策从应用程序的框架中分离出来,使用预定义的方言(dialect)编写语义模块和业务决策模块,使用约定好的语法规范,接受用户的输入,然后再根据业务规则,作出业务决策。
所述规则模块1008可以调用内置的或者外连的规则库,规则库中的规则可以通过自定义而建立。为理解方便,下表I中提供了一些示例性的规则。
表I
所述智能分析模块1010用于基于所述源码分析结果、所述模型分析结果和/或其他自定义因素,对所述应用软件进行智能分析,获取智能分析结果。具体地,参见图13,所述智能分析模块1010可以进一步包括智能模型构建单元1302和智能分析单元1304。所述智能模型构建单元1302用于获取智能分析模型和获取所述源码分析结果、所述模型分析结果和/或其他自定义因素。所述智能分析单元1304用于基于所述智能分析模型,处理获取所述源码分析结果、所述模型分析结果和/或其他自定义因素,对所述应用软件进行智能分析,获取智能分析结果。
所述输出模块1012用于输出所述源码分析结果、所述模型分析结果以及所述智能分析结果。输出模块1012包括显示器、麦克风、通信接口等。例如,应用软件性能自动检测分析装置131可以通过显示器向用户展示智能分析结果,也可以通过通信接口将智能分析结果发生给客户端110。
需要注意的是,对于图10至图13中的结构示意图,本领域的技术人员可以省略某些模块/单元,增加某些模块/单元,集成某些模块/单元。诸如此类的变形,均在本发明的保护范围之内。
图14示出了本发明一种示例性实施例的应用软件性能自动检测分析平台的示意图。应用软件性能自动检测分析平台1400可以利用服务器130(或应用软件性能自动检测分析装置131)、应用软件性能自动检测分析设备1500来实现应用软件测试分析的功能。
如图14所示,用户首先将待检测分析的应用软件信息,通过应用注册1424注册到应用软件性能自动检测分析平台1400。注册信息包括以下信息中的一种或几种:应用名称、负责人、SVN代码存放位置、数据库账号、口令等。
然后用户可以通过任务管理1425及配置管理1426自定义检测分析任务,对应用软件的代码进行扫描分析。检测分析任务可定时执行也可以实时执行,可以自动执行也可以手动执行。
随后,检测分析任务可以通过消息总线1430与底层的源码分析引擎1441(参见源码分析模块1004及其描述)、模型分析引擎1442(参见模型分析模块1006及其描述)、智能分析引擎1443(参见智能分析模块1010及其描述)及规则引擎1443(参见规则模块1008及其描述)进行通讯,而后应用软件性能自动检测分析装置131将会执行根据图2至图9所示的源码分析方法、模型分析方法及智能分析方法,得到相应的源码分析结果、模型分析结果及智能分析结果。在分析模型1423中,用户可以选择或自定义分析方式,包括但不限于代码分析模型、性能分析模型、代码神经模型等。
当检测分析任务运行完成,会自动给出分析结果报告。例如,对源码分析后,源码分析结果可以用拓扑形式进行展示,用户可以通过源码拓扑1421查看源码的拓扑结构,从而了解到不同代码文件之间的关系。再例如,对于智能分析结果,用户可以通过分析报告1422进行查看。
另外,应用软件性能自动检测分析平台1400也可以包括门户管理1410,进行门户建设。应用软件性能自动检测分析平台1400还可以同时检测多个应用软件。例如用户可以同时上传应用软件A、应用软件B与应用软件C,通过对这三个应用软件的分析,用户可以很清晰地对比不同应用软件的版本变化、性能优劣等信息,进而对应用软件的改进提供建议。
图2至图9描述的本发明实施例的源码分析方法、模型分析方法及智能分析方法,可以由应用软件性能自动检测分析设备来实现。图15示出了本发明实施例提供的应用软件性能自动检测分析设备的硬件结构示意图。
如图所示,应用软件性能自动检测分析设备1500可以包括处理器1502以及存储有计算机程序指令的存储器1504。
具体地,上述处理器1504可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。
存储器1504可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器1504可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal SerialBus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器1504可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器1504可在数据处理装置的内部或外部。在特定实施例中,存储器1504是非易失性固态存储器。在特定实施例中,存储器1504包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
处理器1502通过读取并执行存储器1504中存储的计算机程序指令,以实现上述实施例中的任意一种源码分析方法、模型分析方法及智能分析方法。
在一个示例中,应用软件性能自动检测分析设备1500还可包括通信接口1506和总线1508。其中,如图15所示,处理器1502、存储器1504、通信接口1506通过总线1508连接并完成相互间的通信。
通信接口1506,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。
总线1508包括硬件、软件或两者,将应用软件性能自动检测分析设备1500的部件彼此耦接在一起。举例来说而非限制,总线1508可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、***组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线1508可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
另外,结合上述实施例中的源码分析方法、模型分析方法及智能分析方法,本发明实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种源码分析方法、模型分析方法及智能分析方法。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或***。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的***、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。

Claims (12)

1.一种应用软件性能自动检测分析方法,其特征在于,所述方法包括:
获取应用软件;
对所述应用软件的源码进行分析,获得源码分析结果;
对所述应用软件所连接的数据库模型进行分析,获得模型分析结果;及
基于所述源码分析结果、所述模型分析结果和/或其他自定义因素,对所述应用软件进行智能分析,获得智能分析结果。
2.根据权利要求1所述的方法,其特征在于,所述源码分析结果包括以下信息中的一种或多种:源码文件间的关联关系、函数间的调用关系、代码逻辑、执行时长。
3.根据权利要求1所述的方法,其特征在于,所述模型分析结果包括以下信息中的一种或多种:建表语句、索引、主键、外键、视图、索引数量、数据量级、操作特性。
4.根据权利要求1所述的方法,其特征在于,对所述应用软件的源码进行分析,获得源码分析结果,进一步包括:
获取所述应用软件的源码文件;
根据编程语言解析规则,解析所述源码文件;及
分析解析后的源码文件,获得源码分析结果。
5.根据权利要求1所述的方法,其特征在于,对所述应用软件的源码进行分析,获得源码分析结果,进一步包括:
从所述源码分析结果中,抽取与数据处理性能相关的数据;及
基于所述数据处理性能相关的数据,获取数据性能处理过程和/或代码逻辑的分析结果。
6.根据权利要求1所述的方法,其特征在于,对所述应用软件的源码进行分析,获得源码分析结果,进一步包括:
从所述源码分析结果中,抽取与数据处理性能相关的数据中的SQL语句;
根据模型分析规则,分析所述SQL语句相关的数据库模型,获得对象模型分析结果;
分析所述SQL语句的执行效率,获得SQL性能分析结果;及
整合所述对象模型分析结果与所述SQL性能分析结果,获得综合分析报告。
7.根据权利要求1所述的方法,其特征在于,对所述应用软件所连接的数据库模型进行分析,获得模型分析结果,进一步包括:
将所述应用软件连接至对应的数据库;
获取所述应用软件涉及的数据库操作对象;
分析所述数据库操作对象,获取逻辑模型;及
根据模型分析规则,匹配获取的逻辑模型,获得对象模型分析结果。
8.根据权利要求1所述的方法,其特征在于,基于所述源码分析结果、所述模型分析结果和/或其他自定义因素,对所述应用软件进行智能分析,获得智能分析结果,进一步包括:
构建智能分析模型;
获取所述源码分析结果、所述模型分析结果和/或其他自定义因素;及
基于所述智能分析模型,处理获取所述源码分析结果、所述模型分析结果和/或其他自定义因素,获取智能分析结果。
9.根据权利要求8所述的方法,其特征在于,所述智能分析模型的算法为树结构算法。
10.一种应用软件性能自动检测分析装置,其特征在于,所述装置包括:
获取模块,被配置为获取应用软件;
源码分析模块,被配置为对所述应用软件的源码进行分析,获得源码分析结果;
模型分析模块,被配置为对所述应用软件所连接的数据库模型进行分析,获得模型分析结果;及
智能分析模块,被配置为基于所述源码分析结果、所述模型分析结果和/或其他自定义因素,对所述应用软件进行智能分析,获得智能分析结果。
11.一种应用软件性能自动检测分析设备,其特征在于,包括:至少一个处理器、至少一个存储器以及存储在所述存储器中的计算机程序指令,当所述计算机程序指令被所述处理器执行时实现如权利要求1-9任一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,当所述计算机程序指令被处理器执行时实现如权利要求1-9中任一项所述的方法。
CN201711492783.XA 2017-12-30 2017-12-30 应用软件性能自动检测分析方法、装置、设备及介质 Pending CN109992502A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711492783.XA CN109992502A (zh) 2017-12-30 2017-12-30 应用软件性能自动检测分析方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711492783.XA CN109992502A (zh) 2017-12-30 2017-12-30 应用软件性能自动检测分析方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN109992502A true CN109992502A (zh) 2019-07-09

Family

ID=67111561

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711492783.XA Pending CN109992502A (zh) 2017-12-30 2017-12-30 应用软件性能自动检测分析方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN109992502A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110428333A (zh) * 2019-08-01 2019-11-08 上海爱富爱克斯网络科技发展有限责任公司 针对金融中介机构mt4外汇交易软件的数据检测与分析方法
CN111008038A (zh) * 2019-12-19 2020-04-14 南京邮电大学 一种基于逻辑回归模型的pull request被合并概率的计算方法
CN111352818A (zh) * 2020-02-28 2020-06-30 北京思特奇信息技术股份有限公司 应用程序性能分析方法、装置、存储介质及电子设备
CN111597203A (zh) * 2020-04-28 2020-08-28 ***股份有限公司 语句查询方法、装置、设备、介质
CN111767044A (zh) * 2020-07-04 2020-10-13 武汉空心科技有限公司 一种软件开发工作平台接口可视化方法
CN113806214A (zh) * 2021-02-10 2021-12-17 京东科技控股股份有限公司 应用程序的测试方法、装置、计算机设备及存储介质
CN113835419A (zh) * 2021-11-29 2021-12-24 湖南中车时代通信信号有限公司 一种列控设备的测试方法、***及存储介质
CN114090382A (zh) * 2021-11-22 2022-02-25 北京志凌海纳科技有限公司 超融合集群健康巡检方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103927473A (zh) * 2013-01-16 2014-07-16 广东电网公司信息中心 检测移动智能终端的源代码安全的方法、装置及***
US20150113332A1 (en) * 2012-05-24 2015-04-23 Tencent Technology (Shenzhen) Company Limited Code analysis method, code analysis system and computer storage medium
CN104636257A (zh) * 2015-03-13 2015-05-20 胡兢玉 基于sql覆盖的数据库应用软件自动化测试方法
CN105930277A (zh) * 2016-07-11 2016-09-07 南京大学 一种基于缺陷报告分析的缺陷源代码定位方法
CN106201871A (zh) * 2016-06-30 2016-12-07 重庆大学 基于代价敏感半监督的软件缺陷预测方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150113332A1 (en) * 2012-05-24 2015-04-23 Tencent Technology (Shenzhen) Company Limited Code analysis method, code analysis system and computer storage medium
CN103927473A (zh) * 2013-01-16 2014-07-16 广东电网公司信息中心 检测移动智能终端的源代码安全的方法、装置及***
CN104636257A (zh) * 2015-03-13 2015-05-20 胡兢玉 基于sql覆盖的数据库应用软件自动化测试方法
CN106201871A (zh) * 2016-06-30 2016-12-07 重庆大学 基于代价敏感半监督的软件缺陷预测方法
CN105930277A (zh) * 2016-07-11 2016-09-07 南京大学 一种基于缺陷报告分析的缺陷源代码定位方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110428333A (zh) * 2019-08-01 2019-11-08 上海爱富爱克斯网络科技发展有限责任公司 针对金融中介机构mt4外汇交易软件的数据检测与分析方法
CN111008038A (zh) * 2019-12-19 2020-04-14 南京邮电大学 一种基于逻辑回归模型的pull request被合并概率的计算方法
CN111008038B (zh) * 2019-12-19 2022-08-02 南京邮电大学 一种基于逻辑回归模型的pull request被合并概率的计算方法
CN111352818A (zh) * 2020-02-28 2020-06-30 北京思特奇信息技术股份有限公司 应用程序性能分析方法、装置、存储介质及电子设备
CN111352818B (zh) * 2020-02-28 2023-06-30 北京思特奇信息技术股份有限公司 应用程序性能分析方法、装置、存储介质及电子设备
CN111597203A (zh) * 2020-04-28 2020-08-28 ***股份有限公司 语句查询方法、装置、设备、介质
CN111767044A (zh) * 2020-07-04 2020-10-13 武汉空心科技有限公司 一种软件开发工作平台接口可视化方法
CN113806214A (zh) * 2021-02-10 2021-12-17 京东科技控股股份有限公司 应用程序的测试方法、装置、计算机设备及存储介质
CN114090382A (zh) * 2021-11-22 2022-02-25 北京志凌海纳科技有限公司 超融合集群健康巡检方法和装置
CN113835419A (zh) * 2021-11-29 2021-12-24 湖南中车时代通信信号有限公司 一种列控设备的测试方法、***及存储介质

Similar Documents

Publication Publication Date Title
CN109992502A (zh) 应用软件性能自动检测分析方法、装置、设备及介质
Vu et al. Pgm-explainer: Probabilistic graphical model explanations for graph neural networks
US11422776B2 (en) Intelligent assistant for automating recommendations for analytics programs
Agrawal et al. How to “dodge” complex software analytics
KR101719278B1 (ko) 비주얼 콘텐츠기반 영상 인식을 위한 딥러닝 프레임워크 및 영상 인식 방법
CN107943945B (zh) 一种大数据分析开发平台中异构算子管理方法
Maiti et al. Capturing, eliciting, predicting and prioritizing (CEPP) non-functional requirements metadata during the early stages of agile software development
CN112597038B (zh) 软件缺陷预测方法及***
US10747958B2 (en) Dependency graph based natural language processing
US20180300333A1 (en) Feature subset selection and ranking
CN110168535A (zh) 一种信息处理方法及终端、计算机存储介质
Khalajzadeh et al. A survey of current end-user data analytics tool support
CN110334208B (zh) 基于贝叶斯信念网络的lkj故障预测诊断方法和***
CN109144481B (zh) 面向领域的软件密集型***的构件化软件配置方法
CN112579789A (zh) 一种设备故障诊断的方法和装置及设备
CN116882978B (zh) 一种基于产品信息框架的深海潜水器运维保障***
CN110245232A (zh) 文本分类方法、装置、介质和计算设备
CN112884569A (zh) 一种信用评估模型的训练方法、装置及设备
Abbas et al. Multi-objective optimization of feature model in software product line: Perspectives and challenges
CN109582562B (zh) 基于生成对抗网络的智能化软件测试及云平台构建方法
CN116049376A (zh) 一种信创知识检索回复的方法、装置和***
Alalfi et al. Variability identification and representation for automotive Simulink models
Průcha et al. Use of FURIA for improving task mining
Sinpang et al. Detecting ambiguity in requirements analysis using Mamdani fuzzy inference
CN111709716A (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190709