我负责在 Teamcity 上维护一个构建服务器,用于测试我们的内部 FE 软件。目前,我们的测试套件包含一个基准列表,每次使用 svn 作为版本控制软件进行提交时都会运行这些基准。基准测试是完全网格化的边界值问题,旨在测试软件的各种功能。通过在每个基准测试上运行内核的头版本,然后将输出文件与参考文件进行比较来测试这些功能。参考文件是专家/学者认为“正确”的先前运行测试的结果。因此,当此输出文件的结果与初始运行生成的结果不同时,测试被认为是“损坏的”。
我想通过让我们的测试套件基于每个基准测试的物理/分析解决方案而不是任意输出文件来运行比较来改进这个系统。但是,在这种情况下,如何判断一个测试“坏”了呢?解析解可以也永远不会与数值解完全相同,因此比较两个文件是不可能的。是否存在可能基于统计数据的通用方法/质量控制过程,可以确保我们的代码在科学上保持可行?ANSYS 或 Bentley 等主要软件公司如何确保他们的科学软件不会偏离精确的解决方案?
请注意,我在商业软件开发办公室环境中,正在寻找可以在 Teamcity/tortoisesvn/Visual Studio 环境中以直接方式实现的东西。
以前有人有过这样的经历吗?