가설은 예제 소스로 매개변수화된 테스트를 작성할 수 있는 테스트 라이브러리 제품군입니다. 그런 다음 가설 구현은 테스트를 실패하게 만드는 간단하고 이해하기 쉬운 예를 생성합니다. 이는 소프트웨어가 지루한 부분을 자동화하고 인간이 하는 것보다 더 높은 표준에 따라 수행하도록 함으로써 테스트 작성을 단순화하는 동시에 테스트를 더욱 강력하게 만들어 사용자가 더 높은 수준의 테스트 로직에 집중할 수 있도록 해줍니다.
이러한 종류의 테스트를 종종 "속성 기반 테스트"라고 하며 이 개념의 가장 널리 알려진 구현은 Haskell 라이브러리 QuickCheck입니다. 그러나 가설은 QuickCheck와 크게 다르며 관용적이고 쉽게 기존 테스트 스타일에 적합하도록 설계되었습니다. 하스켈이나 함수형 프로그래밍에 전혀 익숙하지 않아도 익숙합니다.
Python에 대한 가설은 원래 구현이며 현재 완전히 생산 준비가 되어 있고 적극적으로 유지 관리되는 유일한 구현입니다.
가설의 핵심 아이디어는 언어에 구애받지 않으며 원칙적으로 모든 언어에 적합합니다. 우리는 다양한 언어에 대한 구현을 개발하고 지원하는 데 관심이 있지만 현재는 이를 수행할 리소스가 부족하므로 포팅 노력은 대부분 프로토타입입니다.
다른 언어에 대한 가설의 두 가지 프로토타입 구현은 다음과 같습니다.
또한 가설, 추측, 러스트의 핵심 엔진을 포팅하는 기능도 있습니다. 완전한 기능은 아니지만 장기적으로 우리는 기존 기능의 대부분을 Rust로 옮기고 그 위에 Python용 가설을 다시 구축하여 다른 언어로의 포팅 노력을 크게 줄일 수 있기를 바라고 있습니다.
이들 중 일부 또는 전부는 상대적으로 적은 노력(몇 개월의 풀타임 작업)으로 완전한 구현으로 전환될 수 있지만, 초기 작업뿐만 아니라 지속적인 유지 관리 노력을 제공하거나 자금을 조달할 준비가 된 사람이 필요합니다. 실행 가능하기 위해서.