gobbit.dev

AI가 코드를 작성한다면, 나는 무엇을 검증해야 할까?

AI가 구현과 테스트, PR 리뷰까지 맡을 때 테스트 통과와 Lighthouse 점수는 어디까지 믿을 수 있을까. 이미지 최적화 중 흔들린 CLS 수치로 돌아본 검증의 기준

4분 읽기AI와 개발자 2편

예전에는 코드 한 줄에도 개발자의 의도가 담겨 있어야 한다고 생각했다. 내가 작성한 코드를 여러 번 살펴봤고, 동료의 코드를 리뷰할 때도 한 줄씩 꼼꼼하게 읽었다.

지금은 다르다. AI가 구현한 코드를 예전처럼 모두 읽지는 않는다. 테스트와 PR 리뷰까지 AI에게 맡긴다. 대신 AI가 내놓은 결과와 의견을 확인한다.

코드를 직접 읽는 시간이 줄어든 만큼 새로운 질문이 생겼다. AI가 검증했다는 결과를 어디까지 믿어도 될까?

한 줄씩 읽던 코드 리뷰가 달라졌다

예전에는 PR을 올릴 때 리뷰하는 동료를 먼저 생각했다. 작업 범위를 잘게 나누고 변경 파일 수도 가능한 한 줄였다. 리뷰어가 변경 의도를 파악하기 쉽게 만들고 싶었기 때문이다.

이제 프로젝트에 팀 컨벤션을 규칙으로 정리해 두면 AI가 이를 참고해 코드를 작성한다. 규칙에 어긋난 부분을 찾아 수정하도록 할 수도 있다. 테스트 코드까지 포함하면 변경 파일이 30개를 넘는 경우도 흔하다. 작업 방식이 바뀌면서 PR의 규모도 달라졌다.

동료들도 PR 리뷰에 AI를 활용한다. 나 역시 AI에게 리뷰를 맡기지만, 나온 의견을 그대로 게시하지는 않는다. 내용을 직접 읽고 실제로 전달할 만한 의견만 선별한다.

예전처럼 모든 파일을 열어 한 줄씩 검토하지는 않는다. 코드를 직접 읽는 시간은 줄었지만, 어떤 의견이 타당한지 판단하는 일은 여전히 남아 있다.

테스트가 통과하면 충분할까?

테스트도 AI가 수행한다. 작업에 따라 단위 테스트, 통합 테스트, E2E 테스트 중 적절한 방법을 선택하도록 설계했다. AI가 테스트 코드를 작성하고 실행한다. 실패하면 원인을 분석하고 수정한다.

그런데 테스트가 모두 통과했다고 해서 요구사항을 제대로 구현했다고 단정할 수는 없다. 테스트는 작성된 조건을 확인하기 때문이다. 애초에 필요한 조건이 빠졌다면 통과 결과만으로 그 빈틈을 알기 어렵다.

AI가 구현과 테스트를 모두 작성할 때는 같은 오해가 양쪽에 반영될 가능성도 있다. 요구사항을 잘못 이해해 만든 기능을, 그 잘못된 이해에 맞춰 검증할 수 있다는 뜻이다.

그래서 나는 최종 화면과 기능을 직접 확인한다. 테스트를 다시 사람이 전부 수행한다는 의미는 아니다. 실제 결과가 요구사항과 맞는지 내 눈으로 확인하는 과정이다.

Lighthouse 점수가 흔들렸을 때

최근 Next.js로 만든 프런트엔드 화면의 이미지 최적화를 AI에게 맡겼다. AI는 이미지가 화면에서 실제로 표시되는 크기를 확인했다. width와 height 속성을 추가했을 때 CSS 높이 규칙이 영향을 받는 부분도 살펴보고, 썸네일과 상세 이미지의 크기를 조정했다.

메인 이미지 용량은 2,037KB에서 639KB로 줄었다. 그런데 처음 Lighthouse를 측정했을 때 데스크톱 메인 화면의 CLS가 0에서 0.234로 나빠졌다. 이미지 용량을 줄였는데 화면의 시각적 안정성을 나타내는 수치는 오히려 악화된 것이다.

AI는 원인을 확인하기 위해 브라우저에서 화면 흔들림을 살펴보고 측정을 반복했다. 실제 브라우저에서 관찰한 CLS는 0이었다. Lighthouse 재측정에서도 CLS는 0, 성능 점수는 96으로 나왔다.

당시 AI는 이미지 변환 캐시가 비어 있던 초기 요청의 영향일 수 있다고 추정했다. 다만 기록만으로 원인을 확정할 수는 없다. 한 번의 측정 결과를 코드 결함으로 단정하지 않고 다시 확인했다는 점이 중요했다.

같은 1500px 원본 이미지 조건으로 비교한 LCP도 개선됐다. 메인은 8.5초에서 1.2초, 목록은 7.4초에서 1.0초, 상세는 8.1초에서 1.1초, 기획전은 8.8초에서 1.3초로 줄었다.

물론 이 수치는 당시 측정 환경에서 관찰한 결과다. 모든 사용자에게 같은 속도가 나온다는 뜻은 아니다. 이 경험을 통해 성능 검수에서는 점수가 올랐는지만큼 측정 조건과 재현 여부를 확인하는 일도 중요하다고 생각했다.

무엇을 믿고, 무엇을 확인해야 할까?

테스트 통과, Lighthouse 점수, AI의 PR 리뷰 의견은 모두 판단에 도움이 된다. 하지만 각각 확인해 주는 범위가 다르다. 화면이 정상적으로 보이더라도 내부 로직이나 보안 문제는 남아 있을 수 있다.

AI가 작성한 코드를 무조건 의심할 필요는 없다. 그렇다고 AI가 검증했다는 이유만으로 결과를 그대로 받아들일 수도 없다. 내가 확인해야 할 것은 코드의 모든 줄보다 그 결과를 신뢰할 만한 근거가 충분한지에 더 가까워지고 있다.

지금은 AI가 테스트와 분석, 수정까지 진행하고 내가 최종 화면을 확인한다. 앞으로 AI가 테스트 조건을 더 폭넓게 찾고 여러 환경에서 문제를 재현해 수정 결과까지 검증한다면, 사람이 직접 확인해야 할 범위도 달라질 수 있다.

그렇다면 AI가 수행한 검증을 어디까지 신뢰할 수 있을까? 그 신뢰를 판단하는 일마저 AI에게 맡길 수 있을까?