一种基于贝叶斯网络的网站缺陷预测方法及其实现系统与流程

文档序号:11386443阅读:396来源:国知局
本发明涉及软件缺陷预测领域,更具体地,涉及一种基于贝叶斯网络的网站缺陷预测方法及其实现系统。
背景技术
::软件缺陷在软件开发中不可避免,尽早发现、修复软件缺陷,一直是软件开发所追寻的目标,而软件缺陷预测技术,可在测试的前期,通过对软件特性进行分析,判断哪些模块有无缺陷或推算模块所含缺陷数,为测试、开发人员寻找、修复软件缺陷,进行人员安排,制定测试计划、测试充分性等方面提供参考。也是使得软件开发方降低日后测试代价和周期、提高软件质量的重要依据。网页开发作为软件开发的一个方向,其网页缺陷预测也是网页开发者需要面对和解决的重要问题。而目前用于网页缺陷预测的技术方法,所使用的度量元均是针对常规软件各模块所设计的,对网页缺陷预测泛化能力不足,针对性差,预测效果差;而现有提出的针对现有网页的缺陷预测方法理论上可行,但其度量元在实际中难以测量,对信息要求高,使得其在实际预测中实用性不强。技术实现要素:为了解决
背景技术
:存在的度量元针对性差以及难以测量,预测方法实用性不强等问题,本发明提供了一种基于贝叶斯网络的网站缺陷预测方法及其实现系统,该方法及其实现系统对已有的信息要求低,可以在信息不完全、不确定情况下对网站缺陷情况进行预测。一种基于贝叶斯网络的网站缺陷预测方法,所述方法包含:建立html贝叶斯网络结构,所述html贝叶斯网络结构的节点为网页的html度量元以及html缺陷数;建立代码贝叶斯网络结构,所述代码贝叶斯网络结构的节点为网页的代码度量元以及代码缺陷数;html贝叶斯网络结构使用历史网页的html度量元状态值作为训练样本进行最大似然估计算法的参数学习,获得html度量元的条件概率分布表,所述html贝叶斯网络结构与html度量元的条件概率分布表组成html贝叶斯网络子模型;代码贝叶斯网络结构使用历史网页的代码度量元状态值作为训练样本进行最大似然估计算法的参数学习,获得代码度量元的条件概率分布表,所述代码贝叶斯网络结构与代码度量元的条件概率分布表组成代码贝叶斯网络子模型;以及将待测网页的html度量元状态值以及代码度量元状态值带入html贝叶斯子模型以及代码贝叶斯子模型,得到待测网页的html缺陷预测以及代码缺陷预测。进一步的,所述网页html的度量元包含:行数(ls),所述行数为网页文件除去空行的总行数;html标签数(tag),所述html标签数为网页文件中所有标签数;复合标签百分数(ctag),所述复合标签百分数为网页文件中名称为form、select、table、map、frame以及marquee的标签数之和与总标签数的百分比;其他标签数(otag),所述其他标签数为网页文件中href、src、script以及applet标签数的总和;进一步的,所述网页代码的度量元包括:语句数(ss),所述语句数为以分号结尾的语句、未以分号结尾的方法语句与属性语句、预处理语句#include、#define以及#undef数量之和,其中在#else和#endif之间以及#elif和#endif之间的语句不计算在内;方法总数(ms),所述方法总数指代码文件中所有类方法的数量之和;方法的平均语句数(mas),所述方法的平均语句数指代码文件中所有类方法中的语句数量之和除以方法总数所得的值;方法的平均调用数(mcs),所述方法的平均调用数指代码文件中调用方法的总数除以方法总数所得的值;圈复杂度总和(mc),所述圈复杂度总和指代码文件中所有方法的圈复杂度累加之和;最大圈复杂度(mmc),所述最大圈复杂度指代码文件中所有方法中最大的圈复杂度的值;最大模块深度(mds),所述最大模块深度指代码文件中模块嵌套的最大深度数;平均模块深度(ads),所述平均模块深度指代码文件中所有方法中模块嵌套深度的平均值;可维护性指数(mi),所述可维护性指数是指通过软件结构、文档注释、命名规范、系统配置管理以及版本管理等的优良程度来确认的维护代码的相对难易度,0≤mi≤100,mi越大表示维护性越好;继承深度(id),所述继承深度指代码文件中派生层次最多的类或对象的层次数;类耦合(cc),所述类耦合是指通过参数、局部变量、返回类型、方法调用、泛型或模板实例化、基类、接口实现、在外部类型上定义的字段以及特性修饰来衡量与唯一类的耦合程度;进一步的,度量元状态值包括除去其他标签数状态值的html度量元状态值、代码度量元状态值以及代码缺陷预测状态值,所述度量元状态值根据对与度量元对应的度量元数据进行状态划分得到,当所述度量元或代码缺陷数在历史数据中数量大小占据前25%位置,其度量元状态值为“多”,当所述度量元或代码缺陷数在历史数据中数量大小占据中间50%位置,其度量元状态值为“中”,当所述度量元或代码缺陷数在历史数据中数量大小占据最后25%位置,其度量元状态值为“少”;所述除去其他标签数状态值的html度量元状态值指行数、html标签数以及复合标签百分数;进一步的,所述html缺陷预测为3个以上缺陷时所述html缺陷预测状态值为“多”,所述html缺陷预测为1~2个缺陷时所述html缺陷预测状态值为“中”,所述html缺陷预测为0个缺陷时,所述html缺陷预测为“少”;所述其他标签数的值大于0时,其度量元状态值为“有”,否则其度量元状态值为“无”;进一步的,所述html贝叶斯网络结构中,各度量元节点均与html缺陷节点相连,html标签数节点、复合标签百分数节点以及其他标签数节点与行数节点相连,复合标签百分数节点与html标签数节点相连、其他标签数节点与html标签数节点相连;进一步的,所述代码贝叶斯网络结构中,各度量元节点均与代码缺陷节点相连,方法总数节点与语句数节点相连,方法的平均语句数节点与语句数节点相连,最大圈复杂度节点与圈复杂度总和节点相连,最大模块深度节点与平均模块深度节点;进一步的,所述待测网页的缺陷实测结果与各度量值作为新的样品加入训练集,用于使贝叶斯网络模型进行重新学习,以修正各节点的条件概率。一种用于实现基于贝叶斯网络的网站缺陷预测方法的系统,所述系统包含:html贝叶斯网络结构模块,所述html贝叶斯网络结构模块的节点为为网页html的度量元以及html缺陷数;所述html贝叶斯网络结构模块的输出为html贝叶斯网络结构,所述html贝叶斯网络结构模块的输出与html度量元概率分布模块的输入端以及预测模块输入端相连;代码贝叶斯网络结构模块,所述代码贝叶斯网络结构模块的节点为为网页代码的度量元以及代码缺陷数,所述代码贝叶斯网络结构模块的输出为代码贝叶斯网络结构,所述代码贝叶斯网络结构模块的输出与代码度量元概率分布模块的输入端以及预测模块输入端相连;html度量元概率分布模块,所述html度量元概率分布模块用于使html贝叶斯网络结构对历史网页的html度量元状态值进行最大似然估计算法的参数学习,所述html度量元概率分布模块的输出为html度量元条件概率分布表,所述html度量元概率分布模块的输出端与预测模块的输入端相连;代码度量元概率分布模块,所述代码度量元概率分布模块用于使代码贝叶斯网络结构对历史网页的代码度量元状态值进行最大似然估计算法的参数学习,所述代码度量元概率分布模块的输出为代码度量元条件概率分布表,所述代码度量元概率分布模块的输出端与预测模块的输入端相连;预测模块,所述预测模块用于根据待测网页的html度量元状态值以及代码度量元状态值进行预测,得到html缺陷以及代码缺陷。进一步的,所述html贝叶斯网络结构模块中的贝叶斯节点为html度量元,所述html度量元包含行数、html标签数、复合标签百分数以及其他标签数;所述代码贝叶斯网络结构模块中的贝叶斯节点为代码度量元,所述代码度量元包含语句数、方法总数、方法的平均语句数、方法的平均调用数、圈复杂度总和、最大圈复杂度、最大模块深度、平均模块深度、可维护性指数、继承深度以及类耦合;进一步的,度量元状态值包括除去其他标签数状态值的html度量元状态值、代码度量元状态值以及代码缺陷预测状态值,所述度量元状态值根据对与度量元对应的度量元数据进行状态划分得到,当所述度量元或代码缺陷数在历史数据中占据前25%位置,其度量元状态值为“多”,当所述度量元或代码缺陷数在历史数据中占据中间50%位置,其度量元状态值为“中”,当所述度量元或代码缺陷数在历史数据中占据最后25%位置,其度量元状态值为“少”;所述除去其他标签数状态值的html度量元状态值指行数、html标签数以及复合标签百分数;进一步的,所述html缺陷预测为3个以上缺陷时所述html缺陷预测状态值为“多”,所述html缺陷预测为1~2个缺陷时所述html缺陷预测状态值为“中”,所述html缺陷预测为0个缺陷时,所述html缺陷预测为“少”;;所述其他标签数的值大于0时,其度量元状态值为“有”,否则其度量元状态值为“无”;进一步的,所述html贝叶斯网络结构模块中,各度量元节点均与html缺陷节点相连,html标签数节点、复合标签百分数节点以及其他标签数节点与行数节点相连,复合标签百分数节点与html标签数节点相连、其他标签数节点与html标签数节点相连;进一步的,所述代码贝叶斯网络结构模块中,各度量元节点均与代码缺陷节点相连,方法总数节点与语句数节点相连,方法的平均语句数节点与语句数节点相连,最大圈复杂度节点与圈复杂度总和节点相连,最大模块深度节点与平均模块深度节点。本发明的有益效果为:本发明的技术方案,给出了一种基于贝叶斯网络的网站缺陷预测方法及其实现系统,所述方法可预测得到网站html缺陷以及代码缺陷情况,预测准确率高;所述方法对测试结果进行重新学习以不断修正模型预测能力;所述方法中的度量元易获得,方法的实用性强。附图说明通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:图1为本发明具体实施方式的一种基于贝叶斯网络的网站缺陷预测方法的流程图;以及图2为本发明具体实施方式的一种用于实现基于贝叶斯网络的网站缺陷预测方法的结构图。具体实施方式现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属
技术领域
:的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。除非另有说明,此处使用的术语(包括科技术语)对所属
技术领域
:的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。图1为本发明具体实施方式的一种基于贝叶斯网络的网站缺陷预测方法的流程图,所述方法包括以下步骤:步骤101,建立html贝叶斯网络结构,所述html贝叶斯网络结构的节点为网页html的度量元以及html缺陷数;步骤102,建立代码贝叶斯网络结构,所述代码贝叶斯网络结构的节点为网页代码的度量元以及代码缺陷数;步骤103,html贝叶斯网络结构使用历史网页的html度量元状态值作为训练样本进行最大似然估计算法的参数学习,获得html度量元的条件概率分布表,所述html贝叶斯网络结构与html度量元的条件概率分布表组成html贝叶斯网络子模型;步骤104,代码贝叶斯网络结构使用历史网页的代码度量元状态值作为训练样本进行最大似然估计算法的参数学习,获得代码度量元的条件概率分布表,所述代码贝叶斯网络结构与代码度量元的条件概率分布表组成代码贝叶斯网络子模型;以及步骤105,将待测网页的html度量元状态值以及代码度量元状态值带入html贝叶斯子模型以及代码贝叶斯子模型,得到待测网页的html缺陷预测以及代码缺陷预测。进一步的,所述网页html的度量元包含:行数(ls),所述行数为网页文件除去空行的总行数;html标签数(tag),所述html标签数为网页文件中所有标签数;复合标签百分数(ctag),所述复合标签百分数为网页文件中名称为form、select、table、map、frame以及marquee的标签数之和与总标签数的百分比;其他标签数(otag),所述其他标签数为网页文件中href、src、script以及applet标签数的总和;进一步的,所述网页代码的度量元包括:语句数(ss),所述语句数为以分号结尾的语句、未以分号结尾的方法语句与属性语句、预处理语句#include、#define以及#undef数量之和,其中在#else和#endif之间以及#elif和#endif之间的语句不计算在内;方法总数(ms),所述方法总数指代码文件中所有类方法的数量之和;方法的平均语句数(mas),所述方法的平均语句数指代码文件中所有类方法中的语句数量之和除以方法总数所得的值;方法的平均调用数(mcs),所述方法的平均调用数指代码文件中调用方法的总数除以方法总数所得的值;圈复杂度总和(mc),所述圈复杂度总和指代码文件中所有方法的圈复杂度累加之和;最大圈复杂度(mmc),所述最大圈复杂度指代码文件中所有方法中最大的圈复杂度的值;最大模块深度(mds),所述最大模块深度指代码文件中模块嵌套的最大深度数;平均模块深度(ads),所述平均模块深度指代码文件中所有方法中模块嵌套深度的平均值;可维护性指数(mi),所述可维护性指数是指通过软件结构、文档注释、命名规范、系统配置管理以及版本管理等的优良程度来确认的维护代码的相对难易度,0≤mi≤100,mi越大表示维护性越好;继承深度(id),所述继承深度指代码文件中派生层次最多的类或对象的层次数;类耦合(cc),所述类耦合是指通过参数、局部变量、返回类型、方法调用、泛型或模板实例化、基类、接口实现、在外部类型上定义的字段以及特性修饰来衡量与唯一类的耦合程度;进一步的,度量元状态值包括除去其他标签数状态值的html度量元状态值、代码度量元状态值以及代码缺陷预测状态值,所述度量元状态值根据对与度量元对应的度量元数据进行状态划分得到,当所述度量元或代码缺陷数在历史数据中数量大小占据前25%位置,其度量元状态值为“多”,当所述度量元或代码缺陷数在历史数据中数量大小占据中间50%位置,其度量元状态值为“中”,当所述度量元或代码缺陷数在历史数据中数量大小占据最后25%位置,其度量元状态值为“少”;所述除去其他标签数状态值的html度量元状态值指行数、html标签数以及复合标签百分数;进一步的,对于所述html缺陷预测状态值:所述html缺陷预测为3个以上缺陷时所述html缺陷预测状态值为“多”,所述html缺陷预测为1~2个缺陷时所述html缺陷预测状态值为“中”,所述html缺陷预测为0个缺陷时,所述html缺陷预测为“少”;所述其他标签数的值大于0时,其度量元状态值为“有”,否则其度量元状态值为“无”;进一步的,所述html贝叶斯网络结构中,各度量元节点均与html缺陷节点相连,html标签数节点、复合标签百分数节点以及其他标签数节点与行数节点相连,复合标签百分数节点与html标签数节点相连、其他标签数节点与html标签数节点相连;进一步的,所述代码贝叶斯网络结构中,各度量元节点均与代码缺陷节点相连,方法总数节点与语句数节点相连,方法的平均语句数节点与语句数节点相连,最大圈复杂度节点与圈复杂度总和节点相连,最大模块深度节点与平均模块深度节点;进一步的,所述待测网页的缺陷实测结果与各度量值作为新的样品加入训练集,用于使贝叶斯网络模型进行重新学习,以修正各节点的条件概率。图2为本发明具体实施方式的一种用于实现基于贝叶斯网络的网站缺陷预测方法的装置的结构图,所述装置包括:html贝叶斯网络结构模块,所述html贝叶斯网络结构模块的节点为为网页html的度量元以及html缺陷数;所述html贝叶斯网络结构模块的输出为html贝叶斯网络结构,所述html贝叶斯网络结构模块的输出与html度量元概率分布模块的输入端以及预测模块输入端相连;代码贝叶斯网络结构模块,所述代码贝叶斯网络结构模块的节点为为网页代码的度量元以及代码缺陷数,所述代码贝叶斯网络结构模块的输出为代码贝叶斯网络结构,所述代码贝叶斯网络结构模块的输出与代码度量元概率分布模块的输入端以及预测模块输入端相连;html度量元概率分布模块,所述html度量元概率分布模块用于使html贝叶斯网络结构对历史网页的html度量元状态值进行最大似然估计算法的参数学习,所述html度量元概率分布模块的输出为html度量元条件概率分布表,所述html度量元概率分布模块的输出端与预测模块的输入端相连;代码度量元概率分布模块,所述代码度量元概率分布模块用于使代码贝叶斯网络结构对历史网页的代码度量元状态值进行最大似然估计算法的参数学习,所述代码度量元概率分布模块的输出为代码度量元条件概率分布表,所述代码度量元概率分布模块的输出端与预测模块的输入端相连;预测模块,所述预测模块用于根据待测网页的html度量元状态值以及代码度量元状态值进行预测,得到html缺陷以及代码缺陷。进一步的,所述html贝叶斯网络结构模块中的贝叶斯节点为html度量元,所述html度量元包含行数、html标签数、复合标签百分数以及其他标签数;所述代码贝叶斯网络结构模块中的贝叶斯节点为代码度量元,所述代码度量元包含语句数、方法总数、方法的平均语句数、方法的平均调用数、圈复杂度总和、最大圈复杂度、最大模块深度、平均模块深度、可维护性指数、继承深度以及类耦合;进一步的,度量元状态值包括除去其他标签数状态值的html度量元状态值、代码度量元状态值以及代码缺陷预测状态值,所述度量元状态值根据对与度量元状态值对应的度量元数据进行状态划分得到,当所述度量元或代码缺陷数在历史数据中数量大小占据前25%位置,其度量元状态值为“多”,当所述度量元或代码缺陷数在历史数据中数量大小占据中间50%位置,其度量元状态值为“中”,当所述度量元或代码缺陷数在历史数据中数量大小占据最后25%位置,其度量元状态值为“少”;所述除去其他标签数状态值的html度量元状态值指行数、html标签数以及复合标签百分数;进一步的,所述html缺陷预测为3个以上缺陷时所述html缺陷预测状态值为“多”,所述html缺陷预测为1~2个缺陷时所述html缺陷预测状态值为“中”,所述html缺陷预测为0个缺陷时,所述html缺陷预测为“少”;所述其他标签数的值大于0时,其度量元状态值为“有”,否则其度量元状态值为“无”;进一步的,所述html贝叶斯网络结构模块中,各度量元节点均与html缺陷节点相连,html标签数节点、复合标签百分数节点以及其他标签数节点与行数节点相连,复合标签百分数节点与html标签数节点相连、其他标签数节点与html标签数节点相连;进一步的,所述代码贝叶斯网络结构模块中,各度量元节点均与代码缺陷节点相连,方法总数节点与语句数节点相连,方法的平均语句数节点与语句数节点相连,最大圈复杂度节点与圈复杂度总和节点相连,最大模块深度节点与平均模块深度节点。根据本发明的实施方式,对招生系统的一组网页进行缺陷数预测。待测的招生系统共有228个html网页以及515个代码模块,根据本发明的方法,建立html贝叶斯网络模型以及代码贝叶斯网络模型,使用度量工具sourcemonitor和微软的vs对同一项目组开发的信息化平台系统进行度量元的测度,将这些数据转换为节点的相应状态值,作为贝叶斯网络模型输入的训练样本,所述模型使用最大似然性估计算法学习后,对所述招生系统各html网页和代码模块进行了缺陷预测。预测结束后对所述招生系统进行实际缺陷测试,所述228个html网页中有191个页面的预测结果与实际测试结果一致,所述515个代码模块有399个模块的预测结果与实际测试结果一致,总体正确率为80%。同时,将招生系统的实测结果继续学习后对同项目组开发的其他项目做缺陷预测,得到的总体正确率达到85%左右,对其他项目组开发的项目进行缺陷预测,得到总体正确率达到70%左右。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1