回答:
数値コードのテストに関する問題は、(i)正確な出力を常に知っているとは限らず、計算結果を保存して後で比較することしかできない、つまり回帰テストを行うことができること、および(ii)その結果は、丸めが異なるため、マシンごとにわずかに異なる場合があります。
deal.IIの仕組みについては、http://www.dealii.org/developer/development/testsuite.html#regression_testsを ご覧ください。
私は最近、私が取り組んでいるいくつかの数値ライブラリをテストするためにgoogletestを使用しており、非常に満足しています。非常に簡単なテストを非常に迅速に記述することも、データの初期化などを必要とする複雑なテストを記述することもできます。また、ビット単位ではなく浮動小数点比較を簡単に行う方法も提供します(他の多くの人がそうしているようです)。
計算生物学C ++ライブラリ(Chaste)には、http://cxxtest.com/を使用します。これは非常に使いやすく、うまく機能し、assert()
スタイルステートメントでテストするためのいくつかのマクロを提供します。科学計算では、これらは一般に単純な直接比較TS_ASSERT_EQUALS(a,b)
または数値比較TS_ASSERT_DELTA(a,b,tolerance)
です。
これらの基本的なマクロを使用して追加のマクロを簡単に記述し、独自のベクター/マトリックスを選択して比較することもできます。また、コードが特定の状況で適切な警告とエラーメッセージをスローすることを確認することもできます。test
ソースコードのフォルダーでいくつかの例を参照できます:https : //chaste.cs.ox.ac.uk/trac/browser/trunk