본문으로 건너뛰기
testcase.ac를 오픈소스로 공개합니다

testcase.ac를 오픈소스로 공개합니다

2026년 4월 25일

한 줄 요약: testcase.ac는 데이터와 웹 서비스 코드 모두 오픈소스로 공개됩니다. 코드는 testcase-ac/testcase-ac에서, 새로운 서비스는 next.testcase.ac에서 미리 확인해 보세요.

들어가며

안녕하세요, testcase.ac의 개발자입니다.

지난 4월 15일, 백준 온라인 저지 (이하 BOJ1)의 서비스 종료가 공지되었습니다. BOJ은 한국에서 알고리즘 문제 풀이를 해 본 사람이라면 대부분 한 번쯤 거쳐 갔을, 가장 익숙한 서비스였습니다. 저 또한 한때는 BOJ에서 문제를 푸는 낙으로 하루하루를 살아갔었고, 그래서 이번 공지는 많은 분들에게 그랬듯이, 저에게도 너무나 아쉽고 슬픈 소식이었습니다.

자연스럽게 testcase.ac를 어떻게 이어갈지에 대한 생각을 하게 되었습니다. testcase.ac는 BOJ 서비스 종료 공지 전까지는 매일 평균 500명 정도가 들어와 그 중 400명 정도가 반례 찾기를 시도하던 사이트였고, 어느 정도 문제풀이에 도움을 주고 있었다고 생각합니다. 다만 testcase.ac는 애초에 자체적인 수익을 내기 위한 서비스가 아니기 때문에 사실상 제 사비로 운영하고 있고, 이와 별개로, testcase.ac에 새로운 기능을 추가하거나, 올라온 코드와 피드백을 확인하는 데에 충분한 열정을 가지기 힘들다는 생각이 점차 들던 와중이기도 했습니다.

BOJ 서비스 종료 이후 BOJ의 대체재를 찾는 움직임이 많이 보였고, 간혹 그 대체재로 (감사하게도) testcase.ac를 언급해 주신 분들도 있었습니다. 하지만, 아쉽게도 기존의 testcase.ac는 여러 본질적인 문제점들로 인해 BOJ을 대체하기는커녕, 이대로 BOJ이 없어진 후에 존속할 수가 없는 서비스입니다.

  • 현재의 testcase.ac는 BOJ에 아주 강하게 의존하고 있습니다. BOJ의 문제만 추가하는 것을 허용하고 있고, BOJ의 지문에 맞추어 제너레이터와 밸리데이터를 생성하며, 애초에 BOJ에서 채점 후 틀린 결과를 얻었을 때 testcase.ac로 들어오는 것을 전제로 서비스를 만들었습니다. 따라서, BOJ 종료 이후로 기존과 같은 방식으로 운영이 불가능합니다.

  • 현재의 testcase.ac는 폐쇄적입니다. 반례를 찾기 위해 사용되는 모든 소스코드는 기본적으로 공개되어 있지 않고, 공개된 정답 코드 / 제너레이터 코드도 UI에서만 확인할 수 있습니다. 기여된 코드들과 웹 서비스를 유지보수하고 관리하는 것을 전적으로 관리자인 제가 책임져야 하는 상황에서, 이러한 폐쇄적인 구조가 장기적으로 프로젝트를 지속하기 어렵게 만든다고 생각합니다.

  • testcase.ac는 “온라인 저지"가 되기 위해 만들어지지 않았습니다. testcase.ac는 BOJ에서 틀린 코드에 대해 힌트를 얻을 수 있는 도구로 만들어졌고, BOJ에 있는 지문을 보여주거나, 정답을 판별할 수 있는 수준의 테스트 데이터를 수집하는 것을 목표로 하지 않았습니다. 다른 성숙한 온라인 저지가 이미 있는 상황에서, 모든 문제에 대해 정답 여부를 판별할 수 있을 만큼의 테스트케이스를 모아 또 다른 온라인 저지를 만드는 것은 원래 지향하던 것과도 다르고, 큰 의미가 없다고 생각합니다.

이러한 문제점들로 인해, BOJ 서비스 종료 이후에는 현재 운영되고 있는 형식의 testcase.ac는 서비스를 종료하는 것으로 마음을 먹었습니다.

나아가고자 하는 방향

하지만 이렇게 완전히 끝내기에는 내심 아쉽다는 생각도 들었습니다. 비록 BOJ가 종료되며 떠나더라도, 무언가 testcase.ac를 커뮤니티에 남겨둘 수 있는 방식을 생각해 보고 싶었습니다. 아래와 같은 대전제를 가지고, testcase.ac를 어떤 방식으로 남겨둘 수 있을지 고민해 보았습니다.

  • BOJ에만 의존하는 프로젝트가 아니라, 다른 온라인 저지 / 대회의 코드도 쉽게 추가할 수 있었으면 좋겠다
  • 사용하는 소스 코드를 최대한 공개해, 모두가 더 편하게 보고 기여할 수 있었으면 좋겠다
  • 정답 코드와 제너레이터 코드만 남겨두는 것이 아니라, “동적으로 반례 찾기"를 쉽게 할 수 있는 방법도 만들자

결과적으로는 기존 testcase.ac 서비스를 재작성해, 오픈 소스 프로젝트로서 공개하기로 결정했습니다.

새 서비스에서는 문제 데이터도 GitHub 저장소의 파일로 관리합니다.

  • testcase/ 폴더 아래에 정해진 형식에 맞추어서 정답 코드와 제너레이터 코드를 추가하면 (PR을 올려 머지되면), 그 문제에 대한 반례를 찾을 수 있습니다.
  • 반례를 찾을 때 쓰이는 정답 / 제너레이터 코드와, 서비스 자체의 소스 코드 모두 공개되어 있습니다.
  • 기존과 같이 온라인 저지가 되기보다는, 제너레이터와 정답 코드를 활용해 동적으로 반례를 찾는 것에 집중합니다.

이렇게 오픈소스로 바꾸기 위해 기존의 testcase-ac에서 여러 기능들이 없어졌습니다. 로그인하고, UI에서 정답 / 제너레이터 코드를 기여하고, 비공개로 코드를 기여하는 기능과 같이 대전제와 부합하지 않는 부분들은 오픈소스된 서비스에서는 제외되었고, 앞으로도 추가되지 않을 예정입니다.

기여되는 코드의 검증 (e.g. 컴파일 가능 여부, 제너레이터 정상 실행 여부)은 기존에는 UI에서 제출할 때 실행되었고, 지금은 레포지토리에 관련 코드가 없지만 추후 유의미하게 많은 기여가 생긴다면 GitHub Actions 등을 활용한 공개된 CI 프로세스로 대체할 계획입니다. 기존에 실험적으로 UI에 추가하였던 LLM을 사용한 제너레이터 생성 기능 또한 Agent Skills 등으로 개인이 직접 실행할 수 있는 형식의 도구로 공개할 계획입니다.

마이그레이션 계획

현재는 testcase.ac로 기존 서비스에 접근할 수 있고, next.testcase.ac에서는 새로운 오픈소스 서비스에 접속할 수 있습니다. 아래와 같은 계획으로 마이그레이션할 계획입니다.

기존에 코드를 기여해주신 분들이 새로운 오픈 소스 프로젝트로 코드 이동을 원치 않을 수 있다고 생각합니다. 현재는 저를 제외한 다른 기여자들의 동의를 받지 않아, 제가 직접 testcase.ac에서 기여했던 코드 / 제가 직접 BOJ에 제출했었던 코드들만 새로운 레포지토리에 기여되어 있는 상황입니다. 추후에도 별도로 동의를 받은 기여 코드들만 새로운 오픈 소스 레포지토리로 옮길 예정입니다.

기존 기여자분들은 기존 testcase.ac 사이트 맨 위 배너의 “기여 코드 이전하기” 버튼을 통해, 기여 코드를 내려받아 직접 기여를 진행하거나, 코드가 새 프로젝트에 기여되는 것에 동의할 수 있습니다.

마치며

이렇게 프로젝트를 오픈 소스로 공개함으로써 더 많은 사람들이 기여에 참여할 수 있으면 좋겠습니다. 기여하는 것도, 포크해서 마음대로 고치고 호스팅하는 것도, 심지어 이 코드를 가져가 영리 활동에 사용하는 것도 자유입니다. (MIT 라이선스만 준수해 주신다면요.)

아마 기존에는 어려웠던 다른 활용 방식 또한 가능할 것 같습니다. 예를 들어서, 학원이나 동아리 같은 비공개 환경에서, 프로젝트를 포크해 자체 문제를 추가하고, 문제를 푼 개개인이 자신의 풀이를 자체 검증하는 데 사용하는, 일반적인 오픈 소스 저지보다 더 가벼운 대안으로 사용하는 방식을 생각해볼 수 있습니다. 이제 이러한 구체적인 활용 방식은 커뮤니티에 남겨두겠습니다.

이제 저 뿐만이 아니라 커뮤니티에서 기여할 수 있는 길을 더 크게 열어둠으로서, 프로젝트의 존속이 제 의지에만 달려 있지 않고, 조금이나마 더 오래 지속될 수 있기를 바라는 마음입니다.

앞으로는 새로운 testcase-ac 레포지토리에 많은 관심과 기여 부탁드리겠습니다.

감사합니다.


  1. 백준이라는 이름은 이제 돌려드리려 합니다. https://www.acmicpc.net/board/view/165922 ↩︎