我想自动化 ASCET 生成的嵌入式 C 代码的单元测试。我打算使用python进行测试自动化。但是,如果有更好的免费工具来执行自动化,请告诉我
我知道有一套测试自动化工具可用,但没有一个能满足我的要求。我的单元测试的目标是检查
语句覆盖率:应测试代码行以检查边界条件和死代码
分支覆盖:对于一个决策语句,检查它的正面和负面条件是否可以被测试
修改后的条件/决策语句:对于决策语句中的多项检查,检查所有可能性
我将举一个例子来说明目标的含义
所有这些可能性都有待检验。此外,还应创建测试文档(以 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 是直接赋值,因此单元测试的所有目标都不适用
请让我知道如何继续解决这个问题。任何可以用来解决这个问题或用作解决问题的起点的参考资料、书籍或算法也可以共享