AI/Cursor

Cursor + TDD로 수천 배 나은 프롬프트 만들기

개발자엄지희 2025. 5. 27. 10:32
반응형

Cursor 에이전트 모드를 사용하다보면 코드는 잘 돌아가지만 정작 테스트는 실패할 때가 많습니다.


코드를 작성하고, 커서가 수정해준 코드를 보고, 테스트하고,
다시 돌아와서 "야, 이거 테스트 실패하잖아, 안돌아가잖아😤" 라고 반복해서 명령을 내리다 보면,
내가 개발자가 아니라 QA 테스터 같다는 느낌도 듭니다.
(나쁘단 건 아니지만 그런 과정이 항상 유쾌한 것은 아닙니다)
 
이런 과정을 자동화할 수 있다면 어떨까요?
저도 평소에 TDD로 모든 개발을 하는 것은 아닙니다만,
AI와 함께라면 매우 유용한 개발 방법론입니다.
 
이제 프롬프트에 한 줄만 추가해서 복잡한 작업을 처리하기 위한 수천 배 나은 프롬프트를 만들어 봅시다.
 
Write tests first, then the code, then run the tests and update the code until tests pass.
 
테스트를 먼저 작성한 다음 코드를 작성하고, 이를 기반으로 테스트를 실행하고 테스트가 통과될 때까지 코드를 업데이트해줘.
 
이제 Cursor에서 아무런 요청을 할 필요가 없어졌습니다.
Cursor는 package.json 만 보고도 테스트에 필요한 것들이 무엇인지 알아서 찾아냅니다.
흥미로운 점은, 일반적인 AI가 작성한 코드와 달리 Cursor가 작성한 코드는 올바른 동작을 할 가능성이 높습니다.
만약 테스트를 다 통과한다면 최소한 어느 정도는 동작한다는 뜻이니까요🤗

https://youtu.be/o4U5lzxwV_E

 

복잡한 작업 다루기

 
예제로 아래와 같은 복잡한 프롬프트를 주고,
테스트 기반으로 코드를 작성하라는 한 줄의 명령을 추가했습니다.
 
Create a function that converts a markdown string to an HTML string.
 
markdown 문자열을 HTML 문자열로 변환하는 함수를 만들어줘
처음에는 6개의 테스트가 실패했습니다.
이때 커서를 YOLO모드로 설정하면, 테스트가 통과할 때까지 코드를 알아서 수정합니다.
 

 

 YOLO 모드가 뭔가요?

YOLO 모드에서는 직접 프롬프트, 허용 목록 및 거부 목록을 지정할 수 있습니다.
 
코드가 실제로 동작할 때까지 자동으로 테스트를 계속 실행하게 하기 위해서,
아래 프롬프트를 추가해봅시다...

 

any kind of tests are always allowed like vitest, npm test, nr test, etc. also basic build commands like build, tsc, etc. creating files and making directories (like touch, mkdir, etc) is always ok too
 
vitest, npm test, nr test 등과 같은 모든 종류의 테스트는 항상 허용되고, build, tsc 같은 명령어도 가능해. touch, mkdir 등을 사용해서 파일이나 디렉터리를 만드는 것도 마찬가지로 항상 가능해.
이렇게 설정하면 Cursor Agent가 실행하고 싶을 때 mkdirtsc 또는 lint 체크를 직접 자유롭게 실행할 수 있습니다.
더 나아가서, tsc를 실행하여 빌드 오류가 있는 경우 바로 수정하게 할 수도 있습니다.


그러나 AI가 엉뚱한 방향으로 작업하는 경우도 꽤 자주 있는데,
그럴 땐 중단 버튼을 누르고 "지금 이상한 방향으로 작업하고 있어. 재설정하고, 재보정하고, 방향을 다시 잡아봐" 라고 말해야 합니다.
 
 
 

기존에 작성된 테스트 기반으로 작업하기

 
여기에서 추가로 "테스트 케이스 몇 개 더 추가하고, 코드가 전부 통과하는지 확인해줘" 라고 추가적으로 명령을 내릴 수도 있습니다.
 
에러 로그에서 변환할 수 없는 코드를 가져와 Cursor에 붙이고
"이 코드를 실행하여 컴파일되지 않는 부분을 확인한 다음 해당 문제에 대한 테스트를 작성한 다음,
모든 테스트가 통과될 때까지 코드를 업데이트해줘" 라고 말할 수도 있습니다.
 
이런 식으로 며칠에 한 번씩 새로운 사례를 반영하여 코드를 견고하게 할 수 있습니다.
 
__________________________________________
 
아래 아티클을 참고하였습니다. (+더 많은 Cursor 팁!)

 

반응형