在我们的测试套件的美感引导下

主要观点:作者通过对自己开发的软件 Raven 进行改进,介绍了多种提升软件质量的方法,包括 Github CI 测试、实际快照测试、静态证明无恐慌以及模糊测试等,并分享了改进过程中的经验和成果。
关键信息:

  • Raven 是 Uxn CPU 和 Varavara ordinator 的独立实现,为跨平台便携性设计。
  • Github CI 测试包括在所有原生平台构建和测试、确认 WebAssembly 构建无错误、在所有平台运行 Clippy 以及确保代码符合rustfmt规范等,发现 Windows 运行器较慢且ubuntu-24.04-arm运行器不可靠。
  • 实际快照测试通过运行系统一定周期并捕获屏幕状态与已知良好图像比较来测试Screen设备,还进行鼠标和键盘交互测试,首次添加交互时一些测试失败。
  • 静态证明无恐慌通过构建一个在丢弃时调用不存在函数的结构体NoPanic,如果代码可能恐慌则链接器会出错,作者编写了多个宏来检查每个操作码函数是否无恐慌。
  • 模糊测试使用cargo-fuzz对 Uxn CPU 实现的基线解释器和“原生”解释器进行测试,发现三个操作码在两种解释器中的差异,包括 Rust 实现中的错误和 Assembly 实现中的正确差异,修复后运行模糊测试未发现其他问题。
    重要细节:
  • 介绍了各种测试的具体操作和遇到的问题,如 Clippy 在ubuntu-24.04-arm运行器上的 segfault 错误等。
  • 详细说明了静态证明无恐慌的代码实现和原理,以及模糊测试的输入、正确性检查和测试结果。
  • 提及改进后的基线解释器在 Rust 中 100%安全、无恐慌且比 C 参考实现快 50%,部分属性在编译时保证且在 CI 中检查。
阅读 8
0 条评论