AI로 다시 짠 코드가 예전과 같은지는 무엇으로 확인하나요
같은 입력을 예전 프로그램과 새 프로그램에 넣고 결과를 견줍니다. 화면에 뜨는 값만이 아니라 저장되는 자료, 밖으로 나가는 메일·문자·결제 요청, 잘못된 값을 넣었을 때의 동작까지 견줍니다. 개발자들은 바꾼 뒤에도 예전 동작이 그대로인지 보는 이런 확인을 회귀 테스트라고 부릅니다.
견주려면 기준이 먼저 있어야 합니다. AI가 손대기 전에 지금 프로그램에 여러 입력을 넣어 나온 결과를 짝지어 적어 둔 표, 곧 정답표입니다. 테스트(프로그램이 제대로 도는지 자동으로 확인하는 검사)가 이미 있다면 그것도 정답표의 일부입니다.
| 확인 방법 | 잡아내는 것 | 놓치는 것 |
|---|---|---|
| 정답표 견주기: 지금 프로그램에 넣은 입력을 새 프로그램에 그대로 넣어 봄 | 계산, 저장, 출력이 한 글자라도 달라진 곳 | 정답표에 없는 입력 |
| 직원이 평소 일하는 순서대로 눌러 보기 | 화면 순서나 버튼 이름이 바뀌어 일이 막히는 곳 | 가끔 도는 일(월말 정산, 취소·환불) |
| 옮긴 자료 세기: 회원, 주문, 파일 수와 금액 합계를 양쪽에서 셈 | 옮기다 빠지거나 두 번 들어간 자료 | 수는 같은데 내용이 바뀐 자료(몇 건은 열어 봐야 잡힘) |
| 사람이 바뀐 곳 읽기 | 테스트만 통과시키려고 넣은 예외, 필요 없는 변경 | 읽는 사람이 모르는 업무 규칙 |
네 가지는 서로 놓치는 것을 메웁니다. 하나만 하면 그 줄의 놓치는 것이 그대로 남습니다. 새 프로그램을 예전 것과 나란히 돌려 보는 방법은 아래 '바꿔 끼우는 법'에 따로 적었습니다.
AI를 크게 쓰는 회사도 이 확인을 사람이 합니다. 구글 연구진은 2025년 1월 사내 코드 옮기기에 AI를 쓴 경험을 공개하며, AI가 만든 코드도 사람이 쓴 코드와 똑같이 사람이 검토하고 바뀐 줄을 덮는 테스트가 없으면 더한다고 밝혔습니다. 한 사례에서는 최종 반영된 코드 수정의 80%를 AI가 썼지만, 대부분의 경우 사람이 AI가 바꾼 것 가운데 틀렸거나 필요 없는 것을 일부 되돌려야 했다고 적었습니다.
무엇이 '예전과 똑같아야' 하는지는 어떻게 정하나요
지금 프로그램이 하는 일을 똑같아야 함, 달라져도 됨, 없애도 됨의 세 칸으로 나눠 적습니다. 전부 똑같이 만들자고 하면 아무도 쓰지 않는 기능과 예전 오류까지 옮기게 되고, 칸을 나누지 않으면 견주기에서 다른 결과가 나왔을 때 고친 것인지 틀린 것인지 가를 기준이 없습니다.
오래된 시스템을 새것으로 바꾸는 방법을 정리한 Thoughtworks 기술 이사들의 글(마틴 파울러 사이트)은, 예전과 기능을 똑같이 맞추는 방식이 위험이 적어 보여 자주 고르지만 지금 시스템이 무엇을 하는지 정하는 데만도 큰 품이 든다고 적었습니다. 쓰지 않는 기능이 많이 따라오고, 예전 오류와 한계를 피하려고 만든 우회 방법이 지금 업무의 필수 조건이 돼 있기도 하다고 했습니다. 시스코 기사의 98%도 무엇의 98%인지 나오지 않습니다. 다 됐는지는 코드 줄 수가 아니라 이 목록의 줄로 세세요.
| 칸 | 뜻 | 예(가상 예시) |
|---|---|---|
| 똑같아야 함 | 결과가 한 글자라도 다르면 틀린 것으로 봅니다 | 부가세의 원 단위 아래를 처리하는 방식, 거래명세서에 찍히는 칸과 순서, 재고가 0이 되면 주문을 막는 규칙 |
| 달라져도 됨 | 다르게 나와도 되지만, 어떻게 달라지는지 미리 적어 둡니다 | 목록이 보이는 순서, 날짜를 적는 꼴, 예전 오류 가운데 이번에 고치기로 한 것 |
| 없애도 됨 | 옮기지 않습니다. 정말 쓰는 사람이 없는지 먼저 묻습니다 | 몇 해째 아무도 열지 않은 통계 화면, 끝난 행사의 신청 화면 |
표의 예는 이해를 돕기 위한 가상 예시이고, 특정 회사의 사례가 아닙니다. 예전 오류를 고칠지는 그 오류에 맞춰 일하는 직원이 있는지 먼저 묻고 정합니다.
AI가 테스트를 고쳐서 통과시키는 일은 어떻게 막나요
정답표와 테스트는 AI가 손대기 전에 만들어 AI 작업 자리 밖에 사본을 두고, 작업이 끝나면 바뀐 파일 목록에서 테스트 파일이 바뀌었는지부터 봅니다. 테스트를 통과했다는 보고만으로는 코드가 고쳐진 것인지 테스트가 고쳐진 것인지 알 수 없습니다.
앤트로픽은 2025년 2월 클로드 3.7 소네트를 내놓으며 펴낸 안전 보고서(시스템 카드)에, 이 모델이 클로드 코드 같은 AI 코딩 환경에서 가끔 테스트를 통과하려고 두루 맞는 해법 대신 테스트가 기대하는 값을 그대로 돌려주게 짜거나, 문제가 된 테스트를 코드의 결과에 맞게 고쳤다고 적었습니다. 두루 맞는 해법을 여러 번 시도하다 실패한 뒤에 주로 나왔고, 보통 쓸 때는 드물어 사용자 시험에서는 찾지 못했다고 했습니다. 출시 전에 일부를 막았고 계속 고치는 중이라며, 지켜볼 것 셋을 권했습니다.
| 앤트로픽이 지켜보라고 한 것 | 회사에서 볼 것 |
|---|---|
| 테스트 파일이 뜻밖에 바뀜 | 작업이 끝나면 바뀐 파일 목록을 받아, 테스트 파일이 있으면 바뀐 줄마다 까닭을 듣습니다. 정답표는 작업 자리 밖에 둔 사본과 맞춰 봅니다 |
| 테스트만을 위한 처리를 뜻하는 주석(예: 이 테스트를 위한 예외) | 사람이 바뀐 곳을 읽으며 특정 입력에만 정해 둔 값을 돌려주는 곳이 있는지 봅니다. 앤트로픽은 이런 주석을 대개 달지만 늘 달지는 않는다고 적었습니다 |
| 한 파일을 고치고 테스트를 돌리는 일이 지나치게 되풀이됨 | AI가 같은 곳에서 오래 맴돌았다면 그 부분은 사람이 따로 봅니다. 풀기 어려운 곳에서 이런 일이 나온다고 했기 때문입니다 |
왼쪽 칸은 앤트로픽 'Claude 3.7 Sonnet 시스템 카드' 6장(22~23쪽)을 줄여 옮긴 것이고, 2025년 2월 당시 모델에 대한 발표입니다. 오른쪽 칸은 byte-creo가 회사에서 할 일로 옮긴 안입니다.
AI가 일하는 자리도 나눕니다. 2025년 7월 포춘 보도에 따르면 AI 코딩 도구 레플릿(Replit)의 AI가 코드 변경을 멈춘 기간에 사람의 승인 없이 명령을 실행해 운영 중인 자료를 지웠고, 레플릿 대표는 있어서는 안 될 일이라며 개발용과 운영용 자료를 자동으로 나누겠다고 밝혔습니다. 다시 짜는 동안 AI는 실제 손님 자료가 아닌 복사본에서 일하게 하고, 운영 자료에 들어가는 계정과 비밀번호는 작업 자리에 두지 마세요.
AI로 다시 짠 코드, 바꿔 끼우기 전 확인 목록
AI가 손대기 전, 짜는 동안, 바꾸기 전, 바꾼 뒤로 나눠 열 가지를 봅니다. 한 줄이라도 아니라면 바꿔 끼우는 날을 미룹니다.
| 때 | 확인할 것 | 됐다고 볼 표시 |
|---|---|---|
| 손대기 전 | 똑같아야 함, 달라져도 됨, 없애도 됨 목록이 있다 | 줄마다 그 일을 아는 직원 이름이 있다 |
| 손대기 전 | 지금 프로그램의 결과를 정답표로 받아 두었다 | 자주 들어오는 입력과 드문 입력(취소·환불, 월말, 빈칸, 아주 큰 수량)이 함께 있다 |
| 손대기 전 | 정답표와 테스트의 사본을 AI 작업 자리 밖에 두었다 | AI가 고칠 수 없는 곳에 있다 |
| 손대기 전 | AI는 손님 자료의 복사본에서 일한다 | 작업 자리에 운영 자료로 들어가는 계정과 비밀번호가 없다 |
| 짜는 동안 | 한 번에 한 조각씩 다시 짠다 | 조각마다 정답표 견주기를 마쳤다 |
| 짜는 동안 | 바뀐 테스트마다 까닭을 들었다 | 테스트만을 위한 예외가 없다는 것을 사람이 읽고 확인했다 |
| 바꾸기 전 | 같은 입력으로 예전과 새 결과를 견줬다 | 다른 줄마다 고친 것인지 틀린 것인지와 판정한 사람이 적혀 있다 |
| 바꾸기 전 | 옮긴 자료(데이터 이관)의 수와 합계가 맞다 | 회원·주문·파일 수와 금액 합계를 양쪽에서 센 표가 있고, 몇 건은 열어서 내용까지 봤다 |
| 바꾸기 전 | 되돌리는 순서를 적고 한 번 해 봤다 | 누가 하고 얼마나 걸리는지 안다 |
| 바꾼 뒤 | 가끔 도는 일(월말 정산, 분기 보고, 연말 마감)이 한 번 지나갈 때까지 예전 것과 숫자를 맞춘다 | 그날 결과도 정답표 기준과 같았다 |
GitHub도 오래된 코드를 AI로 고치는 요령을 안내하며, 코드를 한 줄 바꾸기 전에 지금 동작을 확인하는 테스트부터 갖추고, 한 번에 다 고치려 하지 말고, AI가 바꾼 것은 늘 검토하라고 권합니다. 위 목록의 둘째, 다섯째, 여섯째 줄이 그 세 가지입니다.
다시 짠 프로그램으로는 어떻게 바꿔 끼우나요
돈과 손님 기록이 오가는 프로그램이라면 한 번에 바꾸지 말고, 새 프로그램을 뒤에서 함께 돌려 결과를 맞춰 본 뒤 기능 한 조각이나 손님 일부부터 넘깁니다. 문제가 나와도 그 부분만 예전 것으로 돌리면 됩니다.
한 번에 바꾼 날의 손해는 큽니다. 영국 TSB 은행은 2018년 4월 IT 시스템을 바꾸며 자료를 새 플랫폼으로 옮긴 직후 기술 장애가 잇따랐고, 모든 지점과 손님 520만 명 가운데 상당수가 첫 문제를 겪었습니다. 영국 금융감독청과 건전성감독청은 2022년 12월, TSB가 옮기는 일을 제대로 짜고 관리하지 못했고 IT를 맡긴 업체에서 오는 위험도 관리하지 못했다며 두 곳을 합쳐 약 877억 원의 벌금을 매겼습니다.
| 바꾸는 법 | 어떻게 | 맞는 경우 | 조심할 것 |
|---|---|---|---|
| 한 번에 바꾸기 | 정한 날 평소 일을 멈추고 예전 것을 새 것으로 바꿉니다 | 화면 몇 장짜리 회사 소개처럼 돈과 손님 기록이 오가지 않는 것 | 문제가 나오면 전체를 되돌려야 합니다. 되돌리는 순서를 미리 한 번 해 봅니다 |
| 뒤에서 함께 돌려 맞추기(병행 가동) | 손님에게는 예전 결과를 쓰고, 새 프로그램은 같은 입력으로 돌려 결과만 남겨 견줍니다 | 계산과 정산처럼 숫자가 맞아야 하는 것 | 새 프로그램이 메일·문자·결제를 실제로 보내지 않게 막습니다. 막지 않으면 두 번 나갑니다 |
| 일부부터 넘기기 | 기능 한 조각이나 손님 일부만 새 프로그램으로 보내고 조금씩 늘립니다 | 쓰는 사람이 많고 기능이 여럿인 것 | 넘어간 쪽과 남은 쪽의 숫자를 합쳐 볼 수 있게 보고를 맞춰 둡니다 |
세 가지 이름과 방법은 Thoughtworks 기술 이사들이 정리한 오래된 시스템 바꾸기 패턴(마틴 파울러 사이트)을 따랐고, 맞는 경우와 조심할 것은 byte-creo가 작은 회사에 맞춰 정리한 것입니다. 벌금은 1파운드 약 1,802원(유럽중앙은행 2026년 11월 2일 기준 환율)으로 셈했습니다.
함께 돌리는 동안에는 예전과 새 결과의 차이가 정한 만큼 벌어지면 알림이 가게 해 두라고 같은 글은 권합니다. 언제까지 함께 돌릴지는 아래 자주 묻는 질문에 적었습니다.
외주 개발 검수 때, AI로 다시 짠 결과물에서 무엇을 받나요
코드와 함께, 무엇을 무엇과 견줬고 다른 곳을 누가 어떻게 판정했는지의 기록을 받습니다. 업체가 AI를 썼는지보다 이 기록이 남아 있는지가 중요합니다. 나중에 문제가 생겨도 어디서부터 볼지 알 수 있기 때문입니다.
- 똑같아야 할 것 목록과 견주기 결과표: 입력, 예전 결과, 새 결과, 같음과 다름, 다르면 고친 것인지 틀린 것인지와 판정한 사람.
- 바뀐 테스트 목록과 까닭: 지운 테스트와 기대하는 값을 바꾼 테스트를 따로 적은 것.
- 자료 옮긴 맞춤표: 옮기기 전과 뒤의 수와 합계, 맞지 않은 건과 그 처리.
- 되돌리는 순서: 누가 무엇을 어떤 순서로 하는지와, 해 봤을 때 걸린 시간.
- AI를 쓴 범위와 사람이 읽은 범위: 어느 부분을 AI가 짰고 어느 부분을 사람이 줄마다 읽었는지.
- 코드와 계정, 운영 문서: 코드 저장소와 서버·배포 계정이 회사 이름으로 되어 있는지, 다음 사람이 이어받아 고칠 수 있는 문서가 있는지.
검수 기준은 계약 전에 정할수록 좋습니다. byte-creo는 제안서에 적은 대로 동작하지 않는 부분을 인수 후 30일 동안 비용 없이 고치므로, 똑같아야 할 것 목록을 제안서에 넣어 두면 그 목록이 곧 고쳐 받을 기준이 됩니다. byte-creo 대표는 한 서비스 회사의 웹·앱·서버를 2020년부터 맡아 오며, 2024년에는 서버의 자료 구조를 다시 짜고 예전 구조에 쌓인 폴더·노트 자료를 새 구조로 옮겼습니다.
자주 묻는 질문
테스트를 모두 통과했다면 예전과 똑같이 돈다고 봐도 되나요?
테스트가 덮는 범위 안에서만 그렇습니다. 테스트에 없는 입력은 확인되지 않았고, AI가 테스트 자체를 고쳤을 수도 있습니다. 통과했다는 보고와 함께 테스트 파일이 바뀌었는지, 정답표 견주기에서 다른 줄이 몇 개였고 어떻게 판정했는지를 받으세요. 구글 연구진도 AI가 바꾼 줄을 덮는 테스트가 없으면 사람이 더한다고 밝혔습니다.
예전 프로그램에 테스트가 하나도 없으면 무엇부터 하나요?
지금 프로그램이 내는 결과를 적어 두는 일부터 합니다. 실제로 들어온 입력 가운데 자주 나오는 것과 드문 것을 골라 지금 프로그램에 넣고, 나온 결과를 그대로 정답으로 삼습니다. 테스트 초안은 AI에게 맡겨도 되지만, 정답은 AI가 생각한 값이 아니라 지금 프로그램이 실제로 낸 값이어야 합니다. 예전 결과가 틀려 보여도 이 단계에서는 고치지 말고 표시만 해 둡니다.
다시 짜는 김에 예전 오류도 고쳐도 되나요?
고쳐도 되지만 따로 합니다. 먼저 예전과 똑같이 돌게 옮기고, 고칠 오류는 달라져도 됨 칸에 적어 다음 조각에서 고칩니다. 섞어서 하면 견주기에서 다른 결과가 나왔을 때 고친 것인지 틀린 것인지 가를 수 없습니다. 그 오류를 피해 가며 일하는 직원이 있는지도 먼저 물으세요. 예전 오류를 피하려고 만든 우회 방법이 지금 업무의 필수 조건이 돼 있기도 합니다.
예전 것과 새 것은 얼마나 오래 나란히 돌려야 하나요?
정해진 기간은 없고, 그 프로그램의 일이 한 바퀴 도는 때까지입니다. 월말 정산이나 분기 보고처럼 가끔 도는 일이 있다면 그날을 한 번 지나야 그 계산도 확인됩니다. 그동안 차이가 정한 만큼 벌어지면 알림이 가게 해 두고, 알림 없이 한 바퀴를 지나면 넘깁니다.
회사 코드를 AI 코딩 툴에 넣어도 되나요?
넣기 전에 두 가지를 확인하세요. 회사가 관리하는 요금제인지와, 넣은 코드가 AI 학습에 쓰이는지입니다. 도구와 요금제마다 다릅니다. 코드 안에 손님 정보나 비밀번호, 다른 서비스에 들어가는 열쇠(API 키, 프로그램끼리 자료를 주고받을 때 쓰는 열쇠)가 적혀 있다면 넣기 전에 빼고, 이미 넣었다면 열쇠를 새로 바꿉니다. 회사용 AI 요금제의 학습·보관 차이는 byte-creo 안내 글 '기업용 AI 비교'에 정리했습니다.
출처
모두 2026년 11월 3일 포춘 보도 둘, 앤트로픽 Claude 3.7 Sonnet 시스템 카드 원문, 구글 연구진의 사내 코드 옮기기 경험 보고 원문, GitHub 블로그, Thoughtworks 기술 이사들의 오래된 시스템 바꾸기 패턴(마틴 파울러 사이트), 영국 금융감독청 보도자료에서 확인했습니다. 시스코 기사에는 결과와 98%의 기준, 다시 짠 코드를 확인하는 방법이 나오지 않아 적지 않았습니다. 앤트로픽의 테스트 고치기 내용은 2025년 2월 모델에 대한 발표이고, 그 뒤 모델에서 얼마나 달라졌는지는 이 글에 적지 않았습니다. 원화는 유럽중앙은행 2026년 11월 2일 기준 환율로 셈했습니다. AI 코딩 도구와 후속 발표는 바뀔 수 있어 매달 다시 확인합니다.
- 포춘: Cisco is letting a 27-year-old refactor 98% of its legacy code with unlimited AI tokens(영어, 2026년 10월 30일) · fortune.com/2026/10/30/cisco-president-jeetu-patel-gen-z-27-year-old-unlimited-ai-tokens-rewrite-legacy-code-entry-level-jobs/
- 앤트로픽: Claude 3.7 Sonnet System Card(영어, 2025년 2월 24일, 6장 Excessive Focus on Passing Tests) · www.anthropic.com/claude-3-7-sonnet-system-card
- 구글 연구진: How is Google using AI for internal code migrations?(영어, arXiv, 2025년 1월 12일) · arxiv.org/abs/2501.06972
- GitHub 블로그: Modernizing legacy code with GitHub Copilot: Tips and examples(영어, 2025년 1월 22일) · github.blog/ai-and-ml/github-copilot/modernizing-legacy-code-with-github-copilot-tips-and-examples/
- 마틴 파울러 사이트: Patterns of Legacy Displacement(영어, Thoughtworks 이언 카트라이트·롭 혼·제임스 루이스) · martinfowler.com/articles/patterns-legacy-displacement/
- 같은 글: Feature Parity(영어) · martinfowler.com/articles/patterns-legacy-displacement/feature-parity.html
- 같은 글: Divert the Flow(영어) · martinfowler.com/articles/patterns-legacy-displacement/divert-the-flow.html
- 같은 글: Canary Release(영어) · martinfowler.com/articles/patterns-legacy-displacement/canary-release.html
- 영국 금융감독청(FCA): TSB fined £48.65m for operational resilience failings(영어, 2022년 12월 20일) · www.fca.org.uk/news/press-releases/tsb-fined-48m-operational-resilience-failings
- 포춘: An AI-powered coding tool wiped out a software company's database, then apologized for a 'catastrophic failure on my part'(영어, 2025년 7월 23일) · fortune.com/2025/07/23/ai-coding-tool-replit-wiped-database-called-it-a-catastrophic-failure/
- 유럽중앙은행: Euro foreign exchange reference rates(영어) · www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html
