【问题标题】:Pixel-perfect acceptance testing on iOSiOS 上的像素完美验收测试
【发布时间】:2014-03-25 18:08:26
【问题描述】:

我从 Application Design 获得了精确尺寸的 .png 渲染,显示了在 Retina 4"、Retina 3.5" 等上我的应用应该是什么样子

希望自动比较这些“黄金大师”渲染和显示该屏幕时应用实际外观的屏幕截图。

理想情况下,我希望有一些可以通过持续集成运行的东西,这样我就可以在 .xib 搞砸时中断构建

我该怎么做?


已经试过了:

  • 在 iPhone 模拟器中使用 Command-S 抓取适合比较的屏幕截图
  • 使用 GitHub 优秀的图片比较界面手动比较图片
  • 在 Preview.app 中并排拉出它们,以实际大小 (Command-0)
  • 对 ImageMagick 的比较能力做了一些研究 (examples)

可能的方法:

  • 在代码中获取应用程序的屏幕截图已经实现
  • 同样,我很确定我可以找到代码来模拟屏幕上的点击
  • 可能需要某种方法来排除已知不完全匹配的区域的遮罩或边界框

【问题讨论】:

    标签: ios image testing automation


    【解决方案1】:

    看看ios-snapshot-test-case,它是为类似的东西而构建的。

    它将在第一次运行测试时获取参考图像,然后将后续测试输出与参考图像进行比较。您基本上可以使用它,但不是从测试中创建参考图像,而是提供自己的参考图像。

    在实践中,正确地做到这一点非常棘手。在 iOS 和您的设计师使用的任何工具之间,文本、渐变等的呈现方式存在细微差别。

    【讨论】:

      【解决方案2】:

      我会查看KIF 进行功能测试。

      您可以创建一个自定义测试(在“与其他测试框架一起使用”上方的自述文件末尾附近的小示例)截取屏幕截图并将其与该视图的预期屏幕截图进行比较。如果不匹配,请致电failWithException:stopTest:

      正如您所提到的,您需要为每个预期的屏幕截图保存一个遮罩,并在比较之前应用遮罩。您将始终有部分屏幕不匹配,例如状态栏中的至少时间。

      对于比较本身,这里有几个链接:

      【讨论】:

      • 谢谢你!浏览了他们的代码。使用可访问性信息的概念非常创新。他们还通过模拟屏幕键盘上的点击来实现文本输入——令人印象深刻。截图对比和遮罩机制我还需要想办法。
      • 编辑了几个链接,可能有助于您开始这部分。
      • 我希望我能接受这两个答案。这个很有帮助。
      【解决方案3】:

      我知道这是一个老问题,但值得指出的是,KIF 已经建立了一个名为 Lela 的“感知差异测试框架”:

      https://github.com/kif-framework/Lela

      如果您已经在使用 KIF,这就是您要走的路。我相信它使用了一些模糊的图像差异,因此它可能能够解决 David Grandinetti 提到的文本渲染问题。不过,我还没有尝试将它用于外部组合。

      如果您更熟悉 BDD/Cucumber/Gherkin 语法,您还应该查看使用参考图像的 Zucchini:

      http://zucchiniframework.org/

      我没用过,但是说的很好。

      【讨论】:

        【解决方案4】:

        建议你看看Visual CI

        这是一个为持续集成图像比较而构建的软件,
        它的 UI 允许您控制设置,其中还包括要比较图像的哪些部分

        它有点新,但可以更好地满足您的要求。

        【讨论】:

          猜你喜欢
          • 2023-04-03
          • 2011-08-20
          • 2019-05-20
          • 2013-09-03
          • 2015-09-22
          • 1970-01-01
          • 1970-01-01
          • 2019-05-10
          • 1970-01-01
          相关资源
          最近更新 更多