在我的项目中,我使用TPT作为测试环境,我们使用基于模型的测试。代码覆盖率通常在80%左右。但客户需要100%的封面覆盖率,因此希望使用.c和.h文件进行测试。
我是这类测试的新手,因为我们只进行了基于模型的测试。 我可以知道如何在基于代码的测试中使用TPT吗?
答案 0 :(得分:1)
可以使用TPT测试C代码和Simulink模型。测试开发没有区别,只是在测试执行环境中。 为了测试C代码,可以决定是否应在Simulink中以所谓的SiL模式测试C代码,其中C代码嵌入在Simulink中,即所谓的S函数。 S函数的生成可以由依赖于代码生成器的m脚本自动完成。
或者在TPT中,C代码可以通过两种方式进行测试。第一种是使用所谓的EXE平台,其中测试工具是用C代码构建的,并由用户通过自己的编译器进行编译。第二种选择是所谓的FUSION平台,用户在其中编写一个适合其定义的API的接口,并将其编译为dll。这个dll在FUISON模拟。
如果需要100%声明或条件覆盖,TPT会附带一个名为TASMO的功能。 TASMO自动生成测试用例,以最大限度地覆盖Simulink或TargetLink模型。
我是TPT开发人员之一。有关TPT的更多信息,请访问我们的网站。
答案 1 :(得分:0)
TPT本身无济于事,因为它基本上只是一种用于时间相关嵌入式系统的测试自动化工具。
更高级的基于模型的测试工具通常会根据被测系统的可执行模型创建测试用例。它们(象征性地)探索模型(或通用代码)并生成涵盖模型中存在的所有路径,转换,条件等的输入。这部分就是你所缺少的 - 你需要一个代码探索工具(比如C的反应就是一个例子)
那样的工具如" Reactis for C Tester" (http://www.reactive-systems.com/c-testing-tool.html)完全自动生成所有测试输入。他们通过搜索C代码计算这些测试输入(或者您也可以在Simulink模型中搜索)。它使用解算器,因此它可以达到100%的覆盖率。用户不必在PikeTec TPT等用户界面中手动实现任何内容。
要解决您的问题并达到100%覆盖率,您可以将Reactis直接应用于源代码 - 而不是模型。之后,您可以使用TPT读取生成的输入,并使用它激发被测系统。或者:如果您正在使用Simulink PC-target(EXE文件),也可以使用文件访问直接从EXE文件读取生成的输入。
这些探索工具通常不直接用于生产代码的原因是,即使是相对较小的系统(如引擎的控制器等)也会导致太多的测试输入。这就是为什么在基于模型的测试中我们创建一个要测试的系统的抽象模型:抽象模型不会包含生产代码的所有这些不重要的状态/路径。
您的情况似乎更简单:您已经有80%的代码覆盖率和手动设计的测试用例,因此探索工具不应该有任何问题将其自动提升到100%。您还可以节省在TPT中编写测试刺激的时间。
答案 2 :(得分:0)
您可以使用Simulink Design Verifier等工具自动生成测试以增加覆盖率。然后可以使用Simulink Coverage来检查您在Simulink模型级别可以获得多少覆盖(即在Simulink模型上执行覆盖率分析),然后生成代码并检查您在此处可以实现的覆盖范围。代码级别。您可以使用Simulink Test自动执行此过程。有关详细信息,请参阅this documentation page。
如果您无法在模型级别实现高覆盖率,那么这可能意味着您的设计不是完全可测试的。例如。它可能有死逻辑。 Simulink Design Verifier也可以预先判断是否存在死逻辑。
如果您只想对代码执行分析,可以使用Polyspace Code Prover检查代码级别是否有不可删除的代码或死代码。像Simulink Design Verifier和Polyspace Code Prover这样的工具是基于形式的方法,它们能够以数学方式分析您的设计。