Agent로 test coverage 올리기 체험기
개발 중인 inference 엔진의 test coverage를 어떻게 올릴 수 있나에 대한 고민을 하고 있습니다. 상대적으로 개발(휴먼) 리소스가 부족한 상황에서, 팀원분들이 굉장히(🤣) 빠르게 개발을 진행하고 있어서, 솔직히 테스트를 약하게.. 진행했던 부분들에서 삐걱거리게 시작했거든요.
테스트가 중요하다는 것은 명확한 사실이나, 개발(휴먼) 리소스가 부족한 것도 현실이라 어떻게 해야 하나 싶었는데, 요즘 agent에 대한 이야기들이 많이 나오길래 한 번 간단하게 구현해 봤습니다. 개발한 코드에 대해서 pair programming 하는 것처럼, unit test agent가 계속해서 code를 테스트 해줄 수 있으면 어떨까?하는 간단한 생각부터 출발!
유명한 OpenHands는 open source model 지원을 하지 않아서, 쓰기가 좀 그렇더라구요. (돈... 돈...) 그래서 개발 머신으로 사용하는 HGX 서버에 inference 엔진을 올리고, Llama 70B와 Qwen 35B 모델로 LangChain이용한 (agent의 탈을 뒤집어쓴) multi turn chat completion을 자체적으로 구성했습니다. 🙈 완전 풀오토는 아직 못해서, 사람의 개입이 중간중간 필요한 부분들이 있긴 합니다만, 대부분 수동..
결과를 보니,
와. 입이 떠억.
실제 개발에도 llm의 도움을 많이 받고는 있었는데, agent 시스템이 생각보다 훨씬 강력할 수도 있겠다라는 생각이 들더군요. 단순히 개발 보조 또는 간단한 모듈 구현, 테스트 코드 구현 정도가 아니라, 개발 프로세스 전체에 완전히 integrated 되어서 설계->문서화->코드 구현->테스트->설계 및 문서 업데이트를 자동화 할 수 있을 것 같더라구요??
항상 보면, 너무 바쁜 일정과 과한 업무량 (+귀차니즘..🙊) 때문에 문서는 코드와 sync가 맞지 않아서 이걸 유지보수 하는 것에 굉장히 많은 리소스가 들어가는데요, 이러한 부분들을 자동화 할 수 있다면 GPU 비용이 오히려 싼 것 아닐까? 하는 생각이 들었습니다.
심지어 테스트 coverage를, 의미없는 테스트들로 적당히 커버하는 것이 아니라, 꼼꼼하게 예외 케이스들까지 추가해 주는 qwen 을 보면서 한 편으로는 감동도...
unit test 실행 후 결과 분석 하여 test code 수정 뿐 아니라, defect이 있는 target code도 수정을 할 수 있습니다만, 이건 아직 좀 불안하더라구요. 잘 고치기도하고, 코드를 날려버리기도 하고 😃 "문제를 없애면 문제가 없지!"
코드에 대한 검토, 테스트 작성에 걸리는 시간 측면에서는 사람이 하는 것에 비해서 비교 조차 의미가 없을 정도로 짧은 시간 내에 완성을 해버리니, 앞으로 이런 시스템을 사용하지 않고 개발을 한다는 것은, 우리 이제 구석기에서 신석기로 넘어가서 철기인들을 이겨보자!하는 것 같기도 하고요. 🤣
율곡 이이 선생이 10만 대군 양병설을 주장했던 것처럼, 더 늦기 전에 빨리 100만 agent 대군을 양성해야 하는 것이 아닌가 싶은데, 누군가의 밥그릇을 발로 차버리는 것이 아닌가 싶어서 무섭기도 하네요. 그게 제 밥그릇일 수도 있고.. 🤪
어떤 분은 이런 시스템들이 상용화 될 것이니까 사다 쓰면 되는거 아닐까?라는 의견도 있었습니다만, 전 개인적으로 회사마다 업이 다르고, 조직 구성이 다르고, 인프라가 다르고, 아키텍처 스타일도 다르고, 사실 같은걸 찾기가 더 어려울 것 같아서 상용화 툴 or 시스템으로 이러한 것을 커버하기에는 생각보다 쉽지 않을 수 있을거라고 생각합니다. 자사에 맞도록 커스터마이징 -그게 설령 돈으로 할 수 있더라도- 할 수 있거나, 아니면 스스로 이러한 시스템을 구축할 수 있는 개발 역량을 확보할 수 있냐가 그 조직의 향후 경쟁력에 큰 영향을 끼치지 않을까 싶었습니다.
끝.