CN108763063B - 一种无需缺陷标注数据的软件缺陷检测方法 - Google Patents

一种无需缺陷标注数据的软件缺陷检测方法 Download PDF

Info

Publication number
CN108763063B
CN108763063B CN201810436555.9A CN201810436555A CN108763063B CN 108763063 B CN108763063 B CN 108763063B CN 201810436555 A CN201810436555 A CN 201810436555A CN 108763063 B CN108763063 B CN 108763063B
Authority
CN
China
Prior art keywords
software
defect
module
detection
testing
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
CN201810436555.9A
Other languages
English (en)
Other versions
CN108763063A (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.)
Nanjing University
Original Assignee
Nanjing University
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 Nanjing University filed Critical Nanjing University
Priority to CN201810436555.9A priority Critical patent/CN108763063B/zh
Publication of CN108763063A publication Critical patent/CN108763063A/zh
Application granted granted Critical
Publication of CN108763063B publication Critical patent/CN108763063B/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/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test 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)
  • Tests Of Electronic Circuits (AREA)

Abstract

本发明公开了一种无需缺陷标注数据的软件缺陷检测方法,首先获取所有已完成编码的等待测试的软件模块,构造无缺陷标注的数据集合;利用无缺陷标注的数据集合通过异常检测算法建立软件缺陷检测模型;通过建立好的模型输出每个未检测的软件模块的检测分数,表示模块中有缺陷的可能性大小,分数越高说明模块存在缺陷的可能性越大;将所有等待测试的模块按照检测分数由高到低排序,并将等待测试的模块按此顺序依次送交测试人员进行测试,直到所有模块都进行过测试或没有可用的测试资源时结束。本发明能够在没有缺陷标注数据的情况下检测软件缺陷,解决了当前的软件缺陷检测方法需要大量测试资源以获取缺陷标注数据的问题。

Description

一种无需缺陷标注数据的软件缺陷检测方法
技术领域
本发明涉及一种无需缺陷标注数据的软件缺陷检测方法,属于自动化软件质量辅助控制技术领域。
背景技术
随着计算机和互联网的普及,软件已经深入渗透到各行各业和我们的日常生活中。如今,软件的规模越来越大,复杂性越来越高,软件质量保证也引起了软件开发团队越来越多的重视。然而软件不是完美的,在软件开发过程中不可避免地会出现软件缺陷。如果不能尽早地发现并修复缺陷,可能会导致灾难性的后果。软件测试是软件开发过程中不可或缺的步骤。软件测试的目标是尽可能早地找出软件缺陷,并确保其得以修复。然而在实际的软件开发过程中,由于测试资源有限,时间紧迫等原因,软件测试往往是不够充分的,这可能导致许多潜在的软件缺陷未被发现。如何在有限的时间和资源下,尽可能地找出更多的潜在软件缺陷成为一个重要的问题。
研究人员发现通过软件缺陷检测可以在一定程度上缓解这一问题。软件缺陷检测即在进行软件测试前利用现有的数据和领域知识对软件的各个模块出现缺陷的可能性做出合理的预测,测试人员根据预测结果合理安排测试资源,先测试最可能出现缺陷的模块,后测试出现缺陷可能性小的模块,从而保证尽可能多地找出软件缺陷。
然而目前的软件缺陷检测方法的一大缺点是需要大量的缺陷标注数据的支持,为了获取缺陷标注数据就需要在软件缺陷检测之前投入许多测试资源和时间。然而这一条件在许多实际的软件开发过程中无法满足。在测试资源有限或时间紧迫时,无法获取缺陷标注数据的情况下,如何有效地进行软件缺陷检测成为急需解决的问题。
发明内容
发明目的:现有技术中软件缺陷检测方法需要通过人工测试来获取软件模块是否有缺陷的标注数据,在获得缺陷标注数据之后才能建立软件缺陷检测模型。但在测试资源有限或时间紧迫时无法获取缺陷标注数据,目前的软件缺陷检测方法无法在这种情况下有效地检测软件缺陷。针对这一问题,本发明提出了一种无需缺陷标注数据的软件缺陷检测方法,在没有足够的测试资源和时间的情况下也能有效地检测软件缺陷。
技术方案:一种无需缺陷标注数据的软件缺陷检测方法,通过以下步骤实现对已完成编码的等待测试的软件模块进行缺陷检测:
步骤(1)获取所有已完成编码的等待测试的软件模块;
步骤(2)选择度量元集合,利用软件度量技术计算模块在度量元集合中所有度量元上的值,这些值组成的实值向量就是模块的特征向量,所有模块的特征向量构成了无缺陷标注的数据集合;
步骤(3)利用无缺陷标注的数据集合,通过异常检测算法建立软件缺陷检测模型;
步骤(4)将未检测的软件模块的特征向量输入到建立好的软件缺陷检测模型,得到该模块的检测分数。检测分数的取值范围在0到1之间,表示模块中有缺陷的可能性大小,分数越高说明模块存在缺陷的可能性越大;
步骤(5)若还有未检测的软件模块,转至步骤(4),否则转至步骤(6);
步骤(6)将所有等待测试的软件模块按照检测分数由高到低排序;
步骤(7)将所有等待测试的软件模块按照所述分数顺序依次送交测试人员进行详细测试。
有益效果:与现有技术相比,本发明提出的软件缺陷检测方法能够解决在没有缺陷标注数据的情况下如何进行软件缺陷检测的问题。在软件开发过程中,当测试资源有限或时间紧迫时无法获取缺陷标注数据,利用本发明提出的软件缺陷检测方法可以有效地在没有缺陷标注数据的情况下进行软件缺陷检测。
附图说明
图1是本发明方法的流程图;
图2是本发明的软件缺陷检测与建模流程图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
现有的软件缺陷检测装置在进行缺陷检测之前,需要有缺陷标注的数据集合进行训练,以建立缺陷检测模型。为了获取有缺陷标注的数据集合,需要通过代码审查或详细测试以获知模块是否有缺陷,此过程通常需要花费大量的测试资源和时间。如果测试资源有限或时间紧迫,无法获取有缺陷标注的数据集合,则无法建立缺陷检测模型进行缺陷检测。
如图1所示,本发明实施例的软件缺陷检测方法能够在测试资源有限或时间紧迫的情况下,利用无缺陷标记的数据集合建立缺陷检测模型,用该模型进行缺陷检测并输出每个等待测试的模块的检测分数。本实施例的软件缺陷检测方法的建模过程和缺陷检测过程如图2所示。
如图2所示,无需缺陷标注数据的软件缺陷检测与建模流程如下:
步骤0是起始动作。
步骤1获取所有已完成编码的等待测试的软件模块,记模块的数量为N,所有模块组成的集合记为M={mi|i=1,2,...,N},其中mi表示第i个模块。
步骤2选择度量元集合P={pj|j=1,2,...,d},d为度量元的个数。利用软件度量技术计算模块在度量元集合中所有度量元上的值,这些值组成的实值向量就是模块的特征向量。记模块mi的特征向量为xi=(xi,1,xi,2,…,xi,d),所有模块的特征向量构成了无缺陷标注的数据集合X={xi|i=1,2,...,N}。
步骤3利用无缺陷标注的数据集合X,使用异常检测算法隔离森林IsolationForest建立缺陷检测模型F。
步骤4如果有未检测的模块mi,转至步骤5,否则转至步骤6。
步骤5用缺陷检测模型F检测模块mi,获取此模块的检测分数si。检测分数取值范围在0到1之间,表示模块有缺陷的可能性,检测分数越高,表明模块有缺陷的可能性越大。
步骤6将所有模块按照检测分数由高到低排序,排序后的模块为
Figure GDA0003627995670000031
排在第i位的模块记为
Figure GDA0003627995670000032
步骤7初始化计数器t=1。
步骤8如果有可用的测试资源且t<N,转至步骤9,否则转至步骤11。
步骤9测试模块mt,获取其缺陷情况。
步骤10计数器t加1。
步骤11软件缺陷检测过程结束。

Claims (3)

1.一种无需缺陷标注数据的软件缺陷检测方法,其特征在于,通过以下步骤实现对已完成编码的等待测试的软件模块进行缺陷检测:
步骤(1):获取所有已完成编码的等待测试的软件模块;
步骤(2):提取每个模块的特征向量,构建无缺陷标注的数据集合;
步骤(3):利用无缺陷标注的数据集合,通过异常检测算法建立软件缺陷检测模型;所述异常检测算法为隔离森林Isolation Forest;
步骤(4):将未检测的软件模块的特征向量输入到建立好的软件缺陷检测模型,得到该模块的检测分数;所述检测分数取值范围在0到1之间,所述检测分数的高低表示模块中有缺陷的可能性大小,分数越高说明模块存在缺陷的可能性越大;
步骤(5):若还有未检测的软件模块,转至步骤(4),否则转至步骤(6);
步骤(6):将所有等待测试的软件模块按照检测分数由高到低排序;
步骤(7):将所有等待测试的软件模块按照所述分数顺序依次送交测试人员进行测试。
2.如权利要求1所述的无需缺陷标注数据的软件缺陷检测方法,其特征在于,测试软件模块的方法为:
(71)初始化计数器t=1;
(72)如果有可用的测试资源且t<N,转至步骤(73),否则转至步骤(75);所述的N表示软件模块的个数;
(73)测试模块mt,获取其缺陷情况;
(74)计数器t加1,转至步骤(72);
(75)软件缺陷检测过程结束。
3.如权利要求1所述的无需缺陷标注数据的软件缺陷检测方法,其特征在于,所述特征向量的提取方法为:选择度量元集合,利用软件度量技术计算模块在度量元集合中所有度量元上的值,这些值组成的实值向量就是所述特征向量。
CN201810436555.9A 2018-05-09 2018-05-09 一种无需缺陷标注数据的软件缺陷检测方法 Active CN108763063B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810436555.9A CN108763063B (zh) 2018-05-09 2018-05-09 一种无需缺陷标注数据的软件缺陷检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810436555.9A CN108763063B (zh) 2018-05-09 2018-05-09 一种无需缺陷标注数据的软件缺陷检测方法

Publications (2)

Publication Number Publication Date
CN108763063A CN108763063A (zh) 2018-11-06
CN108763063B true CN108763063B (zh) 2022-07-12

Family

ID=64009377

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810436555.9A Active CN108763063B (zh) 2018-05-09 2018-05-09 一种无需缺陷标注数据的软件缺陷检测方法

Country Status (1)

Country Link
CN (1) CN108763063B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112131108B (zh) * 2020-09-18 2024-04-02 电信科学技术第十研究所有限公司 一种基于特征属性的测试策略调整方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105302724A (zh) * 2015-11-05 2016-02-03 南京大学 一种基于混和效应移除的即时缺陷预测方法
CN105930277A (zh) * 2016-07-11 2016-09-07 南京大学 一种基于缺陷报告分析的缺陷源代码定位方法
CN106021115A (zh) * 2016-06-06 2016-10-12 重庆大学 基于概率的无监督缺陷预测方法
CN106502909A (zh) * 2016-11-07 2017-03-15 南京大学 一种智能手机应用开发中的代码缺陷预测方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105302724A (zh) * 2015-11-05 2016-02-03 南京大学 一种基于混和效应移除的即时缺陷预测方法
CN106021115A (zh) * 2016-06-06 2016-10-12 重庆大学 基于概率的无监督缺陷预测方法
CN105930277A (zh) * 2016-07-11 2016-09-07 南京大学 一种基于缺陷报告分析的缺陷源代码定位方法
CN106502909A (zh) * 2016-11-07 2017-03-15 南京大学 一种智能手机应用开发中的代码缺陷预测方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于机器学习的软件缺陷预测技术研究;韦良芬;《长春大学学报》;20171031;第7-9,13页 *

Also Published As

Publication number Publication date
CN108763063A (zh) 2018-11-06

Similar Documents

Publication Publication Date Title
CN110648305A (zh) 工业图像检测方法、系统与计算机可读记录介质
CN117421217B (zh) 一种软件功能自动测试方法、系统、终端及介质
CN114494780A (zh) 基于特征对比的半监督工业缺陷检测方法及系统
CN111400505A (zh) 一种用电信息采集系统匹配故障消缺方案的方法及系统
CN111311546A (zh) 集装箱检测方法、装置及计算机可读存储介质
CN111311545A (zh) 集装箱检测方法、装置及计算机可读存储介质
CN112529109A (zh) 一种基于无监督多模型的异常检测方法及系统
CN113778875B (zh) 一种系统测试缺陷分类方法、装置、设备及存储介质
CN116542984A (zh) 五金件缺陷检测方法、装置、计算机设备及存储介质
CN111768380A (zh) 一种工业零配件表面缺陷检测方法
CN108763063B (zh) 一种无需缺陷标注数据的软件缺陷检测方法
WO2023113773A1 (en) Manufacturing defect detection augmented training sets
CN111275682A (zh) 集装箱检测方法、装置及计算机可读存储介质
CN108415886A (zh) 一种基于生产工序的数据标签纠错方法及装置
CN112749079A (zh) 软件测试的缺陷分类方法、装置及计算设备
CN114417941B (zh) 一种曲轴故障检测方法及系统
US11971802B2 (en) Method, electronic device, and computer program product for code defect detection
CN113284141A (zh) 用于缺陷检测的模型确定方法、装置和设备
CN111858341A (zh) 一种基于神经元覆盖的测试数据度量方法
Pawlowski et al. Simulation and Fault Diagnosis in Post-Manufacturing Mixed Signal Circuits
CN114818929B (zh) 一种基于自学习标注的标注模型训练方法及标注方法
CN113220570B (zh) 一种基于缺陷库实现线上环境测试的方法及装置
CN115035101B (zh) 半导体芯片载板的缺陷验证方法、检测方法及aoi设备
CN113220488B (zh) 基于移动终端的记录单粘贴方法及装置
CN117688441A (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