TESSY进行嵌入式软件单元测试时,浮点数比较是比较容易出现误判的环节。由于浮点数在计算机中采用二进制形式保存,小数运算过程中可能产生微小误差,即使程序逻辑正确,实际输出值和预期结果也可能存在极小差异。如果测试环境按照完全相等方式比较,就可能出现测试失败。实际项目中,浮点数测试通常需要设置合理的比较容差,让测试结果关注计算逻辑偏差,而不是忽略无意义的小数误差。
一、TESSY怎么设置浮点数比较容差
TESSY中的浮点数比较主要通过测试数据和比较方式进行控制,需要根据测试对象和软件计算精度选择合适的容差范围。
1、确认浮点数测试对象
设置比较容差前,需要先确认哪些测试变量属于浮点类型。
①、打开【TESSY Test Project】。
②、进入目标函数对应的【Test Interface】。
③、查看函数输入参数和输出变量。
④、确认数据类型是否为【float】或【double】。
⑤、选择需要调整比较方式的浮点变量。
⑥、进入测试数据设置页面。
如果变量本身不是浮点类型,就不需要使用浮点比较容差,避免错误调整测试规则。
2、打开测试结果比较设置
TESSY需要在测试数据或结果比较配置中调整浮点判断方式。
①、打开【Test Data】窗口。
②、选择需要修改的测试用例。
③、进入【Expected Result】设置。
④、查看当前结果比较方式。
⑤、选择浮点数比较选项。
⑥、进入容差参数配置。
不同TESSY版本界面名称可能存在差异,但通常需要在测试结果比较相关设置中调整浮点判断规则。
3、设置绝对误差容差
绝对容差适合结果数值范围比较固定的测试场景。
①、打开【Floating Point Comparison】设置。
②、选择【Absolute Tolerance】。
③、填写允许误差范围。
④、检查测试输出的小数精度。
⑤、保存当前比较设置。
⑥、重新执行测试用例。
例如测试结果为0.5000001,而预期值为0.5000000,如果设置合理的绝对误差范围,TESSY可以识别两者属于允许范围内的结果。
4、设置相对误差容差
当测试数据范围变化较大时,相对误差通常更适合。
①、打开【Floating Point Comparison】。
②、选择【Relative Tolerance】。
③、设置允许比例误差。
④、检查最大和最小测试值。
⑤、保存比较规则。
⑥、重新运行测试。
相对误差会根据实际数值大小判断偏差,对于不同数量级的浮点计算更加适用。
5、针对单个测试变量调整容差
部分项目中,不同浮点参数需要不同精度要求。
①、打开【Test Data Table】。
②、选择目标浮点输出变量。
③、进入【Value Comparison】配置。
④、设置该变量专用容差。
⑤、检查其他输出变量比较方式。
⑥、保存测试数据。
这种方式可以避免为了一个低精度计算结果,降低整个测试项目的判断标准。
二、TESSY浮点数测试结果误判失败如何修正
浮点测试失败时,需要先判断是计算结果真的错误,还是由于比较精度设置不合理导致。直接修改期望值可能会掩盖真实问题,因此需要先检查误差来源。
1、检查实际结果和期望结果差异
①、打开【Test Result】窗口。
②、查看失败测试用例。
③、比较【Expected Value】和【Actual Value】。
④、计算两者之间的误差范围。
⑤、判断误差是否超过业务允许范围。
⑥、确认是否需要调整容差。
如果实际结果只存在很小的小数位差异,通常属于浮点计算误差;如果偏差较大,则需要检查程序逻辑。
2、检查浮点数据类型差异
float和double的精度不同,也可能导致测试结果不一致。
①、打开【Test Interface】。
②、查看变量数据类型。
③、确认源代码中的定义。
④、检查测试数据类型。
⑤、统一测试环境中的数据类型。
⑥、重新执行测试。
例如源代码使用double计算,而测试数据按照float精度处理,可能导致结果比较出现差异。
3、检查编译器浮点处理选项
编译器优化可能影响浮点计算结果。
①、打开【Compiler Configuration】。
②、查看浮点相关编译参数。
③、检查优化等级设置。
④、确认测试环境和产品环境配置一致。
⑤、调整编译选项。
⑥、重新构建测试程序。
不同编译器或者不同优化级别下,浮点计算顺序可能发生变化,导致最后几位小数存在差异。
4、调整测试期望值
部分情况下,测试数据本身的精度设置不合理,需要重新定义。
①、打开【Test Data】。
②、找到失败测试用例。
③、查看【Expected Result】。
④、根据实际计算精度修改期望值。
⑤、设置对应浮点比较容差。
⑥、重新执行测试。
期望结果应该符合软件设计精度要求,而不是简单保留大量无实际意义的小数位。
5、检查特殊浮点情况
浮点测试还需要关注特殊值处理。
①、检查测试输入是否包含【NaN】。
②、检查是否存在【Infinity】。
③、确认零值比较方式。
④、检查异常输入处理逻辑。
⑤、调整测试数据。
⑥、重新运行测试。
特殊浮点值通常不能按照普通数字进行比较,需要根据软件需求定义判断方式。
三、TESSY浮点比较调整后怎么确认
修改比较容差后,需要确认测试结果变化来自合理配置,而不是降低了测试要求。
1、重新执行失败测试
①、打开【Test Execution】。
②、选择调整后的测试用例。
③、运行单个失败案例。
④、查看新的【Test Result】。
⑤、确认误差是否处于容差范围。
⑥、保存测试结果。
2、检查整体测试影响
①、运行完整测试集。
②、查看【Test Report】。
③、检查其他浮点测试结果。
④、确认没有大量异常通过。
⑤、分析容差设置合理性。
⑥、更新测试配置。
3、记录浮点比较规则
①、保存【Test Project】。
②、记录浮点比较参数。
③、记录编译器版本。
④、记录测试环境配置。
⑤、维护测试配置文档。
总结
TESSY浮点数测试出现误判失败时,需要先区分计算结果错误和浮点精度误差,再根据测试目标设置合适的比较容差。绝对容差适用于固定范围计算,相对容差适用于数值变化较大的场景。调整过程中,需要同时检查数据类型、编译选项和测试期望值,避免通过过宽的容差掩盖软件问题。建立统一的浮点比较规则,可以让单元测试结果更加符合实际软件运行情况。