带有OpenGL和嵌入式WebViews的本机移动应用程序(iOS/Android)的测试框架

Test Framework for native mobile apps (iOS/Android) with OpenGL and Embedded Webviews

本文关键字:iOS Android 框架 测试 移动 OpenGL 嵌入式 WebViews 带有 本机 应用程序      更新时间:2023-10-16

我有一个跨平台移动应用程序:

  • 90%写在跨平台C
  • 其中8%是平台依赖性(GUI代码)。对于iOS,我们使用目标C。对于Android,我们使用Java。
  • 其中2%是嵌入式WebViews(Webkit Webhooks)。

找到适当的测试框架一直具有挑战性。

我们可以使用C Google测试框架进行大量测试。尽管如此,我们想进行端到端测试(例如硒),该测试在OpenGL视图和WebView周围拖动/双击。

我已经看了Appium和Selenium,可以测试除了OpenGL接口(启动WebViews)以外的所有内容,但我找不到开OpenGL测试的任何示例。

是否有一个很好的框架来测试OpenGL应用程序?

我已经为C (Linux上的QT)&编写了单位测试。OpenGL之前。我不知道有任何理由也不适合Java。

对我有用的东西是:

  • 摘要您的OpenGL上下文提供商,因此您的其余代码独立于其。在我的情况下,主要应用程序使用了QT的QGLWIDGET,但是Unitests使用了基于Pbuffer的QGLWIDGET,我可以在没有窗口基础结构的情况下创建它(除了指定的X11显示器外)。后来,我添加了一个"屏幕外台面"(纯软件OpenGL实现),以便他们甚至在没有GPU的无头构建机器上工作。

  • 将OpenGL代码独立于您的GUI代码。就我而言,OpenGL"渲染引擎"对QT类别(例如鼠标事件)一无所知。定义您自己的可测试API,该API与任何特定的GUI概念没有绑定,并为其编写测试。

  • 在Unittests中,使用GlreadPixels从Framebuffer中读取内容,然后用一些关于哪些像素应该是特定值的断言,或者沿回归测试路线沿着回归测试路线进行比较,然后将framebuffer捕获与存储的捕获进行比较您知道的图像很好(要么是通过手动验证,要么是因为它是由其他参考模型产生的)。

  • 在任何图像回归测试中都允许一些模糊性;大多数OpenGL实现都会产生略有不同的输出。

  • (我没有这样做,但是...)理想情况下,您希望能够通过断言它使渲染引擎的预期呼叫顺序以响应GUI活动来测试GUI层。如果这样做,并且您由于上述测试而对渲染层有信心...好吧,无需实际进行渲染。因此,在GUI测试时创建一个合适的渲染层的模拟对象(我想像"鼠标从这里拖动到那里)的测试会导致调用渲染层以设置特定的变换矩阵" ...类似的东西)。

希望它有帮助!我在..Ref. Automated测试openGL应用程序