Hegel은 Hypothesis의 속성 기반 테스트 역량을 모든 언어로 확장하려는 시도입니다.
Hegel은 Hypothesis의 속성 기반 테스트 성능을 모든 언어에 가져오려는 시도입니다.
익숙하지 않다면, Hypothesis는 세계에서 가장 널리 사용되는 속성 기반 테스트 라이브러리입니다.
Hypothesis가 이런 종류의 라이브러리 가운데 가장 널리 사용되는 이유의 일부는, 꽤 인기 있는 Python으로 작성되었기 때문입니다. 하지만 Hypothesis는 Python 최초의 속성 기반 테스트 라이브러리가 아니었고, 널리 사용되게 된 첫 번째 라이브러리였을 뿐입니다. 이는 다른 속성 기반 테스트 라이브러리보다 많은 장점을 가지고 있기 때문입니다.
주요한 장점은 다음과 같습니다:
이 모든 장점은 Hypothesis의 기본 모델에서 비롯되며, 그 자체는 비교적 단순합니다. 하지만 현실적으로 Hypothesis의 진짜 경쟁 우위는 Hypothesis 개발자들(그리고 Hegel에 참여하는 우리를 포함해)이 거기에 비합리적일 정도의 노력을 들였다는 점입니다. 그 결과, 대부분의 사람들은 합리적인 수준의 노력만 들이려고 하기 때문에, 이에 근접하는 다른 라이브러리는 많지 않습니다. Go의 Rapid library는 우리가 본 것 가운데 아마 가장 신뢰할 만한 포팅이지만, Hypothesis에서 영감을 받았다고 주장하는 대부분의 다른 라이브러리는 핵심 모델을 채택하지 않았고, 그 결과 그 이점을 얻지 못했습니다. 그리고 솔직히 말해, 우리도 새로운 언어마다 다시 그렇게 많은 노력을 들일 생각은 없습니다! 모든 언어에 Hypothesis 수준의 속성 기반 테스트 라이브러리가 있으면 좋겠지만, 각 언어마다 그것을 유지보수해야 하는 것보다는 덜 원하지 않습니다.
Hegel은 이를 해결하려는 우리의 시도입니다. 우리는 어떤 언어에서든 사용할 수 있는 재사용 가능한 코어를 구현하고, 그 코어의 얇은 프런트엔드 역할을 할 수 있는 다양한 언어별 라이브러리를 만듭니다. 이렇게 하면 비합리적일 정도의 노력을 언어마다 한 번씩이 아니라 단 한 번만 들이면 되고, 모든 언어에서 뛰어난 속성 기반 테스트가 가능해질 여지를 엽니다. 우리는 이것이 특히 지금 매우 중요하다고 생각합니다.
속성 기반 테스트는 항상 신뢰할 수 있는 소프트웨어 개발을 위한 훌륭한 도구였지만, LLM 기반 코딩 에이전트가 작성하는 코드가 급증한 지금은 더욱 중요해졌습니다. AI가 작성한 코드는 동시에 놀라울 만큼 인상적이면서도, 더 적절한 표현이 없어서 이렇게 말하자면, 허술합니다. 그리고 우리는 이를 보완할 도구가 필요합니다. 속성 기반 테스트는 인간의 사소한 실수를 잡아내는 데 입증된 실적이 있으며, LLM에 대해서도 같은 일을 아주 잘 해냅니다.
반대로, 속성 기반 테스트를 시작하는 일도 그 어느 때보다 쉬워졌습니다. 에이전트들이 실제로 이를 작성하는 데 꽤 능하기 때문입니다! 우리는 에이전트가 여러분을 위해 속성 기반 테스트를 작성하도록 돕는 Hegel skill을 제공합니다. 이것이 여러분이 직접 속성 기반 테스트를 작성하는 일을 대체할 수도 없고, 대체해서도 안 되지만, 사람들에게 속성 기반 테스트에서 가장 어려운 부분은 늘 첫 번째 테스트를 작성하는 일이었던 것 같습니다. 왜냐하면 이것은 여러분의 코드를 테스트하기 위한 데이터를 어떻게 생성할지에 대해 훨씬 더 많이 생각하도록 강제하기 때문이며, 에이전트가 그 초기 고비를 넘기게 도와준다면 그것은 엄청난 이점입니다.
물론 이 모든 것은 특별히 Hegel이 아니라 속성 기반 테스트 를 사용해야 한다는 주장입니다. 그렇다면 왜 특별히 Hegel을 사용해야 할까요?
음, 이미 만족스럽게 사용 중인 훌륭한 속성 기반 테스트가 있다면, 아마 사용하지 않아야 할 것입니다. Hegel은 아직 초기 단계이고, 우리가 모든 언어에서 최고의 속성 기반 테스트 라이브러리 가 되기를 원하며 결국 그렇게 만들 수 있다고 확신하지만, 아직 다소 거친 부분이 있다는 점은 부인할 수 없습니다. 그렇긴 해도, 그래도 한번 살펴보고 싶다면 Claude가 여러분의 기존 테스트를 한 번에 포팅해 줄 것이라고 생각합니다. 그리고 어떤 쪽을 더 선호하는지 직접 판단할 수 있습니다. (만약 기존 것이 더 낫다면, 왜 그런지 꼭 알려주시면 정말로 감사하겠습니다. 그래야 우리가 고칠 수 있습니다!)
반면, 새로운 속성 기반 테스트를 처음부터 시작하고 싶다면, 우리는 Hegel이 그렇게 하기에 훌륭한 출발점이라고 생각합니다. Hypothesis 코어로부터 많은 강력함을 물려받았고, 가능한 한 쉽게 사용할 수 있도록 만들었습니다.
지금의 Hegel은 대체로 “개발자 프리뷰”에 가깝습니다. 기본 논리는 Hypothesis가 매우 견고하기 때문에 꽤 단단할 것이라고 기대합니다. 하지만 우리가 그것과 상호작용하는 방식에는 분명히 다소 거친 부분이 있을 것입니다. 우리는 API에 꽤 만족하지만, 100% 완벽하게 맞추지는 못했을 것이라고 예상합니다.
그래도 우리는 여러분이 시간을 들여 한 번 시도해 볼 가치가 있다고 생각합니다. 프로젝트에서 속성 기반 테스트를 처음 사용한다면, 이를 사용했을 때 거의 확실히 버그를 발견하게 될 것입니다. 바라건대 그 버그가 대부분은 여러분의 코드에 있기를 바랍니다. 그리고 여러분이 결국 더 안정화될 때까지 이를 채택하지 않기로 하더라도, 그것만으로도 충분히 유용합니다. 실제로 사용해 보셨다면, 어떻게 되었는지 알려 주세요!