自分のコードを使用して、公開された結果を自分の記事に簡単に再現する方法


15

私は記事で結果を得るために使用したプログラム/ライブラリを書きました。(ここにあります、私の質問は一般的です。)定期的に実行するテストがありますctest(実行には数分かかります)。この記事でいくつかの表または図を再現するために、スクリプトまたは単純なドライバープログラムを作成する必要があります。これは、おそらく10分以上実行される可能性があるため、通常のテストスイートのこの部分は必要ありません。同時に、記事の結果が次のようになることを確認したいと思います。

  • 後で再現
  • ライブラリを開発し続けた後も、同じ/正しい結果が得られることを確認してください

現在、通常のテストスイートの一部として実行する小さなドライバープログラムを作成しようとしています。記事の結果を再現する場合は、いくつかの行のコメントを解除します。もちろん、正確な行を知りません。また、記事とまったく同じ結果を得るために他のパラメーターを微調整する必要があるかどうかはわかりません。

また、記事から正確な図/表を計算するPythonスクリプトを作成しようとしました。このようなスクリプトは、定期的に実行されていない(時間がかかりすぎる)ため、通常、ライブラリの更新後に動作を停止します。

私が思いついた最良の方法は、Fortran(またはC / C ++)の例を使用することです。これは、定期的に(ライブラリの一部として)コンパイルされますが、通常のテストスイートでは実行されません。そのように、少なくとも私はそれがうまくコンパイルされることを知っています(したがって、うまくいけば実行もできます)そして、通常のテストスイートの一部として、いくつかの単純な(より小さい)サンプルをテストします。

この問題を処理する最適な方法は何ですか?


2
大きな質問です。私の最初の反応は、テストを迅速に実行できる迅速な回帰に分割し、継続的な統合作業の一部として使用するすべてのコミットおよびより長い回帰の前に実行することです。具体的には、前の種類のテストのみがあり、それらをまだ分割していない状況ですか?
アロンアーマディア

迅速に実行される多くのテストがあります。こちらをご覧ください:github.com/certik/hfsolver/tree/master/src/tests、記事の実際の計算を処理する方法がわかりません(たとえば、各テーブルで10分/ figureは簡単に合計数時間を与えます)。
オンドレジ・セティク

2
継続的な統合サーバーを使用して、夜間(または毎週、毎月など)に長いテストを自動的に実行します。結果以外に注意を払う必要はないので、どれだけ時間がかかるかは気にしません。
デビッドケッチャソン

回答:


6

deal.IIには、通常のUnix Makefileによって駆動されるテストスイートがあります。通常のすべてのテストを実行するデフォルトのターゲットと、高価なテスト用の個別のターゲットがあります。各テストの実行は汎用ルールを使用して行われますが、デフォルトのターゲットは特定のテストに対してのみ汎用ルールを呼び出し、高価なターゲットは高価なテストに対してそれを呼び出します。すべてが汎用ルールを使用して実行されるため、常に最新の状態になっている必要あります。古くなる可能性があるのは、テストの名前のリストだけです。

更新:上記のテキストは2012年に正解でした。2014年以降、deal.IIテストスイートはCTestに基づいていますが、一般的な考え方は引き続き有効です。


ありがとう!ここにドキュメントへのリンクがあります:dealii.org/7.2.0/development/testsuite.html#regression_testsそしてここに「通常のテスト」の結果があります:dealii.org/cgi-bin/regression_quick.plと「高価なテスト」:dealii.org/cgi-bin/regression.pl、私はそれを正しくしましたか?それでは、各リビジョンで「通常のテスト」を実行し、リビジョンのカップルごとに「高価なテスト」を実行しますか?
オンドレジ・セティク

そうでもない。通常、高価なテストの結果はWebサイトに投稿されません。
ウルフガングバンガース

それでは、各リリースの前に手動で実行しますか?彼らは走るのにどれくらい時間がかかりますか?私はあなたのアプローチが好きです。
オンドレジ・セティク

1
はい、手動で。時々、必ずリリース前に。一部のプロジェクトでは1時間以上かかりますが、ライブラリのごく一部のみをテストするため(ほとんどの場合、追加するアドオンプロジェクトをテストします。II)、すべてのリビジョンで実行する価値があるとは限りません。
ウォルフガングバンガース

大規模なテストなど、スーパーコンピューターでのみ実行できる並列テストはありp4estますか?
アロンアフマディア
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.