微信读书排版引擎自动化测试方案(4)

发表于:2017-03-10来源:WeRead团队博客作者:WeRead点击数: 标签:微信
有了特征后,我们需要定义差异,就是两个灰度图像矩阵的 距离函数 ,如: L0,表示两个灰度图像矩阵之间,不一致的像素点的个数 L1,曼哈顿距离或棋

有了特征后,我们需要定义差异,就是两个灰度图像矩阵的距离函数,如:

  • L0,表示两个灰度图像矩阵之间,不一致的像素点的个数
  • L1,曼哈顿距离或棋盘距离,不一致像素点差值的绝对值之和
  • L2,不一致像素点差值的平方和

我们关心有多少像素点不一致,所以我们这里取 L0距离,即两个图像有多少个像素点不一样,作为差异衡量的指标。

当距离大于10时,我们认为这一页的排版结果有差异,把它可视化输出,给开发或者测试同学作为参考。

3. 可视化输出

检测到差异后,我们把两个图像矩阵灰度化后相减,得到一个新的矩阵,把它归一化得到差异图像,如右图所示:

日常修改2

通过 scheme 生成排版结果

人工测试步骤 2、3 的书籍购买、加入书架、打开书籍、翻页、截图等任务,可以利用 Instrument UI Automation 自动测试脚本来模拟人工点击来完成任务。

但是考虑到 Automation 模拟翻页、截图速度慢,且 UI 变更频繁导致 Automation 脚本后续维护麻烦等问题,所以我们通过提供一个测试 scheme 接口来完成这个任务。

在 App 设置彩蛋的『执行 Scheme 页面』中,输入 scheme 并执行后,App 会在后台对指定书籍购买、加入书架、排版、生成排版结果截图,并把结果保存在本地磁盘。用户也可以选择 AirDrop 到 Mac 上。

原文转自:http://wereadteam.github.io/2016/08/23/Typesetter/