一种基于动态符号执行的测试用例生成系统转让专利

申请号 : CN201910824130.X

文献号 : CN110515856B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 史建琦苏亭黄滟鸿战云龙孙文圣郝丽

申请人 : 华东师范大学上海丰蕾信息科技有限公司

摘要 :

本申请公开了一种基于动态符号执行的测试用例生成系统,包括:解析模块,用于根据输入的结构化文本ST源程序得到抽象语法树;控制流图生成模块,用于生成控制流图;动态符号执行模块,用于根据控制流图对变量属性和标准函数进行建模,生成初始测试用例,代入控制流图中执行,得到已覆盖路径,获取约束集,根据约束集确定候选路径池,选择一条作为执行路径;约束求解模块,用于对执行路径上的约束集进行转换后求解,得到新的测试用例;统计和输出模块,用于输出所有测试用例和覆盖率信息。通过使用动态符号执行能够简单,快捷地生成测试用例,减少人为因素导致的不良影响;能够得到高质量的测试用例和正确的覆盖率信息,自动化程度高,人工成本低。

权利要求 :

1.一种基于动态符号执行的测试用例生成系统,其特征在于,包括:

解析模块,用于对输入的结构化文本ST源程序中的标准功能块进行建模,得到等效ST程序,使用编译器解析等效ST程序,得到抽象语法树;所述等效ST程序为,将ST源程序中的标准功能块展开表示;所述使用编译器解析包括:使用MATIEC编译器的词法分析器和语法分析器;

控制流图生成模块,用于遍历抽象语法树,结合ST语言的特性,生成控制流图;

动态符号执行模块,用于根据控制流图,对变量属性和标准函数进行建模,生成初始测试用例,代入控制流图中执行,得到已覆盖路径,获取约束集,根据约束集确定候选路径池,从候选路径池中选择一条作为执行路径;所述动态符号执行模块包括:建模单元,用于对变量属性和标准函数进行建模;执行单元,用于使用控制流图中的变量初始值生成初始测试用例,将初始测试用例代入控制流图中执行,得到已覆盖路径,获取已覆盖路径上的约束集,对约束集的每个约束取反,得到候选路径池;过滤单元,用于根据路径搜索策略,从候选路径池中选择一条候选路径作为执行路径;过滤单元还用于:更新候选路径池中的候选路径和覆盖信息,从更新后的候选路径池中,选择一条候选路径作为新的执行路径;若候选路径池中有新的执行路径,则将新的测试用例代入控制流图中执行;若候选路径池控制流图中无新的执行路径,则循环终止;所述路径搜索策略包括:深度优先搜索和广度优先搜索;

约束求解模块,用于根据建模后的标准功能块、标准函数、变量属性以及转换规则,对执行路径上的约束集进行转换后求解,得到新的测试用例;

统计和输出模块,用于保存一个输入源程序得到的所有测试用例,根据已覆盖路径确定覆盖率信息,输出所有测试用例和覆盖率信息;

覆盖率信息包括:语句覆盖率和分支覆盖率;

动态符号执行模块和约束求解模块,利用控制流图生成基于分支覆盖的测试用例集;

输入包括:控制流图,路径搜索策略,覆盖标准;输出包括:测试用例集和覆盖率。

2.如权利要求1所述的系统,其特征在于,所述候选路径池包括:一条或多条候选路径。

3.如权利要求1所述的系统,其特征在于,所述控制流图包括:变量初始值、赋值约束、执行条件约束和次序约束。

4.如权利要求1所述的系统,其特征在于,所述约束集包括:赋值约束、执行条件约束和次序约束。

5.如权利要求1所述的系统,其特征在于,所述求解,包括:使用可满足性模理论SMT求解器对转换后的约束集求解。

6.如权利要求1所述的系统,其特征在于,所述转换规则根据需要设定。

说明书 :

一种基于动态符号执行的测试用例生成系统

技术领域

[0001] 本申请涉及软件测试领域,尤其涉及一种基于动态符号执行的测试用例生成系统。

背景技术

[0002] 可编程逻辑控制器(Programmable Logic Controller,PLC)作为工业控制系统的核心设备,已经被广泛应用于各种自动化控制领域。随着PLC软件的规模越来越庞大、PLC设备越来越繁多,实际应用中爆发了很多问题,轻则会造成经济损失,重则将影响人身安全。IEC 61508标准明确指出,PLC软件在发布之前必须在功能、结构和安全等方面进行全面测试。软件测试的首要任务就是为待测软件设计测试用例。PLC采用循环执行模式,这使得编写详尽的测试用例尤其具有挑战性。然而,现有的PLC工具的测试方法基本以手动输入的测试用例为主,主要关心用户的需求。该方法通常需要测试人员了解需求规范和程序结构、非常耗时、自动化程度低、人工成本高,容易出现人为因素导致的不良影响,且无法在测试完成后提供有关代码覆盖率的信息。
[0003] 综上所述,需要提供一种用于PLC的简单、快捷、自动化程度高、人工成本低、能够减少人为因素导致的不良影响,且能够在测试完成后提供覆盖率信息的测试用例生成系统。

发明内容

[0004] 为解决以上问题,本申请提出了一种基于动态符号执行的测试用例生成系统,通过根据输入的结构化文本(Structured Text)源程序生成控制流图,使用动态符号执行根据控制流图,生成测试用例,代入控制流图中执行,得到测试用例和覆盖率信息。
[0005] 具体地,本发明提出了一种基于动态符号执行的测试用例生成系统,包括:
[0006] 解析模块,用于对输入的结构化文本ST源程序中的标准功能块进行建模,得到等效ST程序,使用编译器解析等效ST程序,得到抽象语法树;
[0007] 控制流图生成模块,用于遍历抽象语法树,结合ST语言的特性,生成控制流图;
[0008] 动态符号执行模块,用于根据控制流图,对变量属性和标准函数进行建模,生成初始测试用例,代入控制流图中执行,得到已覆盖路径,获取约束集,根据约束集确定候选路径池,从候选路径池中选择一条作为执行路径;
[0009] 约束求解模块,用于根据建模后的标准功能块、标准函数、变量属性以及转换规则,对执行路径上的约束集进行转换后求解,得到新的测试用例;
[0010] 统计和输出模块,用于保存一个输入源程序得到的所有测试用例,根据已覆盖路径确定覆盖率信息,输出所有测试用例和覆盖率信息。
[0011] 优选地,所述动态符号执行模块包括:
[0012] 建模单元,用于对变量属性和标准函数进行建模;
[0013] 执行单元,用于使用控制流图中的变量初始值生成初始测试用例,将初始测试用例代入控制流图中执行,得到已覆盖路径,获取已覆盖路径上的约束集,对约束集的每个约束取反,得到候选路径池;
[0014] 过滤单元,用于根据路径搜索策略,从候选路径池中选择一条候选路径作为执行路径。
[0015] 优选地,所述过滤单元还用于:
[0016] 更新候选路径池中的候选路径和覆盖信息,从更新后的候选路径池中,选择一条候选路径作为新的执行路径。
[0017] 优选地,所述执行单元还用于:
[0018] 若候选路径池中有新的执行路径,则将新的测试用例代入控制流图中执行;
[0019] 若候选路径池控制流图中无新的执行路径,则循环终止。
[0020] 优选地,所述候选路径池包括:一条或多条候选路径。
[0021] 优选地,所述控制流图包括:变量初始值、赋值约束、执行条件约束和次序约束。
[0022] 优选地,所述约束集包括:赋值约束、执行条件约束和次序约束。
[0023] 优选地,所述求解,包括:使用可满足性模理论SMT求解器对转换后的约束集求解。
[0024] 优选地,所述转换规则根据需要设定。
[0025] 优选地,所述路径搜索策略包括:深度优先搜索和广度优先搜索。
[0026] 本申请的优点在于:通过使用输入的结构化文本ST源程序生成控制流图,使用动态符号执行根据控制流图,生成测试用例,代入控制流图中执行,得到已覆盖路径,获取约束集,根据约束集确定候选路径池,从候选路径池中选择一条作为执行路径,对执行路径上的约束集进行转换后求解,得到新的测试用例,能够简单,快捷地生成测试用例,且减少人为因素导致的不良影响;保存一个输入源程序得到的所有测试用例,根据已覆盖路径确定覆盖率信息,输出所有测试用例和覆盖率信息,能够得到所有的测试用例和覆盖率信息,自动化程度高,人工成本低。

附图说明

[0027] 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选事实方案的目的,而并不认为是对本申请的限制。而且在整个附图中,用同样的参考符号表示相同的部件。在附图中:
[0028] 图1是本申请提供的一种基于动态符号执行的测试用例生成系统的示意图;
[0029] 图2是本申请提供的一种基于动态符号执行的测试用例生成系统的结构示意图;
[0030] 图3是本申请提供的一种基于动态符号执行的测试用例生成系统的利用控制流图ST_CFG生成基于分支覆盖的测试用例集的生成算法示意图;
[0031] 图4是本申请提供的一种基于动态符号执行的测试用例生成系统的示例程序图;
[0032] 图5是本申请提供的一种基于动态符号执行的测试用例生成系统的示例程序的控制流图;
[0033] 图6是本申请提供的一种基于动态符号执行的测试用例生成方法的步骤示意图。

具体实施方式

[0034] 下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0035] 根据本申请的实施方式,提出一种基于动态符号执行的测试用例生成系统,如图1所示,包括:
[0036] 解析模块101,用于对输入的结构化文本ST源程序中的标准功能块进行建模,得到等效ST程序,使用编译器解析等效ST程序,得到抽象语法树;
[0037] 控制流图生成模块102,用于遍历抽象语法树,结合ST语言的特性,生成控制流图;
[0038] 动态符号执行模块103,用于根据控制流图,对变量属性和标准函数进行建模,生成初始测试用例,代入控制流图中执行,得到已覆盖路径,获取约束集,根据约束集确定候选路径池,从候选路径池中选择一条作为执行路径;
[0039] 约束求解模块104,用于根据建模后的标准功能块、标准函数、变量属性以及转换规则,对执行路径上的约束集进行转换后求解,得到新的测试用例;
[0040] 统计和输出模块105,用于保存一个输入源程序得到的所有测试用例,根据已覆盖路径确定覆盖率信息,输出所有测试用例和覆盖率信息。
[0041] 候选路径池包括:一条或多条候选路径。
[0042] 控制流图包括:变量初始值、赋值约束、执行条件约束和次序约束等信息。
[0043] 约束集包括:赋值约束、执行条件约束和次序约束。
[0044] 求解,包括:使用可满足性模理论(Satisfiability Modulo Theories,SMT)求解器对转换后的约束集求解。
[0045] SMT求解器包括:Z3求解器和Yice求解器等。
[0046] 转换规则根据需要设定。转换规则在动态符号模块与约束求解模块交互的时候使用,包含标识符、数据类型、操作符和语句的转换。
[0047] 等效ST程序,就是将ST源程序中的标准功能块展开表示。其仍是ST程序,只是原来是一行,现在替换为多行。
[0048] 编译器用于将ST程序解析为抽象语法树。
[0049] 所有测试用例包括:初始测试用例和新生成的所有测试用例。即,根据输入的一个ST源程序生成的所有测试用例。
[0050] 如图2所示,动态符号执行模块包括:
[0051] 建模单元,用于对变量属性和标准函数进行建模;
[0052] 执行单元,用于使用控制流图中的变量初始值生成初始测试用例,将初始测试用例代入控制流图中执行,得到已覆盖路径,获取已覆盖路径上的约束集,对约束集的每个约束取反,得到候选路径池;
[0053] 过滤单元,用于根据路径搜索策略,从候选路径池中选择一条候选路径作为执行路径。
[0054] 路径搜索策略包括:深度优先搜索和广度优先搜索。
[0055] 过滤单元还用于:
[0056] 更新候选路径池中的候选路径和覆盖信息,从更新后的候选路径池中,选择一条候选路径作为新的执行路径。
[0057] 执行单元还用于:
[0058] 若候选路径池中有新的执行路径,则将新的测试用例代入控制流图中执行;
[0059] 若候选路径池控制流图中无新的执行路径,则循环终止。
[0060] 变量属性指:在外部可写的变量属性,它们声明的变量都是测试用例的一部分;当变量属性在外部不可写时,它们声明的变量不能作为测试用例。
[0061] 对变量属性进行建模,即按照变量的属性,对变量进行分类。变量中,有的作为输入变量,有的是内部变量。动态符号执行模块在执行的每个变量时,都会判断其属性,根据变量属性,动态符号执行模块和约束求解模块对变量进行不同的处理。
[0062] ST源程序中的标准函数建模在约束求解模块中有相应的函数对应。
[0063] 覆盖率信息包括:语句覆盖率和分支覆盖率等。根据以下公式进行计算:
[0064] 语句覆盖率=(已覆盖的边数-已覆盖的空边数×2)/(总边数-空边数×2);
[0065] 分支覆盖率=覆盖的分支数/总分支数。
[0066] 结构化文本ST是IEC 61131-3标准的语言之一,IEC 61131-3标准定义了三种程序组织单元(Program Organization Unit,POU)类型:函数(Function,FN)、功能块(Function block,FB)和程序(Program,PROG)。程序PROG通常被用于构成主程序。它是各种变量初始化和上下文声明的初始位置。函数FN和功能块FB可以构成用户子程序。
[0067] 为了更好地理解,下面将对本发明的工作流程进行说明。
[0068] 如图2所示,解析模块对输入的结构化文本ST源程序中的标准功能块进行建模,得到等效ST程序,使用编译器解析等效ST程序,得到抽象语法树。
[0069] 优选地,使用MATIEC编译器的词法分析器和语法分析器将ST程序解析成抽象语法树。
[0070] 遍历获得的抽象语法树,结合ST语言的特性,生成控制流图。
[0071] 控制流图生成模块中的建模单元根据控制流图,对变量属性和标准函数进行建模。执行单元将初始测试用例代入控制流图中执行,得到已覆盖路径。获取已覆盖路径上的约束集,对约束集的每个约束取反,得到候选路径池。过滤单元根据路径搜索策略,从候选路径池中选择一条候选路径作为执行路径。
[0072] 过滤单元还用于,将选择过的候选路径从候选路径池中去除,或对选择过的候选路径进行标记,更新候选路径池中的候选路径和覆盖信息;
[0073] 从更新后的候选路径池中,选择一条候选路径作为新的执行路径。
[0074] 若更新后的候选路径池中,已无候选路径,则无新的执行路径。
[0075] 执行路径从没有被选择过的候选路径中选取。
[0076] 约束求解模块根据建模后的标准功能块、标准函数、变量属性以及转换规则,对执行路径上的约束集进行转换后求解,得到新的测试用例。
[0077] 执行单元还用于,若候选路径池中有新的执行路径,则将新的测试用例代入控制流图中执行;若候选路径池控制流图中无新的执行路径,则循环终止。
[0078] 统计和输出模块保存一个输入源程序得到的所有测试用例,根据已覆盖路径确定覆盖率信息,输出所有测试用例和覆盖率信息。
[0079] 下面,对动态符号执行模块和约束求解模块的交互进行进一步详细说明。
[0080] 在执行模单元使用控制流图中的变量初始值生成初始测试用例之前,假设一开始候选路径为0条,执行模单元使用变量初始值生成初始测试用例,得到一条覆盖的路径p1(路径p1是执行变量初始值形成的),根据p1得到候选路径,假设得到3条,分别是候选路径a、候选路径b和候选路径c。由这3条候选路径组成侯选路径池。
[0081] 过滤单元选择一条候选路径(作为执行路径),假设选择候选路径a。
[0082] 执行模单元获取路径a上的约束集。
[0083] 约束求解模块将从路径a(执行路径)上获取到的约束集进行转换后求解,得到新的测试用例。
[0084] 执行单元将新的测试用例输入到控制流程图中执行,得到一条覆盖的路径p2,根据p2得到更多的候选路径,假设是e、f。
[0085] 过滤单元更新候选路径池。此时,候选路径池中增加了候选路径e和候选路径f,但是候选路径a已经执行过了,所以将候选路径a从候选路径池中去除,或对候选路径a进行标记。
[0086] 过滤单元从选择候选路径池中选择一条之前没选择过的,作为执行路径,假设下一次选择的路径是b。
[0087] 执行模单元获取路径b中的约束集。
[0088] 约束求解模块对获取到的约束集进行转换,求解,得到新的测试用例。以此类推,直到候选路径都没有了,即,无新的执行路径。
[0089] 动态符号执行模块和约束求解模块,根据如图3所示的方法,利用控制流图ST_CFG生成基于分支覆盖的测试用例集。输入包括:G为控制流图ST_CFG,路径搜索策略SS(Search Strategy),覆盖标准CC(Coverage Criteria)。输出包括:测试用例集TS(Test Case Set)和覆盖率CR(Coverage Rate)。
[0090] 约束求解模块中选用Z3求解器为路径约束集求解。首先,未覆盖路径CP(Candidate Paths)设为空,测试用例集TS也为空,迭代次数iter等于1。第6至第12行是一个分支结构,分别表示:如果迭代次数iter等于1,测试用例TC(Test Case)赋值为存储在控制流图的变量Var的初始值(第7行);如果迭代次数iter大于1,通过生成测试用例函数为测试用例TC赋值(第11行)。第13至第22行是执行单元和过滤单元的循环运行结构,直到全部覆盖或在这个周期没有能被覆盖的路径结束。首先将测试用例TC添加到TSiter中。执行器从测试用例TC得到一条被覆盖的路径p(由一系列约束组成)通过调用z3求解器。因为,需要记录静态变量状态。调用z3时将上一周期的静态变量的值作为断言公式的一部分。同时,相应约束的Eval值在控制流图中由false变为true,或保持true不变。根据路径p可以生成多个路径p的变体,一一判断是否在已覆盖路径和未覆盖路径CP中已经存在。若否,则添加到未覆盖路径CP,若是,则不做任何处理(第14行)。第17至第21行为生成测试用例过程。
[0091] 图3中的G包括:节点集N,约束集S,变量集V,逻辑值L,条件转移关系E,开始节点Nstart,结束节点Nend,覆盖率统计信息C。
[0092] 其中,节点集N的序号从1开始,按生成顺序排列。约束集S来自于ST程序语句。变量集V是程序中所有变量的集合。逻辑值E,即true或false,用于评估某个约束是否被执行到(被覆盖)。开始节点Nstart和结束节点Nend是控制流图ST_CFG的唯一入口和唯一出口,对应ST程序的入口和出口,条件转移关系
[0093] 下面,以输入示例程序Hysteresis为例,进行进一步详细说明。
[0094] 如图4所示,为示例程序Hysteresis。解析模块将用户编写的ST源程序(Hysteresis)转换为等价的ST程序,利用MATIEC编译器的词法分析器和语法分析器,将ST程序解析为抽象语法树。
[0095] 控制流图生成模块遍历抽象语法树生成相应的控制流图ST_CFG。如图5所示,为根据输入的Hysteresis程序生成的控制流图。控制流图中的节点按照图的生成顺序编号。补(取反)操作符用“!”代替,用“()”表示空语句。此控制流图中有6个分支,分别是(Q);(!Q);(IN1<(IN2-EPS));(!(IN1<(IN2-EPS)));(IN1>(IN2+EPS));(!(IN1>(IN2+EPS)))。此外,该控制流图还包含所有的变量、用于覆盖率统计的信息等。
[0096] 测试用例集如表1所示。
[0097] 表1
[0098]
[0099]
[0100] 表1中第一列表示周期次序。第2-4列表示当前周期中输入变量的输入值。倒数第二列是执行完该周期后的输出变量Q的值。最后一列给出在这个周期覆盖的路径。当周期等于1时,执行单元直接使用程序中变量的初始值V运行程序。然后执行测试用例,路径(n1,n4,n8,n2)被执行,提取程序执行路径上的所有约束以获得覆盖的约束集((!Q),(!(IN_1>(IN_2+EPS))))。过滤单元根据深度优先搜索策略选取两条候选路径((Q)和(!Q),(IN_1>(IN_2+EPS)))中的后一条作为执行路径。约束求解模块将从执行路径中获得的约束集转换为Z3的输入格式,并通过Z3求解器求出满足新约束的变量值,得到一组新的测试用例(IN1=1,IN2=0,EPS=0)。
[0101] 在第二个周期,执行单元执行测试用例,路径(n1,n4,n7,n2)被执行。同时,Q的值由原来的FALSE更新为TRUE。ST的程序PROG对输出变量有记忆,Q值将被保留。新生成的候选路径((Q)和(!Q),(!(IN_1>(IN_2+EPS))))均无效,因为前者在候选路径中已存在,后者已被覆盖。当前候选路径中只有一条候选路径(Q),对其求解得到满足(sat),而求解器未给予赋值的变量继承上个周期的值。第三、四个周期,覆盖了新的两条路径,过滤单元更新ST_CFG的逻辑值L、未覆盖路径CP。最后,程序的所有分支被覆盖。
[0102] 统计和输出模块计算Hysteresis的测试用例集,输出分支覆盖率为100%。如果更改Q的赋值(即n7,n2和n5,n2交换),将无法生成完全覆盖的测试用例。从此也可看出,测试用例可以发现程序错误。
[0103] 根据本申请的实施方式,还提出一种动态符号执行的测试用例生成方法,如图6所示,包括:
[0104] S1,解析步骤,对输入的结构化文本ST源程序中的标准功能块进行建模,得到等效ST程序,使用编译器解析等效ST程序,得到抽象语法树;
[0105] S2,控制流图生成步骤,遍历抽象语法树,结合ST语言的特性,生成控制流图;
[0106] S3,动态符号执行步骤,根据控制流图,对变量属性和标准函数进行建模,生成初始测试用例,代入控制流图中执行,得到已覆盖路径,获取约束集,根据约束集确定候选路径池,从候选路径池中选择一条作为执行路径;
[0107] S4,约束求解步骤,根据建模后的标准功能块、标准函数、变量属性以及转换规则,对执行路径上的约束集进行转换后求解,得到新的测试用例;
[0108] S5,统计和输出步骤,保存一个输入源程序得到的所有测试用例,根据已覆盖路径确定覆盖率信息,输出所有测试用例和覆盖率信息。
[0109] 生成初始测试用例,代入控制流图中执行,获取约束集,根据约束集确定候选路径池,从候选路径池中选择一条作为执行路径,包括:
[0110] 使用控制流图中的变量初始值生成初始测试用例;
[0111] 将初始测试用例代入控制流图中执行,得到已覆盖路径;
[0112] 获取已覆盖路径上的约束集,对约束集的每个约束取反,得到候选路径池;
[0113] 根据路径搜索策略,从候选路径池中选择一条候选路径作为执行路径。
[0114] 在根据约束集确定候选路径池,从候选路径池中选择一条作为执行路径之后,还包括:
[0115] 更新候选路径池中的候选路径和覆盖信息;
[0116] 从更新后的候选路径池中,选择一条候选路径作为新的执行路径。
[0117] 在对执行路径上的约束集进行转换后求解,得到新的测试用例之后,还包括:
[0118] 若候选路径池中有新的执行路径,则将新的测试用例代入控制流图中执行;
[0119] 若候选路径池控制流图中无新的执行路径,则循环终止。
[0120] 候选路径池包括:一条或多条候选路径。
[0121] 控制流图包括:变量初始值、赋值约束、执行条件约束和次序约束。
[0122] 约束集包括:赋值约束、执行条件约束和次序约束。
[0123] 求解,包括:使用可满足性模理论SMT求解器对转换后的约束集求解。
[0124] 转换规则根据需要设定。
[0125] 路径搜索策略包括:深度优先搜索和广度优先搜索。
[0126] 本申请的系统中,通过将动态符号执行直接应用于ST的测试用例生成中,结合ST语言的周期执行特性,能够自动生成大量有效的测试用例,并保存所有生成的测试用例,在很大程度上减少了人工成本、避免了很多人为因素导致的不良影响、提升了测试的效率,在应对规模庞大的复杂的系统上,将充分发挥积极作用。能为ST程序自动生成高质量的测试用例和正确的覆盖率信息,基于动态符号执行生成的测试用例,具有有效性、冗余少、覆盖率高的特点。代码覆盖率提供一个可参考、可跟踪的软件质量的度量值,反映被测软件的可靠性程度。IEC61508标准规定:SIL1必须满足100%的点覆盖率;SIL2必须满足100%的语句覆盖率;SIL3必须满足100%的分支覆盖率。该方法自动统计的覆盖率信息可以用于判断被测程序是否满足目标SIL,还可以通过运行生成的测试用例发现错误。
[0127] 以上所述,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。