Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C TPT中基于代码的测试与基于模型的测试_C_Matlab_Simulink - Fatal编程技术网

C TPT中基于代码的测试与基于模型的测试

C TPT中基于代码的测试与基于模型的测试,c,matlab,simulink,C,Matlab,Simulink,在我的项目中,我使用TPT作为测试环境,我们使用基于模型的测试。代码覆盖率通常在80%左右。但是客户要求100%的覆盖率,因此希望使用.c和.h文件进行测试 我不熟悉这种类型的测试,因为我们只做基于模型的测试。 我可以知道如何在基于代码的测试中使用TPT吗?TPT本身在这里没有帮助,因为它基本上只是一个用于依赖时间的嵌入式系统的测试自动化工具 更高级的基于模型的测试工具通常从被测试系统的可执行模型创建测试用例。他们探索(象征性地)模型(或一般代码),并生成覆盖模型中存在的所有路径、转换、条件等的

在我的项目中,我使用TPT作为测试环境,我们使用基于模型的测试。代码覆盖率通常在80%左右。但是客户要求100%的覆盖率,因此希望使用.c和.h文件进行测试

我不熟悉这种类型的测试,因为我们只做基于模型的测试。
我可以知道如何在基于代码的测试中使用TPT吗?

TPT本身在这里没有帮助,因为它基本上只是一个用于依赖时间的嵌入式系统的测试自动化工具

更高级的基于模型的测试工具通常从被测试系统的可执行模型创建测试用例。他们探索(象征性地)模型(或一般代码),并生成覆盖模型中存在的所有路径、转换、条件等的输入。这一部分是您所缺少的——您需要一个代码探索工具(如reactis for C仅举一个例子)

所以像“Reactis for C Tester”()这样的工具是完全自动生成所有测试输入的。他们通过搜索C代码来计算这些测试输入(或者您也可以在Simulink模型中搜索)。它使用了一个解算器,所以它能够达到100%的覆盖率。用户不必在用户界面(如PikeTec TPT)中手动实现任何东西

为了解决您的问题并达到100%的覆盖率,您直接将Reactis应用于源代码,而不是模型。然后,您可以使用TPT读取生成的输入,并使用TPT模拟被测系统。或者:如果使用Simulink PC目标(EXE文件),也可以使用文件访问直接从EXE文件读取生成的输入

这些探索工具通常不直接用于生产代码的原因是,即使是相对较小的系统(如发动机控制器等),也会导致太多的测试输入。这就是为什么在基于模型的测试中,我们创建一个要测试的系统的抽象模型的原因:抽象模型不会包含生产代码的所有这些不重要的状态/路径


您的案例似乎更简单:手动设计的测试用例已经覆盖了80%的代码,所以探索工具应该不会有任何问题,可以自动将覆盖率提高到100%。您还可以节省在TPT中编写测试刺激的时间。

C代码以及Simulink模型可以使用TPT进行测试。在测试开发中没有区别,只是在测试执行环境中。 对于C代码测试,可以决定是否应在Simulink中以所谓的SiL模式测试C代码,其中C代码作为所谓的S功能嵌入Simulink中。S函数的生成可以由依赖于代码生成器的m脚本自动完成

或者,在TPT中,C代码可以通过两种方式进行测试。第一种是使用所谓的EXE平台,在该平台中,测试工具以C代码构建,并由用户自己的编译器编译。第二种选择是所谓的FUSION platform,用户在该平台上编写一个接口,将定义良好的API与被测系统相匹配,并将其编译为dll。这个dll是在FUISON模拟的

如果需要100%的声明或条件覆盖率,TPT将附带一个名为的功能。TASMO自动生成测试用例,以实现Simulink或TargetLink模型的最大覆盖率


我是TPT开发人员之一。有关您的更多信息,请访问我们的网站

您可以使用Simulink Design Verifier之类的工具自动生成测试以增加覆盖率。然后可用于检查您在Simulink模型级别上能够获得多少覆盖率(即对Simulink模型执行覆盖率分析),然后生成代码并检查您在代码级别上能够实现多少覆盖率。您可以使用Simulink测试来自动化此过程。有关更多详细信息,请参阅

如果您无法在模型级别实现高覆盖率,那么这可能意味着您的设计不是完全可测试的。它可能有死板的逻辑。Simulink设计验证程序还可以提前告诉您是否存在死逻辑


如果您只想对代码执行分析,可以使用Polyspace代码验证程序检查代码级别是否存在无法访问的代码或死代码。Simulink Design Verifier和Polyspace Code Prover等工具都是基于形式化方法的,它们能够对您的设计进行数学分析。

基于代码的测试和基于模型的测试是否产生相同的代码覆盖率?或者使用基于代码的测试有什么好处吗?我使用c编译器编译c文件并使其成为可运行的,并使用可运行版本(.exe)文件作为exe平台的输入并进行了测试。但输入信号正在产生。不产生输出信号。有些测试用例失败了。在基于模型的测试中成功的测试用例在EXE平台中失败。我也不知道Reactis。我可以知道这是什么样的工具吗。对于我的问题,我该如何使用。谢谢你的意见。我在上面的回答中解释说,这是更好的一点。但您的主要问题似乎也是,在编译的目标(EXE平台)上,一些测试失败。我对这个问题一无所知。