缺陷检测方法及缺陷检测装置制造方法及图纸

技术编号:21059856 阅读:17 留言:0更新日期:2019-05-08 06:47
本发明专利技术公开了一种缺陷检测方法及缺陷检测装置。该缺陷检测方法包括:确定产生缺陷的源代码语句;根据产生缺陷的源代码语句生成对应的代码路径;执行所述代码路径,生成执行结果;根据执行结果,判断所述缺陷是否为误报缺陷。本发明专利技术所提供的缺陷检测方法及缺陷检测装置,极大减少了缺陷检测的工作量,提高了缺陷检测的工作效率,同时避免了状态空间爆炸的问题。

【技术实现步骤摘要】
缺陷检测方法及缺陷检测装置
本专利技术涉及计算机领域,特别涉及一种缺陷检测方法及缺陷检测装置。
技术介绍
软件测试从是否运行程序来看,主要分为静态测试和动态测试。其中,静态测试不需要运行源代码即可对程序代码进行缺陷检测,因此静态测试的检测结果中往往包含了大量的误报缺陷;动态测试需要实际运行源代码,如果系统庞大,则存在路径爆炸的可能性。现有的软件测试都是单纯的从静态测试或者动态测试的角度去思考问题,针对静态测试方法,存在大量误报缺陷,而该误报缺陷往往需要人工方式进行确认,增加了人工确认的工作量,降低了静态缺陷检测的效率;针对动态测试方法,由于需要运行所有源代码,不仅增加缺陷检测的工作量,还可能存在状态空间爆炸的问题。
技术实现思路
本专利技术旨在至少解决现有技术中存在的技术问题之一,提供一种缺陷检测方法及缺陷检测装置。为实现上述目的,本专利技术提供一种缺陷检测方法,该缺陷检测方法包括:确定产生缺陷的源代码语句;根据产生缺陷的源代码语句生成对应的代码路径;执行所述代码路径,生成执行结果;根据执行结果,判断所述缺陷是否为误报缺陷。可选地,所述执行结果包括用于确定所述代码路径可正常执行的信息或者用于确定所述代码路径不可正常执行的信息;所述根据执行结果,判断所述缺陷是否为误报缺陷包括:若所述执行结果包括用于确定所述代码路径可正常执行的信息时,判断出所述缺陷为误报缺陷;若所述执行结果包括用于确定所述代码路径不可正常执行的信息时,判断出所述缺陷为非误报缺陷。可选地,所述判断出所述缺陷为非误报缺陷之后还包括:判断预先建立的缺陷数据库中是否存在所述缺陷;若判断出预先建立的缺陷数据库中不存在所述缺陷时,则更新所述缺陷数据库。可选地,所述确定产生缺陷的源代码语句之前还包括:采用静态缺陷检测技术,对所述源代码进行扫描。为实现上述目的,本专利技术提供了一种缺陷检测装置,该缺陷检测装置包括:缺陷确定模块,用于确定产生缺陷的源代码语句;路径生成模块,用于根据产生缺陷的源代码语句生成对应的代码路径;路径执行模块,用于执行所述代码路径,生成执行结果;误报判定模块,用于根据执行结果,判断所述缺陷是否为误报缺陷。可选地,所述执行结果包括用于确定所述代码路径可正常执行的信息或者用于确定所述代码路径不可正常执行的信息;所述误报判定模块具体用于若所述执行结果包括用于确定所述代码路径可正常执行的信息时,判断出所述缺陷为误报缺陷;若所述执行结果包括用于确定所述代码路径不可正常执行的信息时,判断出所述缺陷为非误报缺陷。可选地,该缺陷检测装置还包括判断模块和更新模块;所述判断模块用于若误报判定模块判断出所述缺陷为非误报缺陷时,判断预先建立的缺陷数据库中是否存在所述缺陷;所述更新模块用于若判断模块判断出预先建立的缺陷数据库中不存在所述缺陷时,更新所述缺陷数据库。可选地,该缺陷检测装置还包括扫描模块;所述扫描模块用于采用静态缺陷检测技术,对所述源代码进行扫描。本专利技术的有益效果:本专利技术所提供的缺陷检测方法及缺陷检测装置的技术方案中,根据产生缺陷的源代码语句生成对应的代码路径,执行所述代码路径,生成执行结果,根据执行结果,判断所述缺陷是否为误报缺陷,极大减少了缺陷检测的工作量,提高了缺陷检测的工作效率,同时避免了状态空间爆炸的问题。附图说明图1为本专利技术实施例一提供的一种缺陷检测方法的流程图;图2为本专利技术实施例二提供的一种缺陷检测方法的流程图;图3为一种状态机描述示意图;图4为另一种状态机描述示意图;图5为本专利技术实施例三提供的一种缺陷检测装置的结构示意图。具体实施方式为使本领域的技术人员更好地理解本专利技术的技术方案,下面结合附图对本专利技术提供的缺陷检测方法及缺陷检测装置进行详细描述。图1为本专利技术实施例一提供的一种缺陷检测方法的流程图,如图1所示,该缺陷检测方法包括:步骤101、确定产生缺陷的源代码语句。步骤102、根据产生缺陷的源代码语句生成对应的代码路径。步骤103、执行所述代码路径,生成执行结果。步骤104、根据执行结果,判断所述缺陷是否为误报缺陷。本实施例所提供的缺陷检测方法的技术方案中,根据产生缺陷的源代码语句生成对应的代码路径,执行所述代码路径,生成执行结果,根据执行结果,判断所述缺陷是否为误报缺陷,极大减少了缺陷检测的工作量,提高了缺陷检测的工作效率,同时避免了状态空间爆炸的问题。图2为本专利技术实施例二提供的一种缺陷检测方法的流程图,如图2所示,该缺陷检测方法包括:步骤201、采用静态缺陷检测技术,对所述源代码进行扫描。具体地,采用静态缺陷检测技术,根据预先建立的缺陷数据库中的缺陷对源代码进行扫描。在进行缺陷检测之前,需要获取软件的源程序代码,例如,可以通过软件开发人员手动输入或者上传的方式获取。获取源代码后,开始逐行进行扫描,以检测源代码中是否存在缺陷。步骤202、确定产生缺陷的源代码语句。具体地,在扫描过程中,每检测出一个缺陷,即确定出产生缺陷的源代码语句,则对产生缺陷的源代码语句进行标记,以记录产生缺陷的源代码语句所在的代码行。本实施例中,每检测到一个缺陷,则执行一次步骤203,或者,等检测完源代码中存在的所有缺陷之后,执行步骤203;若未检测出源代码中存在缺陷时,则结束流程。本实施例中,缺陷采用XML文件的形式进行描述。本实施例中,预先读取缺陷数据库中的XML文件,对缺陷进行建模,建模工具采用的是状态机,即预先将缺陷数据库中的缺陷采用状态机的形式进行建模。在步骤201的扫描过程中,按照从程序入口开始的程序执行流程对源代码进行逐行扫描,以逐行进行缺陷检测,若扫描到某一行源代码语句,状态机进入错误状态时,说明此处存在一个缺陷,从而确定出产生缺陷的源代码语句。具体地,从缺陷状态机的开始(start)状态开始,每扫描一行代码,都会判断缺陷状态机的状态变迁条件是否满足,如果满足,则判断变迁的下一个状态是否是错误(error)状态,如果是,则报告此处存在一个缺陷,反之状态不变或者进入下一个正常的状态。本实施例中,所述缺陷包括未初始化变量、空指针引用等软件缺陷。本实施例中,由于采用静态缺陷检测技术,不需要实际执行源代码程序,因此,在扫描过程中,采用区间运算技术对源代码中的变量进行模拟赋值,记录源代码中每个变量的可能取值区间,在后续缺陷确认工作中,即本步骤中,若在该取值区间范围内,使得状态机进入错误(error)状态,说明该变量对应的源代码中存在缺陷。以缺陷包括未初始化变量为例,图3为一种状态机描述示意图,如图3所示,例如,状态机包括6个状态:开始(start)状态、声明(declaration)状态、部分初始化(partinitialize)状态、全部初始化(allinitialize)状态、错误(error)状态和结束(end)状态。以源代码中的数值变量为例,当程序声明一个变量时,状态机自动进入到声明(declaration)状态,在声明状态下的变量随着程序限制条件的增加,不断缩小其取值范围,例如,变量为整数型变量x,其初始状态是负无穷至正无穷,当遇到程序限制条件时,比如程序限制条件为x>5,则此时变量x的取值范围缩小为5至正无穷;如果在声明状态下,变量被使用时,则直接报告未初始化变量的错误(error)状态,说明该变量对应的源代码中存在缺陷;如果在声明状态下本文档来自技高网...

【技术保护点】
1.一种缺陷检测方法,其特征在于,包括:确定产生缺陷的源代码语句;根据产生缺陷的源代码语句生成对应的代码路径;执行所述代码路径,生成执行结果;根据执行结果,判断所述缺陷是否为误报缺陷。

【技术特征摘要】
1.一种缺陷检测方法,其特征在于,包括:确定产生缺陷的源代码语句;根据产生缺陷的源代码语句生成对应的代码路径;执行所述代码路径,生成执行结果;根据执行结果,判断所述缺陷是否为误报缺陷。2.根据权利要求1所述的缺陷检测方法,其特征在于,所述执行结果包括用于确定所述代码路径可正常执行的信息或者用于确定所述代码路径不可正常执行的信息;所述根据执行结果,判断所述缺陷是否为误报缺陷包括:若所述执行结果包括用于确定所述代码路径可正常执行的信息时,判断出所述缺陷为误报缺陷;若所述执行结果包括用于确定所述代码路径不可正常执行的信息时,判断出所述缺陷为非误报缺陷。3.根据权利要求2所述的缺陷检测方法,其特征在于,所述判断出所述缺陷为非误报缺陷之后还包括:判断预先建立的缺陷数据库中是否存在所述缺陷;若判断出预先建立的缺陷数据库中不存在所述缺陷时,则更新所述缺陷数据库。4.根据权利要求1所述的缺陷检测方法,其特征在于,所述确定产生缺陷的源代码语句之前还包括:采用静态缺陷检测技术,对所述源代码进行扫描。5.一种缺陷检测装置,其特征在于,包括:缺陷确定模块...

【专利技术属性】
技术研发人员:杨学红
申请(专利权)人:中国联合网络通信集团有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1