최근 개발자 커뮤니티를 보면 "테스트 코드 어떻게 작성해야 할까요?"라는 질문이 정말 자주 보입니다. 사실 저도 초창기에는 테스트 코드 작성이 너무 어렵게 느껴졌고, 귀찮기도 했습니다. 그런데 요즘은 ChatGPT 덕분에 테스트 코드 작성이 꽤 편해졌어요. 실무에서 직접 사용해본 경험을 바탕으로, ChatGPT로 테스트 코드를 자동 생성하는 방법과 팁들을 공유해보려고 합니다.
문제 상황: 테스트 코드를 쓰기 귀찮거나, 시간이 없다
우리 모두 알죠. 테스트 코드는 중요하다는 걸. 그런데 바쁜 일정에 치이다 보면 테스트 코드는 늘 후순위로 밀립니다. 특히 기존 레거시 코드에 테스트를 붙이려고 할 때는 어디서부터 손을 대야 할지도 모르겠고, 의욕이 뚝 떨어지죠.
그리고 또 하나. JUnit, Mockito, WebMvcTest 같은 것들을 문법까지 외우면서 쓰는 게 은근 스트레스입니다. 테스트 코드가 개발자의 실력을 증명하는 것처럼 여겨질 때도 있고요.
그래서 저도 한동안은 테스트 코드를 최소한으로만 작성했는데, 어느 순간 큰 장애를 겪으면서 생각이 완전히 바뀌었습니다. 그때부터 테스트 코드 작성을 생활화했는데요, ChatGPT를 활용하면서 훨씬 수월해졌습니다.
내가 시도한 방법: ChatGPT에게 테스트 코드를 직접 부탁해보기
처음엔 반신반의했어요. "AI가 테스트 코드를 어떻게 알아서 짜주겠어?" 그런데 생각보다 꽤 잘 해냅니다. 특히 다음과 같은 상황에서 유용하게 썼어요:
- 특정 비즈니스 로직에 대한 단위 테스트 작성
- Mocking이 필요한 Service 테스트 구성
- Controller 계층 테스트에서 WebMvcTest 사용
- 예외 케이스 테스트 추가
예를 들어, 아래와 같은 코드가 있다고 가정해볼게요.
@Service
public class ReservationService {
public Reservation create(String name, int peopleCount) {
if (peopleCount <= 0) {
throw new IllegalArgumentException("인원 수는 1명 이상이어야 합니다");
}
return new Reservation(name, peopleCount);
}
}
이 코드를 ChatGPT에 이렇게 입력했어요:
"위 ReservationService 클래스에 대한 JUnit5 기반 단위 테스트 코드를 만들어줘. 정상 케이스와 예외 케이스를 모두 포함해서."
그랬더니 아래와 같은 테스트 코드를 생성해줬습니다.
@DisplayName("ReservationService 테스트")
class ReservationServiceTest {
private ReservationService reservationService;
@BeforeEach
void setUp() {
reservationService = new ReservationService();
}
@Test
@DisplayName("정상적인 예약 생성")
void createReservationSuccess() {
Reservation reservation = reservationService.create("John", 2);
assertNotNull(reservation);
assertEquals("John", reservation.getName());
assertEquals(2, reservation.getPeopleCount());
}
@Test
@DisplayName("인원 수가 0명 이하일 경우 예외 발생")
void createReservationInvalidPeopleCount() {
assertThrows(IllegalArgumentException.class, () ->
reservationService.create("Jane", 0));
}
}
처음 결과물이 100% 완벽하지는 않지만, 뼈대를 굉장히 잘 잡아줘요. 수정이나 추가 작업만 조금 하면 바로 실무에 쓸 수 있는 수준입니다.
해결 과정 및 팁: 이렇게 써보세요
제가 ChatGPT로 테스트 코드를 만들면서 터득한 몇 가지 팁을 공유드릴게요.
1. "이 클래스에 대한 테스트 코드를 작성해줘"보다 구체적으로 요청하기
- 단순하게 "테스트 코드 짜줘"라고 하면 예상보다 부정확한 결과가 나올 수 있어요.
- "JUnit5 기준으로", "Mockito로 Mock 처리 포함해서", "예외 케이스도 포함해줘"처럼 구체적으로 조건을 알려주세요.
2. 테스트 대상 클래스와 메서드를 함께 붙여넣기
- 코드 없이 설명만 하면 엉뚱한 테스트가 나올 수 있어요.
- 클래스와 메서드 전체 코드를 붙여넣는 게 정확도 높이는 데 가장 효과적입니다.
3. 한글로 요청해도 OK, 그래도 가끔 영어로 해보세요
- ChatGPT는 한글로도 충분히 잘 작동합니다.
- 하지만 좀 더 세밀한 테스트 구성이 필요할 때는 영어로 "Generate unit test code for this Java class using JUnit5 and Mockito"라고 하면 결과가 더 정교한 경우도 있어요.
4. Controller 테스트에서는 @WebMvcTest를 함께 언급하기
- Spring Boot Controller를 테스트할 땐 단순히 테스트 코드 요청하면 @SpringBootTest를 사용한 전체 통합 테스트가 나올 수 있어요.
- "@WebMvcTest를 사용해서 Controller만 단위 테스트 해줘"라고 요청하면 훨씬 정확한 결과를 받을 수 있습니다.
5. 결과는 반드시 검토하고 실행해보기
- 아무리 ChatGPT가 잘 만들어줘도, 사람이 검토는 꼭 해야 합니다.
- 특히 예외 메시지나 API 응답 필드는 실서비스에 맞게 직접 수정해줘야 해요.
정리 및 느낀 점: 테스트 코드 작성이 무서워지지 않았다
솔직히 말하면, 예전엔 테스트 코드 쓸 때마다 손이 느려지고 의욕도 떨어졌어요. 그런데 이제는 ChatGPT가 도와주니까, 테스트 코드 작성을 '두려움 없이' 시작할 수 있게 됐습니다. 물론 여전히 손으로 다듬고 검토는 해야 하지만, 그 출발선을 넘는 데 큰 도움이 되었어요.
테스트 코드는 이제 개발자의 선택이 아니라 필수라고 생각해요. 코드의 품질, 협업, 그리고 유지보수까지 영향을 주는 요소니까요. 그리고 이런 필수 작업에 ChatGPT 같은 도구를 활용하면, 우리 개발자는 더 중요한 비즈니스 로직에 집중할 수 있습니다.
요약 정리
- 테스트 코드 작성은 귀찮고 어려울 수 있지만, ChatGPT를 활용하면 훨씬 수월하게 시작할 수 있습니다.
- 클래스 전체 코드를 제공하고, JUnit5/Mockito/WebMvcTest 등 구체적인 조건을 함께 명시하세요.
- 생성된 코드가 완벽하진 않지만, 초안을 빠르게 만드는 데 큰 도움이 됩니다.
- ChatGPT는 개발자의 생산성을 높여주는 훌륭한 도구이며, 테스트 코드 자동 생성에도 강력히 활용될 수 있습니다.
이 글이 테스트 코드 작성이 부담스러운 분들에게 실질적인 도움이 되었길 바랍니다. 이제는 "테스트 코드? 어렵지 않아요, ChatGPT가 도와줘요!"라고 말해도 되지 않을까요?
'AI' 카테고리의 다른 글
ChatGPT로 실무 코드 리팩토링하는 법 (3) | 2025.07.29 |
---|---|
개발자가 ChatGPT를 활용해서 업무 시간 줄이는 법 (1) | 2025.07.25 |
코드 주석 추가 기능(Code Annotation) 소개 (2) | 2024.10.14 |
감정 추론 기능 (Sentiment Analysis) 소개 (2) | 2024.10.14 |
[AI] ai 기초 Text Completion? Completion API? (1) | 2024.09.24 |