数值回归检验
nrtest的Python项目详细描述
nretest
nrtest是一个端到端回归测试框架,专为执行数值计算的科学软件设计。
功能
nrtest旨在简化您的工作流程:
- json文件描述了正在测试的软件和测试本身
- 结果文件存储在可移植的基准目录中
- 通过迭代测试和测试结果来比较基准
- 可以通过扩展轻松添加自定义比较
基本用法
作为示例用法,我们考虑测试TOPAS。这是一个用于粒子模拟的蒙特卡罗工具,专为医学物理研究而设计。当然,这样的工具必须根据实验数据进行严格的验证。但是,经常运行较短的测试也很有用,通过将结果与以前的版本进行比较来检查回归。
首先,我们在名为apps/topas-2.0.3.json的配置文件中描述正在测试的软件。请注意,setup_script定义了运行软件所需的环境。
{"name":"topas","version":"2.0.3","setup_script":"/path/to/topas-2.0.3/setup.sh","exe":"topas"}
然后,我们在名为tests/Scoring_01.json的第二个配置文件中描述测试。在此过程中,我们定义了呈现给可执行文件的命令行参数和运行测试所需的输入文件。最后,我们还指定预期的输出文件,并声明如何将它们与基准进行比较。这里我们使用topas binned,这是一个自定义的比较例程,尽管一些比较例程与nrtest绑定在一起。也很容易添加自己的。
{"name":"Scoring_01","version":"1.0","description":"Basic test shooting a 6cm diameter proton beam into a water phantom.","args":["Scoring_01.txt"],"input_files":["Scoring_01.txt","GlobalParameters.txt"],"output_files":{"Dose.csv":"topas binned"}}
为了执行测试,我们告诉nrtest在哪里找到配置文件以及在哪里输出基准。注意,nrtest将搜索tests/进行测试,尽管我们可以指定tests/Scoring_01.json。
$ nrtest execute apps/topas-2.0.3.json tests/ -o benchmarks/2.0.3
INFO: Found 1 tests
Scoring_01: pass
INFO: Finished
要与以前的基准进行比较:
$ nrtest compare benchmarks/2.0.3 benchmarks/2.0.2 Scoring_01: pass INFO: Finished
更高级的用法在documentation中有详细说明。
历史记录
0.2.0(2016-02-21)
- 为比较函数添加扩展名
0.1.0(2016-02-21)
- pypi上的第一个版本。