美文网首页
Skia如何测试

Skia如何测试

作者: videoisfun | 来源:发表于2022-07-23 09:12 被阅读0次

Skia是一个google开源的渲染引擎,不熟悉的可以参考Skia简介。Skia作为一个很多成熟项目用到的底层库,一致很好奇是开发团队是如何快速开发的同时保证产品的质量。

和google其他项目一样,Skia有着完备的自动化测试,同时也是用各种工具来辅助测试。Skia测试包括正确性测试,Fuzzing, sanitizer测试,自动化测试等,以下分别介绍。

正确性测试

Skia的正确性测试主要依赖于一个工具DM,简单来说,这个工具就是把渲染的内容draw到image上面,通过检查image来确保每次画的是一样的。

python3 tools/git-sync-deps
bin/gn gen out/Debug
ninja -C out/Debug dm
out/Debug/dm -v -w dm_output

Fonts and GM Tests

GM目录下的每个test会draw 一个参考图像,可以用来检查是不是有rendering的bug,同时也可以用来检查对于不同配置和平台是否渲染结果不一致。

Fuzzing

使用ClusterFuzz来批量去跑一些sanitizer测试,然后在本地
使用out/ASAN/fuzz -b /path/to/downloaded/testcase 去尝试重现一些bug.

同时也可以调用libfuzzer来进行测试。

MSAN,ASAN, &TSAN

这个是用memory, address and thread sanitizer去测试Skia. 这几个Sanitizer都是clang提供的,在实际中非常好用,定位一些bug非常容易。但他们也有一些局限:

  • UBSAN works on Linux, Mac, Android, and Windows, though some checks are platform-specific.
  • ASAN works on Linux, Mac, Android, and Windows.
  • TSAN works on Linux and Mac.
  • MSAN works on Linux[1].
    看来一台Linux server是必不可少的。另外的话,尽量使用libc++,而不是系统库。使用libc++可以发现更多问题。

Testing on iOS

Skia 借助http://www.libimobiledevice.org/,
和ios-deploy https://github.com/phonegap/ios-deploy 去使用command line来编译skia.

相关文章

网友评论

      本文标题:Skia如何测试

      本文链接:https://www.haomeiwen.com/subject/ilesirtx.html