如何为图形库编写测试?

发布于 2024-12-28 18:02:47 字数 258 浏览 1 评论 0原文

我正在用 Python 编写一个 OpenGL 2D 库。一切都很顺利,代码库也在稳步增长。

现在我想编写单元测试,这样我就不会在修复其他错误/创建新功能时意外引入新错误。但我不知道它们如何与图形库一起使用。

我想到的一些事情:

  • 制作参考屏幕截图并将它们与测试中自动生成的屏幕截图进行比较,
  • 用日志语句替换 opengl 调用并比较日志

但这两者似乎都是一个坏主意。测试图形库的常用方法是什么?

I'm writing an OpenGL 2D library in Python. Everything is going great, and the codebase is steadily growing.

Now I want to write unit tests so I don't accidently bring in new bugs while fixing others/making new features. But I have no idea how those would work with graphics libraries.

Some things I thought of:

  • make reference screenshots and compare them with autogenerated screenshots in the tests
  • replace opengl calls with logging statements and compare logs

But both seem a bad idea. What is the common way to test graphics libraries?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

最单纯的乌龟 2025-01-04 18:02:47

我过去用于组件级测试的方法是:

  • 使用统一的彩色背景,并带有几种不同的颜色。
  • 在测试中使用统一的彩色矩形作为图形对象(具有几种不同的颜色)。
  • 将矩形放置在已知位置,您可以自己计算它们在图像中的投影位置。
  • 计算每个像素(背景、前景或混合)的每个通道的预期强度。
  • 如果您的测试场景导致非圆形位置,请使用不准确的比较(例如相关性)
  • 使用计算来创建预期结果图像。
  • 将输出图像与预期结果图像进行比较。
  • 如果有模糊效果,请比较强度总和而不是离散强度。

正如格雷厄姆所说,内部单元可以不受图形调用的影响进行单元测试。

The approach I have used in the past for component level testing is:

  • Use a uniform colored background, with a few different colors.
  • Use uniform colored rectangles as graphical objects in tests (with a few different colors).
  • Place rectangles in known places where you can calculate their projected position in the image by yourself.
  • Calculate expected intensity of each channel of each pixel (background, foreground or mixture).
  • If you have a test scenario that results in non-round positions, use a non-accurate compare (e.g. correlation)
  • Use calculations to create expected result images.
  • Compare output images to expected result images.
  • If you have a blur effect, compare sum of intensity instead of discrete intensities.

As graham stated, internal units may be unit-testable free from graphics calls.

意中人 2025-01-04 18:02:47

进一步分解它。

生成图形的调用将依赖于算法 - 测试算法。

Break it down even further.

The calls that make the graphics will rely on algorithms - test the algorithms.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文