Skip to main content
QUICK REVIEW

[논문 리뷰] Testing with Jupyter notebooks: NoteBook VALidation (nbval) plug-in for pytest

Hans Fangohr, Vidar Tonaas Fauske|arXiv (Cornell University)|2020. 01. 13.
Software Engineering Research참고 문헌 7인용 수 6
한 줄 요약

이 논문은 nbval를 소개한다. nbval는 Jupyter 노트북의 출력을 재실행하여 저장된 출력과 비교함으로써 재현 가능성을 검증하는 pytest 플러그인이다. 이는 재현 가능성과 테스트 커버리지를 보장하며, 노트북을 실행 가능한 문서, 단위 테스트, 통합 테스트, 시스템 테스트로 활용할 수 있도록 한다. 출력 정제, 오류 처리, nbdime를 통한 rich diff 기능을 지원한다.

ABSTRACT

The Notebook validation tool nbval allows to load and execute Python code from a Jupyter notebook file. While computing outputs from the cells in the notebook, these outputs are compared with the outputs saved in the notebook file, treating each cell as a test. Deviations are reported as test failures, with various configuration options available to control the behaviour. Application use cases include the validation of notebook-based documentation, tutorials and textbooks, as well as the use of notebooks as additional unit, integration and system tests for the libraries that are used in the notebook. Nbval is implemented as a plugin for the pytest testing software.

연구 동기 및 목표

  • 기본 라이브러리의 진화에 따라 시간이 지남에 따라 노트북의 재현 가능성을 확보하기 위한 도전 과제를 해결하기 위해.
  • Jupyter 노트북이 코드, 문서화, 튜토리얼의 실행 가능한 테스트로 기능하도록 하기 위해.
  • CI/CD 파이프라인에서 출력 비교를 자동화함으로써 수동 검증의 부담을 줄이기 위해.
  • 의도하지 않은 출력 변경 사항을 감지함으로써 코드의 안전한 리팩터링을 지원하기 위해.
  • pytest와 통합된 가벼운 플러그인 기반 솔루션을 제공하여 원활한 테스트 워크플로우를 구현하기 위해.

제안 방법

  • nbval는 IPython 커널을 사용하여 Jupyter 노트북의 각 셀을 로드하고 실행한다.
  • 각 셀의 재계산된 출력을 이전에 노트북 파일에 저장된 출력과 비교한다.
  • 엄격 모드 또는 유연 모드로 작동하며, 셀 메타데이터 태그인 nbval-check-output 및 nbval-ignore-output를 통해 구성 가능한 동작을 지원한다.
  • 정규 표현식을 사용한 출력 정제를 통해 타임스탬프나 메모리 주소와 같은 변수 값에 영향을 받지 않는 비교를 가능하게 한다.
  • nbdime과 통합되어 이미지 및 멀티미디어 출력 비교를 포함한 rich diff를 시각화할 수 있다.
  • 검증 중에 셀을 건너뛸 수 있도록(nbval-skip) 또는 예외를 무시할 수 있도록(nbval-raises-exception) 한다.

실험 결과

연구 질문

  • RQ1Jupyter 노트북이 과학적 및 데이터 과학 코드의 자동화된 테스팅 수단으로 효과적으로 사용될 수 있는가?
  • RQ2의존성 변경이 발생함에 따라 시간이 지남에 따라 노트북의 출력 재현 가능성을 자동으로 검증할 수 있는가?
  • RQ3노트북 출력에서 변동 가능한 값(예: 타임스탬프, 메모리 주소)을 신뢰성 있게 비교할 수 있는 메커니즘은 무엇인가?
  • RQ4노트북 검증을 프로덕션 환경에서 지속적 통합 파이프라인에 통합할 수 있는가?
  • RQ5유지보수 부담 증가 없이, 노트북이 문서화와 테스트 스위트의 역할을 동시에 수행할 수 있는 정도는 어느 정도인가?

주요 결과

  • 코드 변경으로 이전에 저장된 출력과의 일치하지 않는 출력이 발생할 경우, nbval는 이를 성공적으로 탐지한다.
  • 정규 표현식 기반의 정제 기능을 통해 타임스탬프나 환경에 따라 달라지는 값이 포함된 출력의 신뢰성 있는 비교가 가능하다.
  • nbdime과의 통합을 통해 이미지 및 멀티미디어 출력의 시각적 비교가 가능해져, 차이점의 디버깅이 향상된다.
  • nbval로 검증된 노트북은 추가적인 테스트 코드 없이도 시스템 테스트로 기능할 수 있으며, 테스트 커버리지를 높일 수 있다.
  • 플러그인은 점진적인 테스트 및 문서 유지보수를 지원하여 연구 소프트웨어 프로젝트의 기술 부채를 감소시킨다.
  • nbval는 노트북의 조기에 지속적인 검증을 가능하게 하여 회귀를 방지하고 장기적인 재현 가능성을 확보한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.