我们的软件执行图像操作(例如旋转,偏移校正等),我们希望为这些操作创建单元测试。但是,不保证操作总是在字节级产生相同的结果。这里和那里的一些噪声,一些伪影或抖动可能以一种对人眼不明显但却打破每字节比较的方式改变结果图像。测试这种操作结果的最佳方法是什么(假设我有一个参考'预期图像')?
答案 0 :(得分:0)
您是否只是将每个像素级别的预期图像与生成的图像区别开来?即只需从生成的RGB值中减去每个像素的预期RGB值。
答案 1 :(得分:0)
自动单元测试不适用于不确定的过程。
有没有什么方法可以提取引入非确定性行为的代码元素,或许在测试中提供确定性实现?或者,也许您可以将转换转换为不同转换的管道,有些是确定性的,有些则不是。
这听起来像是唯一可以决定图像看起来是否相同的东西#34;是一个人眼。
另一种方法是使一些非常简单的图像始终产生相同的结果,并在单元测试中使用它们。
无论你选择哪种方法(要么使变换具有确定性,要么放宽你的等于比较)我建议编写一些代码,以一种易于人类快速生成的格式并排生成所有预期和实际图像的报告审查。