CN110083514A - 软件测试缺陷评估方法、装置、计算机设备及存储介质 - Google Patents
软件测试缺陷评估方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN110083514A CN110083514A CN201910207348.0A CN201910207348A CN110083514A CN 110083514 A CN110083514 A CN 110083514A CN 201910207348 A CN201910207348 A CN 201910207348A CN 110083514 A CN110083514 A CN 110083514A
- Authority
- CN
- China
- Prior art keywords
- defect
- data
- aacode
- code
- defect 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/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3452—Performance evaluation by statistical 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/362—Software debugging
- G06F11/3628—Software debugging of optimised code
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Probability & Statistics with Applications (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开一种软件测试缺陷评估方法、装置、计算机设备及存储介质。该方法包括:基于缺陷分析请求中的待分析版本ID查询测试结果数据库,获取代码缺陷数据;对代码缺陷数据进行语法树分析,获取功能核心程度;基于代码缺陷数据查询埋点数据库,获取页面使用频率和页面访问步长;对代码缺陷数据进行重复测试,获取复现概率;采用代码扫描工具对代码缺陷数据进行扫描分析,获取可维护性;基于待分析版本ID查询代码版本信息表,获取稳定系数;对同一代码缺陷数据对应的功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数和稳定系数进行加权分析,获取缺陷度量值。该方法所获取的缺陷度量值可客观且直观地反映代码缺陷数据的重要程度。
Description
技术领域
本发明涉及软件测试领域,尤其涉及一种软件测试缺陷评估方法、装置、计算机设备及存储介质。
背景技术
软件测试是指在特定条件下对软件程序进行操作,以发现软件程序错误,衡量软件质量是否能满足设计要求的评估过程。一般来说,软件测试是通过对软件程序进行测试,以发现其中不符合设计要求的代码缺陷,以便对代码缺陷进行修复的过程。在当前软件测试过程中,没有客观评价指标确定代码缺陷的重要程度,使得其修复过程主要依据测试人员的测试经验或者根据代码缺陷的功能优先级主观确定其代码缺陷的修复优先级,导致所确定的修复优先级的客观性较差,而且根据该修复优先级对软件程序的代码缺陷进行修复时修复工作安排不合理,影响代码缺陷修复的效率。
发明内容
本发明实施例提供一种软件测试缺陷评估方法、装置、计算机设备及存储介质,以解决当前软件测试过程中没有客观评价指标确定代码缺陷的重要程度所存在的问题。
一种软件测试缺陷评估方法,包括:
获取缺陷分析请求,所述缺陷分析请求包括待分析版本ID;
基于所述待分析版本ID查询测试结果数据库,获取与所述待分析版本ID相对应的代码缺陷数据;
对所述代码缺陷数据进行语法树分析,获取与所述代码缺陷数据相对应的功能核心程度;
基于所述代码缺陷数据查询与所述待分析版本ID相对应的埋点数据库,获取与所述代码缺陷数据相对应的页面使用频率和页面访问步长;
对所述代码缺陷数据进行重复测试,获取与所述代码缺陷数据相对应的复现概率;
采用代码扫描工具对所述代码缺陷数据进行扫描分析,获取与所述代码缺陷数据相对应的可维护性;
基于所述待分析版本ID查询代码版本信息表,获取与所述代码缺陷数据相对应的稳定系数;
对同一所述代码缺陷数据对应的所述功能核心程度、所述页面使用频率、所述页面访问步长、所述复现概率、所述可维护指数和所述稳定系数进行加权分析,获取与所述代码缺陷数据相对应的缺陷度量值。
一种软件测试缺陷评估装置,包括:
缺陷分析请求获取模块,用于获取缺陷分析请求,所述缺陷分析请求包括待分析版本ID;
代码缺陷数据获取模块,用于基于所述待分析版本ID查询测试结果数据库,获取与所述待分析版本ID相对应的代码缺陷数据;
功能核心程度获取模块,用于对所述代码缺陷数据进行语法树分析,获取与所述代码缺陷数据相对应的功能核心程度;
页面频率步长获取模块,用于基于所述代码缺陷数据查询与所述待分析版本ID相对应的埋点数据库,获取与所述代码缺陷数据相对应的页面使用频率和页面访问步长;
复现概率获取模块,用于对所述代码缺陷数据进行重复测试,获取与所述代码缺陷数据相对应的复现概率;
可维护性获取模块,用于采用代码扫描工具对所述代码缺陷数据进行扫描分析,获取与所述代码缺陷数据相对应的可维护性;
稳定系数获取模块,用于基于所述待分析版本ID查询代码版本信息表,获取与所述代码缺陷数据相对应的稳定系数;
缺陷度量值获取模块,用于对同一所述代码缺陷数据对应的所述功能核心程度、所述页面使用频率、所述页面访问步长、所述复现概率、所述可维护指数和所述稳定系数进行加权分析,获取与所述代码缺陷数据相对应的缺陷度量值。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述软件测试缺陷评估方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述软件测试缺陷评估方法的步骤。
上述软件测试缺陷评估方法、装置、计算机设备及存储介质,基于待分析版本ID查询测试结果数据库,快速获取需要进行代码缺陷分析的代码缺陷数据;然后,依次获取该代码缺陷数据对应的功能核心程度、所述页面使用频率、所述页面访问步长、所述复现概率、所述可维护指数和所述稳定系数等评估因素,通过对该评估因素进行加权计算,可快速获取对应的缺陷度量值,该缺陷度量值综合代码缺陷数据对应的软件代码的重要程度的多个评估因素,可客观地反映该软件代码的重要程度,以便基于该缺陷度量值合理安排缺陷修复工作,提高缺陷修复的效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中软件测试缺陷评估方法的一应用环境示意图;
图2是本发明一实施例中软件测试缺陷评估方法的一流程图;
图3是本发明一实施例中软件测试缺陷评估方法的另一流程图;
图4是本发明一实施例中软件测试缺陷评估方法的另一流程图;
图5是本发明一实施例中软件测试缺陷评估方法的另一流程图;
图6是本发明一实施例中软件测试缺陷评估方法的另一流程图;
图7是本发明一实施例中软件测试缺陷评估方法的另一流程图;
图8是本发明一实施例中软件测试缺陷评估装置的一示意图;
图9是本发明一实施例中计算机设备的一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的软件测试缺陷评估方法,该软件测试缺陷评估方法可应用如图1所示的应用环境中。具体地,该软件测试缺陷评估方法应用在软件测试系统中,该软件测试系统包括如图1所示的客户端和服务器,客户端与服务器通过网络进行通信,用于实现对代码缺陷数据进行综合评估,以确定缺陷度量值,以便根据该缺陷度量值对代码缺陷数据进行修复,使得修复工作安排更合理,保证代码缺陷修复的效率。其中,客户端又称为用户端,是指与服务器相对应,为客户提供本地服务的程序。客户端可安装在但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备上。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一实施例中,如图2所示,提供一种软件测试缺陷评估方法,以该方法应用在图1中的服务器为例进行说明,包括如下步骤:
S201:获取缺陷分析请求,缺陷分析请求包括待分析版本ID。
其中,缺陷分析请求是用于触发服务器分析特定版本的软件程序的测试缺陷的请求。待分析版本ID是用于唯一识别所要进行测试缺陷分析的特定版本的软件程序的标识。每一待分析版本ID对应的一需要进行测试缺陷分析的特定版本的软件程序,例如微信V6.6.7。
S202:基于待分析版本ID查询测试结果数据库,获取与待分析版本ID相对应的代码缺陷数据。
其中,测试结果数据库是用于存储在该待分析版本ID对应的特定版本的软件程序的测试结果的数据库。该测试结果包括测试成功和测试失败两种结果,其中,基于测试结果为测试失败的软件代码所形成的数据为代码缺陷数据。即代码缺陷数据是在特定版本的软件程序在测试过程中代码存在缺陷的数据。本实施例中,代码缺陷数据是指在该待分析版本ID对应的软件程序在测试过程中出现的所有存在缺陷的代码对应的数据。
S203:对代码缺陷数据进行语法树分析,获取与代码缺陷数据相对应的功能核心程度。
语法树(syntax tree),是源代码的抽象语法结构的树状表现形式,一般指编程语言的源代码,语法树上的每个节点都表示源代码中的一种结构。功能核心程度是用于反映代码缺陷数据对应的软件代码在整个待分析版本ID对应的软件程序中的核心程度的指标。本实施例中,服务器对代码缺陷数据进行语法树分析,具体是指用于分析代码缺陷数据对应的软件代码在待分析版本ID对应的软件程序所形成的语法树中的位置,以确定其对应的功能核心程度。一般来说,代码缺陷数据对应的软件代码在语法树中的位置越靠近主干位置,其功能核心程度越高,反之,越远离主干位置,其功能核心程度越低。
S204:基于代码缺陷数据查询与待分析版本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对应的软件程序中也越重要。
S205:对代码缺陷数据进行重复测试,获取与代码缺陷数据相对应的复现概率。
其中,与代码缺陷数据相对应的复现概率是指在软件测试过程中,该代码缺陷数据对应的软件代码重复出现测试失败的概率。本实施例中,可设置代码缺陷数据对应的复现概率分别必然事件、高概率事件和低概率事件这三种,分别对于100%的概率会出现缺陷、50%-100%的概率会出现缺陷和50%以下的概率会出现缺陷这三种情况,分别用G0、G1和G2来表示。具体地,服务器在获取代码缺陷数据之后,可对该代码缺陷数据对应的软件代码进行重复测试,以确定重复出现该代码缺陷数据的概率,从而确定其代码缺陷数据对应的复现概率。一般来说,与代码缺陷数据相对应的复现概率越大,则说明该代码缺陷数据对应的软件代码出现缺陷的概率越大,为了保证待分析版本ID对应的软件程序的质量,越需要尽早修复。
S206:采用代码扫描工具对代码缺陷数据进行扫描分析,获取与代码缺陷数据相对应的可维护性。
其中,与代码缺陷数据相对应的的可维护性是指基于代码缺陷数据对应的可维护指数与服务器预先设置的指数阈值进行分析所获取的评估指标。其中,可维护指数是指可维护指标(Maintainability Index),其范围是0到100之间的值,用来指示所有类、成员、命名空间或项目的可维护性。事实上,可维护指数是一个之前所有度量值的合计值,但它也同时包含一些额外的度量值,例如,霍尔斯特德量(Halstead Volume),该值用来量度程序的总长度和词汇数。本实施例中,服务器采用代码扫描工具(如Code Metrics)对代码缺陷数据进行扫描分析,可快速与该代码缺陷数据相对应的可维护指数;然后,将该可维护指数与服务器预先设置的指数阈值进行比较,可快速获取对应的可维护性。一般来说,代码缺陷数据对应的可维护性越小,其对应的软件代码越重复,越需要优先进行修复,以避免因代码缺陷数据对应的软件代码存在缺陷而影响整个待分析版本ID对应的软件程序的开发进度。
S207:基于待分析版本ID查询代码版本信息表,获取与代码缺陷数据相对应的稳定系数。
其中,代码版本信息表是存储在服务器中的用于记录待分析版本ID对应的软件程序对应的所有版本信息的数据表。稳定系数是用于评估待分析版本ID对应的软件程序是否稳定的指标。一般来说,全新的软件程序或者软件程序中的全新功能模块,其代码缺陷越容易发现,反之,软件程序的软件版本越高,其代码性能越稳定,其代码缺陷越难发现。具体地,服务器可通过待分析版本ID查询代码版本信息表,以获取与待分析版本ID对应的推出版本数量,根据该推出版本数量确定代码缺陷数据对应的稳定系数,以便基于该稳定系数对代码缺陷数据进行综合评估。
S208:对同一代码缺陷数据对应的功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数和稳定系数进行加权分析,获取与代码缺陷数据相对应的缺陷度量值。
具体地,对同一代码缺陷数据对应的功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数和稳定系数进行加权分析,具体是指分别获取功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数和稳定系数这几个评估因素的评估分值和评估权重,对评估分值和评估权重进行加权计算,即可获取该代码缺陷数据相对应的缺陷度量值。由于该缺陷度量值是对功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数和稳定系数这几个评估因素进行综合计算所获取的值,其可较客观地反映该代码缺陷数据对应的重复程度或者价值,以便后续基于所有代码缺陷数据对应的缺陷度量值确定修复优先级,并依据修复优先级安排代码缺陷数据对应的软件代码的修复工作,以减少人为误判导致的修复工作安排不合理的问题,提高代码缺陷修复的效率。
本实施例所提供的软件测试缺陷评估方法中,基于待分析版本ID查询测试结果数据库,快速获取需要进行代码缺陷分析的代码缺陷数据;然后,依次获取该代码缺陷数据对应的功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数和稳定系数等评估因素,通过对该评估因素进行加权计算,可快速获取对应的缺陷度量值,该缺陷度量值综合代码缺陷数据对应的软件代码的重要程度的多个评估因素,可客观地反映该软件代码的重要程度,以便基于该缺陷度量值合理安排缺陷修复工作,提高缺陷修复的效率。
在一实施例中,在步骤S203之前,即在对代码缺陷数据进行语法树分析,获取与代码缺陷数据相对应的功能核心程度的步骤之前,软件测试缺陷评估方法还包括:采用源码解析器对与待分析版本ID相对应的软件程序进行转化处理,获取与待分析版本ID相对应的抽象语法树。
抽象语法树(abstract syntax code,AST)是源代码的抽象语法结构的树状表示,树上的每个节点都表示源代码中的一种结构,之所以说是抽象的,是因为抽象语法树并不会表示出真实语法出现的每一个细节(如嵌套括号被隐含在树的结构中,并没有以节点的形式呈现)。具体地,服务器可采用javascript Parser这一源码解析器,对采用JAVA语言编辑的与待分析版本ID相对应的软件程序进行转化处理,以转化成与待分析版本ID相对应的抽象语法树,再进一步转化为字节码或直接生成机器码,以便后续进行程序分析。
相应地,步骤S203,即对代码缺陷数据进行语法树分析,获取与代码缺陷数据相对应的功能核心程度,具体包括如下步骤:采用代码分析工具,基于与待分析版本ID相对应的抽象语法树对代码缺陷数据进行语法树分析,获取与代码缺陷数据相对应的功能核心程度。
具体地,服务器采用emma代码分析工具分析代码缺陷数据在与待分析版本ID相对应的抽象语法树上的运行流向,确定代码缺陷数据在抽象语法树中的位置,并根据其所在的位置确定其对应的功能核心程度。例如,若该代码缺陷数据处于抽象语法树中的主干位置,则其功能核心程度最高,确定为P0级别;若该代码缺陷数据处于抽象语法树中的次主干位置,则其功能核心程度次之,确定为P1级别;若该代码缺陷数据处于抽象语法树中的次干位置,则其功能核心程度更低,确定为P2级别……依此类推,确定代码缺陷数据在抽象语法树中的位置,从而确定其对应的功能核心程度。
本实施例所提供的软件测试缺陷评估方法中,通过预先创建的与待分析版本ID相对应的抽象语法树对代码缺陷数据进行语法树分析,可快速获取该代码缺陷数据对应的功能核心程度,可反映该代码缺陷数据在整个待分析版本ID对应的软件程序中的重要程度,以使后续可将该功能核心程度作为评估其对应的缺陷度量值的一个评估因素,综合评估该代码缺陷数据对应的缺陷度量值,从而确定其修复优先级或者对待分析版本ID对应的软件程序进行综合分析等。
在一实施例中,如图3所示,对代码缺陷数据进行重复测试,获取与代码缺陷数据相对应的复现概率,具体包括如下步骤:
S301:对代码缺陷数据对应的软件代码进行重复测试,获取每次重复测试对应的测试结果和重复测试次数。
具体地,服务器在获取代码缺陷数据之后,对代码缺陷数据对应的软件代码进行重复测试,以获取每次重复测试时,该代码缺陷数据对应的软件代码的测试结果,该测试结果包括测试成功和测试失败两种结果。重复测试次数是服务器在代码缺陷分析过程中确定的重复测试的次数。一般来说,重复测试次数与其测试结果的数量相对应。本实施例中,对代码缺陷数据对应的软件代码进行重复测试时,可通过在软件测试系统中配置该软件代码对应的测试用例,并配置包括重复测试次数的配置指令,基于该配置指令控制相应的测试用例进行自动化测试,以获取每次重复测试所获取的测试结果。
S302:统计测试结果为测试失败的测试缺陷数量。
由于代码缺陷数据对应的软件代码在重复测试过程中,可能存在测试成功和测试失败两种测试结果,若测试结果为测试成功,则说明该软件代码不再出现与代码缺陷数据相同或者不相同的缺陷;若测试结果为测试失败,则说明该软件代码再次出现与代码缺陷数据相同或者不相同的缺陷。服务器通过统计测试结果为测试失败的测试结果数量确定为测试缺陷数量,该测试缺陷数量可以理解为重复测试过程中,代码缺陷数据对应的软件代码重复出现缺陷的数量。
S303:采用概率计算公式对重复测试次数和测试缺陷数量进行计算,获取缺陷概率,概率计算公式为L=A/B,其中,L为缺陷概率,A为测试缺陷数量,B为重复测试次数。
具体地,服务器预先配置有概率计算公式,采用该概率计算公式对步骤S302所确定的测试缺陷数量和步骤S301所确定的重复测试次数进行计算,可快速获取该代码缺陷数据对应的缺陷概率。可以理解地,该缺陷概率可直观地反映代码缺陷数据对应的软件代码出现缺陷的概率。一般来说,缺陷概率越大,其软件代码越有可能出现缺陷,因此,可很好地反映软件代码的质量。
S304:基于缺陷概率和预先设置的概率阈值,获取与代码缺陷数据相对应的复现概率。
其中,概率阈值是服务器预先设置的用于评估不同复现概率的阈值。本实施例中,概率阈值包括100%和50%两个,也可以设置为其他数值。具体地,若代码缺陷数据的缺陷概率为100%,则与代码缺陷数据相对应的复现概率为必然事件,可用G0来表示;若代码缺陷数据的缺陷概率在50%-100%之间,则与代码缺陷数据相对应的复现概率为高概率事件,可用G1来表示;若代码缺陷数据的缺陷概率在50%以下,则与代码缺陷数据相对应的复现概率为低概率事件,可用G2来表示。
本实施例所提供的软件测试缺陷评估方法中,通过对代码缺陷数据对应的软件代码进行重复测试,获取重复测试次数和测试缺陷数量;根据概率计算公式对重复测试次数和测试缺陷数量进行计算,可快速获取其对应的缺陷概率,以客观反映软件代码中出现缺陷的概率;再将缺陷概率与预设的概率阈值进行比较判断,以确定其对应的复现概率,使得复现概率可反映代码缺陷数据重复出现的可能性,可将该复现概率作为评估其对应的缺陷度量值的一个评估因素,结合其他评估因素来评估其对应的缺陷度量值。
在一实施例中,如图4所示,采用代码扫描工具对代码缺陷数据进行扫描分析,获取与代码缺陷数据相对应的可维护性,具体包括如下步骤:
S401:采用代码扫描工具对代码缺陷数据进行扫描分析,获取与代码缺陷数据相对应的评估参数,评估参数包括霍尔斯特德量、圈复杂度和代码行数。
由于可维护指数是多个度量值的合计值,因此,服务器需先采用代码扫描工具对代码缺陷数据进行扫描分析,以获取该代码缺陷数据对应的评估参数,该评估参数包括霍尔斯特德量、圈复杂度和代码行数这几个度量值,以便基于评估参数进行可维护指数计算。其中。霍尔斯特德量(Halstead)是测量代码计算复杂度。具体上,如果一个程序有N个操作数和运算符,N个不同的的操作数和运算符,那么halstead=N*Log2(n),总之程序中的运算符和操作数越少越利于提高其霍尔斯特德量。圈复杂度(CyclomaticComplexity)是代码的逻辑复杂度,程序的每个可能的执行分支(if,while,for等)都为该指标贡献1个点。一般来说,圈复杂度的建议范围<10,最多不超过20。代码行数(Lines of code)是指待分析版本ID对应的软件程序的代码行数。例如,采用CodeMetrics这一代码扫描工具对代码缺陷数据进行扫描分析,可快速获取与代码缺陷数据相对应的评估参数,如在Code Metrics的操作界面上选择“Calculate Code Metrics”,即可在其结果窗口中获取对应一评估参数,这些评估参数包括霍尔斯特德量、圈复杂度和代码行数。
S402:采用可维护指数公式对霍尔斯特德量、圈复杂度和代码行数进行计算,获取与代码缺陷数据相对应的可维护指数;其中,可维护指数公式为可维护指数=MAX(0,(171-5.2*ln(霍尔斯特德量)-0.23*(圈复杂度)-16.2*ln(代码行数))*100/171)。
具体地,服务器预先配置有可维护指数公式,采用该可维护指数公式对步骤S401所确定的霍尔斯特德量、圈复杂度和代码行数进行计算,可快速获取与代码缺陷数据相对应的可维护指数。一般来说,可维护指数越小,则其软件代码越重要,相应地,修复优先级越高。
S403:基于与代码缺陷数据相对应的可维护指数和预先设置的指数阈值,获取与代码缺陷数据相对应的可维护性。
其中,指数阈值是服务器预先设置的用于评估不同可维护性的阈值。具体地,服务器基于与代码缺陷数据相对应的可维护指数,根据该可维护指数确定其落入由至少两个指数阈值所界定的取值范围,根据该权值范围确定对应的可维护性。本实施例中,步骤S402计算出的可维护指数的取值范围为0-100,若指数阈值为10和20,则这两个指数阈值可将可维护指数划分成[0,10]、(10,20]和(20,100]三个取值范围,每个取值范围对应一可维护性,分别采用F0、F1和F2来表示。
本实施例所提供的软件测试缺陷评估方法中,采用代码扫描工具对代码缺陷数据进行扫描,以快速获取评估参数,再采用可维护指数公式对评估参数进行计算,可快速获取其对应的可维护指数,使得可维护指数的获取过程简单快速;然后,基于可维护指数和预设的指数阈值,可快速确定代码缺陷数据对应的可维护性,以便依据该可维护性对代码缺陷数据进行质量评估。
在一实施例中,如图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所示,在步骤S208之后,在获取与代码缺陷数据相对应的缺陷度量值的步骤之后,软件测试缺陷评估方法还包括如下步骤:
S701:基于与代码缺陷数据相对应的缺陷度量值查询风险等级转换表,获取与缺陷度量值相对应的缺陷风险等级。
其中,风险等级转换表是用于限定缺陷度量值与缺陷风险等级之间转换关系的数据表。具体地,服务器可基于与代码缺陷数据相对应的缺陷度量值查询风险等级转换表,可快速获取与该缺陷度量值相对应的缺陷风险等级。如上实施例,缺陷度量值的取值范围为[1,2],该风险等级转换表中可将该取值范围划分成若干个风险等级范围,每一风险等级范围对应的一缺陷风险等级,则服务器可根据该代码缺陷数据对应的缺陷度量值确定其所属的风险等级范围,将其所属的风险等级范围对应的缺陷风险等级确定为该缺陷度量值对应的缺陷风险等级。一般来说,缺陷度量值的取值越高,其缺陷风险等级越高。
S702:基于缺陷风险等级和预先设置的缺陷提醒模板,获取缺陷提醒消息。
其中,缺陷提醒模板是服务器预先设置的用于生成提醒信息的模板。具体地,服务器在获取某一代码缺陷数据对应的缺陷风险等级之后,可查询与缺陷风险等级相对应的开发人员信息、修复期限或者其他需提醒信息,将该开发人员信息、修复期限和其他需提醒信息填充在预先设置的缺陷提醒模板中,以获取缺陷提醒消息,从而实现缺陷提醒消息自动生成,提高提醒效率。
S703:基于缺陷风险等级查询提醒频率信息表,获取与缺陷风险等级相对应的缺陷提醒频率。
其中,提醒频率信息表是用于限定不同缺陷风险等级对应的提醒频率的数据表。具体地,服务器在获取某一代码缺陷数据对应的缺陷风险等级之后,基于缺陷风险等级查询提醒频率信息表,以获取与该缺陷风险等级相对应的缺陷提醒频率,如可设置1天提醒一次,3天提醒一次或者其他提醒频率。一般来说,缺陷风险等级越高,其对应的缺陷提醒频率越频繁。
S704:依据缺陷提醒频率,给与代码缺陷数据对应的处理终端发送缺陷提醒消息。
与代码缺陷数据对应的处理终端具体可以理解为用于对代码缺陷数据进行修复的开发人员或者进行审核的审核人员所使用的终端设备,该终端设备可接收到软件测试系统发送的缺陷提醒消息。具体地,服务器还依据与缺陷风险等级相对应的缺陷提醒频率,给代码缺陷数据对应的处理终端发送缺陷提醒消息,以使代码缺陷数据对应的开发人员或者审核人员可及时获知该缺陷提醒消息,从而对代码缺陷数据对应的软件代码进行修复,以提高修复效率。
本实施例所提供的软件测试缺陷评估方法中,根据缺陷度量值查询风险等级转换表,可快速相对应的缺陷风险等级,并基于该缺陷风险等级确定相应的缺陷提醒消息和缺陷提醒频率,依据缺陷提醒频率向处理终端发送缺陷提醒消息,可有助于提高代码缺陷数据的修复进度,提高其修复效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种软件测试缺陷评估装置,该软件测试缺陷评估装置与上述实施例中软件测试缺陷评估方法一一对应。如图8所示,该软件测试缺陷评估装置包括缺陷分析请求获取模块801、代码缺陷数据获取模块802、功能核心程度获取模块803、页面频率步长获取模块804、复现概率获取模块805、可维护性获取模块806、稳定系数获取模块807和缺陷度量值获取模块808。各功能模块详细说明如下:
缺陷分析请求获取模块801,用于获取缺陷分析请求,缺陷分析请求包括待分析版本ID。
代码缺陷数据获取模块802,用于基于待分析版本ID查询测试结果数据库,获取与待分析版本ID相对应的代码缺陷数据。
功能核心程度获取模块803,用于对代码缺陷数据进行语法树分析,获取与代码缺陷数据相对应的功能核心程度。
页面频率步长获取模块804,用于基于代码缺陷数据查询与待分析版本ID相对应的埋点数据库,获取与代码缺陷数据相对应的页面使用频率和页面访问步长。
复现概率获取模块805,用于对代码缺陷数据进行重复测试,获取与代码缺陷数据相对应的复现概率。
可维护性获取模块806,用于采用代码扫描工具对代码缺陷数据进行扫描分析,获取与代码缺陷数据相对应的可维护性。
稳定系数获取模块807,用于基于待分析版本ID查询代码版本信息表,获取与代码缺陷数据相对应的稳定系数。
缺陷度量值获取模块808,用于对同一代码缺陷数据对应的功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数和稳定系数进行加权分析,获取与代码缺陷数据相对应的缺陷度量值。
优选地,在功能核心程度获取模块803之前,软件测试缺陷评估装置还包括:语法树获取模块,用于采用源码解析器对与待分析版本ID相对应的软件程序进行转化处理,获取与待分析版本ID相对应的抽象语法树。
功能核心程度获取模块803,用于采用代码分析工具,基于与待分析版本ID相对应的抽象语法树对代码缺陷数据进行语法树分析,获取与代码缺陷数据相对应的功能核心程度。
优选地,复现概率获取模块805包括重复测试处理单元、缺陷数量统计单元、缺陷概率计算单元和复现概率获取单元。
重复测试处理单元,用于对代码缺陷数据对应的软件代码进行重复测试,获取每次重复测试对应的测试结果和重复测试次数。
缺陷数量统计单元,用于统计测试结果为测试失败的测试缺陷数量。
缺陷概率计算单元,用于采用概率计算公式对重复测试次数和测试缺陷数量进行计算,获取缺陷概率,概率计算公式为L=A/B,其中,L为缺陷概率,A为测试缺陷数量,B为重复测试次数。
复现概率获取单元,用于基于缺陷概率和预先设置的概率阈值,获取与代码缺陷数据相对应的复现概率。
优选地,可维护性获取模块806包括评估参数获取单元、可维护指数获取单元和可维护性获取单元。
评估参数获取单元,用于采用代码扫描工具对代码缺陷数据进行扫描分析,获取与代码缺陷数据相对应的评估参数,评估参数包括霍尔斯特德量、圈复杂度和代码行数。
可维护指数获取单元,用于采用可维护指数公式对霍尔斯特德量、圈复杂度和代码行数进行计算,获取与代码缺陷数据相对应的可维护指数。其中,可维护指数公式为可维护指数=MAX(0,(171-5.2*ln(霍尔斯特德量)-0.23*(圈复杂度)-16.2*ln(代码行数))*100/171)。
可维护性获取单元,用于基于与代码缺陷数据相对应的可维护指数和预先设置的指数阈值,获取与代码缺陷数据相对应的可维护性。
优选地,稳定系数获取模块807包括历史版本获取单元和稳定系数获取单元。
历史版本获取单元,用于基于待分析版本ID查询代码版本信息表,获取与待分析版本ID对应的历史版本,根据历史版本确定推出版本数量。
稳定系数获取单元,用于基于推出版本数量查询稳定系数转换表,获取与代码缺陷数据相对应的稳定系数。
优选地,缺陷度量值获取模块808包括评估分值权重获取单元和缺陷度量值获取单元。
评估分值权重获取单元,用于基于同一代码缺陷数据对应的功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数和稳定系数查询预先设置的权重分值数据表,获取对应的评估分值和评估权重。
缺陷度量值获取单元,用于采用缺陷度量值公式对评估分值和评估权重进行加权计算,获取代码缺陷数据对应的缺陷度量值。
其中,缺陷度量值公式为Q=ΣSiKi,Q为缺陷度量值,,i为功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数或稳定系数,Si为功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数或稳定系数对应的评估分值,Ki为功能核心程度、页面使用频率、页面访问步长、复现概率、可维护指数或稳定系数对应的评估权重。
优选地,在缺陷度量值获取模块808之后,软件测试缺陷评估装置还包括缺陷风险等级获取单元、缺陷提醒消息获取单元、缺陷提醒频率获取单元和缺陷提醒处理单元。
缺陷风险等级获取单元,用于基于与代码缺陷数据相对应的缺陷度量值查询风险等级转换表,获取与缺陷度量值相对应的缺陷风险等级。
缺陷提醒消息获取单元,用于基于缺陷风险等级和预先设置的缺陷提醒模板,获取缺陷提醒消息。
缺陷提醒频率获取单元,用于基于缺陷风险等级查询提醒频率信息表,获取与缺陷风险等级相对应的缺陷提醒频率。
缺陷提醒处理单元,用于依据缺陷提醒频率,给与代码缺陷数据对应的处理终端发送缺陷提醒消息。
关于软件测试缺陷评估装置的具体限定可以参见上文中对于软件测试缺陷评估方法的限定,在此不再赘述。上述软件测试缺陷评估装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储执行软件测试缺陷评估方法过程中采用或者生成的数据,如缺陷度量值。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种软件测试缺陷评估方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中软件测试缺陷评估方法的步骤,例如图2所示的步骤S201-S208,或者图3至图7中所示的步骤,为避免重复,这里不再赘述。或者,处理器执行计算机程序时实现软件测试缺陷评估装置这一实施例中的各模块/单元的功能,例如图8所示的缺陷分析请求获取模块801、代码缺陷数据获取模块802、功能核心程度获取模块803、页面频率步长获取模块804、复现概率获取模块805、可维护性获取模块806、稳定系数获取模块807和缺陷度量值获取模块808的功能,为避免重复,这里不再赘述。
在一实施例中,提供一计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中软件测试缺陷评估方法的步骤,例如图2所示的步骤S201-S208,或者图3至图7中所示的步骤,为避免重复,这里不再赘述。或者,该计算机程序被处理器执行时实现上述软件测试缺陷评估装置这一实施例中的各模块/单元的功能,例如图8所示的缺陷分析请求获取模块801、代码缺陷数据获取模块802、功能核心程度获取模块803、页面频率步长获取模块804、复现概率获取模块805、可维护性获取模块806、稳定系数获取模块807和缺陷度量值获取模块808的功能,为避免重复,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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相对应的抽象语法树;
所述对所述代码缺陷数据进行语法树分析,获取与所述代码缺陷数据相对应的功能核心程度,包括:
采用代码分析工具,基于与所述待分析版本ID相对应的抽象语法树对所述代码缺陷数据进行语法树分析,获取与所述代码缺陷数据相对应的功能核心程度。
3.如权利要求1所述的软件测试缺陷评估方法,其特征在于,所述对所述代码缺陷数据进行重复测试,获取与所述代码缺陷数据相对应的复现概率,包括:
对所述代码缺陷数据对应的软件代码进行重复测试,获取每次重复测试对应的测试结果和重复测试次数;
统计所述测试结果为测试失败的测试缺陷数量;
采用概率计算公式对所述重复测试次数和所述测试缺陷数量进行计算,获取缺陷概率,所述概率计算公式为L=A/B,其中,L为缺陷概率,A为测试缺陷数量,B为重复测试次数;
基于所述缺陷概率和预先设置的概率阈值,获取与所述代码缺陷数据相对应的复现概率。
4.如权利要求1所述的软件测试缺陷评估方法,其特征在于,所述采用代码扫描工具对所述代码缺陷数据进行扫描分析,获取与所述代码缺陷数据相对应的可维护性,包括:
采用代码扫描工具对所述代码缺陷数据进行扫描分析,获取与所述代码缺陷数据相对应的评估参数,所述评估参数包括霍尔斯特德量、圈复杂度和代码行数;
采用可维护指数公式对所述霍尔斯特德量、所述圈复杂度和所述代码行数进行计算,获取与所述代码缺陷数据相对应的可维护指数;其中,所述可维护指数公式为可维护指数=MAX(0,(171-5.2*ln(霍尔斯特德量)-0.23*(圈复杂度)-16.2*ln(代码行数))*100/171);
基于与所述代码缺陷数据相对应的可维护指数和预先设置的指数阈值,获取与所述代码缺陷数据相对应的可维护性。
5.如权利要求1所述的软件测试缺陷评估方法,其特征在于,所述基于所述待分析版本ID查询代码版本信息表,获取与所述代码缺陷数据相对应的稳定系数,包括:
基于所述待分析版本ID查询代码版本信息表,获取与所述待分析版本ID对应的历史版本,根据所述历史版本确定推出版本数量;
基于所述推出版本数量查询稳定系数转换表,获取与所述代码缺陷数据相对应的稳定系数。
6.如权利要求1所述的软件测试缺陷评估方法,其特征在于,所述对同一所述代码缺陷数据对应的所述功能核心程度、所述页面使用频率、所述页面访问步长、所述复现概率、所述可维护指数和所述稳定系数进行加权分析,获取与所述代码缺陷数据相对应的缺陷度量值,包括:
基于同一所述代码缺陷数据对应的所述功能核心程度、所述页面使用频率、所述页面访问步长、所述复现概率、所述可维护指数和所述稳定系数查询预先设置的权重分值数据表,获取对应的评估分值和评估权重;
采用缺陷度量值公式对所述评估分值和所述评估权重进行加权计算,获取所述代码缺陷数据对应的缺陷度量值;
其中,所述缺陷度量值公式为Q=ΣSiKi,Q为缺陷度量值,i为所述功能核心程度、所述页面使用频率、所述页面访问步长、所述复现概率、所述可维护指数或所述稳定系数,Si为所述功能核心程度、所述页面使用频率、所述页面访问步长、所述复现概率、所述可维护指数或所述稳定系数对应的评估分值,Ki为所述功能核心程度、所述页面使用频率、所述页面访问步长、所述复现概率、所述可维护指数或所述稳定系数对应的评估权重。
7.如权利要求1所述的软件测试缺陷评估方法,其特征在于,在所述获取与所述代码缺陷数据相对应的缺陷度量值的步骤之后,所述软件测试缺陷评估方法还包括:
基于与所述代码缺陷数据相对应的缺陷度量值查询风险等级转换表,获取与所述缺陷度量值相对应的缺陷风险等级;
基于所述缺陷风险等级和预先设置的缺陷提醒模板,获取缺陷提醒消息;
基于所述缺陷风险等级查询提醒频率信息表,获取与所述缺陷风险等级相对应的缺陷提醒频率;
依据所述缺陷提醒频率,给与所述代码缺陷数据对应的处理终端发送所述缺陷提醒消息。
8.一种软件测试缺陷评估装置,其特征在于,包括:
缺陷分析请求获取模块,用于获取缺陷分析请求,所述缺陷分析请求包括待分析版本ID;
代码缺陷数据获取模块,用于基于所述待分析版本ID查询测试结果数据库,获取与所述待分析版本ID相对应的代码缺陷数据;
功能核心程度获取模块,用于对所述代码缺陷数据进行语法树分析,获取与所述代码缺陷数据相对应的功能核心程度;
页面频率步长获取模块,用于基于所述代码缺陷数据查询与所述待分析版本ID相对应的埋点数据库,获取与所述代码缺陷数据相对应的页面使用频率和页面访问步长;
复现概率获取模块,用于对所述代码缺陷数据进行重复测试,获取与所述代码缺陷数据相对应的复现概率;
可维护性获取模块,用于采用代码扫描工具对所述代码缺陷数据进行扫描分析,获取与所述代码缺陷数据相对应的可维护性;
稳定系数获取模块,用于基于所述待分析版本ID查询代码版本信息表,获取与所述代码缺陷数据相对应的稳定系数;
缺陷度量值获取模块,用于对同一所述代码缺陷数据对应的所述功能核心程度、所述页面使用频率、所述页面访问步长、所述复现概率、所述可维护指数和所述稳定系数进行加权分析,获取与所述代码缺陷数据相对应的缺陷度量值。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述软件测试缺陷评估方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述软件测试缺陷评估方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910207348.0A CN110083514B (zh) | 2019-03-19 | 2019-03-19 | 软件测试缺陷评估方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910207348.0A CN110083514B (zh) | 2019-03-19 | 2019-03-19 | 软件测试缺陷评估方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110083514A true CN110083514A (zh) | 2019-08-02 |
CN110083514B CN110083514B (zh) | 2023-03-10 |
Family
ID=67412572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910207348.0A Active CN110083514B (zh) | 2019-03-19 | 2019-03-19 | 软件测试缺陷评估方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110083514B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110990249A (zh) * | 2019-10-11 | 2020-04-10 | 平安科技(深圳)有限公司 | 代码扫描结果处理方法、装置、计算机设备及存储介质 |
CN111381995A (zh) * | 2020-03-13 | 2020-07-07 | 青岛海尔科技有限公司 | 用于还原用户操作的方法及装置、计算机 |
CN113238963A (zh) * | 2021-06-16 | 2021-08-10 | 中国农业银行股份有限公司 | 测试报告生成方法、装置、设备、存储介质及程序产品 |
CN113326198A (zh) * | 2021-06-15 | 2021-08-31 | 深圳前海微众银行股份有限公司 | 一种代码缺陷状态确定方法、装置、电子设备及介质 |
CN115329157A (zh) * | 2022-10-14 | 2022-11-11 | 北京百度网讯科技有限公司 | 挖掘路况事件的方法以及基于路况事件的优化方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102231134A (zh) * | 2011-07-29 | 2011-11-02 | 哈尔滨工业大学 | 基于静态分析的冗余代码缺陷检测方法 |
CN102622510A (zh) * | 2012-01-31 | 2012-08-01 | 龚波 | 一种软件缺陷量化管理系统和方法 |
CN103366123A (zh) * | 2013-05-07 | 2013-10-23 | 天津大学 | 基于缺陷分析的软件风险评估方法 |
CN105468510A (zh) * | 2014-09-05 | 2016-04-06 | 北京畅游天下网络技术有限公司 | 对软件质量进行评估与追踪的方法和系统 |
US20170235662A1 (en) * | 2016-02-17 | 2017-08-17 | Ca, Inc. | Software application quality assessment |
CN108509338A (zh) * | 2018-03-17 | 2018-09-07 | 东南大学 | 一种基于多层次变更分析的软件演化评估系统及方法 |
CN108563555A (zh) * | 2018-01-10 | 2018-09-21 | 江苏工程职业技术学院 | 基于四目标优化的故障更改代码预测方法 |
CN109274526A (zh) * | 2018-08-31 | 2019-01-25 | 平安科技(深圳)有限公司 | 测试缺陷自动预警方法、装置、计算机设备及存储介质 |
CN109408359A (zh) * | 2018-08-03 | 2019-03-01 | 中国人民解放军63928部队 | 一种软件测试过程质量度量方法和系统 |
-
2019
- 2019-03-19 CN CN201910207348.0A patent/CN110083514B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102231134A (zh) * | 2011-07-29 | 2011-11-02 | 哈尔滨工业大学 | 基于静态分析的冗余代码缺陷检测方法 |
CN102622510A (zh) * | 2012-01-31 | 2012-08-01 | 龚波 | 一种软件缺陷量化管理系统和方法 |
CN103366123A (zh) * | 2013-05-07 | 2013-10-23 | 天津大学 | 基于缺陷分析的软件风险评估方法 |
CN105468510A (zh) * | 2014-09-05 | 2016-04-06 | 北京畅游天下网络技术有限公司 | 对软件质量进行评估与追踪的方法和系统 |
US20170235662A1 (en) * | 2016-02-17 | 2017-08-17 | Ca, Inc. | Software application quality assessment |
CN108563555A (zh) * | 2018-01-10 | 2018-09-21 | 江苏工程职业技术学院 | 基于四目标优化的故障更改代码预测方法 |
CN108509338A (zh) * | 2018-03-17 | 2018-09-07 | 东南大学 | 一种基于多层次变更分析的软件演化评估系统及方法 |
CN109408359A (zh) * | 2018-08-03 | 2019-03-01 | 中国人民解放军63928部队 | 一种软件测试过程质量度量方法和系统 |
CN109274526A (zh) * | 2018-08-31 | 2019-01-25 | 平安科技(深圳)有限公司 | 测试缺陷自动预警方法、装置、计算机设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
刘冰川: "软件缺陷分析与管理系统的设计与实现", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110990249A (zh) * | 2019-10-11 | 2020-04-10 | 平安科技(深圳)有限公司 | 代码扫描结果处理方法、装置、计算机设备及存储介质 |
CN110990249B (zh) * | 2019-10-11 | 2023-11-14 | 平安科技(深圳)有限公司 | 代码扫描结果处理方法、装置、计算机设备及存储介质 |
CN111381995A (zh) * | 2020-03-13 | 2020-07-07 | 青岛海尔科技有限公司 | 用于还原用户操作的方法及装置、计算机 |
CN113326198A (zh) * | 2021-06-15 | 2021-08-31 | 深圳前海微众银行股份有限公司 | 一种代码缺陷状态确定方法、装置、电子设备及介质 |
CN113238963A (zh) * | 2021-06-16 | 2021-08-10 | 中国农业银行股份有限公司 | 测试报告生成方法、装置、设备、存储介质及程序产品 |
CN115329157A (zh) * | 2022-10-14 | 2022-11-11 | 北京百度网讯科技有限公司 | 挖掘路况事件的方法以及基于路况事件的优化方法 |
CN115329157B (zh) * | 2022-10-14 | 2023-04-18 | 北京百度网讯科技有限公司 | 挖掘路况事件的方法以及基于路况事件的优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110083514B (zh) | 2023-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110083514A (zh) | 软件测试缺陷评估方法、装置、计算机设备及存储介质 | |
CN110109821A (zh) | 软件程序质量评价方法、装置、计算机设备及存储介质 | |
CN110109820A (zh) | 回归测试用例确定方法、装置、计算机设备及存储介质 | |
Li et al. | Architectural technical debt identification based on architecture decisions and change scenarios | |
Jiang et al. | Will my patch make it? and how fast? case study on the linux kernel | |
CN110083340A (zh) | 代码生成方法、装置、计算机设备及存储介质 | |
US8423960B2 (en) | Evaluation of software based on review history | |
CN108959059B (zh) | 一种测试方法以及测试平台 | |
CN109964265A (zh) | 使用标准化的分数标度和自适应评估引擎测量语言学习 | |
CN109491913B (zh) | 基于物联网的电池管理系统测试方法及系统 | |
CN114022005A (zh) | 一种基于bim技术的工程造价管理系统及方法 | |
CN114546868A (zh) | 代码覆盖率测试方法、装置和电子设备 | |
Luijten et al. | Faster defect resolution with higher technical quality of software | |
CN105912461A (zh) | 一种软件敏捷测试方法及系统 | |
Abbas et al. | The impact of organization, project and governance variables on software quality and project success | |
CN108563572A (zh) | 一种回归测试方法、装置及服务器 | |
CN112200459A (zh) | 一种配电网数据质量分析评价方法及系统 | |
Noorian et al. | Non-functional properties in software product lines: A taxonomy for classification. | |
CN110134583A (zh) | 软件测试及数据处理方法及装置 | |
CN109583769A (zh) | 评估工作效率的方法、设备和存储介质 | |
CN117056218A (zh) | 测试管理方法、平台、介质和设备 | |
WO2023030282A1 (en) | Methods and devices for assessing generalizability of benchmarks | |
CN110032781A (zh) | 编辑时序约束方法、装置、计算机设备及存储介质 | |
CN116264706A (zh) | 5g基站布设评估模型训练方法、设备及存储介质 | |
Nuraini et al. | Software with service oriented architecture quality assessment |
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 |