CN110109821A - 软件程序质量评价方法、装置、计算机设备及存储介质 - Google Patents
软件程序质量评价方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN110109821A CN110109821A CN201910207536.3A CN201910207536A CN110109821A CN 110109821 A CN110109821 A CN 110109821A CN 201910207536 A CN201910207536 A CN 201910207536A CN 110109821 A CN110109821 A CN 110109821A
- Authority
- CN
- China
- Prior art keywords
- defect
- data
- aacode
- metric
- software program
- 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
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/3604—Software analysis for verifying properties of programs
- G06F11/3616—Software analysis for verifying properties of programs using software metrics
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开一种软件程序质量评价方法、装置、计算机设备及存储介质。该方法包括:获取包括待分析版本ID和目标图表ID的质量评估请求;基于待分析版本ID查询测试结果数据库,获取对应的至少一个代码缺陷数据;对代码缺陷数据进行缺陷度量分析,获取对应的缺陷度量值;基于缺陷度量值查询风险等级转换表,获取与缺陷度量值相对应的缺陷风险等级,统计每一缺陷风险等级对应的缺陷数量;调用第三方图像处理库中与目标图表ID相对应的图表转换函数,对缺陷风险等级和与缺陷风险等级相对应的缺陷数量进行图表转换,获取目标质量评估图表。该方法所获得的目标质量评估图表可直观地反映软件程序的质量,使得质量评价结果更具有客观性和直观性。
Description
技术领域
本发明涉及软件测试技术领域,尤其涉及一种软件程序质量评价方法、装置、计算机设备及存储介质。
背景技术
软件测试是指在特定条件下对软件程序进行操作,以发现软件程序错误,衡量软件质量是否能满足设计要求的评估过程。当前软件程序的质量评价主要依据软件测试过程中所发现的缺陷数量来评价和衡量软件程序的质量和测试人员发现缺陷的能力。这种软件程序的质量评价方式会存在如下两种情形:第一种,软件测试过程中发现的缺陷数量较多,但这些缺陷基本上都是UI界面等用户体验类的低级类缺陷;第二种,软件测试过程中发现的缺陷数量极极少,但这些缺陷基本上都是隐藏较深且与软件程序的核心功能相关的高级类缺陷。综上,若仅依据缺陷数量来评价软件程序的质量,会使其质量评价结果不够准确,基于该质量评价结果确定软件程序上线后,容易出现因数量较少的高级类缺陷而导致整个软件程序出现问题,影响用户体验。
发明内容
本发明实施例提供一种软件程序质量评价方法、装置、计算机设备及存储介质,以解决当前依据缺陷数量评价软件质量存在的结果不够准确的问题。
一种软件程序质量评价方法,包括:
获取质量评估请求,所述质量评估请求包括待分析版本ID和目标图表ID;
基于所述待分析版本ID查询测试结果数据库,获取与所述待分析版本ID相对应的至少一个代码缺陷数据;
对所述代码缺陷数据进行缺陷度量分析,获取所述代码缺陷数据对应的缺陷度量值;
基于与所述代码缺陷数据相对应的缺陷度量值查询风险等级转换表,获取与所述缺陷度量值相对应的缺陷风险等级,统计每一所述缺陷风险等级对应的缺陷数量;
调用第三方图像处理库中与所述目标图表ID相对应的图表转换函数,对所述缺陷风险等级和与所述缺陷风险等级相对应的缺陷数量进行图表转换,获取目标质量评估图表。
一种软件程序质量评价装置,包括:
质量评估请求获取模块,用于获取质量评估请求,所述质量评估请求包括待分析版本ID和目标图表ID;
代码缺陷数据获取模块,用于基于所述待分析版本ID查询测试结果数据库,获取与所述待分析版本ID相对应的至少一个代码缺陷数据;
缺陷度量值获取模块,用于对所述代码缺陷数据进行缺陷度量分析,获取所述代码缺陷数据对应的缺陷度量值;
缺陷风险等级获取模块,用于基于与所述代码缺陷数据相对应的缺陷度量值查询风险等级转换表,获取与所述缺陷度量值相对应的缺陷风险等级,统计每一所述缺陷风险等级对应的缺陷数量;
质量评估图表获取模块,用于调用第三方图像处理库中与所述目标图表ID相对应的图表转换函数,对所述缺陷风险等级和与所述缺陷风险等级相对应的缺陷数量进行图表转换,获取目标质量评估图表。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述软件程序质量评价方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述软件程序质量评价方法的步骤。
上述软件程序质量评价方法、装置、计算机设备及存储介质,基于待分析版本ID查询测试结果数据库,快速获取需要进行代码缺陷分析的代码缺陷数据。再对代码缺陷数据进行缺陷度量分析,获取其对应的缺陷度量值,以便通过该缺陷度量值直观地反映该代码缺陷数据的严重程度。然后,依据风险等级转换表,将缺陷度量值转换成缺陷风险等级,并确定每一缺陷风险等级对应的缺陷数量,以便根据该缺陷风险等级和对应的缺陷数量客观反映软件程序的质量。再采用图表转换函数对缺陷风险等级和对应的缺陷数量进行图表转换,以使获取到的目标质量评估图表可直观地反映软件程序的质量,使得质量评价结果更具有客观性和直观性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中软件程序质量评价方法的一应用环境示意图;
图2是本发明一实施例中软件程序质量评价方法的一流程图;
图3是本发明一实施例中软件程序质量评价方法的另一流程图;
图4是本发明一实施例中软件程序质量评价方法的另一流程图;
图5是本发明一实施例中软件程序质量评价方法的另一流程图;
图6是本发明一实施例中软件程序质量评价方法的另一流程图;
图7是本发明一实施例中软件程序质量评价方法的另一流程图;
图8是本发明一实施例中软件程序质量评价方法的另一流程图;
图9是本发明一实施例中软件程序质量评价装置的一示意图;
图10是本发明一实施例中计算机设备的一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的软件程序质量评价方法,该软件程序质量评价方法可应用如图1所示的应用环境中。具体地,该软件程序质量评价方法应用在软件测试系统中,该软件测试系统包括如图1所示的客户端和服务器,客户端与服务器通过网络进行通信,用于实现对软件程序进行质量评价过程中,基于代码缺陷数据对应的缺陷度量值和缺陷数量进行综合评价,并将评价结果以图表形式呈现,使其评价结果更直观,避免仅基于缺陷数量进行评价所导致的评价不合理或不准确的问。其中,客户端又称为用户端,是指与服务器相对应,为客户提供本地服务的程序。客户端可安装在但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备上。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一实施例中,如图2所示,提供一种软件程序质量评价方法,以该方法应用在图1中的服务器为例进行说明,包括如下步骤:
S201:获取质量评估请求,质量评估请求包括待分析版本ID和目标图表ID。
其中,质量评估请求是用于触发对特定软件版本的项目质量进行评估的请求。待分析版本ID是用于唯一识别所要进行测试缺陷分析的特定版本的软件程序的标识。每一待分析版本ID对应一个需要进行测试缺陷分析的特定版本的软件程序,例如微信V6.6.7。目标图表ID是用于唯一识别目标图表对应的标识。该目标图表是所要对特定软件版本的项目质量进行评估的结果显示图表。
S202:基于待分析版本ID查询测试结果数据库,获取与待分析版本ID相对应的至少一个代码缺陷数据。
其中,测试结果数据库是用于存储在该待分析版本ID对应的特定版本的软件程序的测试结果的数据库。该测试结果包括测试成功和测试失败两种结果,其中,基于测试结果为测试失败的软件代码所形成的数据为代码缺陷数据。即代码缺陷数据是在特定版本的软件程序在测试过程中代码存在缺陷的数据。本实施例中,代码缺陷数据是指在该待分析版本ID对应的软件程序在测试过程中出现的所有存在缺陷的代码对应的数据。
S203:对代码缺陷数据进行缺陷度量分析,获取代码缺陷数据对应的缺陷度量值。
其中,缺陷度量值是依据预先设置的度量值评估规则对代码缺陷数据进行综合评估之后确定度量值。该缺陷度量值可客观反映每一代码缺陷数据的缺陷严重程度,一般来说,缺陷度量值越大,其缺陷越严重;反之,缺陷度量值越小,其缺陷越不严重。具体地,对代码缺陷数据进行缺陷度量分析是指依据预先设置的多个评估维度对代码缺陷数据进行综合评估,以使获取到的代码缺陷数据对应的缺陷度量值可综合反映该代码缺陷数据的缺陷严重程度。本实施例中,预先设置的度量值评估规则是依据影响代码缺陷严重程度的多个评估维度进行综合评估的规则。该评估维度具体包括但不限于功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数和稳定系数。
S204:基于与代码缺陷数据相对应的缺陷度量值查询风险等级转换表,获取与缺陷度量值相对应的缺陷风险等级,统计每一缺陷风险等级对应的缺陷数量。
其中,风险等级转换表是用于限定缺陷度量值与缺陷风险等级之间转换关系的数据表。具体地,服务器可基于与代码缺陷数据相对应的缺陷度量值查询风险等级转换表,可快速获取与该缺陷度量值相对应的缺陷风险等级。本实施例中,风险等级转换表中可将缺陷度量值的取值范围划分成若干个风险等级范围,每一风险等级范围对应的一缺陷风险等级,则服务器可根据该代码缺陷数据对应的缺陷度量值确定其所属的风险等级范围,将其所属的风险等级范围对应的缺陷风险等级确定为该缺陷度量值对应的缺陷风险等级。一般来说,缺陷度量值的取值越高,其缺陷风险等级越高。具体地,该缺陷风险等级可以包括紧急风险等级、高级风险等级、一般风险等级和低级风险等级等类型,也可以设置成其他类型。
具体地,服务器在基于每一代码缺陷数据查询风险等级转换表确定其对应的缺陷风险等级之后,可以根据该待分析版本ID对应的软件程序所存在的所有代码缺陷数据对应的缺陷风险等级,统计每一缺陷风险等级对应的缺陷数量,以便基于该缺陷风险等级和对应的缺陷数量对软件程序的质量进行综合评价,以获取更客观准确的评价结果。
S205:调用第三方图像处理库中与目标图表ID相对应的图表转换函数,对缺陷风险等级和与缺陷风险等级相对应的缺陷数量进行图表转换,获取目标质量评估图表。
其中,第三方图像处理库是用于实现图表转换的图像处理库。图表转换函数是内置在第三方图像处理库中的用于实现图像转换的函数。本实施例中,所采用的第三方图像处理库为hightcharts图像处理库,其内置有多种图表转换函数。Highcharts是一个图形控件,依据一些数据生成折线图、柱形图、扇形、地理分布图和雷达图等,主要应用于Web网站,目前有线样条、面积、areaspline、柱形图、条形图、饼图和散点图类型。具体地,服务器通过调用第三方图像处理库中与目标图表ID相对应的图表转换函数,对缺陷风险等级和每一缺陷风险等级相对应的缺陷数量进行图表转换,获取相应的目标质量评估图表。该目标质量评估图表是以图表形式反映待分析版本ID对应的软件程序的软件质量的可视化图表,可直观地反映软件质量的好坏。
服务器调用第三方图像处理库Highcharts进行图表转换过程时,需要将第三方图像处理库中的highcharts.js文件和CSS文件导入预先设置的目录位置;然后,在客户端的显示界面运行highcharts.js文件,以实现对缺陷风险等级和与缺陷风险等级相对应的缺陷数量进行图表转换,并采用CSS文件进行页面样式和框架渲染,以获取并在显示界面上显示目标质量评估图表。进一步地,还可以引入modules/xx.js文件实现对目标质量评估图表进行导出。其中,highcharts.js文件具体为与目标图表ID相对应的图表转换函数,该图表转换函数具体可以为用于实现折线图、柱形图、扇形、地理分布图和雷达图等类型图表转换的代码。
例如,在采用拆线图对应的图表转换函数对缺陷风险等级和与缺陷风险等级相对应的缺陷数量进行图表转换时,缺陷风险等级可以为横坐标,而与缺陷风险等级相对应的缺陷数量为纵坐标,以形成目标质量评估图表。该缺陷风险等级可以包括紧急风险等级、高级风险等级、一般风险等级和低级风险等级等类型,也可以设置成其他类型。从该目标质量评估图表可以看出,若处于紧急风险等级和高级风险等级的缺陷数量越多,说明待分析版本ID对应的软件程序的质量越差,反之,处于紧急风险等级和高级风险等级的数量越少,说明待分析版本ID对应的软件程序的质量越好。
本实施例所提供的软件程序质量评价方法中,基于待分析版本ID查询测试结果数据库,快速获取需要进行代码缺陷分析的代码缺陷数据。再对代码缺陷数据进行缺陷度量分析,获取其对应的缺陷度量值,以便通过该缺陷度量值直观地反映该代码缺陷数据的严重程度。然后,依据风险等级转换表,将缺陷度量值转换成缺陷风险等级,并确定每一缺陷风险等级对应的缺陷数量,以便根据该缺陷风险等级和对应的缺陷数量客观反映软件程序的质量。再采用图表转换函数对缺陷风险等级和对应的缺陷数量进行图表转换,以使获取到的目标质量评估图表可直观地反映软件程序的质量,使得质量评价结果更具有客观性和直观性。
在一实施例中,如图3所示,对代码缺陷数据进行缺陷度量分析,获取代码缺陷数据对应的缺陷度量值,包括:
S301:基于与待分析版本ID相对应的抽象语法树对代码缺陷数据进行语法树分析,获取与代码缺陷数据相对应的功能核心程度。
其中,抽象语法树(abstract syntax code,AST)是源代码的抽象语法结构的树状表示,树上的每个节点都表示源代码中的一种结构,之所以说是抽象的,是因为抽象语法树并不会表示出真实语法出现的每一个细节(如嵌套括号被隐含在树的结构中,并没有以节点的形式呈现)。具体地,服务器可预先采用javascript Parser这一源码解析器,对采用JAVA语言编辑的与待分析版本ID相对应的软件程序进行转化处理,以转化成与待分析版本ID相对应的抽象语法树,再进一步转化为字节码或直接生成机器码,以便后续进行程序分析。
本实施例中,服务器采用emma代码分析工具分析代码缺陷数据在与待分析版本ID相对应的抽象语法树上的运行流向,确定代码缺陷数据在抽象语法树中的位置,并根据其所在的位置确定其对应的功能核心程度。例如,若该代码缺陷数据处于抽象语法树中的主干位置,则其功能核心程度最高,确定为P0级别;若该代码缺陷数据处于抽象语法树中的次主干位置,则其功能核心程度次之,确定为P1级别;若该代码缺陷数据处于抽象语法树中的次干位置,则其功能核心程度更低,确定为P2级别……依此类推,确定代码缺陷数据在抽象语法树中的位置,从而确定其对应的功能核心程度。
可以理解地,通过预先创建的与待分析版本ID相对应的抽象语法树对代码缺陷数据进行语法树分析,可快速获取该代码缺陷数据对应的功能核心程度,可反映该代码缺陷数据在整个待分析版本ID对应的软件程序中的重要程度,以使后续可将该功能核心程度作为评估其对应的缺陷度量值的一个评估因素,综合评估该代码缺陷数据对应的缺陷度量值,以便对待分析版本ID对应的软件程序进行综合分析。
S302:基于代码缺陷数据查询与待分析版本ID相对应的埋点数据库,获取与代码缺陷数据相对应的页面使用频率和页面访问步长。
其中,埋点是指在软件程序的关键代码植入用于实现数据统计功能的代码。埋点的设置,主要用于追踪用户行为,从而统计关键代码的使用程度,以便进行数据分析。埋点数据库是用于存储埋点上传的埋点数据的数据库,每一埋点数据可反映该埋点对应的关键代码被触发或操作的情况。相应地,与待分析版本ID相对应的埋点数据库,用于存储与待分析版本ID相对应的软件程序在测试过程中埋点被触发所形成的所有埋点数据,以便基于该埋点数据进行数据分析。
与代码缺陷数据相对应的页面使用频率是指通过埋点统计确定代码缺陷数据对应的功能页面的点击量,并根据点击量确定其对应的页面使用频率。与代码缺陷数据相对应的页面使用频率的确定过程包括如下步骤:基于代码缺陷数据查询与待分析版本ID相对应的埋点数据库,获取与代码缺陷数据相对应的软件代码在测试周期内所触发的埋点数据;根据埋点数据确定代码缺陷数据相对应的功能页面的点击量,基于点击量查询预先设置的频率转换信息表,获取与点击量相对应的页面使用频率。其中,测试周期是指对该待分析版本ID对应的软件程序进行测试的周期。频率转换信息表是用于限定点击量与对应的频率之间的转换关系的信息表。在待分析版本ID对应的软件程序的测试周期内,每次访问该代码缺陷数据对应的功能页面,则该代码缺陷数据的软件代码中内置的埋点会触发一埋点数据,使得其功能页面的点击量被记录1次;在对同一功能页面的多次访问,其点击量累计,因此,可通过该代码缺陷数据对应的软件代码在测试周期内所触发的埋点数据,确定其对应的功能页面的点击量。然后,基于该点击量查询频率转换信息表,以获取与待分析版本ID相对应的页面访问频率。本实施例中,代码缺陷数据对应的页面使用频率包括V0、V1和V2三种,分别对应高频、一般和低频三种情况。一种来说,代码缺陷数据对应的页面使用频率越高,说明其对应的软件代码被触发的频率越大,在待分析版本ID相对应的软件程序中越重要。
与代码缺陷数据对应的页面访问步长是指通过埋点统计确定该代码缺陷数据对应的功能页面的操作步骤长度。与代码缺陷数据相对应的页面访问步长的确定过程包括如下步骤:基于代码缺陷数据查询与待分析版本ID相对应的埋点数据库,获取代码缺陷数据所触发的埋点数据,根据埋点数据确定其对应的页面访问步长。具体地,在待分析版本对应的软件程序的埋点设置过程中,通过页面信息表预先记录每一埋点对应的功能页面的位置。服务器根据该埋点所触发的埋点数据可确定其对应的功能页面,根据软件程序开发过程中记录的页面信息表,可确定该功能页面的操作步骤,以获取与代码缺陷数据相对应的页面访问步长。例如,在微信这一软件程序开发过程中记录有微信刷朋友圈功能对应的页面信息表,其操作步骤包括:Step1:点击发现,进入发现页面;Step2:点击朋友圈,进入朋友圈页面,可查看朋友圈信息;若代码缺陷数据对应的软件代码所触发的埋点数据中确定出现缺陷的位置在查看朋友圈这个页面,则查看朋友圈这个功能在微信中的页面访问步长D就是2。本实施例中,代码缺陷数据对应的页面访问步长包括D0、D1和D2三种,分别对应1-2步、3-4步和5步以上这三种情况。一种来说,与代码缺陷数据相对应的页面访问步长越短,说明其对应的功能页面越经常触发,在待分析版本ID对应的软件程序中也重要。
S303:对代码缺陷数据进行重复测试,获取与代码缺陷数据相对应的复现概率。
其中,与代码缺陷数据相对应的复现概率是指在软件测试过程中,该代码缺陷数据对应的软件代码重复出现测试失败的概率。本实施例中,可设置代码缺陷数据对应的复现概率分别必然事件、高概率事件和低概率事件这三种,分别对于100%的概率会出现缺陷、50%-100%的概率会出现缺陷和50%以下的概率会出现缺陷这三种情况,分别用G0、G1和G2来表示。具体地,服务器在获取代码缺陷数据之后,可对该代码缺陷数据对应的软件代码进行重复测试,以确定重复出现该代码缺陷数据的概率,从而确定其代码缺陷数据对应的复现概率。一般来说,与代码缺陷数据相对应的复现概率越大,则说明该代码缺陷数据对应的软件代码出现缺陷的概率越大,为了保证待分析版本ID对应的软件程序的质量,越需要尽早修复。
S304:采用代码扫描工具对代码缺陷数据进行扫描分析,获取与代码缺陷数据相对应的可维护性。
其中,与代码缺陷数据相对应的的可维护性是指基于代码缺陷数据对应的可维护指数与服务器预先设置的指数阈值进行分析所获取的评估指标。其中,可维护指数是指可维护指标(Maintainability Index),其范围是0到100之间的值,用来指示所有类、成员、命名空间或项目的可维护性。一般来说,代码缺陷数据对应的可维护性越小,其对应的软件代码越重复,越需要优先进行修复,以避免因代码缺陷数据对应的软件代码存在缺陷而影响整个待分析版本ID对应的软件程序的开发进度。
本实施例中,服务器预先配置有可维护指数公式,该可维护指数公式具体为可维护指数=MAX(0,(171-5.2*ln(霍尔斯特德量)-0.23*(圈复杂度)-16.2*ln(代码行数))*100/171)。步骤S304具体包括如下内容:(1)采用代码扫描工具对代码缺陷数据进行扫描分析,获取与代码缺陷数据相对应的评估参数,评估参数包括霍尔斯特德量、圈复杂度和代码行数。霍尔斯特德量(Halstead)是测量代码计算复杂度。具体上,如果一个程序有N个操作数和运算符,N个不同的的操作数和运算符,那么halstead=N*Log2(n),总之程序中的运算符和操作数越少越利于提高其霍尔斯特德量。圈复杂度(Cyclomatic Complexity)是代码的逻辑复杂度,程序的每个可能的执行分支(if,while,for等)都为该指标贡献1个点。一般来说,圈复杂度的建议范围<10,最多不超过20。代码行数(Lines of code)是指待分析版本ID对应的软件程序的代码行数。例如,采用Code Metrics这一代码扫描工具对代码缺陷数据进行扫描分析,可快速获取与代码缺陷数据相对应的评估参数,如在Code Metrics的操作界面上选择“Calculate Code Metrics”,即可在其结果窗口中获取对应一评估参数,这些评估参数包括霍尔斯特德量、圈复杂度和代码行数。(2)采用可维护指数公式对霍尔斯特德量、圈复杂度和代码行数进行计算,获取与代码缺陷数据相对应的可维护指数。(3)基于与代码缺陷数据相对应的可维护指数和预先设置的指数阈值,获取与代码缺陷数据相对应的可维护性。其中,其中,指数阈值是服务器预先设置的用于评估不同可维护性的阈值。具体地,服务器基于与代码缺陷数据相对应的可维护指数,根据该可维护指数确定其落入由至少两个指数阈值所界定的取值范围,根据该权值范围确定对应的可维护性。本实施例中,步骤S402计算出的可维护指数的取值范围为0-100,若指数阈值为10和20,则这两个指数阈值可将可维护指数划分成[0,10]、(10,20]和(20,100]三个取值范围,每个取值范围对应一可维护性,分别采用F0、F1和F2来表示。
可以理解地,通过采用代码扫描工具对代码缺陷数据进行扫描,以快速获取评估参数,再采用可维护指数公式对评估参数进行计算,可快速获取其对应的可维护指数,使得可维护指数的获取过程简单快速;然后,基于可维护指数和预设的指数阈值,可快速确定代码缺陷数据对应的可维护性,以便依据该可维护性对代码缺陷数据进行质量评估。
S305:基于待分析版本ID查询代码版本信息表,获取与代码缺陷数据相对应的稳定系数。
其中,代码版本信息表是存储在服务器中的用于记录待分析版本ID对应的软件程序对应的所有版本信息的数据表。稳定系数是用于评估待分析版本ID对应的软件程序是否稳定的指标。一般来说,全新的软件程序或者软件程序中的全新功能模块,其代码缺陷越容易发现,反之,软件程序的软件版本越高,其代码性能越稳定,其代码缺陷越难发现。具体地,服务器可通过待分析版本ID查询代码版本信息表,以获取与待分析版本ID对应的推出版本数量,根据该推出版本数量确定代码缺陷数据对应的稳定系数,以便基于该稳定系数对代码缺陷数据进行综合评估。
S306:对同一代码缺陷数据对应的功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数和稳定系数进行加权分析,获取与代码缺陷数据相对应的缺陷度量值。
其中,代码版本信息表是存储在服务器中的用于记录待分析版本ID对应的软件程序对应的所有版本信息的数据表。稳定系数是用于评估待分析版本ID对应的软件程序是否稳定的指标。一般来说,全新的软件程序或者软件程序中的全新功能模块,其代码缺陷越容易发现,反之,软件程序的软件版本越高,其代码性能越稳定,其代码缺陷越难发现。具体地,服务器可通过待分析版本ID查询代码版本信息表,以获取与待分析版本ID对应的推出版本数量,根据该推出版本数量确定代码缺陷数据对应的稳定系数,以便基于该稳定系数对代码缺陷数据进行综合评估。
本实施例所提供的软件程序质量评价方法中,依次获取该代码缺陷数据对应的功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数和稳定系数等评估因素,通过对该评估因素进行加权计算,可快速获取对应的缺陷度量值,该缺陷度量值综合代码缺陷数据对应的软件代码的重要程度的多个评估因素,可客观地反映该软件代码的重要程度,以便基于该缺陷度量值合理安排缺陷修复工作,提高缺陷修复的效率。
在一实施例中,如图4所示,对代码缺陷数据进行重复测试,获取与代码缺陷数据相对应的复现概率,包括:
S401:对代码缺陷数据对应的软件代码进行重复测试,获取每次重复测试对应的测试结果和重复测试次数。
具体地,服务器在获取代码缺陷数据之后,对代码缺陷数据对应的软件代码进行重复测试,以获取每次重复测试时,该代码缺陷数据对应的软件代码的测试结果,该测试结果包括测试成功和测试失败两种结果。重复测试次数是服务器在代码缺陷分析过程中确定的重复测试的次数。一般来说,重复测试次数与其测试结果的数量相对应。本实施例中,对代码缺陷数据对应的软件代码进行重复测试时,可通过在软件测试系统中配置该软件代码对应的测试用例,并配置包括重复测试次数的配置指令,基于该配置指令控制相应的测试用例进行自动化测试,以获取每次重复测试所获取的测试结果。
S402:统计测试结果为测试失败的测试缺陷数量。
由于代码缺陷数据对应的软件代码在重复测试过程中,可能存在测试成功和测试失败两种测试结果,若测试结果为测试成功,则说明该软件代码不再出现与代码缺陷数据相同或者不相同的缺陷;若测试结果为测试失败,则说明该软件代码再次出现与代码缺陷数据相同或者不相同的缺陷。服务器通过统计测试结果为测试失败的测试结果数量确定为测试缺陷数量,该测试缺陷数量可以理解为重复测试过程中,代码缺陷数据对应的软件代码重复出现缺陷的数量。
S403:采用概率计算公式对重复测试次数和测试缺陷数量进行计算,获取缺陷概率,概率计算公式为L=A/B,其中,L为缺陷概率,A为测试缺陷数量,B为重复测试次数。
具体地,服务器预先配置有概率计算公式,采用该概率计算公式对步骤S302所确定的测试缺陷数量和步骤S301所确定的重复测试次数进行计算,可快速获取该代码缺陷数据对应的缺陷概率。可以理解地,该缺陷概率可直观地反映代码缺陷数据对应的软件代码出现缺陷的概率。一般来说,缺陷概率越大,其软件代码越有可能出现缺陷,因此,可很好地反映软件代码的质量。
S404:基于缺陷概率和预先设置的概率阈值,获取与代码缺陷数据相对应的复现概率。
其中,概率阈值是服务器预先设置的用于评估不同复现概率的阈值。本实施例中,概率阈值包括100%和50%两个,也可以设置为其他数值。具体地,若代码缺陷数据的缺陷概率为100%,则与代码缺陷数据相对应的复现概率为必然事件,可用G0来表示;若代码缺陷数据的缺陷概率在50%-100%之间,则与代码缺陷数据相对应的复现概率为高概率事件,可用G1来表示;若代码缺陷数据的缺陷概率在50%以下,则与代码缺陷数据相对应的复现概率为低概率事件,可用G2来表示。
本实施例所提供的软件程序质量评价方法中,通过对代码缺陷数据对应的软件代码进行重复测试,获取重复测试次数和测试缺陷数量;根据概率计算公式对重复测试次数和测试缺陷数量进行计算,可快速获取其对应的缺陷概率,以客观反映软件代码中出现缺陷的概率;再将缺陷概率与预设的概率阈值进行比较判断,以确定其对应的复现概率,使得复现概率可反映代码缺陷数据重复出现的可能性,可将该复现概率作为评估其对应的缺陷度量值的一个评估因素,结合其他评估因素来评估其对应的缺陷度量值。
在一实施例中,如图5所示,基于待分析版本ID查询代码版本信息表,获取与代码缺陷数据相对应的稳定系数,包括:
S501:基于待分析版本ID查询代码版本信息表,获取与待分析版本ID对应的历史版本,根据历史版本确定推出版本数量。
具体地,服务器基于待分析版本ID查询代码版本信息表,可从该代码版本信息表中获取待分析版本ID对应的待分析版本的相关信息,也可以获取与待分析版本同源的至少一个历史版本的相关信息。然后,根据该待分析版本ID对应的至少一个历史版本的数量,确定推出版本数量。由于本实施例中为了确定代码缺陷数据对应的稳定系数,则此处的推出版本数量可以具体限定为代码缺陷数据所在的历史版本对应的推出版本数量。例如,一账通APP一共有10个历史版本,若代码缺陷数据对应的软件代码A为旧功能模块,其在10个版本中均出现,则其推出版本数量为10;若代码缺陷数据对应的软件代码B为全新功能模块,只有第10个版本中出现,则其推出版本数量为1。
S502:基于推出版本数量查询稳定系数转换表,获取与代码缺陷数据相对应的稳定系数。
其中,稳定系数转换表是用于存储推出版本数量和稳定系数之间的转换关系的数据表。具体地,服务器可基于推出版本数量查询稳定系数转换表,获取与该推出版本数量相对应的稳定系数,将该稳定系数确定为代码缺陷数据对应的稳定系数。可以理解地,待分析版本ID对应的软件程序中,全新功能模块中出现的代码缺陷比较多,其发现代码缺陷比较容易,因此,其稳定系数越低;相应地,若某一功能模块的版本越高,越稳定,其稳定系数越高。本实施例中,代码缺陷数据对应的稳定系数包括W0、W1和W2这三种,其对应的推出版本次数分别是10个以上、4-10之间和4个以下。
本实施例所提供的软件程序质量评价方法中,根据待分析版本ID查询代码版本信息表,获取历史版本对应的推出版本数量,根据该推出版本数量进行稳定系数转换,可快速获取与该代码缺陷数据相对应的稳定系数,以便依据该稳定系数对代码缺陷数据进行质量评估。
在一实施例中,如图6所示,对同一代码缺陷数据对应的功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数和稳定系数进行加权分析,获取与代码缺陷数据相对应的缺陷度量值,包括:
S601:基于同一代码缺陷数据对应的功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数和稳定系数查询预先设置的权重分值数据表,获取对应的评估分值和评估权重。
其中,权重分值数据表是服务器中预先设置的用于记录每一评估因素对应的评估分值和评估权重的数据表,如下表一所示。评估分值是预先设置每一种评估因素对应的分值,评估权重是预先设置的每一评估因素对应的权重。本实施例中,服务器基于同一代码缺陷数据对应的功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数和稳定系数这六个评估因素查询预先设置的权重分值数据表,获取每一评估因素对应的评估分值和评估权重,以便后续基于该评估分值和评估权重进行综合计算其对应的缺陷度量值。例如,某一代码缺陷数据对应的功能核心程度为P0,则其对应的评估分值为3,评估权重为30%。由于权重分值数据表中预先配置好评估分值和评估权重,后续只需根据每一评估因素的具体情况确定对应的评估分值和评估权重,以进行缺陷度量值计算,无需依据测试人员的主观判断或者决定,保证缺陷度量值获取的客观性。
表一权重分值数据表
S602:采用缺陷度量值公式对评估分值和评估权重进行加权计算,获取代码缺陷数据对应的缺陷度量值;其中,缺陷度量值公式为Q=∑SiKi,Q为缺陷度量值,i为功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数或稳定系数,Si为功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数或稳定系数对应的评估分值,Ki为功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数或稳定系数对应的评估权重。
具体地,不同评估因素的评估权重可根据评估因素对软件程序的重复程度确定,如表一所示,可设置功能核心程度的评估权重为30%,页面使用频率和页面访问步长为20%,复现概率、可维护性和稳定系数为10%,则上述缺陷度量值公式具体为Q=P*30%+V*20%+D*20%+G*10%+F*10%+W*10%,依据该缺陷度量值公式计算出的缺陷度量值的取值范围为[1,2],可直观且客观反映代码缺陷数据的重要程度,即其取值越大,则代码缺陷数据越重复,越需要优先修复,以保证软件程序的开发进度。
本实施例所提供的软件程序质量评价方法中,基于同一代码缺陷数据对应的功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数和稳定系数这几个评估因素查询预先设置的权重分值数据表,可快速获取每一评估因素对应的评估分值和评估权重,并保证获取的评估分值和评估权重的客观性;然后,采用缺陷度量值公式对所有评估因素对应的评估分值和评估权重进行加权计算,获取相对应的缺陷度量值,使得该缺陷度量值可直观且客观反馈代码缺陷数据的重要程度,以便进行后续修复安排或者对软件程序的开发质量进行综合评估。
在一实施例中,如图7所示,在步骤S204之后,即在获取代码缺陷数据对应的缺陷度量值的步骤之后,软件程序质量评价方法还包括:
S701:判断缺陷度量值是否大于第一告警阈值。
其中,第一告警阈值是预先设置的用于评估是否需要进行告警提醒的阈值,该第一告警阈值是用于评估缺陷是否达到最严重程度的阈值。一般来说,若缺陷度量值大于第一告警阈值,则说明其对应的代码缺陷数据对应的功能为核心功能或者缺陷严重程度最高,需要优先处理;相应地,若缺陷度量值不大于第一告警阈值,则说明其对应的代码缺陷数据的功能不为核心功能或者其缺陷严重程度还未达到最高的程度。
S702:若存在缺陷度量值大于第一告警阈值,则基于大于第一告警阈值的缺陷度量值和对应的代码缺陷数据生成缺陷告警信息,并将缺陷告警信息发送给与待分析版本ID相对应的处理终端。
其中,缺陷告警信息具体用于反映代码缺陷数据较严重需要优先修复的信息。与待分析版本ID相对应的处理终端具体为用于对与待分析版本ID相对应的软件程序进行质量监控处理的处理人员的终端设备,该处理人员可以为开发人员、测试人员或者审核人员。
具体地,服务器在将缺陷度量值与第一告警阈值进行比较时,若存在任一缺陷度量值大于第一告警阈值,则说明其对应的代码缺陷数据对应的功能为核心功能或者缺陷严重程度最高,需要优先处理,此时,可基于大于第一告警阈值的缺陷度量值和对应的代码缺陷数据生成缺陷告警信息,并将缺陷告警信息发送给与待分析版本ID相对应的处理终端,以使相应的处理人员可对缺陷度量值大于第一告警阈值的代码缺陷数据进行优先修复处理,以保证修复工作安排的合理性,从而保证最终的软件质量以及软件开发的进度。
S703:若不存在缺陷度量值大于第一告警阈值,则将缺陷度量值与第二告警阈值进行比较,统计缺陷度量值大于第二告警阈值对应的代码缺陷数据的缺陷数量。
其中,第二告警阈值是预先设置的用于评估是否需要进行告警提醒的阈值,该第二告警阈值是用于评估缺陷是否达到较严重程度的阈值。具体地,服务器在将缺陷度量值与第一告警阈值进行比较时,若不存在任一缺陷度量值大于第一告警阈值,说明所有代码缺陷数据对应的功能均不为核心功能或者缺陷严重程度未达到最高程度。此时,服务器再将缺陷度量值与第二告警阈值进行比较,统计缺陷度量值大于第二告警阈值对应的所有代码缺陷数据的缺陷数量。一般来说,缺陷度量值不大于第一告警阈值且大于第二告警阈值,则说明其对应的代码缺陷数据的功能为比较重要的功能或者缺陷严重程度较高,需要尽快处理。服务器统计缺陷度量值大于第二告警阈值对应的所有代码缺陷数据的缺陷数量,可确定需要尽快处理的所有代码缺陷数据的数量。
S704:若缺陷数量大于预设数量阈值,则基于大于第二告警阈值的缺陷度量值和对应的代码缺陷数据生成缺陷告警信息,并将缺陷告警信息发送给与待分析版本ID相对应的处理终端。
其中,预设数量阈值是预先设置的用于评估是否需要进行告警提醒的数量阈值。具体地,服务器在统计缺陷度量值大于第二告警阈值对应的代码缺陷数据的缺陷数量,将该缺陷数量与预设数量阈值进行比较,若缺陷数量大于预设数量阈值,则说明需要尽快处理的所有代码缺陷数据的数量较多,需要提醒处理人员尽快处理,因此,基于大于第二告警阈值的缺陷度量值和对应的代码缺陷数据生成缺陷告警信息,并将缺陷告警信息发送给与待分析版本ID相对应的处理终端。
本实施例所提供的软件程序质量评价方法中,基于缺陷度量值大于第一告警阈值的代码缺陷数据和对应的缺陷度量值生成缺陷告警信息,或者在缺陷度量值大于第二告警阈值对应的代码缺陷数据的缺陷数量时,基于大于第二告警阈值的缺陷度量值和对应的代码缺陷数据生成缺陷告警信息,并将缺陷告警信息发送给处理终端,以使处理人员可基于缺陷告警信息及时对相应的代码缺陷数据确定修复优先级,并基于修复优先级进行修复,以提高修复效率并保证修复工作的合理性,从而保证最终的软件质量以及软件开发的进度。
在一实施例中,如图8所示,在获取与缺陷度量值相对应的缺陷风险等级,统计每一缺陷风险等级对应的缺陷数量的步骤之后,软件程序质量评价方法还包括:
S801:基于缺陷风险等级查询修复时间信息表,获取与缺陷风险等级相对应的修复时间。
其中,修复时间信息表是预先配置的用于存储不同缺陷风险等级对应的修复时间的数据表。一般来说,缺陷风险等级越高,其相应配置的修复时间越短,以促使相关处理人员及时对缺陷风险等级对应的代码缺陷数据进行及时修复。具体地,服务器可基于缺陷风险等级查询修复时间信息表,可快速获取与缺陷风险等级相应对的修复时间,作为对应的代码缺陷数据的修复时间。
S802:基于修复时间触发与代码缺陷数据相对应的监控任务,判断修复时间内是否完成对代码缺陷数据的修复,获取代码修复结果。
具体地,服务器中预先配置有质量监控工具,该质量监控工具可以为用于监听某一事件是否发生的程序,例如JS事件的事件触发函数。具体地,服务器可基于修复时间触发与代码缺陷数据相对应的监控任务,该监控任务用于监听在修复时间以前,对应的代码缺陷数据是否被修复完成。本实施例中,服务器基于修复时间触发质量监控工具,执行与代码缺陷数据相对应的监控任务,以判断在修复时间内是否完成对代码缺陷数据的修复,以获取代码修复结果。该代码修复结果包括修复成功和修复失败两种结果,修复成功是指在修复时间内能完成对代码缺陷数据的修复对应的结果;反之,修复失败是指在修复时间内不能完成对代码缺陷数据的修复对应的结果。其中,完成对代码缺陷数据的修复是指通过对代码缺陷数据进行修复、测试……修改和测试等重复过程,直至不存在代码缺陷。
S803:基于代码修复结果和预先设置的质量监控模板,形成目标质量监控报告。
其中,预先设置的质量监控模板是服务器预先设置的用于生成质量监控报告的模板。该预先设置的质量监控模板可以以软件程序的版本为监控维度,也可以以软件程序的开发人员为监控维度,可在监控模板配置过程中,通过监控模板配置指令自主选择其所需监控的监控维度。
质量监控模板中配置至少一个缺陷监控指标和与每一缺陷监控指标相对应的填充区域,该填充区域用于填充在质量监控过程中获取的与缺陷监控指标相对应的监控数值。该缺陷监控指标还可关联监控指标计算公式,该监控指标计算公式用于计算与缺陷监控指标相对应的监控数值。具体地,服务器在获取到代码修复结果之后,可将该代码修复结果填充在与其相对应的缺陷监控指标的填充区域上,或者将代码修复结果通过监控指标计算公式所获取的监控数值填充在与其相对应的缺陷监控指标的填充区域上,以获取目标质量监控报告。
例如,一质量监控模板中包括紧急风险等级、高级风险等级、一般风险等级、低级风险等级、缺陷总数、及时修复数和及时修复率等监控指标。由于每一缺陷风险等级对应的缺陷数量通过步骤S204获取,可直接作为监控数值填充在相应的填充区域上。缺陷总数配置有相应的缺陷总数计算公式,具体为所有缺陷风险等级对应的缺陷数量的总和,通过缺陷总数计算公式确定相应的缺陷总数值,并填充在相应的填充区域上。及时修复数是在修复时间能完成对代码缺陷数据的修复的数量,该及时修复数通过代码修复结果来确定,可以理解为修复成功的代码修复结果的数量。及时修复率具体为及时修复量与缺陷总数的比值,通过计算可获取相应的监控数值,并填充在相应的填充区域,即可获取目标质量监控报告。
本实施例所提供的软件程序质量评价方法中,可基于缺陷风险等级确定相应的修复时间,并触发与修复时间相关联的监控任务,以判断在修复时间内是否完成对代码缺陷数据的修复,以获取代码修复结果,以促使相应的处理人员尽早处理相关代码缺陷数据,以提高代码缺陷数据的修复效率。根据代码修复结果和预先设置的质量监控模板,可快速获取相应的目标质量监控报告,以便直观地反映代码修复的进度,从而保证软件程序的质量。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种软件程序质量评价装置,该软件程序质量评价装置与上述实施例中软件程序质量评价方法一一对应。如图9所示,该软件程序质量评价装置包括质量评估请求获取模块901、代码缺陷数据获取模块902、缺陷度量值获取模块903、缺陷风险等级获取模块904和质量评估图表获取模块905。各功能模块详细说明如下:
质量评估请求获取模块901,用于获取质量评估请求,质量评估请求包括待分析版本ID和目标图表ID。
代码缺陷数据获取模块902,用于基于待分析版本ID查询测试结果数据库,获取与待分析版本ID相对应的至少一个代码缺陷数据。
缺陷度量值获取模块903,用于对代码缺陷数据进行缺陷度量分析,获取代码缺陷数据对应的缺陷度量值。
缺陷风险等级获取模块904,用于基于与代码缺陷数据相对应的缺陷度量值查询风险等级转换表,获取与缺陷度量值相对应的缺陷风险等级,统计每一缺陷风险等级对应的缺陷数量。
质量评估图表获取模块905,用于调用第三方图像处理库中与目标图表ID相对应的图表转换函数,对缺陷风险等级和与缺陷风险等级相对应的缺陷数量进行图表转换,获取目标质量评估图表。
优选地,在缺陷度量值获取模块903之后,软件程序质量评价装置还包括:第一度量值比较判断单元、第一告警提醒处理单元、第二度量值比较判断单元和第二告警提醒处理单元。
第一度量值比较判断单元,用于判断缺陷度量值是否大于第一告警阈值。
第一告警提醒处理单元,用于若存在缺陷度量值大于第一告警阈值,则基于大于第一告警阈值的缺陷度量值和对应的代码缺陷数据生成缺陷告警信息,并将缺陷告警信息发送给与待分析版本ID相对应的处理终端。
第二度量值比较判断单元,用于若不存在缺陷度量值大于第一告警阈值,则将缺陷度量值与第二告警阈值进行比较,统计缺陷度量值大于第二告警阈值对应的代码缺陷数据的缺陷数量。
第二告警提醒处理单元,用于若缺陷数量大于预设数量阈值,则基于大于第二告警阈值的缺陷度量值和对应的代码缺陷数据生成缺陷告警信息,并将缺陷告警信息发送给与待分析版本ID相对应的处理终端。
优选地,在缺陷风险等级获取模块904之后,软件程序质量评价装置还包括:
修复时间获取单元,用于基于缺陷风险等级查询修复时间信息表,获取与缺陷风险等级相对应的修复时间。
修复结果获取单元,用于基于修复时间触发与代码缺陷数据相对应的监控任务,判断修复时间内是否完成对代码缺陷数据的修复,获取代码修复结果。
质量监控报告获取单元,用于基于代码修复结果和预先设置的质量监控模板,形成目标质量监控报告。
优选地,缺陷度量值获取模块903包括功能核心程度获取子模块、页面频率步长获取子模块、复现概率获取子模块、可维护性获取子模块、稳定系数获取子模块和缺陷度量值获取子模块。
功能核心程度获取子模块,用于基于与待分析版本ID相对应的抽象语法树对代码缺陷数据进行语法树分析,获取与代码缺陷数据相对应的功能核心程度。
页面频率步长获取子模块,用于基于代码缺陷数据查询与待分析版本ID相对应的埋点数据库,获取与代码缺陷数据相对应的页面使用频率和页面访问步长。
复现概率获取子模块,用于对代码缺陷数据进行重复测试,获取与代码缺陷数据相对应的复现概率。
可维护性获取子模块,用于采用代码扫描工具对代码缺陷数据进行扫描分析,获取与代码缺陷数据相对应的可维护性。
稳定系数获取子模块,用于基于待分析版本ID查询代码版本信息表,获取与代码缺陷数据相对应的稳定系数。
缺陷度量值获取子模块,用于对同一代码缺陷数据对应的功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数和稳定系数进行加权分析,获取与代码缺陷数据相对应的缺陷度量值。
优选地,复现概率获取子模块包括重复测试处理单元、缺陷数量统计单元、缺陷概率计算单元和复现概率获取单元。
重复测试处理单元,用于对代码缺陷数据对应的软件代码进行重复测试,获取每次重复测试对应的测试结果和重复测试次数。
缺陷数量统计单元,用于统计测试结果为测试失败的测试缺陷数量。
缺陷概率计算单元,用于采用概率计算公式对重复测试次数和测试缺陷数量进行计算,获取缺陷概率,概率计算公式为L=A/B,其中,L为缺陷概率,A为测试缺陷数量,B为重复测试次数。
复现概率获取单元,用于基于缺陷概率和预先设置的概率阈值,获取与代码缺陷数据相对应的复现概率。
优选地,稳定系数获取子模块包括历史版本获取单元和稳定系数获取单元。
历史版本获取单元,用于基于待分析版本ID查询代码版本信息表,获取与待分析版本ID对应的历史版本,根据历史版本确定推出版本数量。
稳定系数获取单元,用于基于推出版本数量查询稳定系数转换表,获取与代码缺陷数据相对应的稳定系数。
优选地,缺陷度量值获取子模块包括评估分值权重获取单元和缺陷度量值获取单元。
评估分值权重获取单元,用于基于同一代码缺陷数据对应的功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数和稳定系数查询预先设置的权重分值数据表,获取对应的评估分值和评估权重。
缺陷度量值获取单元,用于采用缺陷度量值公式对评估分值和评估权重进行加权计算,获取代码缺陷数据对应的缺陷度量值。
其中,缺陷度量值公式为Q=∑SiKi,Q为缺陷度量值,,i为功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数或稳定系数,Si为功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数或稳定系数对应的评估分值,Ki为功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数或稳定系数对应的评估权重。
关于软件程序质量评价装置的具体限定可以参见上文中对于软件程序质量评价方法的限定,在此不再赘述。上述软件程序质量评价装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储执行软件程序质量评价方法过程中采用或者生成的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种软件程序质量评价方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中软件程序质量评价方法的步骤,例如图2所示的步骤S201-S206,或者图3至图8中所示的步骤,为避免重复,这里不再赘述。或者,处理器执行计算机程序时实现软件程序质量评价装置这一实施例中的各模块/单元的功能,例如图9所示的质量评估请求获取模块901、代码缺陷数据获取模块902、缺陷度量值获取模块903、缺陷风险等级获取模块904和质量评估图表获取模块905的功能,为避免重复,这里不再赘述。
在一实施例中,提供一计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中软件程序质量评价方法的步骤,例如图2所示的步骤S201-S206,或者图3至图8中所示的步骤,为避免重复,这里不再赘述。或者,该计算机程序被处理器执行时实现上述软件程序质量评价装置这一实施例中的各模块/单元的功能,例如图9所示的质量评估请求获取模块901、代码缺陷数据获取模块902、缺陷度量值获取模块903、缺陷风险等级获取模块904和质量评估图表获取模块905的功能,为避免重复,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种软件程序质量评价方法,其特征在于,包括:
获取质量评估请求,所述质量评估请求包括待分析版本ID和目标图表ID;
基于所述待分析版本ID查询测试结果数据库,获取与所述待分析版本ID相对应的至少一个代码缺陷数据;
对所述代码缺陷数据进行缺陷度量分析,获取所述代码缺陷数据对应的缺陷度量值;
基于与所述代码缺陷数据相对应的缺陷度量值查询风险等级转换表,获取与所述缺陷度量值相对应的缺陷风险等级,统计每一所述缺陷风险等级对应的缺陷数量;
调用第三方图像处理库中与所述目标图表ID相对应的图表转换函数,对所述缺陷风险等级和与所述缺陷风险等级相对应的缺陷数量进行图表转换,获取目标质量评估图表。
2.如权利要求1所述的软件程序质量评价方法,其特征在于,在所述获取所述代码缺陷数据对应的缺陷度量值的步骤之后,所述软件程序质量评价方法还包括:
判断所述缺陷度量值是否大于第一告警阈值;
若存在所述缺陷度量值大于所述第一告警阈值,则基于大于所述第一告警阈值的缺陷度量值和对应的代码缺陷数据生成缺陷告警信息,并将所述缺陷告警信息发送给与所述待分析版本ID相对应的处理终端;
若不存在所述缺陷度量值大于所述第一告警阈值,则将所述缺陷度量值与第二告警阈值进行比较,统计缺陷度量值大于所述第二告警阈值对应的代码缺陷数据的缺陷数量;
若所述缺陷数量大于预设数量阈值,则基于大于所述第二告警阈值的缺陷度量值和对应的代码缺陷数据生成缺陷告警信息,并将所述缺陷告警信息发送给与所述待分析版本ID相对应的处理终端。
3.如权利要求1所述的软件程序质量评价方法,其特征在于,在所述获取与所述缺陷度量值相对应的缺陷风险等级,统计每一所述缺陷风险等级对应的缺陷数量的步骤之后,所述软件程序质量评价方法还包括:
基于所述缺陷风险等级查询修复时间信息表,获取与所述缺陷风险等级相对应的修复时间;
基于所述修复时间触发与所述代码缺陷数据相对应的监控任务,判断所述修复时间内是否完成对所述代码缺陷数据的修复,获取代码修复结果;
基于所述代码修复结果和预先设置的质量监控模板,形成目标质量监控报告。
4.如权利要求1所述的软件程序质量评价方法,其特征在于,所述对所述代码缺陷数据进行缺陷度量分析,获取所述代码缺陷数据对应的缺陷度量值,包括:
基于与所述待分析版本ID相对应的抽象语法树对所述代码缺陷数据进行语法树分析,获取与所述代码缺陷数据相对应的功能核心程度;
基于所述代码缺陷数据查询与所述待分析版本ID相对应的埋点数据库,获取与所述代码缺陷数据相对应的页面使用频率和页面访问步长;
对所述代码缺陷数据进行重复测试,获取与所述代码缺陷数据相对应的复现概率;
采用代码扫描工具对所述代码缺陷数据进行扫描分析,获取与所述代码缺陷数据相对应的可维护性;
基于所述待分析版本ID查询代码版本信息表,获取与所述代码缺陷数据相对应的稳定系数;
对同一所述代码缺陷数据对应的所述功能核心程度、所述页面使用频率、所述页面访问步长、所述复现概率、所述可维护指数和所述稳定系数进行加权分析,获取与所述代码缺陷数据相对应的缺陷度量值。
5.如权利要求4所述的软件程序质量评价方法,其特征在于,所述对所述代码缺陷数据进行重复测试,获取与所述代码缺陷数据相对应的复现概率,包括:
对所述代码缺陷数据对应的软件代码进行重复测试,获取每次重复测试对应的测试结果和重复测试次数;
统计所述测试结果为测试失败的测试缺陷数量;
采用概率计算公式对所述重复测试次数和所述测试缺陷数量进行计算,获取缺陷概率,所述概率计算公式为L=A/B,其中,L为缺陷概率,A为测试缺陷数量,B为重复测试次数;
基于所述缺陷概率和预先设置的概率阈值,获取与所述代码缺陷数据相对应的复现概率。
6.如权利要求4所述的软件程序质量评价方法,其特征在于,所述基于所述待分析版本ID查询代码版本信息表,获取与所述代码缺陷数据相对应的稳定系数,包括:
基于所述待分析版本ID查询代码版本信息表,获取与所述待分析版本ID对应的历史版本,根据所述历史版本确定推出版本数量;
基于所述推出版本数量查询稳定系数转换表,获取与所述代码缺陷数据相对应的稳定系数。
7.如权利要求4所述的软件程序质量评价方法,其特征在于,所述对同一所述代码缺陷数据对应的所述功能核心程度、所述页面使用频率、所述页面访问步长、所述复现概率、所述可维护指数和所述稳定系数进行加权分析,获取与所述代码缺陷数据相对应的缺陷度量值,包括:
基于同一所述代码缺陷数据对应的所述功能核心程度、所述页面使用频率、所述页面访问步长、所述复现概率、所述可维护指数和所述稳定系数查询预先设置的权重分值数据表,获取对应的评估分值和评估权重;
采用缺陷度量值公式对所述评估分值和所述评估权重进行加权计算,获取所述代码缺陷数据对应的缺陷度量值;
其中,所述缺陷度量值公式为Q=∑SiKi,Q为缺陷度量值,,i为所述功能核心程度、所述页面使用频率、所述页面访问步长、所述复现概率、所述可维护指数或所述稳定系数,Si为所述功能核心程度、所述页面使用频率、所述页面访问步长、所述复现概率、所述可维护指数或所述稳定系数对应的评估分值,Ki为所述功能核心程度、所述页面使用频率、所述页面访问步长、所述复现概率、所述可维护指数或所述稳定系数对应的评估权重。
8.一种软件程序质量评价装置,其特征在于,包括:
质量评估请求获取模块,用于获取质量评估请求,所述质量评估请求包括待分析版本ID和目标图表ID;
代码缺陷数据获取模块,用于基于所述待分析版本ID查询测试结果数据库,获取与所述待分析版本ID相对应的至少一个代码缺陷数据;
缺陷度量值获取模块,用于对所述代码缺陷数据进行缺陷度量分析,获取所述代码缺陷数据对应的缺陷度量值;
缺陷风险等级获取模块,用于基于与所述代码缺陷数据相对应的缺陷度量值查询风险等级转换表,获取与所述缺陷度量值相对应的缺陷风险等级,统计每一所述缺陷风险等级对应的缺陷数量;
质量评估图表获取模块,用于调用第三方图像处理库中与所述目标图表ID相对应的图表转换函数,对所述缺陷风险等级和与所述缺陷风险等级相对应的缺陷数量进行图表转换,获取目标质量评估图表。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述软件程序质量评价方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述软件程序质量评价方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910207536.3A CN110109821A (zh) | 2019-03-19 | 2019-03-19 | 软件程序质量评价方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910207536.3A CN110109821A (zh) | 2019-03-19 | 2019-03-19 | 软件程序质量评价方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110109821A true CN110109821A (zh) | 2019-08-09 |
Family
ID=67484379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910207536.3A Pending CN110109821A (zh) | 2019-03-19 | 2019-03-19 | 软件程序质量评价方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110109821A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110945563A (zh) * | 2019-11-08 | 2020-03-31 | 长江存储科技有限责任公司 | 用于提高产出率的自动评估方法及其评估系统 |
CN111290969A (zh) * | 2020-05-09 | 2020-06-16 | 四川新网银行股份有限公司 | 基于特征频度统计的软件质量分析方法 |
CN111381995A (zh) * | 2020-03-13 | 2020-07-07 | 青岛海尔科技有限公司 | 用于还原用户操作的方法及装置、计算机 |
CN111857807A (zh) * | 2020-07-29 | 2020-10-30 | 海尔优家智能科技(北京)有限公司 | 版本适配结果的确定方法及装置、存储介质、电子装置 |
CN112363911A (zh) * | 2020-09-29 | 2021-02-12 | 武汉虹旭信息技术有限责任公司 | 软件测试缺陷分析方法及装置 |
CN112395148A (zh) * | 2019-08-14 | 2021-02-23 | 北京国双科技有限公司 | 微服务评价的量化方法、装置、计算机设备和存储介质 |
CN112650664A (zh) * | 2019-10-12 | 2021-04-13 | 阿里巴巴集团控股有限公司 | 软件质量评价和排序的方法、系统及装置 |
CN112783784A (zh) * | 2021-01-29 | 2021-05-11 | 云账户技术(天津)有限公司 | 项目过程质量展示方法、装置和电子设备 |
CN113011795A (zh) * | 2021-05-06 | 2021-06-22 | 北京京东振世信息技术有限公司 | 一种应用程序开发项目的质量分析方法及系统 |
WO2022262247A1 (zh) * | 2021-06-15 | 2022-12-22 | 深圳前海微众银行股份有限公司 | 代码缺陷状态确定方法、装置、设备、介质及程序 |
CN115983719A (zh) * | 2023-03-16 | 2023-04-18 | 中国船舶集团有限公司第七一九研究所 | 一种软件综合质量评价模型的训练方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150100940A1 (en) * | 2013-10-04 | 2015-04-09 | Avaya Inc. | System and method for prioritizing and remediating defect risk in source code |
US20170235569A1 (en) * | 2016-02-17 | 2017-08-17 | Silverthread, Inc. | Computer-implemented methods and systems for measuring, estimating, and managing economic outcomes and technical debt in software systems and projects |
CN108304327A (zh) * | 2018-02-02 | 2018-07-20 | 平安证券股份有限公司 | 静态代码扫描结果处理方法和装置 |
-
2019
- 2019-03-19 CN CN201910207536.3A patent/CN110109821A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150100940A1 (en) * | 2013-10-04 | 2015-04-09 | Avaya Inc. | System and method for prioritizing and remediating defect risk in source code |
US20170235569A1 (en) * | 2016-02-17 | 2017-08-17 | Silverthread, Inc. | Computer-implemented methods and systems for measuring, estimating, and managing economic outcomes and technical debt in software systems and projects |
CN108304327A (zh) * | 2018-02-02 | 2018-07-20 | 平安证券股份有限公司 | 静态代码扫描结果处理方法和装置 |
Non-Patent Citations (1)
Title |
---|
彭裕辉;王双喜;: "基于代码审查的综合软件质量评估方法", 软件导刊, no. 03 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112395148A (zh) * | 2019-08-14 | 2021-02-23 | 北京国双科技有限公司 | 微服务评价的量化方法、装置、计算机设备和存储介质 |
CN112650664A (zh) * | 2019-10-12 | 2021-04-13 | 阿里巴巴集团控股有限公司 | 软件质量评价和排序的方法、系统及装置 |
TWI784228B (zh) * | 2019-11-08 | 2022-11-21 | 大陸商長江存儲科技有限責任公司 | 用於提高產出率的自動評估方法及其評估系統 |
US11480531B2 (en) | 2019-11-08 | 2022-10-25 | Yangtze Memory Technologies Co., Ltd. | Automatic assessment method and assessment system thereof for yield improvement |
CN110945563A (zh) * | 2019-11-08 | 2020-03-31 | 长江存储科技有限责任公司 | 用于提高产出率的自动评估方法及其评估系统 |
CN111381995A (zh) * | 2020-03-13 | 2020-07-07 | 青岛海尔科技有限公司 | 用于还原用户操作的方法及装置、计算机 |
CN111290969B (zh) * | 2020-05-09 | 2021-10-22 | 四川新网银行股份有限公司 | 基于特征频度统计的软件质量分析方法 |
CN111290969A (zh) * | 2020-05-09 | 2020-06-16 | 四川新网银行股份有限公司 | 基于特征频度统计的软件质量分析方法 |
CN111857807A (zh) * | 2020-07-29 | 2020-10-30 | 海尔优家智能科技(北京)有限公司 | 版本适配结果的确定方法及装置、存储介质、电子装置 |
CN112363911A (zh) * | 2020-09-29 | 2021-02-12 | 武汉虹旭信息技术有限责任公司 | 软件测试缺陷分析方法及装置 |
CN112783784A (zh) * | 2021-01-29 | 2021-05-11 | 云账户技术(天津)有限公司 | 项目过程质量展示方法、装置和电子设备 |
CN113011795A (zh) * | 2021-05-06 | 2021-06-22 | 北京京东振世信息技术有限公司 | 一种应用程序开发项目的质量分析方法及系统 |
WO2022262247A1 (zh) * | 2021-06-15 | 2022-12-22 | 深圳前海微众银行股份有限公司 | 代码缺陷状态确定方法、装置、设备、介质及程序 |
CN115983719A (zh) * | 2023-03-16 | 2023-04-18 | 中国船舶集团有限公司第七一九研究所 | 一种软件综合质量评价模型的训练方法及系统 |
CN115983719B (zh) * | 2023-03-16 | 2023-07-21 | 中国船舶集团有限公司第七一九研究所 | 一种软件综合质量评价模型的训练方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110109821A (zh) | 软件程序质量评价方法、装置、计算机设备及存储介质 | |
CN110109820A (zh) | 回归测试用例确定方法、装置、计算机设备及存储介质 | |
CN110083514A (zh) | 软件测试缺陷评估方法、装置、计算机设备及存储介质 | |
US10534361B2 (en) | Industrial asset health model update | |
US8589859B2 (en) | Collection and processing of code development information | |
CN110083340A (zh) | 代码生成方法、装置、计算机设备及存储介质 | |
CN105468510A (zh) | 对软件质量进行评估与追踪的方法和系统 | |
US20090292956A1 (en) | Trend based test failure prioritization | |
CN110489314A (zh) | 模型异常检测方法、装置、计算机设备和存储介质 | |
CN105389250A (zh) | 追踪软件质量的方法和系统 | |
CN114546868A (zh) | 代码覆盖率测试方法、装置和电子设备 | |
KR20160104064A (ko) | 복잡한 양자 또는 다자 상대방 관계를 탐색하기 위해 이용되는 다차원 재귀적 학습 과정 및 시스템 | |
CN110096431A (zh) | 页面权限测试方法、装置、计算机设备及存储介质 | |
CN107045477A (zh) | 一种可进行多维度检测的质量评估平台 | |
Tran et al. | How good are my search strings? Reflections on using an existing review as a quasi-gold standard | |
CN109977016A (zh) | 一种测试触发方法、装置和设备以及一种测试系统 | |
CN110032781A (zh) | 编辑时序约束方法、装置、计算机设备及存储介质 | |
US20230070393A1 (en) | Methods and devices for assessing generalizability of benchmarks | |
CN114817589A (zh) | 一种消防建筑图纸智能审核方法、系统、装置及存储介质 | |
Fioravanti et al. | A tool for process and product assessment of C++ applications | |
CN116264706A (zh) | 5g基站布设评估模型训练方法、设备及存储介质 | |
Nuraini et al. | Software with service oriented architecture quality assessment | |
CN111881259A (zh) | 一种基于文本挖掘的设备故障概率评估方法及系统 | |
CN116746930B (zh) | 一种基于深度学习的老年人认知功能评估预警方法及系统 | |
CN115204717B (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 |