A static test null pointer dereference defect false positive identification method for software static testing null pointer dereference false positive defect, extracted a null pointer test program static test software bugs and historical references in the defects of knowledge warehouse; the null pointer dereference null pointer dereference type defect mode extraction conditions and defects caused by defects compared with knowledge null pointer dereference, determine the null pointer dereference defect correlation attribute group, construct null pointer dereference defect data set; through the ID3 algorithm to classify null pointer attribute importance theory reference defect data set based on rough set with classification results for the null pointer dereference false positive identification of defects, to confirm the true null pointer dereference flaw. The invention combines null pointer dereference defects knowledge and rough set theory attribute importance ID3 classification algorithm for static testing null pointer dereference false positive identification of defects based on static test, improve the detection efficiency and stability of null pointer dereference defects, reduce the null pointer dereference defect verification overhead.
【技术实现步骤摘要】
一种静态测试空指针引用缺陷假阳性识别方法
本专利技术属于软件测试
,特别是在静态测试
,用于进行静态测试中空指针引用缺陷假阳性识别,降低空指针引用缺陷确认开销,提高了静态测试空指针引用缺陷检测效率和稳定性,是一种静态测试空指针引用缺陷优化方法。
技术介绍
软件测试是一种保障软件质量的过程,旨在尽早尽可能的发现软件缺陷,降低测试成本。在静态测试过程中,测试人员通过检查源程序的文法、结构、过程、接口等而不运行程序来找出程序中可能导致缺陷的结构异常、数据流异常等。现有的静态测试研究通常分为两大类:静态测试过程中的缺陷定位、静态测试优化。在过去的几年中,静态测试研究主要集中在测试过程中的缺陷定位,其主要任务是如何在静态测试过程中精益求精尽可能提升缺陷定位的正确率,保证软件质量,然而静态测试过程往往会在分析精度和检测时间中寻求平衡,大多数语义类缺陷模式的检测存在假阳性。静态测试优化是指根据静态测试过程中的相关信息在自动化静态测试工具运行后进行缺陷检测优化,其从另一个角度提升了静态测试工具的检测效率和精度,但需要在测试后对检测的缺陷进行确认。静态测试优化主要针对缺 ...
【技术保护点】
一种静态测试空指针引用缺陷假阳性识别方法,其特征在于包括以下步骤:(1)针对程序P使用静态测试工具进行静态测试后生成的.xml格式的静态测试缺陷报告SR,SR是由不同级别元素组成的结构化数据存储文件,所有元素都有文本内容和属性,所有元素都有子元素,将与缺陷相关的内容包含在元素中,SR使用一系列标记描述数据,通过开始标记和结束标记限定元素在SR中描述缺陷内容的范围,解析静态测试缺陷报告SR中包含空指针引用(Null Pointer Dereference,NPD)缺陷内容的所有元素的文本内容,获取元素的属性及属性值并直接存储在.csv格式的二维表中,二维表的列为属性,二维表的 ...
【技术特征摘要】
1.一种静态测试空指针引用缺陷假阳性识别方法,其特征在于包括以下步骤:(1)针对程序P使用静态测试工具进行静态测试后生成的.xml格式的静态测试缺陷报告SR,SR是由不同级别元素组成的结构化数据存储文件,所有元素都有文本内容和属性,所有元素都有子元素,将与缺陷相关的内容包含在元素中,SR使用一系列标记描述数据,通过开始标记和结束标记限定元素在SR中描述缺陷内容的范围,解析静态测试缺陷报告SR中包含空指针引用(NullPointerDereference,NPD)缺陷内容的所有元素的文本内容,获取元素的属性及属性值并直接存储在.csv格式的二维表中,二维表的列为属性,二维表的行为属性值,将二维表中的内容作为SR中的NPD缺陷知识RKNPD;(2)代码修改和修改日志均与软件缺陷存在关联,挖掘软件历史仓库中所有的代码修改,修改日志内容由多条记录构成,每条记录主要包括五种属性,分别为本次代码修改对象中的NPD缺陷是否真实、代码修改对象中的NPD缺陷是否修复、版本号、修改人员、修改时间,通过从修改日志中搜索修复NPD缺陷的关键词,可以从所有代码修改中识别出修复NPD缺陷的代码修改,然后通过分析源程序中引发NPD缺陷的程序点L处第1次代码修改到第(n-1)次代码修改,从修复程序点L处NPD缺陷的第n次代码修改的修改日志中提取修复NPD缺陷的记录,获取记录的属性及属性值并直接存储在.csv格式的二维表中,二维表的列为属性,二维表的行为属性值,将二维表中的内容作为软件历史仓库中的NPD缺陷知识HKNPD;(3)NPD缺陷模式用NPD缺陷有限状态机MNPD表示为:MNPD=<S,T,C>其中,S={Sstart,Snot,Spossible,Snpddefect,Send}是MNPD所有可达状态集,Sstart仅有入口,Send是仅有出口,Snot和Spossible分别代表非空状态和可能为空状态,Snpddefect是引发NPD缺陷时的状态,与NPD缺陷模式有关,全部MNPD都有的状态集T为{Sstart,Snpddefect,Send},T={<ni,nj>|ni,nj∈S}是状态迁移集,指MNPD从状态ni迁移到状态nj,T:S×C→S,C是状态迁移条件;NPD缺陷仅与指针的指向有关,指针的指向状态包括空、非空和可能为空三种状态,其中,空状态会引发NPD缺陷,非空状态不会引发NPD缺陷,可能为空状态可能会引发NPD缺陷,根据程序P语义知识中引发NPD缺陷程序点L处指针的指向状态对每个被引用的指针构造MNPD实例,引发NPD缺陷对象X指X的状态从始态Sstart经一系列状态迁移到达末态Snpddefect,在MNPD实例上进行状态迁移到达状态Snpddefect时,通过分析P执行到引发NPD缺陷的程序点L处的程序状态信息,这里的程序状态信息包括对象X取值信息ρ(L,X)、P执行到L处时被调方法之间的调用关系及执行顺序和引发NPD缺陷的指针的解引用位置,根据引发NPD缺陷时X在MNPD上的迁移过程确定NPD缺陷的具体模式,得到NPD缺陷模式集其中,NPD缺陷模式表示局部变量为空,NPD缺陷模式表示全局变量为空,NPD缺陷模式表示函数形参为空,NPD缺陷模式表示函数实参为空,NPD缺陷模式表示函数返回值为空;(4)通过NPD缺陷状态迁移集描述M*NPD中的NPD缺陷模式,由...
【专利技术属性】
技术研发人员:王曙燕,孙家泽,权雅菲,
申请(专利权)人:西安邮电大学,
类型:发明
国别省市:陕西,61
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。