测试 MSVC 编译器后端 - C++ 团队博客

这篇文章介绍了微软如何测试MSVC的后端,包括正确性测试、内部测试、回归测试、优化测试、汇编差异测试、Windows 测试、自食其果测试、其他微软软件作为测试、真实世界代码测试、性能测试和吞吐量测试等方面。

主要观点

  • MSVC 后端测试对于确保编译器质量至关重要,涉及多个方面和多种测试方法。
  • 测试旨在保证编译代码的正确性、性能和吞吐量,同时不断应对编译器的复杂性和变化。

关键信息和重要细节

  • 正确性测试:编译器工程师日常工作包括编写和运行测试,测试通过 Azure DevOps 管道运行,大量测试在合并前进行,以尽早发现问题。
  • 内部测试:启用断言的编译器作为第一道防线,日常开发使用,同时发布速度较快但断言较少的版本。
  • 回归测试:对每个 PR 运行回归测试,基于以前的错误报告和工程师主动编写的测试,测试多种目标和编译器选项。
  • 优化测试:添加单元测试和类似 FileCheck 的测试来补充回归测试,解决优化测试的难题,如多线程、输出顺序等。
  • 汇编差异测试:生成回归测试的汇编语言差异,帮助工程师检查 PR 对生成代码的影响。
  • Windows 测试:使用修改后的编译器构建 Windows 进行测试,确保编译器不会破坏 Windows 构建和启动验证,Windows 是编译器的重要压力测试。
  • 自食其果测试:编译器的开发分支使用最新的预览版本构建,另一个测试管道使用刚构建的编译器构建自身。
  • 真实世界代码测试:通过 Azure DevOps 测试管道构建开源软件,定期运行测试并接收报告。
  • 性能测试:使用 Azure DevOps 管道运行基准测试套件,评估新优化的性能影响。
  • 吞吐量测试:使用链接重现工具检测 PR 对吞吐量的影响,在代码审查时发现问题。
  • Bug 修复和新功能优化流程:包括识别修复、提交 PR、运行测试、查看差异、合并等步骤,新功能和优化的开发流程与 Bug 修复类似,但更注重测试数量和性能吞吐量影响。
  • 发布测试:主要组件在独立分支中开发和测试,创建发布分支进行预览和最终发布,经过多种测试,包括构建开源软件和 Visual Studio 测试。

总之,MSVC 的测试过程复杂而全面,旨在提供高质量的编译器服务。

阅读 15
0 条评论