0

我想自动化 ASCET 生成的嵌入式 C 代码的单元测试。我打算使用python进行测试自动化。但是,如果有更好的免费工具来执行自动化,请告诉我

我知道有一套测试自动化工具可用,但没有一个能满足我的要求。我的单元测试的目标是检查

  1. 语句覆盖率:应测试代码行以检查边界条件和死代码

  2. 分支覆盖:对于一个决策语句,检查它的正面和负面条件是否可以被测试

  3. 修改后的条件/决策语句:对于决策语句中的多项检查,检查所有可能性

我将举一个例子来说明目标的含义

所有这些可能性都有待检验。此外,还应创建测试文档(以 excel 格式),其中应提供有关所有 TC 的所有信息以及他们已达到的测试目标。

注意:单个 TC 可以满足多个测试目标

示例:我有一个需要 2 个输入的函数:Ackermann 偏航率 (dPsiAck) 和偏航率 (dPsi),并给出一个输出:过度转向 (OS)

在此处输入图像描述

我的代码如下所示:

mem = min(dPsi,0.2)

if (abs(dPsiAck-dPsi) > P_Thresh && dPsiAck > dPsi)  // P_Thresh is a calibratable threshold
{
   OS = dPsiAck/mem
}
else
{
   OS = 0 //No oversteering occurs
}

每个变量的大小是这样的

  • dPsi = - 2 到 2
  • dPsiAck = -2 到 2
  • 操作系统 = 0 到 1.5
  • 内存 = -2 到 2
  • P_Thresh = 0 到 1,默认值为 0.2

现在单元测试目标应该检查以下内容:

对于第一个 LOC:mem = min(dPsi,0.2):语句覆盖率应检查以下内容:

  • dPsi 大于 0.2
  • dPsi 小于 0.2

分支机构和 MCDC 覆盖范围不适用于 1st LOC,因此不应检查它们

对于第二个 LOC:如果 (abs(dPsiAck-dPsi) > P_Thresh && dPsiAck > dPsi)

语句覆盖率应检查以下内容:

  • dPsiAck-dPsi 大于 0
  • dPsiAck-dPsi 小于 0

分支覆盖率应检查以下内容:

  • dPsiAck-dPsi 大于 P_Thresh
  • dPsiAck-dPsi 小于 P_Thresh
  • dPsiAck 大于 dPsi
  • dPsiAck 小于 dPsi

令 abs(dPsiAck-dPsi) > P_Thresh 为 C1 并且 dPsiAck > dPsi 为 C2

MCDC 覆盖范围应检查以下内容:

  • C1 为真,C2 为真
  • C1 为真,C2 为假
  • C1 为假,C2 为真
  • C1 为假,C2 为假

对于 LOC3:OS = dPsiAck/mem

声明应检查以下内容:

  • 内存的 OS 值 = 0
  • dPsiAck 大于 mem
  • dPsiAck 小于 mem

没有分支覆盖和 mcdc 覆盖适用于此 LOC。因此不需要测试

对于 LOC 4:否则分支覆盖应检查

  • 其他条件满足
  • else 条件不满足

声明覆盖率和 mcdc 覆盖率适用于此 LOC。因此不需要测试

LOC 5:OS = 0 是直接赋值,因此单元测试的所有目标都不适用

请让我知道如何继续解决这个问题。任何可以用来解决这个问题或用作解决问题的起点的参考资料、书籍或算法也可以共享

4

0 回答 0