Oskar Wickström이 새로운 속성 기반 브라우저 테스트 프레임워크 Bombadil을 공개하고, Quickstrom의 후속으로서 Bombadil이 지향하는 목표와 설계 선택을 소개한다.
Oskar Wickström
2026년 1월 28일
오늘 저는 완전히 새로 만든 속성 기반(property-based) 브라우저 테스트 프레임워크인 Bombadil 프로젝트를 발표하고 오픈 소스로 공개합니다. 저는 두 달 전 Antithesis에 합류하면서 이 작업을 시작했습니다. 아직은 초기 단계이지만, 처음부터 공개적으로 개발하고 진행 상황을 공유하기로 결정했습니다.
Bombadil이라는 이름은 지난주에 정했습니다. 그리고 며칠 뒤, 이게 터졌죠:
스타트업들은 모든 반지의 제왕 이름이 다 선점되고 나면 힘들어질 거예요. 남는 건 Bombadil AI 같은 것뿐일 테니까.
— Patrick Collison (@patrickc) 2026년 1월 25일
Quickstrom은 TodoMVC 앱의 절반이 넘는 곳에서 버그를 찾아내며 그 가치를 입증했지만, Bombadil은 Quickstrom의 단점을 보완하는 동시에 웹 앱에 대한 생성형(generative) 테스트의 더 야심찬 미래를 그리고자 합니다. 더 빠르고 더 똑똑한 상태 공간 탐색, 현대적이고 사용하기 쉬운 명세(spec) 언어, 테스트 실패를 재현하고 디버깅하기 위한 더 나은 도구, 그리고 더 나은 배포 스토리까지 말이죠.
저는 Bombadil을 Quickstrom의 후속으로 생각합니다. 여러 해 동안 다양한 모델로 Quickstrom을 유지하려고 시도한 끝에, 이제 훨씬 더 나은 답을 얻었습니다. Antithesis에서 이를 만들고, 누구나 무료로 사용할 수 있는 가치 있는 것을 오픈으로 제공하는 동시에 회사의 상용 제품도 강화하는 것입니다. Bombadil은 로컬이나 CI에서 사용해 웹 앱을 조기에 테스트할 수 있습니다. 파워 유저는 한 걸음 더 나아가 Antithesis 및 그 결정적(deterministic) 하이퍼바이저 환경 안에서 Bombadil을 실행할 수도 있습니다. 그러면 실패한 테스트를 완벽하게 재현할 수 있죠. 심지어 Antithesis에서 다른 워크로드와 Bombadil을 결합해 전체 스택을 결정적으로 테스트할 수도 있습니다. 이게 테스트의 성배가 아니고 뭐겠어요?
Bombadil은 접근성을 최우선으로 두고 처음부터 새로 만들었습니다. 새 명세 언어와, 명세를 작성하고 유지보수하기 위한 더 나은 도구에 집중하고 있습니다. 지금은 TypeScript로 명세 DSL을 만들고 있습니다. Quickstrom과 마찬가지로 선형 시계열 논리에 기반하지만, 훨씬 더 인체공학적(ergonomic)으로 만드는 것이 목표입니다. 아래는 에러 메시지가 결국 사라지는지 검증하는 예시입니다:
const errorMessage = extract(
(state) =>
state.document.body.querySelector(".error")
?.textContent
?? null
);
export const errorEventuallyDisappears = always(
condition(() => errorMessage !== null).implies(
eventually(() => errorMessage === null)
.within(5, "seconds")
)
);
초기의 해키한 PureScript DSL과, 별도로 설계한 언어인 _Specstrom_은 채택에 큰 장애물이었습니다. 오늘날 TypeScript는 품질을 중시하는 웹 개발자들 사이에서 널리 쓰이고 있으며, 그것이 취향이 아니라면 Bombadil은 순수 JavaScript로도 동작합니다.
우리는 Bombadil을 Rust로 작성하고 있습니다. 훌륭한 생태계를 활용해 단일 정적 링크 실행 파일 하나로 배포할 수 있습니다. 여러분의 플랫폼용 바이너리를 내려받고, Chromium 기반 브라우저를 지정한 뒤 바로 실행하면 됩니다!
Bombadil은 아직 초기지만 사용할 수 있습니다. GitHub에서 확인해 보고, 여러분의 프로젝트에 적용해 보며, 무엇이 깨지는지 알려 주세요. 또 여러분 시스템에서 _그것_이 무엇을 깨뜨리는지도요! 도움과 토론을 위해 Discord에 참여하거나, Twitter/X에서 개발 과정을 팔로우하세요. 이제 시작일 뿐입니다 — 우리는 피드백과 초기 사용자를 적극적으로 찾고 있으며, 이 프로젝트가 어디로 향할지 함께 만들어가길 바랍니다.