본문 바로가기
Programming/기본기

테스트 코드 작성 규칙

by Teshub 2021. 9. 29.

테스트 코드 작성 규칙

 

  • 테스트 코드 작성 규칙 
    • 테스트 코드는 적시에 작성한다
      • 기능의 완성된 이후 테스트코드를 끼워 맞추는것이 아닌 테스트코드로 상황과 기능의 정의를 내린후 로직을 작성한다
    • 테스트는 독립적으로 시행된다
      • DB의 정보나 외부 api에 연동에 영향을 받아서는 안된다
      • DB의 정보가 필요할경우 맵퍼나 레파지토리를 모킹한다
      • 즉 순수 자바코드와 프로젝트내에서의 동작을 검증해야한다 (인터넷이 연결이 안되어있어도 돌아가야한다)
    • 테스트는 자가 검증해야한다
      • 테스트코드에 로그를 찍어 확인하는 패턴은 금지
      • A메서드를 실행시 true라는 값이 나온다면 Assertion을 이용해 검증한다
      • 테스트 코드엔 성공/실패만 있어야한다
    • 최대한 다양한 변수상황을 대입해야한다
      • 다양한 상황을 테스트하여 테스트의 신뢰성을 높여야한다
      • 신뢰성의 높은 테스트는 추후 문서로서도 큰 역할을 한다

 

 

/* 이대로 끝내기엔 포스팅이 짧기도하고 해서 회사에서 제가 회사 코드컨벤션에 건의한 테스트코드 룰입니다

  • 서비스레이어 테스트 코드의 경우 BDD스타일의 테스트 코드를 작성한다
    • //given //when //then의 구성으로 작성한다
      • //given 테스트를 위해 주어진 정보
      • //when 테스트를 진행하는데 필요한 조건
      • //then 테스트가 완료이후 테스트를 검증하는 부분
    • 서비스레이어경우 추후 ci/cd시의 빌드시 진행하는 테스트로 이용하기 위해 최대한 자세하게 위의 테스트 코드 작성 규칙을 전부 적용해서 작성하도록 한다
    • 테스트의 신뢰도를 위해 테스트 메서드의 커버리지를 80%이상으로 한다
      • 최대한 다양한 변수상황을 테스트하기위한 룰입니다
  • 컨트롤러레이어 테스트 코드의 경우 실제 db값까지 조회하여도 된다
    • 앞서 서비스레이어에서 해당 구간의 테스트들은 다 작성하였기때문에 컨트롤러 테스트의 경우에는 테스트를 좀 더 가볍게 짭니다 실제 DB도 조회 하고 데이터 바인딩도 확인겸 가볍게 MockMvc로 호출만 합니다
    • 컨트롤러의 테스트가 db에 영향을 주지않도록 @Transactional을 붙힙니다
    • 테스트의 신뢰성이 높게 작성하지 않도록 룰을 정하였기에 ci/cd시 해당테스트는 tagging을 이용하여 disable로 제외합니다
728x90

'Programming > 기본기' 카테고리의 다른 글

테스트 코드의 중요성  (0) 2021.09.29
REST API  (0) 2021.02.25
알고리즘 Stack, Queue, Deque, Heap  (0) 2021.02.07
메모리 구조 Code, Data, Stack, Heap  (0) 2021.02.07
프로세스와 쓰레드의 차이  (0) 2021.02.04

댓글