AI와 내일, 그리고 우리.
코딩

GitHub Copilot으로 테스트 코드 자동 생성해 배포 안정성 높이기

사용한 도구GitHub Copilot

GitHub Copilot을 사용하면 함수와 클래스에 대한 유닛 테스트를 주석만으로 빠르게 만들 수 있습니다. 테스트 작성 시간을 줄이고, 엣지 케이스까지 챙긴 테스트 스위트를 구성해 배포 전 버그를 미리 잡을 수 있습니다.

만들 수 있는 것

  • Jest, Pytest, JUnit 등 프레임워크에 맞춘 유닛 테스트 파일
  • 로그인, 결제, 데이터 검증 함수에 대한 정상/비정상 케이스 테스트
  • 빈 값, null, 음수 입력 등 엣지 케이스를 포함한 테스트 스위트
  • API 엔드포인트나 React 컴포넌트에 대한 테스트 코드

필요한 스킬/도구

  • GitHub Copilot (무료 플랜 있음, 많이 쓰면 유료): 주석 기반 테스트 코드 자동 생성
  • VS Code 또는 IntelliJ, Neovim 등 Copilot 지원 IDE: 확장 프로그램 실행 환경
  • 테스트 프레임워크 (Jest, Pytest, JUnit 등): 생성된 테스트 실행
  • 기본 프로그래밍 지식: 생성된 코드 검토 및 수정
  • GitHub 계정: Copilot 활성화 및 로그인

만드는 순서

  1. VS Code에서 Extensions 메뉴로 들어가 "GitHub Copilot" 검색 후 설치하고, GitHub 계정으로 로그인합니다. 무료 플랜이나 유료 구독을 활성화해야 사용할 수 있습니다.
  2. 테스트를 작성하려는 함수나 클래스가 있는 파일을 엽니다. 예를 들어 utils.js에 calculateDiscount 함수가 있다면 그 파일을 먼저 확인합니다.
  3. 같은 폴더나 __tests__ 폴더에 테스트 파일을 새로 만듭니다. JavaScript라면 utils.test.js, Python이라면 test_utils.py 같은 이름으로 만듭니다.
  4. 테스트 파일 맨 위에 주석으로 어떤 테스트가 필요한지 한 줄씩 적습니다. "정상 입력 테스트", "잘못된 입력 테스트", "빈 값 처리 테스트" 같은 식으로 구체적으로 적으면 Copilot이 더 정확한 코드를 제안합니다.
  5. Copilot이 회색 글씨로 테스트 코드를 제안하면 Tab 키로 수락합니다. 여러 케이스가 필요하면 다음 줄에 주석을 추가로 적고 같은 방식으로 받습니다.
  6. 터미널에서 npm test나 pytest 같은 명령으로 생성된 테스트를 실행해 통과하는지 확인합니다. 실패하면 테스트 코드나 원본 함수를 수정합니다.
  7. GitHub Actions, GitLab CI 등 CI/CD 설정 파일에 테스트 실행 단계를 추가해, 코드를 푸시할 때마다 자동으로 테스트가 돌아가게 만듭니다.

바로 쓰는 프롬프트

4단계에서 테스트 파일에 작성하는 주석 (JavaScript/Jest 예시):

// test calculateDiscount function with valid amount and percentage
// test calculateDiscount with zero amount
// test calculateDiscount with negative percentage
// test calculateDiscount with amount exceeding maximum limit

4단계에서 테스트 파일에 작성하는 주석 (Python/Pytest 예시):

# test validate_email with valid email address
# test validate_email with invalid format
# test validate_email with empty string
# test validate_email with None input

팁

  • 주석을 "유효한 입력", "잘못된 입력", "엣지 케이스"로 나눠 적으면 Copilot이 더 다양한 테스트를 만들어 줍니다.
  • 생성된 테스트는 논리가 맞는지, 실제로 버그를 잡을 수 있는지 반드시 눈으로 확인하세요. 가끔 형식만 맞고 내용이 부실한 테스트가 나올 수 있습니다.
  • 테스트 커버리지 도구(Jest의 --coverage, Pytest의 pytest-cov)를 함께 쓰면 어느 부분이 테스트되지 않았는지 한눈에 볼 수 있습니다.

여러분은 테스트 코드 작성에 어떤 어려움이 있나요?

운영자가 정리한 AI 활용 가이드입니다. 메뉴 이름과 요금제는 바뀔 수 있으니 아래 링크에서 함께 확인해 주세요.

추천 0

댓글 0