내 코드를 사용하여 내 기사에 게시 된 결과를 쉽게 재현하는 방법


15

기사에서 결과를 얻는 데 사용한 프로그램 / 라이브러리를 작성했습니다. (여기가 있다 ,하지만 내 질문은 일반적이다.) 내가 사용하여 정기적으로 실행하는 것이 시험이 ctest(가 실행하는 데 몇 분 정도 걸립니다). 이 기사의 일부 테이블이나 그림을 재현하려면 10 분 정도 실행되는 스크립트 또는 간단한 드라이버 프로그램을 구성해야하며 때로는 더 많이 실행하므로 일반 테스트 스위트 의이 부분을 원하지 않습니다. 동시에 기사의 결과가 다음과 같은지 확인할 수 있습니다.

  • 나중에 복제
  • 라이브러리를 계속 개발 한 후에도 여전히 똑같은 / 올바른 결과를 제공하는지 확인하십시오

현재 정규 테스트 스위트의 일부로 실행되는 작은 드라이버 프로그램을 사용하려고하는데 기사의 결과를 재현하려면 거기에 몇 줄을 주석 처리하십시오. 물론, 나는 정확한 선을 알지 못하고 기사에서와 정확히 동일한 결과를 얻기 위해 다른 매개 변수를 조정 해야하는 경우를 모릅니다.

또한 기사의 정확한 수치 / 테이블을 계산하는 Python 스크립트를 만들려고했습니다. 이러한 스크립트는 일반적으로 라이브러리를 업데이트 한 후 정기적으로 실행되지 않기 때문에 시간이 많이 걸리므로 작동이 중지됩니다.

나에게 일어난 가장 좋은 방법은 Fortran (또는 C / C ++) 예제를 사용하는 것인데,이 라이브러리는 정기적으로 (라이브러리의 일부로) 컴파일되지만 정규 테스트 스위트에서는 실행되지 않습니다. 그런 식으로, 나는 그것이 잘 컴파일된다는 것을 알고 있습니다 (따라서 희망적으로도 실행됩니다). 그리고 정규 테스트 스위트의 일부로 간단한 (더 작은) 예제를 테스트하겠습니다.

이 문제를 처리하는 최적의 방법은 무엇입니까?


2
제 첫 번째 반응은 테스트를 신속하게 실행할 수있는 빠른 회귀로 나누고 지속적인 통합 노력의 일환으로 사용하려는 모든 커밋과 긴 회귀 전에 수행해야한다는 것입니다. 당신은 구체적으로 당신이 이전 종류의 시험 만 가지고 있고 아직 나누지 않은 상황에 있습니까?
Aron Ahmadia

나는 github.com/certik/hfsolver/tree/master/src/tests 에서 빠르게 실행되는 많은 테스트를 가지고 있지만 기사의 실제 계산을 처리하는 방법을 모르겠습니다 (예 : 각 테이블에 대해 10 분) / figure는 총 몇 시간을 쉽게 제공합니다).
Ondřej Čertík

2
지속적인 통합 서버를 사용하여 야간 (또는 매주, 매월 등)으로 긴 테스트를 자동으로 실행하십시오. 결과 이외의 것에주의를 기울일 필요가 없으므로 시간이 오래 걸리더라도 신경 쓰지 않아도됩니다.
David Ketcheson

답변:


6

거래 II에는 정규 유닉스 메이크 파일이 주도하는 테스트 슈트가있다. 일반적인 모든 테스트를 실행하는 기본 대상과 값 비싼 테스트를위한 별도의 대상이 있습니다. 각 테스트 실행은 일반 규칙을 사용하여 수행되지만 기본 대상은 특정 테스트에 대해서만 일반 규칙을 호출하고 비싼 대상은 비싼 테스트를 위해 일반 규칙을 호출합니다. 모두 일반 규칙을 사용하여 수행되므로 항상 최신 상태 여야합니다 . 구식 일 수있는 것은 테스트 이름 목록 일뿐입니다.

업데이트 : 위의 텍스트는 2012 년에 정확했습니다. 2014 년 이후 거래 .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 , 내가 올바르게 얻었습니까? 따라서 각 개정에서 "정상 테스트"를 실행하고 모든 개정마다 "고가의 테스트"를 실행합니까?
Ondřej Čertík

좀 빠지는. 비싼 테스트 결과는 일반적으로 웹 사이트에 게시되지 않습니다.
Wolfgang Bangerth

각 릴리스 전에 수동으로 실행 해 봅시다. 그들은 얼마나 오래 걸립니까? 나는 당신의 접근 방식을 좋아합니다.
Ondřej Čertík

1
예, 수동으로 릴리스되기 전에 가끔씩 반드시 릴리스하십시오. 일부 프로젝트의 경우 한 시간 이상 걸리지 만 라이브러리의 작은 부분 만 테스트하기 때문에 (대부분은 추가 프로젝트를 처리해야합니다 .II) 항상 모든 개정에서 프로젝트를 실행하는 것이 가치가 있거나 가능한 것은 아닙니다.
Wolfgang Bangerth

슈퍼 컴퓨터에서만 실행할 수있는 병렬 테스트 (예 : 대규모 테스트)가 p4est있습니까?
Aron Ahmadia
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.