위키득계정 ↗
기술

Deal 계약 라이브러리

Deal 계약 라이브러리기술
대상 언어
Python
표현 방식
데코레이터 기반 계약
검사 항목
값 예외 부작용
연계
pytest와 Hypothesis 등
Deal은 Python 함수의 사전 조건과 사후 조건, 예외 및 부작용을 표현하는 계약 라이브러리다. 작성한 계약을 실행 시 검사와 테스트, 정적 분석에 활용한다.

함수의 약속을 코드로

함수에 허용할 입력과 반환값이 지켜야 하는 조건을 명시한다. 상태가 유지해야 하는 불변식도 계약의 한 형태다. 함수가 어떤 값을 계산하는지만 아니라 어떤 예외를 내거나 외부에 영향을 주는지도 설명할 수 있다.

여러 검사 경로

계약을 런타임에 검사하거나 속성 기반 테스트 생성과 정적 검사에 사용할 수 있다. 형식 검증 기능도 별도의 분석 경로로 제공한다. 각 경로의 실행 여부와 지원 범위는 다르므로 데코레이터가 있다는 이유로 모두 증명되었다고 판단하면 안 된다.

점진적인 도입

필요한 함수부터 계약을 추가하는 접근을 지원한다. 런타임 검사는 활성화 여부를 선택할 수 있고 분석 도구의 의존성은 실제 서비스 실행 환경과 구분된다. 계약이 실제 요구를 정확히 표현하는지는 개발자가 검토해야 한다.

관련 문서

CrossHair / Nagini / Atheris / Pynguin