Cách dễ dàng tái tạo kết quả được công bố trong các bài viết của riêng tôi bằng mã của riêng tôi


15

Tôi đã viết một chương trình / thư viện mà tôi đã sử dụng để thu được kết quả trong một bài viết. (Đây , nhưng câu hỏi của tôi là chung chung.) Tôi có các bài kiểm tra mà tôi chạy thường xuyên bằng cách sử dụng ctest(phải mất vài phút để chạy). Để tái tạo một số bảng hoặc số liệu trong bài viết, tôi phải xây dựng một tập lệnh hoặc chương trình trình điều khiển đơn giản, có thể chạy trong 10 phút, đôi khi nhiều hơn, vì vậy tôi không muốn có phần này của bộ kiểm tra thông thường. Đồng thời, tôi muốn đảm bảo rằng kết quả từ bài viết có thể là:

  • sao chép sau
  • đảm bảo họ vẫn cho kết quả giống / đúng sau khi tôi tiếp tục phát triển thư viện

Hiện tại tôi cố gắng có một chương trình điều khiển nhỏ mà tôi chạy như một phần của bộ kiểm tra thông thường và nếu tôi muốn sao chép kết quả từ bài viết, tôi sẽ bỏ qua một số dòng trong đó. Tất nhiên, tôi không bao giờ biết dòng chính xác nào và nếu tôi phải điều chỉnh một số tham số khác để có được kết quả chính xác như trong bài viết.

Tôi cũng đã cố gắng để có một kịch bản Python tính toán các số liệu / bảng chính xác từ bài viết. Một tập lệnh như vậy thường ngừng hoạt động sau khi cập nhật lên thư viện, vì nó không được chạy một cách thường xuyên (mất quá nhiều thời gian).

Phương pháp tốt nhất xảy ra với tôi là có một ví dụ Fortran (hoặc C / C ++), sẽ được biên dịch thường xuyên (như một phần của thư viện), nhưng không chạy trong bộ kiểm tra thông thường. Bằng cách đó, ít nhất tôi biết rằng nó biên dịch tốt (và do đó hy vọng cũng chạy). Và tôi sẽ kiểm tra một số ví dụ đơn giản (nhỏ hơn) như là một phần của bộ kiểm tra thông thường.

Những cách tối ưu để xử lý vấn đề này là gì?


2
Câu hỏi tuyệt vời, phản ứng đầu tiên của tôi là bạn nên chia các bài kiểm tra của mình thành các hồi quy nhanh có thể chạy nhanh và được thực hiện trước mỗi lần hồi quy và hồi quy dài hơn mà bạn muốn sử dụng như một phần của nỗ lực tích hợp liên tục. Bạn có đặc biệt trong tình huống bạn chỉ có các thử nghiệm của giống cũ và chưa phân chia chúng không?
Aron Ahmadia

Tôi có rất nhiều bài kiểm tra chạy nhanh, xem tại đây: github.com/certik/hfsolver/tree/master/src/tests , nhưng tôi không biết cách xử lý các tính toán thực tế cho bài viết (ví dụ 10 phút cho mỗi bảng / con số cho dễ dàng tổng số giờ).
Ondřej ertík

2
Chạy các bài kiểm tra dài tự động hàng đêm (hoặc hàng tuần, hàng tháng, v.v.) bằng máy chủ tích hợp liên tục. Vì bạn không cần phải chú ý đến bất cứ điều gì ngoài kết quả, bạn sẽ không quan tâm họ mất bao lâu.
David Ketcheson

Câu trả lời:


6

Trong deal.II, chúng tôi có một bản thử nghiệm được điều khiển bởi một Makefile Unix thông thường. Nó có một mục tiêu mặc định chạy tất cả các bài kiểm tra thông thường và một mục tiêu riêng cho các bài kiểm tra đắt tiền. Chạy từng thử nghiệm được thực hiện bằng cách sử dụng quy tắc chung nhưng mục tiêu mặc định chỉ gọi quy tắc chung cho các thử nghiệm nhất định và mục tiêu đắt tiền gọi nó cho các thử nghiệm đắt tiền. Bởi vì tất cả được thực hiện bằng cách sử dụng quy tắc chung, nên nó phải được cập nhật tại bất kỳ thời điểm nào; những gì có thể hết hạn chỉ có thể là danh sách các tên của các bài kiểm tra.

Cập nhật: Văn bản trên là chính xác vào năm 2012. Kể từ năm 2014, bản thử nghiệm deal.II dựa trên CTest, nhưng ý tưởng chung vẫn còn hiệu lực.


Cảm ơn! Đây là liên kết đến các tài liệu: dealii.org/7.2.0/development/testsuite.html#regression_tests và đây là kết quả của "các bài kiểm tra thông thường": dealii.org/cgi-bin/regression_quick.pl và ở đây của "Các bài kiểm tra đắt tiền": dealii.org/cgi-bin/regression.pl , tôi đã hiểu đúng chưa? Vì vậy, bạn chỉ chạy "các bài kiểm tra thông thường" trên mỗi lần sửa đổi và "các bài kiểm tra đắt tiền" chỉ sau mỗi lần sửa đổi?
Ondřej Čertík

Không hẳn. Kết quả cho các bài kiểm tra đắt tiền thường không được đăng lên trang web.
Wolfgang Bangerth

Vì vậy, bạn chạy chúng bằng tay hãy nói trước mỗi lần phát hành? Họ mất bao lâu để chạy? Tôi thích cách tiếp cận của bạn.
Ondřej Čertík

1
Vâng, bằng tay. Mỗi lần một, trước khi phát hành chắc chắn. Đối với một số dự án, họ mất một giờ hoặc hơn nhưng vì họ chỉ kiểm tra một phần nhỏ của thư viện (họ chủ yếu kiểm tra các dự án bổ trợ để giải quyết.II) không phải lúc nào cũng có giá trị hoặc có thể chạy chúng với mọi sửa đổi.
Wolfgang Bangerth

Bạn có bất kỳ thử nghiệm song song nào chỉ có thể chạy trên siêu máy tính, ví dụ, bất kỳ thử nghiệm quy mô lớn p4estnào không?
Aron Ahmadia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.