CN113434385A - 一种针对软件模型检查工具的测试用例自动生成方法和系统 - Google Patents

一种针对软件模型检查工具的测试用例自动生成方法和系统 Download PDF

Info

Publication number
CN113434385A
CN113434385A CN202110575863.1A CN202110575863A CN113434385A CN 113434385 A CN113434385 A CN 113434385A CN 202110575863 A CN202110575863 A CN 202110575863A CN 113434385 A CN113434385 A CN 113434385A
Authority
CN
China
Prior art keywords
program
branch
software model
running
source code
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.)
Pending
Application number
CN202110575863.1A
Other languages
English (en)
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.)
East China Normal University
Original Assignee
East China Normal 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 East China Normal University filed Critical East China Normal University
Priority to CN202110575863.1A priority Critical patent/CN113434385A/zh
Publication of CN113434385A publication Critical patent/CN113434385A/zh
Pending legal-status Critical Current

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/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)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种针对软件模型检查工具的测试用例自动生成方法,所述方法包括如下步骤:使用Clang编译器前端对待测试的源代码进行分析,根据分析结果插入用于记录程序运行状况的桩语句,不改变程序原本的逻辑;编译并运行程序,获取程序运行过程中的状态;对源程序进行处理,将程序实际的运行状态作为待检查的条件判断,嵌入源代码产生测试用例;以所述得到的测试用例运行软件模型检查工具,得到检查工具在该测试上正确与否的结果。本发明还公开了实现上述方法的系统。本发明能够根据已有的程序源代码自动生成适用于软件模型检查工具的测试用例,能够自动化地发现相关工具中隐藏的软件缺陷。

Description

一种针对软件模型检查工具的测试用例自动生成方法和系统
技术领域
本发明属于软件分析技术领域,涉及一种针对软件模型检查工具的测试用例自动生成方法和系统。
背景技术
软件模型检查工具是通过形式化技术验证软件正确性的工具,是保证高可信领域软件可靠性的重要手段。其算法本身的正确性由数学证明保证,而工具的可靠性通过大量的测试来提升。软件模型检查工具接收程序源代码,判断源代码中的某些条件是否能得到满足。工具输入的源代码需要特殊处理,包含待检查的条件判断。例如,ASSERT语句为软件模型检查工具可处理的条件判断,若ASSERT语句中的条件判断为假,则工具应返回“无法满足”的结果;反之,如ASSERT语句中的条件判断始终为真,则工具应返回“满足”的结果。
由于工具实现中的缺陷,软件模型检查工具的可靠性在实际使用中不总能得到保证。同时,针对工具的测试用例也需要经过特殊的处理,需要拥有相关领域知识的开发者手动编写,数量不足以覆盖大多数的问题。
发明内容
为了解决现有技术存在的不足,本发明的目的是提供一种针对软件模型检查工具的测试用例自动生成方法。本发明使用广泛存在且未经处理的程序代码,自动生成针对软件模型检查工具的测试用例,并能有效发现软件模型检查工具中隐藏的错误,提升软件模型检查工具的可靠性。
本发明接收现存的通用程序源代码,对其编译运行并进行分析,经过处理之后得到可用于软件模型检查工具测试的测试用例,并能有效发现工具中的问题,无需专业人员针对软件模型检查工具编写。
本发明提出了一种针对软件模型检查工具的测试用例自动生成方法,所述方法具体包括如下步骤:
步骤一、使用Clang编译器前端对待测试的源代码进行分析,根据分析结果插入用于记录程序运行状况的桩语句,不改变程序原本的逻辑;
步骤二、编译并运行步骤一中插入桩语句后的程序,获得程序运行过程中的状态;
步骤三、对源程序进行处理,将程序实际的运行状态作为待检查的条件判断,嵌入源代码产生测试用例,使软件模型检查工具能够判断自身结果是否与实际运行结果一致;
步骤四、以步骤三得到的测试用例运行软件模型检查工具,得到工具在该测试用例上正确与否的结果。
所述软件模型检查工具包括CBMC、CPAChecker、SeaHorn及其他针对C语言的软件模型检查工具。
所述步骤一进一步包括以下子步骤:
步骤1.1、基于控制流分析的技术和Clang编译器前端对源代码进行分析,得到包括源代码中各个分支、循环的位置和数量信息的分析结果;
步骤1.2、根据所述分析结果,在源代码对应位置插入桩语句;
其中,所述Clang编译器前端为Clang编译器的前端解析工具,可用于实现针对C程序的分析算法及工具;
所述待测试的源代码来源于可编译及运行的通用C源代码;
所述桩语句及其插入位置为:1)对于源代码中的每一个循环,在程序开头插入1整形变量,用于记录循环运行的次数,在循环内根据不同的策略更新变量的值;2)对于源代码中的每一个分支判断,在程序开头插入2整形变量,用于记录各分支运行的次数,在各分支内根据不同的策略更新变量的值;3)对于源代码中的每一个退出点,插入打印语句,使程序在退出前输出所述插入的记录变量。
所述步骤二进一步包括以下子步骤:
步骤2.1、编译步骤一处理过后的源代码,得到可执行文件;
步骤2.2、运行获得的可执行文件,获得所述步骤一中插入的每个记录变量的值;
其中,所述编译运行中使用的编译器为GCC编译器;
所述记录变量的值包括通过所述步骤一所插入桩语句获得的源代码中每个循环、分支判断的运行次数。
步骤三中,所述对源程序的处理为根据所述步骤二中获得的状态,插入ASSERT语句,用于构建符合程序实际执行状态的,可用于软件模型检查工具的测试用例;
其中,所述ASSERT语句为源代码中软件模型检查工具需要检查的条件;
以ASSERT(b)为例,b为表达式。软件模型检查工具检查表达式b的值是否在程序执行的过程中一直能得到满足。如程序运行过程中b一直为真,则软件模型检查工具返回“可满足”的结果;如程序运行过程中b无法一直为真,则软件模型检查工具返回“不可满足”的结果;
所述所插入ASSERT语句的判断条件在程序实际执行状态范围内,因此实现正确的软件模型检查工具应始终返回“可满足”的结果。
所述ASSERT语句的插入通过三种策略,包括:分支可达性策略、分支计数策略、分支计数范围策略;
所述分支可达性策略是指对于程序中每一个分支判断,在程序开始创建2整型变量,用于记录各分支判断是否被执行;在各分支内将对应的变量设为1;在程序退出点插入ASSERT语句,检查的表达式为根据程序实际执行结果得到的各分支执行与否信息构建的条件语句;
所述分支计数策略是指对于程序中每一个分支判断,在程序开始创建2整型变量,用于记录各分支判断被执行的次数;在各分支内将对应的变量增加1;在程序退出点插入ASSERT语句,检查的表达式为根据程序实际执行结果得到的各分支执行次数信息构建的条件语句;
所述分支计数范围策略是指对于程序中每一个分支判断,在程序开始创建2整型变量,用于记录各分支判断被执行的次数;在各分支内将对应的变量增加1;在各分支内插入ASSERT语句,检查的表达式为当前分支执行次数是否在程序实际执行次数范围内。
所述步骤四进一步包括以下子步骤:
步骤4.1、使用软件模型检查工具运行所述步骤三得到的含有ASSERT语句的C源代码测试用例;
步骤4.2、检查软件模型检查工具返回的结果,如结果为“不满足”,则说明当前所用软件模型检查工具中含有软件缺陷。
所述满足软件模型检查工具要求的测试用例通过插入桩语句获取程序运行中的状态,而后插入符合实际运行状态的ASSERT语句进行构建。
本发明还提供了一种实现上述方法的系统,所述系统包括:插桩模块、状态获取模块、测试用例生成模块、测试模块。
其中,所述插桩模块用于接收可执行的C程序,对C程序插入记录及输出程序内循环及分支运行次数的桩语句并不改变程序实际功能;
所述状态获取模块用于通过编译运行所述插桩模块产生的源代码,获取代码运行过程中的状态;
所述测试用例生成模块用于根据所述状态获取模块中获得的状态,插入检查条件始终得到满足的ASSERT语句,使待测软件模型检查工具在生成的测试用例上应返回“可满足”的结果;
所述测试模块用于使用所述生成的测试用例运行软件模型检查工具,检查工具实现中是否含有缺陷;若检查工具返回“不可满足”的结果,则说明该检查工具实现中含有缺陷。
本发明的有益效果包括:目前,软件模型检查的测试需要由专业人员编写。本发明通过软件分析技术,根据已有的程序源代码自动生成适用于软件模型检查工具的测试用例,能够自动化地发现相关工具中隐藏的软件缺陷。在实验中,本发明在主流的三个软件模型检查工具(CBMC、CPAChecker、SeaHorn)中发现了62个新的软件缺陷。
附图说明
图1是本发明针对软件模型检查工具的测试用例自动生成方法的流程图。
具体实施方式
结合以下具体实施例和附图,对本发明作进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。
本发明包括三种不同的生成策略,不同的生成策略能够产生不同的测试用例,从而测试待测工具的不同功能。
本发明提供了一种针对软件模型检查工具的测试用例自动生成方法,所述软件模型检查工具包括CBMC、CPAChecker、SeaHorn及其他针对C语言的软件模型检查工具。
所述针对软件模型检查工具的测试用例自动生成方法具体包括如下步骤:
步骤一、使用Clang编译器前端对待测试的源代码进行分析,根据分析结果插入用于记录程序运行状况的桩语句,不改变程序原本的逻辑;
所述步骤一进一步包括以下子步骤:
步骤1.1、基于控制流分析的技术和Clang编译器前端对源代码进行分析,得到包括源代码中各个分支、循环的位置和数量信息的分析结果;
步骤1.2、根据所述分析结果,在源代码对应位置插入桩语句;
其中,所述Clang编译器前端为Clang编译器的前端解析工具,可用于实现针对C程序的分析算法及工具;
所述待测试的源代码来源于可编译及运行的通用C源代码;
所述桩语句及其插入位置为:1)对于源代码中的每一个循环,在程序开头插入1整形变量,用于记录循环运行的次数,在循环内根据不同的策略更新变量的值;2)对于源代码中的每一个分支判断,在程序开头插入2整形变量,用于记录各分支运行的次数,在各分支内根据不同的策略更新变量的值;3)对于源代码中的每一个退出点,插入打印语句,使程序在退出前输出所述插入的记录变量。
步骤二、编译并运行步骤一中插入桩语句后的程序,获得程序运行过程中的状态;
所述步骤二进一步包括以下子步骤:
步骤2.1、编译步骤一处理过后的源代码,得到可执行文件;
步骤2.2、运行获得的可执行文件,获得前述所述步骤一种中插入的每个记录变量的值。;
其中,所述编译运行中使用的编译器为GCC编译器;
所述记录变量的值包括通过所述步骤一所插入桩语句获得的源代码中每个循环、分支判断的运行次数。
步骤三、对源程序进行处理,将程序实际的运行状态作为待检查的条件判断,嵌入源代码产生测试用例,使软件模型检查工具能够判断自身结果是否与实际运行结果一致;
步骤三中,所述对源程序的处理为根据所述步骤二中获得的状态,插入ASSERT语句,用于构建符合程序实际执行状态的,可用于软件模型检查工具的测试用例;
其中,所述ASSERT语句为源代码中软件模型检查工具需要检查的条件;
以ASSERT(b)为例,b为表达式。软件模型检查工具检查表达式b的值是否在程序执行的过程中一直能得到满足。如程序运行过程中b一直为真,则软件模型检查工具返回“可满足”的结果;如程序运行过程中b无法一直为真,则软件模型检查工具返回“不可满足”的结果;
所述所插入ASSERT语句的判断条件在程序实际执行状态范围内,因此实现正确的软件模型检查工具应始终返回“可满足”的结果。
所述ASSERT语句的插入通过三种策略,包括:分支可达性策略、分支计数策略、分支计数范围策略;
所述分支可达性策略是指对于程序中每一个分支判断,在程序开始创建2整型变量,用于记录各分支判断是否被执行;在各分支内将对应的变量设为1;在程序退出点插入ASSERT语句,检查的表达式为根据程序实际执行结果得到的各分支执行与否信息构建的条件语句;
所述分支计数策略是指对于程序中每一个分支判断,在程序开始创建2整型变量,用于记录各分支判断被执行的次数;在各分支内将对应的变量增加1;在程序退出点插入ASSERT语句,检查的表达式为根据程序实际执行结果得到的各分支执行次数信息构建的条件语句;
所述分支计数范围策略是指对于程序中每一个分支判断,在程序开始创建2整型变量,用于记录各分支判断被执行的次数;在各分支内将对应的变量增加1;在各分支内插入ASSERT语句,检查的表达式为当前分支执行次数是否在程序实际执行次数范围内。
步骤四、以步骤三得到的测试用例运行软件模型检查工具,得到工具在该测试用例上正确与否的结果。
所述步骤四进一步包括以下子步骤:
步骤4.1、使用软件模型检查工具运行所述步骤三得到的含有ASSERT语句的C源代码测试用例;
步骤4.2、检查软件模型检查工具返回的结果,如结果为“不满足”,则说明当前所用软件模型检查工具中含有软件缺陷。
本发明还提供了一种实现上述方法的系统,所述系统包括:插桩模块、状态获取模块、测试用例生成模块、测试模块。
其中,所述插桩模块,用于接收可执行的C程序,对C程序插入记录及输出程序内循环及分支运行次数的桩语句并不改变程序实际功能;
所述状态获取模块,用于通过编译运行前述所述插桩模块产生的源代码,获取代码运行过程中的状态;
所述测试用例生成模块,用于根据前述所述状态获取模块中获得的状态,插入检查条件始终得到满足的ASSERT语句,使待测软件模型检查工具在生成的测试用例上应返回“可满足”的结果;
所述测试模块,用于使用前述所述生成的测试用例运行软件模型检查工具,如工具返回“不可满足”的结果,则说明该检查工具实现中是否含有缺陷;若检查工具返回“不可满足”的结果,则说明该检查工具实现中含有缺陷。
实施例1通用工作流程
步骤1、选择一段可正常编译执行源程序代码,所述代码如下:
Figure BDA0003084334570000061
步骤2、使用基于Clang编译器实现的分析插桩工具对源代码进行分析,插入获取程序运行状态的代码(具体插入内容根据策略选择改变,此处仅说明工作流程)。本实施例新增了名为stat的变量,用于记录程序中分支是否被运行,并在对应分支中将变量设为1。在程序退出前,插入printf语句将变量的值输出,以便后续步骤中使用程序的运行状态;所述运行状态包括程序中各个分支是否被实际执行。
Figure BDA0003084334570000062
Figure BDA0003084334570000071
步骤3、编译并执行步骤2生成的代码,得到stat实际的值为1。
步骤4、处理程序代码,增加软件模型检查工具需要读取将其变为软件模型检查工具能够处理的检查条件:
Figure BDA0003084334570000072
步骤5、将步骤4得到的源代码作为输入,运行软件模型检查工具,得到工具针对程序状态的判断结果。如工具认为该代码结果为“无法满足”,即工具结果与实际运行结果不一致,说明工具中有隐藏的缺陷。
实施例2分支可达性策略工作流程
分支可达性策略追踪程序中每个分支的到达情况,具体实施方法如下:
步骤1、选择一段可正常编译执行源程序代码,所述代码如下:
Figure BDA0003084334570000073
Figure BDA0003084334570000081
步骤2、针对不同分支的可达性,插入状态获取代码如下,根据编译运行的结果可了解具体分支的到达情况。
Figure BDA0003084334570000082
步骤3、编译运行,得到br1与br2的值分别为1和0。
步骤4、根据运行结果生成测试用例,结果如下:
Figure BDA0003084334570000083
Figure BDA0003084334570000091
步骤5、使用测试用例测试相关工具。
实施例3分支计数策略工作流程
分支计数策略追踪程序中每个分支的到达的次数,具体实施方法如下:
步骤1、选择一段可正常编译执行源程序代码,所述代码如下:
Figure BDA0003084334570000092
步骤2、针对不同分支计数的策略,插入状态获取代码如下,根据编译运行的结果可了解具体分支的执行次数。
Figure BDA0003084334570000093
Figure BDA0003084334570000101
步骤3、编译运行,得到br1与br2的值分别为1和0。
步骤4、根据运行结果生成测试用例,结果如下:
Figure BDA0003084334570000102
步骤5、使用测试用例测试相关工具。
实施例4分支计数范围策略工作流程
分支计数范围策略追踪程序中每个分支的到达次数,并在程序运行的整个过程中进行检查,具体实施方法如下:
步骤1、选择一段可正常编译执行源程序代码,所述代码如下:
Figure BDA0003084334570000103
Figure BDA0003084334570000111
步骤2、针对不同分支的计数范围策略,插入状态获取代码如下,根据编译运行的结果可了解具体分支的计数范围。
Figure BDA0003084334570000112
步骤3、编译运行,得到br1的值为10。
步骤4、根据运行结果生成测试用例,结果如下:
Figure BDA0003084334570000113
步骤5、使用测试用例测试相关工具。
本发明提供的实现在三个主流的软件模型检查工具中发现了62个新的软件缺陷,以本发明在CPAChecker中基于分支计数策略发现的一个软件缺陷为例,说明本发明的实施方案。
实施例5 CPAChecker缺陷例
步骤1、选择一段可正常编译执行源程序代码,所述代码如下:
Figure BDA0003084334570000121
步骤2、本实施例对应的软件缺陷基于分支计数策略,因此本实施例基于,插入状态获取代码如下,根据编译运行的结果可了解具体分支的计数范围:
Figure BDA0003084334570000122
Figure BDA0003084334570000131
步骤3、编译运行,得到br1、br2和br3的值分别为3、1和0。
步骤4、根据运行结果生成测试用例,结果如下:
Figure BDA0003084334570000132
步骤5、使用测试用例测试相关工具。此实施例中的测试用例通过CPAChecker返回的结果为“无法满足”,不符合程序运行的实际情况,因此本测试用例发现了CPAChecker中一个会导致结果错误的软件缺陷。
本发明的保护内容不局限于以上实施例。在不背离本发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。

Claims (10)

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语句的判断条件在程序实际执行状态范围内,因此实现正确的软件模型检查工具应始终返回“可满足”的结果。
6.如权利要求5所述的方法,其特征在于,所述ASSERT语句的插入通过三种策略,包括:分支可达性策略、分支计数策略、分支计数范围策略;
所述分支可达性策略是指对于程序中每一个分支判断,在程序开始创建2整型变量,用于记录各分支判断是否被执行;在各分支内将对应的变量设为1;在程序退出点插入ASSERT语句,检查的表达式为根据程序实际执行结果得到的各分支执行与否信息构建的条件语句;
所述分支计数策略是指对于程序中每一个分支判断,在程序开始创建2整型变量,用于记录各分支判断被执行的次数;在各分支内将对应的变量增加1;在程序退出点插入ASSERT语句,检查的表达式为根据程序实际执行结果得到的各分支执行次数信息构建的条件语句;
所述分支计数范围策略是指对于程序中每一个分支判断,在程序开始创建2整型变量,用于记录各分支判断被执行的次数;在各分支内将对应的变量增加1;在各分支内插入ASSERT语句,检查的表达式为当前分支执行次数是否在程序实际执行次数范围内。
7.如权利要求1所述的方法,其特征在于,所述步骤四进一步包括以下子步骤:
步骤4.1、使用软件模型检查工具运行所述步骤三得到的含有ASSERT语句的C源代码测试用例;
步骤4.2、检查软件模型检查工具返回的结果,如结果为“不满足”,则说明当前所用软件模型检查工具中含有软件缺陷。
8.如权利要求1所述的方法,其特征在于,所述满足软件模型检查工具要求的测试用例通过插入桩语句获取程序运行中的状态,而后插入符合实际运行状态的ASSERT语句进行构建。
9.一种实现如权利要求1-8之任一项所述方法的系统,其特征在于,所述系统包括:插桩模块、状态获取模块、测试用例生成模块、测试模块。
10.如权利要求9所述的系统,其特征在于,所述插桩模块用于接收可执行的C程序,对C程序插入记录及输出程序内循环及分支运行次数的桩语句并不改变程序实际功能;
所述状态获取模块用于通过编译运行所述插桩模块产生的源代码,获取代码运行过程中的状态;
所述测试用例生成模块用于根据所述状态获取模块中获得的状态,插入检查条件始终得到满足的ASSERT语句,使待测软件模型检查工具在生成的测试用例上返回“可满足”的结果;
所述测试模块用于使用所述生成的测试用例运行软件模型检查工具,检查工具实现中是否含有缺陷。
CN202110575863.1A 2021-05-26 2021-05-26 一种针对软件模型检查工具的测试用例自动生成方法和系统 Pending CN113434385A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110575863.1A CN113434385A (zh) 2021-05-26 2021-05-26 一种针对软件模型检查工具的测试用例自动生成方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110575863.1A CN113434385A (zh) 2021-05-26 2021-05-26 一种针对软件模型检查工具的测试用例自动生成方法和系统

Publications (1)

Publication Number Publication Date
CN113434385A true CN113434385A (zh) 2021-09-24

Family

ID=77802990

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110575863.1A Pending CN113434385A (zh) 2021-05-26 2021-05-26 一种针对软件模型检查工具的测试用例自动生成方法和系统

Country Status (1)

Country Link
CN (1) CN113434385A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114185324A (zh) * 2021-10-25 2022-03-15 华能澜沧江水电股份有限公司 自动发电控制程序的异常点检测方法、装置及计算机设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100115494A1 (en) * 2008-11-03 2010-05-06 Gorton Jr Richard C System for dynamic program profiling
CN101833500A (zh) * 2010-04-07 2010-09-15 南京航空航天大学 一种基于Agent的嵌入式软件智能测试方法
CN106294148A (zh) * 2016-08-08 2017-01-04 清华大学 基于扩展符号变迁系统的c语言程序软件验证方法及装置
CN109144882A (zh) * 2018-09-19 2019-01-04 哈尔滨工业大学 一种基于程序不变量的软件故障定位方法及装置
KR102111886B1 (ko) * 2019-08-12 2020-05-15 한국과학기술원 Arm 아키텍쳐 상의 동적 프로그램 수정 탐지 기술

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100115494A1 (en) * 2008-11-03 2010-05-06 Gorton Jr Richard C System for dynamic program profiling
CN101833500A (zh) * 2010-04-07 2010-09-15 南京航空航天大学 一种基于Agent的嵌入式软件智能测试方法
CN106294148A (zh) * 2016-08-08 2017-01-04 清华大学 基于扩展符号变迁系统的c语言程序软件验证方法及装置
CN109144882A (zh) * 2018-09-19 2019-01-04 哈尔滨工业大学 一种基于程序不变量的软件故障定位方法及装置
KR102111886B1 (ko) * 2019-08-12 2020-05-15 한국과학기술원 Arm 아키텍쳐 상의 동적 프로그램 수정 탐지 기술

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CHENGYU ZHANG, TING SU, YICHEN YAN,ETC: "Finding and Understanding Bugs in Software Model Checkers", 《PROCEEDINGS OF THE 2019 27TH ACM JOINT MEETING ON EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114185324A (zh) * 2021-10-25 2022-03-15 华能澜沧江水电股份有限公司 自动发电控制程序的异常点检测方法、装置及计算机设备
CN114185324B (zh) * 2021-10-25 2024-04-02 华能澜沧江水电股份有限公司 自动发电控制程序的异常点检测方法、装置及计算机设备

Similar Documents

Publication Publication Date Title
US20060150160A1 (en) Software analyzer
US8312440B2 (en) Method, computer program product, and hardware product for providing program individuality analysis for source code programs
CN101739339B (zh) 一种基于程序动态依赖关系的软件故障定位方法
US8645761B2 (en) Precise fault localization
CN105302719B (zh) 一种变异测试方法及装置
US20180165182A1 (en) Automated software program repair
CN108804326B (zh) 一种软件代码自动检测方法
CN104156311B (zh) 一种基于cpu模拟器的嵌入式c语言目标码级单元测试方法
US20060167866A1 (en) Automatic inspection tool
Mantere et al. Comparison of static code analysis tools
CN107329889B (zh) 一种c编译器自动化测试的方法
CN113434385A (zh) 一种针对软件模型检查工具的测试用例自动生成方法和系统
CN101551773B (zh) 符号错误和赋值截断的二进制漏洞检测定位装置
CN107291622B (zh) C25汇编代码静态分析方法
CN106557412A (zh) 一种模糊测试的方法及装置
US20210318946A1 (en) Generation of code coverage information during testing of a code sequence
CN113836023B (zh) 一种基于体系结构交叉检查的编译器安全性测试方法
Barabanova et al. Modeling and Investigating a Race Condition Detection Algorithm for Multithread Computational Systems
CN115357494A (zh) 功能覆盖率代码的自动生成方法及装置
Wuisang et al. An evaluation of the effectiveness of openai's chatGPT for automated python program bug fixing using quixbugs
Wang et al. Invariant based fault localization by analyzing error propagation
CN114579431A (zh) 一种基于混合分析的除零错误检测方法
CN113282495A (zh) 一种基于轨迹监控的Java软件故障定位方法
Hazan et al. The location of errors in functional programs
CN109542698A (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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20210924