【技术实现步骤摘要】
一种针对软件模型检查工具的测试用例自动生成方法和系统
[0001]本专利技术属于软件分析
,涉及一种针对软件模型检查工具的测试用例自动生成方法和系统。
技术介绍
[0002]软件模型检查工具是通过形式化技术验证软件正确性的工具,是保证高可信领域软件可靠性的重要手段。其算法本身的正确性由数学证明保证,而工具的可靠性通过大量的测试来提升。软件模型检查工具接收程序源代码,判断源代码中的某些条件是否能得到满足。工具输入的源代码需要特殊处理,包含待检查的条件判断。例如,ASSERT语句为软件模型检查工具可处理的条件判断,若ASSERT语句中的条件判断为假,则工具应返回“无法满足”的结果;反之,如ASSERT语句中的条件判断始终为真,则工具应返回“满足”的结果。
[0003]由于工具实现中的缺陷,软件模型检查工具的可靠性在实际使用中不总能得到保证。同时,针对工具的测试用例也需要经过特殊的处理,需要拥有相关领域知识的开发者手动编写,数量不足以覆盖大多数的问题。
技术实现思路
[0004]为了解决现有技术存在的 ...
【技术保护点】
【技术特征摘要】
1.一种针对软件模型检查工具的测试用例自动生成方法,其特征在于,所述方法包括如下步骤:步骤一、使用Clang编译器前端对待测试的源代码进行分析,根据分析结果插入用于记录程序运行状况的桩语句,不改变程序原本的逻辑;步骤二、编译并运行步骤一中插入桩语句后的程序,获得程序运行过程中的状态;步骤三、对源程序进行处理,将程序实际的运行状态作为待检查的条件判断,嵌入源代码产生测试用例,使软件模型检查工具能够判断自身结果是否与实际运行结果一致;步骤四、以步骤三得到的测试用例运行软件模型检查工具,得到检查工具在该测试用例上正确与否的结果。2.如权利要求1所述的方法,其特征在于,所述软件模型检查工具为针对C语言的软件模型检查工具,包括CBMC、CPAChecker、SeaHorn。3.如权利要求1所述的方法,其特征在于,所述步骤一进一步包括以下子步骤:步骤1.1、基于控制流分析的技术和Clang编译器前端对源代码进行分析,得到包括源代码中各个分支、循环的位置和数量信息的分析结果;步骤1.2、根据所述分析结果,在源代码对应位置插入桩语句;其中,所述Clang编译器前端为Clang编译器的前端解析工具,用于实现针对C程序的分析算法及工具;所述待测试的源代码来源于可编译及运行的通用C源代码;所述桩语句及其插入位置为:1)对于源代码中的每一个循环,在程序开头插入1整形变量,用于记录循环运行的次数,在循环内根据不同的策略更新变量的值;2)对于源代码中的每一个分支判断,在程序开头插入2整形变量,用于记录各分支运行的次数,根据不同的策略更新变量的值;3)对于源代码中的每一个退出点,插入打印语句,使程序在退出前输出所述插入的记录变量。4.如权利要求1所述的方法,其特征在于,所述步骤二进一步包括以下子步骤:步骤2.1、编译步骤一处理过后的源代码,得到可执行文件;步骤2.2、运行获得的可执行文件,获得所述步骤一中插入的每个记录变量的值;其中,所述编译运行中使用的编译器为GCC编译器;所述记录变量的值包括通过所述步骤一所插入桩语句获得的源代码中每个循环、分支判断的运行次数。5.如权利要求1所述的方法,其特征在于,步骤三中,所述对源程序的处理为根据所述步骤二中获得的状态,插入ASSERT语句,用于构建符合程序实际执行状态的,可用于软件模型检查工具的测试用例;其中,所述ASSERT语句为源代码中软件模型检查工具需要检查的条件;所述所插入ASSERT语句的判断...
【专利技术属性】
技术研发人员:严懿宸,张枨宇,苏亭,蒲戈光,
申请(专利权)人:华东师范大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。