CN112699019A - 结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法 - Google Patents
结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法 Download PDFInfo
- Publication number
- CN112699019A CN112699019A CN202011392578.8A CN202011392578A CN112699019A CN 112699019 A CN112699019 A CN 112699019A CN 202011392578 A CN202011392578 A CN 202011392578A CN 112699019 A CN112699019 A CN 112699019A
- Authority
- CN
- China
- Prior art keywords
- layer
- task
- software
- defect
- longitudinal
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法,包括:构建一个自顶向下的从任务层到功能层、功能层到操作层、操作层到单元层的纵向层次结构模型;构建每个纵向层次的层内横向映射关系,形成纵横一体化层次结构模型;基于代码度量元的缺陷预测方法实现纵横一体化层次结构模型中单元层的缺陷预测概率;基于关联矩阵的缺陷预测方法通过映射关系自底向上进行关联预测,实现功能层和任务层的缺陷预测概率;生成所有的软件测试用例,根据计算得到的缺陷预测概率,采用经典测试用例排序方法对软件测试用例进行排序,得到软件测试策略,实现了将软件缺陷预测应用在面向任务的软件测试中,提高软件测试的效率。
Description
技术领域
本发明涉及软件测试技术领域,更具体的说是涉及一种结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法。
背景技术
近年来,软件缺陷预测方法用于指导软件测试已经成为一个常用的方法,然而,这些缺陷预测方法属于白盒缺陷预测方法,即是从代码出发,提取相关的度量元来进行缺陷预测。面对面向任务的黑盒测试主要以文档为依据,软件需求文档通常以自然语言描述,自然语言是一种非形式化的语言,缺乏统一描述格式和规范的语法、语义。因此,在对文档进行特征度量元提取时,常常会遇到度量元难以收集,从而导致数据缺乏问题,其次非形式化的方式导致这类特征自动化提取存在一定难度,因此针对该种情况的经典的测试用例排序方法(如total排序方法和additional排序方法,来源:G.Rothermel;R.H.Untch;ChengyunChu;M.J.Harrold.Prioritizing test cases for regression testing[J].IEEETransactions on Software Engineering,Oct.2001,27(10):pp,929-948)不可用。黑盒测试是实际工程中普遍应用的软件测试技术,而软件缺陷预测方法往往无法在黑盒测试中进行应用。
因此,如何将软件缺陷预测应用在面向任务的软件测试中是本领域技术人员亟需解决的问题。
发明内容
有鉴于此,本发明提供了一种结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法,旨在解决面向任务的软件度量元难以收集,预测训练数据缺失,导致软件缺陷预测无法在面向任务的软件测试中应用的问题,能够在面向任务的软件减少测试开销的同时,提高软件测试的效率。
为了实现上述目的,本发明采用如下技术方案:
一种结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法,包括:
构建一个自顶向下的从任务层到功能层、功能层到操作层、操作层到单元层的纵向层次结构模型;
构建每个纵向层次的层内横向映射关系,形成纵横一体化层次结构模型;
基于代码度量元的缺陷预测方法实现纵横一体化层次结构模型中单元层的缺陷预测概率;
基于单元层的缺陷预测概率和关联矩阵得到功能层和任务层的缺陷预测概率;其中,关联矩阵通过单元层与功能层、任务层的自底向上的映射关系得到;
生成所有的软件测试用例,根据计算得到的功能层和任务层的缺陷预测概率,采用经典测试用例排序方法对软件测试用例进行排序,得到软件测试策略。
优选的,构建一个自顶向下的从任务层到功能层、功能层到操作层、操作层到单元层的纵向层次结构模型具体包括:
构建任务层,将软件包含的所有任务进行划分,放置在任务层;
构建功能层,软件功能从软件需求文档中获得,顶层功能继续分解为中间层功能或底层功能,当功能分解到功能点时,无法进行进一步的分解时,即完成了功能层的构建;
构建操作层,软件操作从软件需求文档中获得,在功能层构建完成后,将功能点的相关操作提取出来,完成操作层的构建;
构建单元层,软件单元是一个以软件函数代码为对象的模块,将所有的软件函数或类提取出来,完成单元层的构建;
构建纵向层次映射关系,软件任务由功能和操作构成,将软件任务映射到功能层的功能,并将功能层分解到操作层,通过将任务层映射到操作层中的具体操作中,然后,将功能层的功能与操作层的操作的结果映射到单元层中的单元中,再完成对被测软件的从任务层、功能层、操作层到单元层进行自顶向下进行分解,一个软件任务由若干系统功能完成、一个系统功能由若干单元实现、一个单元支撑多个系统功能,获得纵向层次映射关系,从而构建成纵向层次结构模型。
优选的,构建每个纵向层次的层内横向映射关系,形成纵横一体化层次结构模型具体包括:
在构建纵向层次结构模型的基础上,根据软件文档与软件代码中关系描述,提前出任务与任务、功能与功能、单元与单元间的依赖关系,操作的横向依赖关系根据功能的依赖来推导,通过将功能之间相关性加以描述,获得正确的依赖关系与功能流,建立层内的横向映射关系,从而基于层间的纵向映射关系和层内的横向映射关系完成纵横一体化层次结构模型的构建。
优选的,基于代码度量元的缺陷预测方法实现纵横一体化层次结构模型中单元层的缺陷概率预测具体包括:
采用机器学习算法和历史缺陷数据构建软件缺陷预测回归模型,基于被测软件的代码度量元和软件缺陷预测回归模型对被测软件的缺陷情况进行预测,从而实现对软件单元进行缺陷的概率预测。
优选的,基于单元层的缺陷预测概率和关联矩阵得到功能层和任务层的缺陷预测概率具体包括:
将从单元层获得的所有单元的缺陷预测概率表述为单元缺陷概率向量p_unit,计算如公式(1)所示:
p_unit=[p1,p2,...,pj,...,pn]T (1)
其中,n表示单元层的单元数量,p_unit∈Rn×1,pj表示预测的第j个单元的缺陷概率;
计算功能层的所有功能的缺陷预测概率,基于纵横一体化层次结构模型,获得功能和操作到单元的纵向关联关系、功能与功能的横向关联关系,建立面向功能的纵向关联矩阵A,建立面向功能的横向关联矩阵B,单元缺陷概率向量p_unit与纵向关联矩阵A相乘,获得纵向功能缺陷概率向量p_Au,纵向功能缺陷概率向量p_Au与横向关联矩阵B相乘获得p_BAu,即最终的功能缺陷概率向量p_func,计算如公式(2)、(3)、(4)、(5)所示:
p_func=B*A*p_unit=p_BAu (4)
p_func=[pf1,pf2,...,pfh,...,pfm]T (5)
其中,n1为功能层的功能到操作层的操作的次数,n2为功能层的功能直接到单元层的单元的次数,m为功能层的功能到操作层的操作和直接到单元层单元的次数,p_func∈Rm ×1,pfh表示预测的第h个功能或操作的缺陷概率;
计算任务层的所有任务的缺陷预测概率,基于层次结构模型,获得任务和功能纵向关联关系、任务与任务的横向关联关系,建立面向任务的纵向关联矩阵C,建立面向任务的横向关联矩阵D,功能缺陷概率向量p_BAu与纵向关联矩阵C相乘,获得纵向任务缺陷向量p_CBAu;纵向任务缺陷向量p_CBAu与横向关联矩阵D相乘,获得p_DCBAu,即最终的任务缺陷概率向量p_task,计算如公式(6)、(7)、(8)、(9)所示:
p_task=D*C*p_func=p_DCBAu (8)
p_task=D*C*B*A*p_unit=[pt1,pt2,...,pto,...ptk] (9)
其中,k为任务层的任务数量,p_task∈Rk×1,pto表示预测的第o个任务的缺陷概率;
规范化面向任务的软件的各个任务的缺陷预测概率值,计算公式如(10)所示:
其中,k为任务层的任务数量,p_task∈Rk×1,pto表示预测的第O个任务的缺陷概率。
优选的,生成所有的软件测试用例,根据计算得到的缺陷预测概率,采用经典测试用例排序方法对软件测试用例进行排序,得到软件测试策略,具体包括:
从纵向层次结构模型中得到操作层后,通过遍历方法得到软件任务的操作序列,操作序列即为软件的测试用例;
基于功能层和任务层的缺陷预测概率,将软件的测试用例按照经典的测试用例排序方法进行排序,按照该顺序执行测试,得到软件测试的策略。
经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法,针对面向任务的软件测试,通过建立层次结构模型,描述任务层到功能层、功能层到单元层的映射关系,通过单元层中基于代码的度量元实现缺陷预测获得单元的缺陷概率,随后,利用关联矩阵实现功能层和任务层的缺陷预测,从而驱动面向任务的软件测试的进行,解决了在软件任务特征数据缺乏情况下,面向任务的软件无法进行缺陷预测的问题,并且,通过利用丰富的单元级数据特征,对面向任务软件进行缺陷预测,进而对任务的测试优先排序,从而为软件测试的策略提供指导,提高软件测试效率,进而缩短软件开发的周期,节约成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明提供的结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法的示意图;
图2为本发明提供的任务到单元映射的纵向层次结构模型图;
图3为本发明提供的纵向层次映射与横向层次映射框架图;
图4为本发明提供的基于关联矩阵的缺陷预测分析方法流程;
图5为本发明提供的面向任务的软件测试策略生成流程图;
图6为本发明提供的实例的流程图;
图7为本发明提供的MC软件纵横一体化层次结构模型;
图8为本发明提供的MC软件层次结构模型中层间和层内之间的调用关系图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见附图1,本发明实施例公开了一种结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法,包括:
S11、构建一个自顶向下的从任务层到功能层、功能层到操作层、操作层到单元层的纵向层次结构模型;
S12、构建每个纵向层次的层内横向映射关系,形成纵横一体化层次结构模型;
S13、基于代码度量元的缺陷预测方法实现纵横一体化层次结构模型中单元层的缺陷预测概率;
S14、基于单元层的缺陷预测概率和关联矩阵得到功能层和任务层的缺陷预测概率;其中,关联矩阵通过单元层与功能层、任务层的自底向上的映射关系得到;
关联矩阵是一种图的表达方式,可以表达图的关系,而通过构建面向任务软件和基于代码度量元的单元缺陷预测结合即可以实现面向任务的黑盒测试的缺陷预测。而如果能在其中应用缺陷预测,将可以对相应的测试用例进行排序,更加合理地分配测试资源,有效地减少测试的开销,提升测试的效率。而成本和效率在软件测试中是软件测试人员最为关注的两个方面。
S15、生成所有的软件测试用例,根据计算得到的功能层和任务层的缺陷预测概率,采用经典测试用例排序方法对软件测试用例进行排序,得到软件测试策略。
需要说明的是,本发明中经典测试用例排序方法均指的是total排序方法和additional排序方法。
参见附图2,在步骤S11中,构建一个自顶向下的从任务层到功能层、功能层到操作层、操作层到单元层的纵向层次结构模型具体包括:
步骤1.1:构建任务层,将软件包含的所有任务进行划分,放置在任务层;
步骤1.2:构建功能层,软件功能可以从软件需求文档中获得,顶层功能可以继续分解为中间层功能或底层功能,当功能分解到功能点时,无法进行进一步的分解时,即完成了功能层的构建;
步骤1.3:构建操作层,软件操作从软件需求文档中获得,在功能层构建完成后,将功能点的相关操作提取出来,完成操作层的构建;
步骤1.4:构建单元层,软件单元是一个以软件函数代码为对象的模块,将所有的软件函数或类提取出来,完成单元层的构建;
步骤1.5:构建纵向层次映射关系,软件任务由功能和操作构成,将软件任务映射到功能层的功能,并将功能层分解到操作层,通过将任务层映射到操作层中的具体操作中,然后,将功能层的功能与操作层的操作的结果映射到单元层中的单元中,再完成对被测软件的从任务层、功能层、操作层到单元层进行自顶向下进行分解,一个软件任务由若干系统功能完成、一个系统功能由若干单元实现、一个单元支撑多个系统功能,获得纵向层次映射关系,从而构建成纵向层次结构模型。
参见附图3,在步骤S12中,构建每个纵向层次的层内横向映射关系,形成纵横一体化层次结构模型具体包括:
在构建纵向层次结构模型的基础上,根据软件文档与软件代码中关系描述,提前出任务与任务、功能与功能、单元与单元间的依赖关系,操作的横向依赖关系根据功能的依赖来推导,通过将功能之间相关性加以描述,获得正确的依赖关系与功能流,建立层内的横向映射关系(任务与任务、功能与功能、操作与操作、单元与单元),从而基于层间的纵向映射关系和层内的横向映射关系完成纵横一体化层次结构模型的构建。
在步骤S13中,基于代码度量元的缺陷预测方法实现纵横一体化层次结构模型中单元层的缺陷概率预测具体包括:
采用机器学习算法和历史缺陷数据构建软件缺陷预测回归模型,基于被测软件的代码度量元和软件缺陷预测回归模型对被测软件的缺陷情况进行预测,从而实现对软件单元进行缺陷的概率预测。
参见附图4,在步骤S14中,基于单元层的缺陷预测概率和关联矩阵得到功能层和任务层的缺陷预测概率具体包括:
步骤4.1:将从单元层获得的所有单元的缺陷预测概率表述为单元缺陷概率向量p-unit,计算如公式(1)所示:
p_unit=[p1,p2,...,pj,...,pn]T (1)
其中,n表示单元层的单元数量,p_unit∈Rn×1,pj表示预测的第j个单元的缺陷概率;
步骤4.2:计算功能层的所有功能的缺陷预测概率,基于纵横一体化层次结构模型,获得功能和操作到单元的纵向关联关系、功能与功能(或操作)的横向关联关系:
步骤4.2.1:建立面向功能的纵向关联矩阵A,计算公式见公式(2):
其中,n1为功能层的功能到操作层的操作的次数,n2为功能层的功能直接到单元层的单元的次数,m为功能层的功能到操作层的操作和直接到单元层单元的次数;
步骤4.2.2:建立面向功能的横向关联矩阵B,计算公式见公式(3):
步骤4.2.3:单元缺陷概率向量p_unit与纵向关联矩阵A相乘,获得纵向功能缺陷概率向量p_Au,纵向功能缺陷概率向量p_Au与横向关联矩阵B相乘获得p_BAu,即最终的功能缺陷概率向量p_func,计算如公式:(4)和(5)所示:
p_func=B*A*p_unit=p_BAu (4)
p_func=[pf1,pf2,...,pfh,...,pfm]T (5)
其中,m为功能层的功能到操作层的操作和直接到单元层单元的次数,p_func∈Rm ×1,pfh表示预测的第h个功能或操作的缺陷概率;
步骤4.3:计算任务层的所有任务的缺陷预测概率,基于层次结构模型,获得任务和功能纵向关联关系、任务与任务的横向关联关系:
步骤4.3.1:建立面向任务的纵向关联矩阵C,计算公式见公式(6):
其中,k为任务层的任务数量;
步骤4.3.2:建立面向任务的横向关联矩阵D,计算公式见公式(7):
步骤4.3.3:功能缺陷概率向量p_BAu与纵向关联矩阵C相乘,获得纵向任务缺陷向量p_CBAu;纵向任务缺陷向量p_CBAu与横向关联矩阵D相乘,获得p_DCBAu,即最终的任务缺陷概率向量p_task,计算如公式(8)、(9)所示:
p_task=D*C*p_func=p_DCBAu (8)
p_task=D*C*B*A*p_unit=[pt1,pt2,...,pto,...ptk] (9)
其中,k为任务层的任务数量,p_task∈Rk×1,pto表示预测的第o个任务的缺陷概率;
步骤4.4:规范化面向任务的软件的各个任务的缺陷预测概率值,计算公式如(10)所示:
其中,k为任务层的任务数量,p_task∈Rk×1,pto表示预测的第O个任务的缺陷概率。
在步骤S15中,生成所有的软件测试用例,根据计算得到的缺陷预测概率,采用经典测试用例排序方法对软件测试用例进行排序,得到软件测试策略,具体包括:
步骤5.1:从纵向层次结构模型中得到操作层后,通过遍历方法得到软件任务的操作序列,操作序列即为软件的测试用例;
步骤5.2:基于功能层和任务层的缺陷预测概率,将软件的测试用例按照经典的测试用例排序方法进行排序,按照该顺序执行测试,得到软件测试的策略。
参见附图5,附图5为本发明提供的结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法的流程图,首先,构建一个自顶向下的从任务到功能、功能到操作、操作到单元的纵向层次结构模型;然后,构建每个层次的层内横向映射关系,形成纵横一体化层次结构模型;接着,使用基于代码度量元的缺陷预测技术实现纵横一体化层次模型中单元层的缺陷概率预测;再者,使用基于关联矩阵的缺陷预测方法通过映射关系自底向上进行关联预测,实现功能层和任务层的缺陷概率预测;最后,生成所有的软件测试用例,根据计算得到的缺陷预测概率,采用经典测试用例排序方法对软件测试用例进行排序,得到软件测试策略。
下面结合具体实例对本发明提供的技术方案做进一步论述。
该实例提供的结合缺陷预测和关联矩阵的面向任务的软件测试策略的生成方法请参见附图6,包括如下步骤:
步骤一:选取某个项目中C语言开发的MC软件,通过对MC软件的文档进行分析,构建一个自顶向下的从任务到功能、功能到操作、操作到单元的纵向层次结构模型。具体步骤如下:
步骤1.1:从任务场景角度,从MC软件中选择了6个软件任务作为本实例中任务层中的任务,分别为压力计算任务、车架编号获得任务、车重计算任务、无服务请求下的紧急制动阀门控制任务、有服务请求下的紧急制动阀门控制任务和诊断显示任务,具体的任务描述信息如表1所示:
表1 MC软件任务描述表
步骤1.2:构建功能层,软件功能从软件需求文档中获得,为了使分析过程更加清晰,只将与软件功能逻辑、软件功能计算的主要软件单元建立映射关系,获得了7个主要软件功能,分别为:AD计算功能、压力计算功能、车架编号读取功能、车重计算功能、紧急制动电磁阀控制功能、CAN数据的接收功能以及故障诊断功能,具体的功能描述信息如表2所示:
表2 MC软件功能描述表
步骤1.3:构建操作层,软件操作同样从软件需求文档中获得,在功能层构建完成后,将功能点的相关操作来提取出来,完成操作层的构建,共有11个操作,分别为输入电流值、输入AD值、输入4位车架信息、输入车架、输入第1路空簧压力、输入第2路空簧压力、输入车重、读入轮径、读入预控目标压力、输入服务终端命令和无,其中操作11为无表示不需要执行任何操作,通过软件内部数值判断逻辑直接输出,具体的操作描述信息如表3所示:
表3 MC软件操作描述表
步骤1.4:构建单元层,根据MC软件的文档将所有的软件函数或类提取出来,最终,单元层共由26个单元组成,分别为AD采样、AD值获取、压力处理逻辑、压力计算函数、压力值限幅度、BCD ID计算、BCD ID位值计算、车架编号计算、4位机器码转BCU_ID、车类型与有效判断、车重计算、车重有效判断、车重固定因子计算、紧急制动模块、力转制动压力、阀门控制模块、阀门控制逻辑、A4板总线接收、A4板CAN0通道数据接收、A4板CAN1通道数据接收、A4板默认CAN通道数据接收、错误诊断计算、压力诊断、POP口故障诊断、CAN总线故障诊断和芯片故障诊断,具体的函数单元描述情况如表4所示:
表4 MC软件函数单元描述表
步骤1.5:构建纵向层次映射关系,软件任务是由功能和操作构成的,将软件任务映射到功能层的功能和操作层的操作中,将操作层的操作与功能层的功能进行映射,将功能层的功能与操作层的操作的结果映射到单元层中的单元中,纵向层次映射关系如表5所示,从而构建成纵向层次结构模型。
表5 MC软件纵向层次映射关系
步骤二:构建每个层次(任务与任务、功能与功能(或操作)、操作与操作、单元与单元的)的层内横向映射关系,形成纵横一体化层次结构模型。具体步骤如下:
根据软件文档与软件代码中关系描述,得到横向层内依赖关系与功能流如表6所示:
表6 MC软件横向层内依赖关系与功能流
根据横向层内映射关系和纵向层间映射关系,构成纵横一体化层次结构模型,如图7所示,根据图7得到MC软件层间和层内的调用关系,如图8所示,图8只是方便缺陷概率自底向上进行计算,与图7的自顶向下划分层次结构图一致,只是箭头方向不同。图7的箭头表达包含划分关系,例如:A—>B表明A包含B,图8的箭头表达调用关系,例如:A—>B表明B调用A实现功能;
步骤三:使用基于代码度量元的缺陷预测方法实现纵横一体化层次模型中单元层的缺陷概率预测。具体步骤如下:
利用testbed测试工具对MC软件的代码进行度量元提取,通过收集单元级别的度量元数据作为测试样本,采用从tera-promise website网站(http://openscience.us/repo/defect/mccabehalsted/)上进行下载的10个软件缺陷数据作为训练样本,基本信息如表7所示,通过使用机器学习算法中的线性回归方法,预测MC软件各个单元的缺陷情况,得到的缺陷概率如表8所示:
表7训练数据基本信息描述
软件名称 | 模块数量 | 缺陷率 | 来源 | 描述 |
ar1 | 147 | 6.12% | Softlab | 嵌入式控制器 |
ar4 | 117 | 17.01% | Softlab | 嵌入式控制器 |
cm1 | 352 | 11.93% | NASA | 航天器仪器 |
kc1 | 2096 | 15.51% | NASA | 存储管理工具 |
kc3 | 194 | 18.56% | NASA | 存储管理工具 |
mc2 | 125 | 35.2% | NASA | 视频制导系统 |
mw1 | 253 | 11.49% | NASA | 零重力实验程序 |
pc1 | 705 | 8.65% | NASA | 卫星飞行软件 |
pc3 | 1125 | 12.44% | NASA | 卫星飞行软件 |
pc4 | 1399 | 12.72% | NASA | 卫星飞行软件 |
表8 MC软件各个单元的缺陷概率结果
步骤四:使用基于矩阵的缺陷关联预测方法通过映射关系自底向上进行关联预测,实现功能层和任务层的缺陷概率预测。具体步骤如下:
步骤4.1:将从单元层获得的所有单元的缺陷预测概率表述为单元缺陷概率向量p_unit,计算如公式(1)所示:
p_unit=[p1,p2,…,pi,…,p26]=[0.045,0.027,0.040,0.027,…,0.144,0.066,0.12,0.057,0.057]T (1)
其中,n=26表示单元层的单元数量,p_unit∈R26×1,pi表示预测的第i个单元的缺陷概率;
步骤4.2:计算功能层的所有功能的缺陷预测概率,基于层次结构模型,获得功能和操作到单元的纵向关联关系;
步骤4.2.1:建立面向功能的纵向关联矩阵A,基于纵向层次结构模型,由功能和操作与单元的关系,得到纵向关联矩阵A如公式(2)所示:
其中,m=12,即功能层的功能到操作层的操作的次数n1=11,功能层的功能直接到单元层的单元的次数n2=1,n=26表示单元层的单元数量,A∈R12×26。
步骤4.2.2:建立面向功能的横向关联矩阵B,基于横向层次结构模型,由功能与操作的横向关联关系,得到横向关联矩阵B,如公式(3)所示:
其中,m=12,即功能层的功能到操作层的操作的次数n1=11,功能层的功能直接到单元层的单元的次数n2=1,B∈R12×12。
步骤4.2.3:单元缺陷概率向量p_unit与纵向关联矩阵A的转置相乘,获得纵向功能缺陷概率向量p_A,纵向功能缺陷概率向量p_A与横向关联矩阵B的相乘获得最终的功能缺陷概率向量p_func,计算结果如公式(4)(5)所示:
p_func=p_unit*AT*B=p_BAu (4)
即得,
pfunc=[pf1,pf2,…,pfi,…,pfm]=[0.072 0.192 0.156 0.283 0.283 0.2830.756 0.756 0.756 0.385 0.163 0.444]T (5)
其中,m=12为功能层的功能到操作层的操作和直接到单元层单元的次数,p_func∈R12×1,pfi表示预测的第i个功能或操作的缺陷概率;
步骤4.3:计算任务层的所有任务的缺陷预测概率,基于纵横一体化层次结构模型,获得任务和功能纵向关联关系:
步骤4.3.1:建立面向任务的纵向关联矩阵C,基于层次结构模型,通过任务和功能的关联关系,计算得到面向任务的纵向关联矩阵C如公式(6)所示:
其中,k=6为任务层的任务数量。
步骤4.3.2:建立面向任务的横向关联矩阵D,基于层次结构模型,获得任务与任务的横向关联关系,得到横向关联矩阵D,计算如公式(7)所示:
步骤4.3.3:功能缺陷概率向量p_BAu与纵向关联矩阵C的相乘,获得纵向任务缺陷向量p_CBAu;纵向任务缺陷向量p_CBAu与横向关联矩阵D相乘,获得p_DCBAu,即最终的任务缺陷概率向量p_task,计算如公式(8)、(9)所示:
p_t ask=D*C*p_func=p_DCBAu (8)
即得,
ptask=[0.264,0.228,1.077,3.508,0.548,0.444]T (9)
其中,k=6为任务层的任务数量,p_task∈R6×1,pt1表示预测的第i个任务的缺陷概率;
步骤4.4:规范化面向任务的软件的各个任务的缺陷预测概率值,计算得到MC软件6个测试任务的规范化概率值,结果公式(10)所示:
p_task’=[0.043,0.038,0.177,0.578,0.090,0.073]T (10)
其中,k=6为任务层的任务数量,p_task∈R6×1,pt1表示预测的第i个任务的缺陷概率;
步骤五:根据软件的功能和操作,对应生成所有的软件测试用例,根据计算得到的缺陷预测概率,采用经典测试用例排序方法对软件测试用例进行排序,得到软件测试策略。具体步骤如下:
步骤5.1:从纵向层次结构模型中得到操作层后,通过遍历方法,可以得到的软件任务的操作序列,操作序列如表3所示,然后根据操作序列即可转为软件任务的测试用例,如表9所示;
表9 MC软件操作对应的测试用例表
步骤5.2:将软件的测试用例按照经典的测试用例排序方法进行排序,按照该顺序执行测试,即为软件测试的策略。从该实验结果中可以看出,任务4的缺陷预测概率远大于其他任务,如果按静态total排序方法,排序结果为:任务4->任务3->任务5->任务6->任务1->任务2,即为软件测试的策略。如果按照additional排序方法,排序结果为:任务4->任务5->任务6->任务3->任务1->任务2,即为软件测试的又一种策略。
从面向任务的MC软件的测试策略可知,无论采用total排序和additional排序这两种哪种测试用例排序方法,任务4均为首先进行测试的任务,任务1和2为最后执行的测试任务,都是将预测缺陷概率最大的任务优先执行,概率小的任务后续执行。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (6)
1.一种结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法,其特征在于,包括:
构建一个自顶向下的从任务层到功能层、功能层到操作层、操作层到单元层的纵向层次结构模型;
构建每个纵向层次的层内横向映射关系,形成纵横一体化层次结构模型;
基于代码度量元的缺陷预测方法实现纵横一体化层次结构模型中单元层的缺陷预测概率;
基于单元层的缺陷预测概率和关联矩阵得到功能层和任务层的缺陷预测概率;其中,关联矩阵通过单元层与功能层、任务层的自底向上的映射关系得到;
生成所有的软件测试用例,根据计算得到的功能层和任务层的缺陷预测概率,采用经典测试用例排序方法对软件测试用例进行排序,得到软件测试策略。
2.根据权利要求1所述的结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法,其特征在于,构建一个自顶向下的从任务层到功能层、功能层到操作层、操作层到单元层的纵向层次结构模型具体包括:
构建任务层,将软件包含的所有任务进行划分,放置在任务层;
构建功能层,软件功能从软件需求文档中获得,顶层功能继续分解为中间层功能或底层功能,当功能分解到功能点时,无法进行进一步的分解时,即完成了功能层的构建;
构建操作层,软件操作从软件需求文档中获得,在功能层构建完成后,将功能点的相关操作提取出来,完成操作层的构建;
构建单元层,软件单元是一个以软件函数代码为对象的模块,将所有的软件函数或类提取出来,完成单元层的构建;
构建纵向层次映射关系,软件任务由功能和操作构成,将软件任务映射到功能层的功能,并将功能层分解到操作层,通过将任务层映射到操作层中的具体操作中,然后,将功能层的功能与操作层的操作的结果映射到单元层中的单元中,再完成对被测软件的从任务层、功能层、操作层到单元层进行自顶向下进行分解,一个软件任务由若干系统功能完成、一个系统功能由若干单元实现、一个单元支撑多个系统功能,获得纵向层次映射关系,从而构建成纵向层次结构模型。
3.根据权利要求1所述的结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法,其特征在于,构建每个纵向层次的层内横向映射关系,形成纵横一体化层次结构模型具体包括:
在构建纵向层次结构模型的基础上,根据软件文档与软件代码中关系描述,提前出任务与任务、功能与功能、单元与单元间的依赖关系,操作的横向依赖关系根据功能的依赖来推导,通过将功能之间相关性加以描述,获得正确的依赖关系与功能流,建立层内的横向映射关系,从而基于层间的纵向映射关系和层内的横向映射关系完成纵横一体化层次结构模型的构建。
4.根据权利要求1所述的结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法,其特征在于,基于代码度量元的缺陷预测方法实现纵横一体化层次结构模型中单元层的缺陷概率预测具体包括:
采用机器学习算法和历史缺陷数据构建软件缺陷预测回归模型,基于被测软件的代码度量元和软件缺陷预测回归模型对被测软件的缺陷情况进行预测,从而实现对软件单元进行缺陷的概率预测。
5.根据权利要求1所述的结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法,其特征在于,基于单元层的缺陷预测概率和关联矩阵得到功能层和任务层的缺陷预测概率具体包括:
将从单元层获得的所有单元的缺陷预测概率表述为单元缺陷概率向量p_unit,计算如公式(1)所示:
p_unit=[p1,p2,...,pj,...,pn]T (1)
其中,n表示单元层的单元数量,p_unit∈Rn×1,pj表示预测的第j个单元的缺陷概率;
计算功能层的所有功能的缺陷预测概率,基于纵横一体化层次结构模型,获得功能和操作到单元的纵向关联关系、功能与功能的横向关联关系,建立面向功能的纵向关联矩阵A,建立面向功能的横向关联矩阵B,单元缺陷概率向量p_unit与纵向关联矩阵A相乘,获得纵向功能缺陷概率向量p_Au,纵向功能缺陷概率向量p_Au与横向关联矩阵B相乘获得p_BAu,即最终的功能缺陷概率向量p_func,计算如公式(2)、(3)、(4)、(5)所示:
p_func=B*A*p_unit=p_BAu (4)
p_func=[pf1,pf2,...,pfh,...,pfm]T (5)
其中,n1为功能层的功能到操作层的操作的次数,n2为功能层的功能直接到单元层的单元的次数,m为功能层的功能到操作层的操作和直接到单元层单元的次数,p_func∈Rm×1,pfh表示预测的第h个功能或操作的缺陷概率;
计算任务层的所有任务的缺陷预测概率,基于层次结构模型,获得任务和功能纵向关联关系、任务与任务的横向关联关系,建立面向任务的纵向关联矩阵C,建立面向任务的横向关联矩阵D,功能缺陷概率向量p_BAu与纵向关联矩阵C相乘,获得纵向任务缺陷向量p_CBAu;纵向任务缺陷向量p_CBAu与横向关联矩阵D相乘,获得p_DCBAu,即最终的任务缺陷概率向量p_task,计算如公式(6)、(7)、(8)、(9)所示:
p_task=D*C*p_func=p_DCBAu (8)
p_task=D*C*B*A*p_unit=[pt1,pt2,...,Pto,...Ptk] (9)
其中,k为任务层的任务数量,p_task∈Rk×1,pto表示预测的第o个任务的缺陷概率;
规范化面向任务的软件的各个任务的缺陷预测概率值,计算公式如(10)所示:
其中,k为任务层的任务数量,p_task∈Rk×1,pto表示预测的第o个任务的缺陷概率。
6.根据权利要求1所述的结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法,其特征在于,生成所有的软件测试用例,根据计算得到的功能层和任务层的缺陷预测概率,采用经典测试用例排序方法对软件测试用例进行排序,得到软件测试策略,具体包括:
从纵向层次结构模型中得到操作层后,通过遍历方法得到软件任务的操作序列,操作序列即为软件的测试用例;
基于功能层和任务层的缺陷预测概率,将软件的测试用例按照经典的测试用例排序方法进行排序,按照该顺序执行测试,得到软件测试的策略。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011392578.8A CN112699019B (zh) | 2020-12-01 | 2020-12-01 | 结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011392578.8A CN112699019B (zh) | 2020-12-01 | 2020-12-01 | 结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112699019A true CN112699019A (zh) | 2021-04-23 |
CN112699019B CN112699019B (zh) | 2023-06-23 |
Family
ID=75506129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011392578.8A Active CN112699019B (zh) | 2020-12-01 | 2020-12-01 | 结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112699019B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113835751A (zh) * | 2021-09-30 | 2021-12-24 | 北京达佳互联信息技术有限公司 | 代码测试方法、装置、电子设备、存储介质 |
CN114138634A (zh) * | 2021-11-15 | 2022-03-04 | 苏州浪潮智能科技有限公司 | 测试用例的选取方法、装置、计算机设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799531A (zh) * | 2012-07-26 | 2012-11-28 | 浪潮电子信息产业股份有限公司 | 一种基于层次分析理论的软件测试方法 |
CN103473400A (zh) * | 2013-08-27 | 2013-12-25 | 北京航空航天大学 | 基于层次依赖建模的软件fmea方法 |
US20190303535A1 (en) * | 2018-04-03 | 2019-10-03 | International Business Machines Corporation | Interpretable bio-medical link prediction using deep neural representation |
-
2020
- 2020-12-01 CN CN202011392578.8A patent/CN112699019B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799531A (zh) * | 2012-07-26 | 2012-11-28 | 浪潮电子信息产业股份有限公司 | 一种基于层次分析理论的软件测试方法 |
CN103473400A (zh) * | 2013-08-27 | 2013-12-25 | 北京航空航天大学 | 基于层次依赖建模的软件fmea方法 |
US20190303535A1 (en) * | 2018-04-03 | 2019-10-03 | International Business Machines Corporation | Interpretable bio-medical link prediction using deep neural representation |
Non-Patent Citations (2)
Title |
---|
CAN CUI 等: "Can Defect Prediction Be Useful for Coarse-Level Tasks of Software Testing?", 《APPLIED SCIENCES》 * |
PENG XIAO 等: "Feedback-based integrated prediction: Defect prediction based on feedback from software testing process", 《JOURNAL OF SYSTEMS AND SOFTWARE》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113835751A (zh) * | 2021-09-30 | 2021-12-24 | 北京达佳互联信息技术有限公司 | 代码测试方法、装置、电子设备、存储介质 |
CN113835751B (zh) * | 2021-09-30 | 2024-01-09 | 北京达佳互联信息技术有限公司 | 代码测试方法、装置、电子设备、存储介质 |
CN114138634A (zh) * | 2021-11-15 | 2022-03-04 | 苏州浪潮智能科技有限公司 | 测试用例的选取方法、装置、计算机设备和存储介质 |
CN114138634B (zh) * | 2021-11-15 | 2024-01-12 | 苏州浪潮智能科技有限公司 | 测试用例的选取方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112699019B (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109242033B (zh) | 晶片缺陷模式分类方法及装置、存储介质、电子设备 | |
CN113283547B (zh) | 一种基于多任务深度学习的最优潮流计算方法 | |
CN112699019A (zh) | 结合缺陷预测和关联矩阵的面向任务的软件测试策略生成方法 | |
CN114676830B (zh) | 一种基于神经网络编译器的仿真实现方法 | |
CN115935807B (zh) | 基于图马尔可夫神经网络的诊断模型的训练方法 | |
CN112966957A (zh) | 一种数据链路异常定位方法、装置、电子设备及存储介质 | |
CN114742211A (zh) | 一种面向微控制器的卷积神经网络部署和优化方法 | |
CN110209589B (zh) | 知识库系统测试方法、装置、设备和介质 | |
CN110516164A (zh) | 一种信息推荐方法、装置、设备及存储介质 | |
CN113946363A (zh) | 业务数据的执行配置方法、装置、计算机设备及存储介质 | |
CN116882701B (zh) | 一种基于零碳模式的电力物资智能调度系统及其方法 | |
CN117874511A (zh) | 深度学习模型训练方法、电池故障检测方法、装置及设备 | |
CN111158918B (zh) | 支撑点并行枚举负载均衡方法、装置、设备及介质 | |
CN115438190B (zh) | 一种配电网故障辅助决策知识抽取方法及系统 | |
CN113412493A (zh) | 基于推理引擎的计算资源分配方法、装置和计算机设备 | |
CN109669777B (zh) | 工业互联网大数据元需求服务提供方法与系统 | |
CN116777173A (zh) | 一种任务分配方法、装置、设备和介质 | |
CN115809069A (zh) | 轻量化的Spark流水线预测模型的构建方法 | |
CN107957944B (zh) | 面向用户数据覆盖率的测试用例自动生成方法 | |
CN112948115B (zh) | 一种基于极限学习机的云工作流调度器压力预测方法 | |
CN114358910A (zh) | 异常财务数据处理方法、装置、设备及存储介质 | |
CN113807704A (zh) | 一种城市轨道交通数据的智能算法平台构建方法 | |
CN118170686B (zh) | 一种ui自动化测试脚本的生成方法、设备及介质 | |
CN112307227B (zh) | 一种数据分类方法 | |
CN117975178B (zh) | 一种基于大数据分析的出租车轨迹数据分析方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |