TPT 中基于代码的测试相对于基于模型的测试

Code based testing in TPT with respect to Model based Testing

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

我是这类测试的新手,因为我们只进行了基于模型的测试。 我可以知道如何在基于代码的测试方面使用 TPT 吗?

单独使用 TPT 在这里无济于事,因为它基本上只是时间相关嵌入式系统的测试自动化工具。

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

所以像 "Reactis for C Tester" (http://www.reactive-systems.com/c-testing-tool.html) 这样的工具是完全自动生成所有测试输入的。他们通过搜索 C 代码来计算这些测试输入(或者,您也可以在 Simulink 模型中搜索)。它为此使用了求解器,因此能够达到 100% 的覆盖率。用户不必在像 PikeTec TPT 这样的用户界面中手动执行任何操作。

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

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

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

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

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

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

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

您可以使用 Simulink Design Verifier 等工具自动生成测试以增加覆盖率。 Simulink Coverage can then be used to check how much coverage you are able to get at the Simulink model level (i.e. performing coverage analysis on the Simulink model), then generating code and checking how much coverage you are able to achieve at the code level. You can use Simulink Test to automate this process. See this documentation page 了解更多详情。

如果您无法在模型级别实现高覆盖率,则可能意味着您的设计无法完全测试。例如。它可能有死逻辑。 Simulink Design Verifier 还可以预先告诉您是否存在死逻辑。

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