CN111290947B - 一种基于对抗判别的跨软件缺陷预测方法 - Google Patents

一种基于对抗判别的跨软件缺陷预测方法 Download PDF

Info

Publication number
CN111290947B
CN111290947B CN202010056839.2A CN202010056839A CN111290947B CN 111290947 B CN111290947 B CN 111290947B CN 202010056839 A CN202010056839 A CN 202010056839A CN 111290947 B CN111290947 B CN 111290947B
Authority
CN
China
Prior art keywords
project
source
feature extractor
target
defect prediction
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.)
Active
Application number
CN202010056839.2A
Other languages
English (en)
Other versions
CN111290947A (zh
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.)
Shenzhen Aitesi Information Technology Co.,Ltd.
Original Assignee
South China University of Technology SCUT
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 South China University of Technology SCUT filed Critical South China University of Technology SCUT
Priority to CN202010056839.2A priority Critical patent/CN111290947B/zh
Publication of CN111290947A publication Critical patent/CN111290947A/zh
Application granted granted Critical
Publication of CN111290947B publication Critical patent/CN111290947B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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

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

一种基于对抗判别的跨软件缺陷预测方法
技术领域
本发明涉及软件工程领域,特别涉及一种基于对抗判别的跨软件缺陷预测方法。
背景技术
软件开发生命周期里,如果内部潜在缺陷发现的越晚,后期为了修复这些缺陷的开销就越大。但是,若对每个软件模块都进行完备全面地测试,势必会注入过多地人力资源。所以项目经理希望预先识别软件模块中可能出现的缺陷,并重点测试该模块。因此,软件缺陷预测技术越来越受到广大软件工程研究人员和测试人员的关注,并且有一些基于机器学习和深度学习的软件缺陷方法被提出来,来检测软件中可能存在的有缺陷的文件。
基于机器学习的软件缺陷预测方法,利用专家从源项目中手工提取的特征,包括基于操作数和操作符的Halstead特征,基于代码依赖的McCabe特征,面向对象编程的CK特征等。基于以上手工提取的特征,一些机器学习算法如逻辑回归、随即森林、贝叶斯网络等训练出软件缺陷模型,在一定程度上,这类模型能预测出软件项目中的有缺陷的文件。但是,手工提取的特征没有考虑源代码中隐含的语义结构特征,这就导致基于机器学习的软件缺陷方法预测性能不太理想。因此,基于深度学习的软件缺陷预测方法被提出来,进一步提高了预测性能。然而,这类方法也存在一些问题,没有考虑源项目和目标项目之间的特征分布差异,这也会影响缺陷预测性能。
发明内容
本发明的主要目的在于克服现有技术的缺点与不足,提供一种基于对抗判别的跨软件缺陷预测方法。
本发明的目的通过以下的技术方案实现:
一种基于对抗判别的跨软件缺陷预测方法,包括以下步骤:
1)从开源项目中选择一成熟项目(有丰富的标签信息)作为源项目,需要进行缺陷预测的项目作为目标项目;
2)将步骤1)中选择的源项目和目标项目中的源代码转换成抽象语法树(AST),提取出节点向量集合;
3)对节点进行编码,将步骤2)中得到的节点向量集合转换成后续所需要的整数向量集合;
4)采用随机过采样的方式对步骤3)中得到的源项目中整数向量集合进行处理,解决源项目中的分类不平衡的问题;
5)采用对抗判别学***衡后的整数向量集合同时训练出源项目特征提取器和目标项目特征提取器;
6)用步骤5)训练得到的源项目特征提取器和目标项目特征提取器,提取出源项目和目标项目中的能够迁移的代码语义特征;
7)将步骤6)中的源项目能够迁移的代码语义特征输入到逻辑回归分类器中,训练出跨软件缺陷预测模型,将缺陷预测模型应用到目标项目上,进行缺陷预测分类。
步骤7)中,所述跨软件缺陷预测模型,具体训练步骤如下:
701、设计卷积神经网络模型:采用的卷积神经网络模型包括一个输入层,一个词嵌入层,一个卷积层,一个最大池化层,两个完全连接的隐含层,其中最后一个隐含层的输出作为模型从整数向量集合中学习出来的特征;
702、利用步骤701中设计的卷积神经网络模型,用分类平衡后的源项目整数向量和文件的标签信息训练源项目特征提取器;
703、将步骤702中源项目特征提取器的参数信息作为目标项目特征提取器的初始化参数,并且设计一个判别器,包含一个完全连接的隐含层和一个单独单元的输出层;
704、固定住源项目特征提取器的参数,用对抗判别的方式将以上得到的整数向量集合作为输入,同时训练目标项目特征提取器和判别器的权重和偏差,因此,源项目和目标项目特征提取器都能提取出能够迁移的代码语义特征。
步骤703中,所述源项目特征提取器的参数信息包括权重和偏差。
本发明与现有技术相比,具有如下优点和有益效果:
本发明将对抗判别方法作为强大的领域自适应技术之一,通过最小化源项目映射分布和目标项目映射分布之间的距离,可以解决特征分布差异的问题。
本发明结合对抗判别学习自动化提取可迁移的语义特征的技术,来解决源项目和目标项目的源代码语义特征分布的差异的问题。该方法使用简单,测试人员只要将需要进行测试的软件源码以及从开源成熟项目中选择一套可靠的软件源码和带标签信息的文件输入到该模型当中,就可以生成一套对该测试项目的各个文件有关缺陷的预测结果,为有效合理地分配有限的测试资源提供参考依据,提高软件开发质量。
本发明首先利用了卷积神经网络模型作为源项目和目标项目的特征提取器,克服了传统手工提取特征缺失源码中语义特征的缺点,同时采用对抗判别学习的方式,同时训练源项目特征提取器、目标项目特征提取器和判别器,缩小源项目和目标项目特征分布的距离,解决现有基于深度学习的软件缺陷预测技术源项目和目标项目特征分布差异的问题,进而提高缺陷预测模型的预测精度。
附图说明
图1是本发明所述一种基于对抗判别的跨软件缺陷预测方法的流程图。
图2为对抗判别学习的整体训练过程图。
图3为特征提取器和分类器的示意图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
如图1所示,一种基于对抗判别的跨软件缺陷预测方法,具体步骤如下:
1)从开源项目中选择一成熟项目(有丰富的标签信息)作为源项目,需要进行缺陷预测的项目作为目标项目。现如今有很多开源仓库例如PROMISE、NASA、AEEEM等提供了各种主流编程语言的丰富的项目标签信息,并且可以根据仓库提供的信息在GitHub上找到对应的源代码。
2)将步骤1)中选择的源软件项目和目标软件项目中的源代码转换成抽象语法树(AST),提取出节点向量集合。具体实现为:本发明选择一个python开源库javalang(https://github.com/c2nes/javalang)来将源代码转换成抽象语法树。在提取节点向量的过程中,本发明用节点类型来表示每个节点,这是由于节点名称在不同的项目中的含义是项目独有的,不具有广泛适用性。对于源软件项目和目标软件项目中的节点,本发明主要挑选以下三类节点类型:方法和变量节点,例如方法声明和类声明等;声明节点,包含类型声明、方法声明和枚举声明;控制流节点,包含If、While、Try、Catch等语句。对于项目代码当中的其他节点,由于其通常是项目独有的,不具有迁移性,故舍去不做记录,例如assignment等。
3)对节点进行编码,将步骤2)中得到的节点向量集合转换成以下所设计的特征提取器所需要的整数向量集合。由于节点向量无法直接输入到特征提取器中训练学习相应的权重和偏差,故需要先将节点向量集合进行编码,转换成整数向量集合。在编码转换过程中,本发明同时将源项目和目标项目进行编码,首先统计源代码中节点类型总数;然后将每个节点类型与唯一一个整数形成映射关系,该编码从1开始,直到达到节点类型总数;最后将每一个节点向量根据映射关系转换成整数向量,同时对于节点向量长度小于最长节点向量长度的向量在尾部进行补0。同时,在转换过程中,为了保留更多的可迁移信息,本发明只舍去出现次数小于3次的节点类型。
4)采用随机过采样的方式对步骤3)中得到的源项目中整数向量集合处理,解决软件项目中的分类不平衡的问题。由于软件项目中广泛存在着分类不均衡的问题,也就是软件项目中通常有缺陷的模块要远少于没有缺陷的模块,这种情形的存在,会影响软件缺陷预测模型的预测性能。于是,本发明采用一种常用的分类不均衡技术,随机过采样,来解决软件缺陷预测中分类不均衡的问题。随机过采样是通过随机从少数类集合中多次抽取样本,使得少数类数量和多数类数量达到一致。此外,在本发明中,分类不均衡技术只应用在源软件项目的整数向量集合中。本发明中使用python开源库imblearn(https://pypi.org/project/imblearn/)中的RandomOverSampler来实现该随机过采样方法。
5)采用对抗判别学***衡后的整数向量集合同时训练出源项目特征提取器和目标项目特征提取器。图2为对抗判别学习的整体训练过程图。具体的步骤如下:
(1)设计卷积神经网络模型和分类器。由于卷积神经网络具有稀疏连接和权重共享这两个优点,本发明采用卷积神经网络作为源项目特征提取器和目标项目特征提取器。此外,本发明中采用的卷积神经网络结构包括一个输入层,一个词嵌入层,一个卷积层,一个最大池化层,两个完全连接的隐含层,其中最后一个隐含层的输出作为模型从整数向量集合中学习出来的特征;分类器包含一个输出为一单元的完全连接的输出层。本发明中,卷积神经网络和分类器采用pytorch框架快速灵活地实现。卷积神经网络中的所有层都采用ReLU作为激活函数,而分类器的输出层采用Sigmoid作为激活函数。
(2)利用步骤(1)中设计的卷积神经网络模型结构,用分类平衡后的源项目整数向量和文件的标签信息训练源项目特征提取器,学习合适的权重和偏差;图3为特征提取器和分类器的示意图。
(3)将步骤(2)中源项目特征提取器的权重和偏差等参数信息作为目标项目特征提取器的初始化参数,并且设计一个判别器,包含一个完全连接的隐含层和一个单独单元的输出层;同样判别器也是通过pytorch框架实现。
(4)固定住源项目特征提取器的参数,用对抗判别的方式将以上得到的整数向量集合作为输入,同时训练目标项目特征提取器和判别器的权重和偏差,因此,源项目和目标项目特征提取器都能提取出可迁移的代码语义特征。所谓对抗判别是指在每一次迭代过程中,源项目映射分布和目标项目映射分布对抗训练,最小化目标项目特征提取器的对应分类器的分类误差,最大化判别器的分类误差,使得目标项目特征提取器的特征映射分布与源项目的特征映射分布越来越相似,判别器不能准确地区分一个文件是来自于源项目还是目标项目。基于预测性能和训练时长的综合考虑,以上过程在本发明中建议迭代50次。
5)用步骤4)训练得到的源项目特征提取器和目标项目特征提取器,提取出源项目和目标项目中的可迁移的代码语义特征;
6)将步骤5)中的可迁移的代码语义特征输入到逻辑回归分类器中,训练出跨软件缺陷预测模型。本发明利用python开源库sklearn(https://github.com/scikit-learn/scikit-learn)中的LogicRegression方法实现逻辑回归分类器。
7)将步骤6)训练出的缺陷预测模型应用到目标项目上,进行缺陷预测分类。具体而言,将之前编码后的目标项目整数向量集合输入到步骤6)中训练好的跨软件缺陷预测模型中,输出目标项目中所有文件的缺陷倾向,为软件测试人员提供模块之间测试优先级。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

Claims (2)

1.一种基于对抗判别的跨软件缺陷预测方法,其特征在于,包括以下步骤:
1)从开源项目中选择一成熟项目作为源项目,需要进行缺陷预测的项目作为目标项目;
2)将步骤1)中选择的源项目和目标项目中的源代码转换成抽象语法树,提取出节点向量集合;
3)对节点进行编码,将步骤2)中得到的节点向量集合转换成后续所需要的整数向量集合;在编码转换过程中,同时将源项目和目标项目进行编码,首先统计源代码中节点类型总数;然后将每个节点类型与唯一一个整数形成映射关系,该编码从1开始,直到达到节点类型总数;最后将每一个节点向量根据映射关系转换成整数向量,同时对于节点向量长度小于最长节点向量长度的向量在尾部进行补0;同时,在转换过程中,为了保留更多的可迁移信息,只舍去出现次数小于3次的节点类型;
4)采用随机过采样的方式对步骤3)中得到的源项目中整数向量集合进行处理,解决源项目中的分类不平衡的问题;
5)采用对抗判别学***衡后的整数向量集合同时训练出源项目特征提取器和目标项目特征提取器;
6)用步骤5)训练得到的源项目特征提取器和目标项目特征提取器,提取出源项目和目标项目中的能够迁移的代码语义特征;
7)将步骤6)中的源项目能够迁移的代码语义特征输入到逻辑回归分类器中,训练出跨软件缺陷预测模型,将缺陷预测模型应用到目标项目上,进行缺陷预测分类;
步骤7)中,所述跨软件缺陷预测模型,具体训练步骤如下:
701、设计卷积神经网络模型:采用的卷积神经网络模型包括一个输入层,一个词嵌入层,一个卷积层,一个最大池化层,两个完全连接的隐含层,其中最后一个隐含层的输出作为模型从整数向量集合中学习出来的特征;
702、利用步骤701中设计的卷积神经网络模型,用分类平衡后的源项目整数向量和文件的标签信息训练源项目特征提取器;
703、将步骤702中源项目特征提取器的参数信息作为目标项目特征提取器的初始化参数,并且设计一个判别器,包含一个完全连接的隐含层和一个单独单元的输出层;
704、固定住源项目特征提取器的参数,用对抗判别的方式将以上得到的整数向量集合作为输入,同时训练目标项目特征提取器和判别器的权重和偏差,因此,源项目和目标项目特征提取器都能提取出能够迁移的代码语义特征。
2.根据权利要求1所述基于对抗判别的跨软件缺陷预测方法,其特征在于,步骤703中,所述源项目特征提取器的参数信息包括权重和偏差。
CN202010056839.2A 2020-01-16 2020-01-16 一种基于对抗判别的跨软件缺陷预测方法 Active CN111290947B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010056839.2A CN111290947B (zh) 2020-01-16 2020-01-16 一种基于对抗判别的跨软件缺陷预测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010056839.2A CN111290947B (zh) 2020-01-16 2020-01-16 一种基于对抗判别的跨软件缺陷预测方法

Publications (2)

Publication Number Publication Date
CN111290947A CN111290947A (zh) 2020-06-16
CN111290947B true CN111290947B (zh) 2022-06-14

Family

ID=71028364

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010056839.2A Active CN111290947B (zh) 2020-01-16 2020-01-16 一种基于对抗判别的跨软件缺陷预测方法

Country Status (1)

Country Link
CN (1) CN111290947B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111683108B (zh) * 2020-08-17 2020-11-17 鹏城实验室 一种网络流异常检测模型的生成方法和计算机设备
CN112199280B (zh) * 2020-09-30 2022-05-20 三维通信股份有限公司 软件的缺陷预测方法和装置、存储介质和电子装置
CN112597038B (zh) * 2020-12-28 2023-12-08 中国航天***科学与工程研究院 软件缺陷预测方法及***
CN113419948A (zh) * 2021-06-17 2021-09-21 北京邮电大学 一种基于gan网络的深度学习跨项目软件缺陷的预测方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110597735A (zh) * 2019-09-25 2019-12-20 北京航空航天大学 一种面向开源软件缺陷特征深度学习的软件缺陷预测方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109376620A (zh) * 2018-09-30 2019-02-22 华北电力大学 一种风电机组齿轮箱故障的迁移诊断方法
CN110162475B (zh) * 2019-05-27 2023-04-18 浙江工业大学 一种基于深度迁移的软件缺陷预测方法
CN110414383A (zh) * 2019-07-11 2019-11-05 华中科技大学 基于Wasserstein距离的卷积神经网络对抗迁移学习方法及其应用
CN110442523B (zh) * 2019-08-06 2023-08-29 山东浪潮科学研究院有限公司 一种跨项目软件缺陷预测方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110597735A (zh) * 2019-09-25 2019-12-20 北京航空航天大学 一种面向开源软件缺陷特征深度学习的软件缺陷预测方法

Also Published As

Publication number Publication date
CN111290947A (zh) 2020-06-16

Similar Documents

Publication Publication Date Title
CN111290947B (zh) 一种基于对抗判别的跨软件缺陷预测方法
CN110221975B (zh) 创建接口用例自动化测试脚本的方法及装置
CN110751186A (zh) 一种基于监督式表示学习的跨项目软件缺陷预测方法
EP2795481A1 (en) Detecting cases with conflicting rules
CN103995775A (zh) 一种基于神经网络的测试数据生成方法
CN114816997A (zh) 一种基于图神经网络与双向gru特征抽取的缺陷预测方法
CN117215935A (zh) 一种基于多维度代码联合图表示的软件缺陷预测方法
CN112035345A (zh) 一种基于代码片段分析的混合深度缺陷预测方法
Hoang et al. A capability model for the adaptation of manufacturing systems
Fakih et al. Llm4plc: Harnessing large language models for verifiable programming of plcs in industrial control systems
CN117056226A (zh) 基于迁移学习的跨项目软件缺陷数量预测方法
Liu et al. Deep learning software defect prediction methods for cloud environments research
CN112199287B (zh) 基于强化混合专家模型的跨项目软件缺陷预测方法
CN115794119A (zh) 一种案例自动解析方法及装置
CN115470854A (zh) 信息***故障分类方法及分类***
CN113626034A (zh) 一种基于传统特征和语义特征结合的缺陷预测方法
CN109190060B (zh) 一种基于有效人机交互的服务标注质量优化方法
Yao et al. Defect Prediction Technology of Aerospace Software Based on Deep Neural Network and Process Measurement
CN117806980B (zh) 一种基于大语言模型的测试用例自动生成装置
CN117130942B (zh) 一种模拟国产化生产环境的仿真测试方法
US20230368086A1 (en) Automated intelligence facilitation of routing operations
CN113326182B (zh) 一种基于采样和集成学习的软件缺陷预测方法
Kuhn et al. Pseudo-Exhaustive Verification of Rule Based Systems.
US20230367303A1 (en) Automated intelligence facilitation of routing operations
CN106547696A (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
TR01 Transfer of patent right

Effective date of registration: 20230915

Address after: 518000, Zone 2111, Area A, 2nd Floor, Building R2-B, Gaoxin Industrial Village, No. 020 Gaoxin South Seventh Road, Gaoxin Community, Yuehai Street, Nanshan District, Shenzhen City, Guangdong Province

Patentee after: Shenzhen Xiangruilai Technology Co.,Ltd.

Address before: 510640 No. five, 381 mountain road, Guangzhou, Guangdong, Tianhe District

Patentee before: SOUTH CHINA University OF TECHNOLOGY

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20231026

Address after: B508, Unit 1, Building 6, Shenzhen Software Park, No. 2 Gaoxin Middle Road, Maling Community, Yuehai Street, Nanshan District, Shenzhen City, Guangdong Province, 518000

Patentee after: Shenzhen Aitesi Information Technology Co.,Ltd.

Address before: 518000, Zone 2111, Area A, 2nd Floor, Building R2-B, Gaoxin Industrial Village, No. 020 Gaoxin South Seventh Road, Gaoxin Community, Yuehai Street, Nanshan District, Shenzhen City, Guangdong Province

Patentee before: Shenzhen Xiangruilai Technology Co.,Ltd.

TR01 Transfer of patent right