Skip to content
江夏尧 edited this page Jan 13, 2025 · 4 revisions

测试文档

现阶段 cn-font-split 的测试分为如下部分:

自动化 测试部分 代号 描述
Rust 单元测试 test-rust 确认 Rust 逻辑正常运行
跨平台可用性测试 test-cross-use 确认 FFI 在 Linux、macOS、Windows 下皆运行正常
Font Feature 视觉测试 test-font-feature 确认构建产物在浏览器上能够显示各种字体特性
中文网字计划 CDN 全量构建测试 额外项目 确保构建产物在生产环境中,对各种字体的处理有很好的鲁棒性

Rust 单元测试

Rust 单元测试编写在核心层代码中,主要保证代码细节函数功能正确。

跨平台可用性测试

https://github.com/KonghaYao/cn-font-split/actions/workflows/test-cross-use.yml

由于 Rust 产物为动态链接库,其需要依赖各种平台的 glibc 等环境来执行。故需要对常见环境进行基础的可用性测试,保证在不需要安装太多额外依赖的情况下,能够正常执行。

因为 Nodejs 的 koffi 跨平台没有那么强,这一部分测试由 nodejs 和 python 两种语言联合进行。

测试点

  1. 跨平台产物 hash 一致
    1. 由于内部为二进制构建,产物需要在多种环境中产出一致的数据
    2. hash 计算只包括 woff2,不包括其它杂项数据
  2. wasm32 平台构建成功
    1. 32 位平台可能会与 64 位方法冲突导致问题

测试平台报告

平台编码 大小
aarch64-apple-darwin 1.98 MB
aarch64-unknown-linux-gnu-bookworm 1.98 MB
aarch64-unknown-linux-gnu-ubuntu20.04 1.98 MB
aarch64-unknown-linux-gnu-ubuntu22.04 1.98 MB
aarch64-unknown-linux-gnu-ubuntu_latest 1.98 MB
riscv64gc-unknown-linux-gnu 1.98 MB
s390x-unknown-linux-gnu 1.98 MB
wasm32-wasip1 1.98 MB
x86_64-apple-darwin 1.98 MB
x86_64-pc-windows-msvc 1.98 MB
x86_64-unknown-linux-gnu 1.98 MB

Font Feature 视觉测试

https://github.com/KonghaYao/cn-font-split/actions/workflows/test-font-feature.yml

视觉测试主要通过浏览器渲染各种不同的、具有 feature 功能的字体文本,来判断与源字体的展示一致性。

视觉测试采用 playwright + ts 脚本的方式进行测试。

测试步骤

  1. 测试前需要下载全量测试字体。
  2. 使用 cn-font-split 进行分包
  3. 最后通过 Vite dev server 开启前端测试项目端口。
  4. Playwright 对页面进行视觉测试
    1. 具体为对原始字体渲染和分包后字体渲染进行截图
    2. 通过图片 diff 算法比较两图像素,从而验证视觉一致性。

配置文件

字体相关渲染的文本和原始字体均放置在配置文件中,保证能够快速增删改查,减少维护难度。

字体文件在初始化时,会自动下载到本地的文件夹,二进制文件不计入 Git 记录。

前端测试项目主要提供简单的字体渲染展示,前端通过配置文件获取对应的字体和 CSS 文件,然后加载渲染即可。

CDN 全量构建测试

CDN 全量构建测试主要保证 cn-font-split 在生产环境中仍然具有良好的执行能力,对各种奇奇怪怪的字体正常构建。

CDN 全量构建测试将会执行 50 多个字体的构建,并推送产物到 CDN 中,完全复用测试环境。