ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OKKYCON: 2018] 정진욱 - 테스트하기 쉬운 코드로 개발하기
    세미나 2020. 9. 6. 23:22
    반응형

    테스트하기 쉬운 코드란?

    • 같은 입력에 항상 같은 결과를 반환하는 코드 (Deterministic)
    • 외부상태를 변경하지 않는 코드 (No side effects)

     

     

    테스트하기 어려운 단계는? (2, 3)

    1. ConferenceRegistration (VO) 유효성 검사
    2. 이미 등록된 좌석 수 DB에서 읽어오기 (Not Deterministic)
    3. 요청한 좌석 수가 확보 가능한지 판단
    4. 등록 정보 저장 (Side effects)
    5. HTTP 결과 반환

     

     

    테스트 코드를 만족하는 만큼만 최소한으로 구현을 하라

    • 테스트는 1만 작성했지만 구현은 1, 2, 3을 하게되면 구현 코드 2, 3은 테스트에 커버되지 않음
    • TDD의 점진적인 접근 방법의 긍정적인 효과를 잃어버림

     

     

    방법

    1. 테스트하기 쉬운 코드와 어려운 코드를 분리
    2. 두 부류의 코드는 어디서 만나야 하나?
      최대한 가장자리에서 만나게 한다. (Controller의 POST 메서드)
      void Post(ConferenceRegistration registration) { 
        유효성검사();   
        좌석수조회();   
        좌석수확보가능판단();   
        등록정보저장();    
        return 결과반환; 
      }
    3. 두 부류 코드가 만나는 가장자리는 어떻게 테스트하나?
      수동 테스트 (curl, 직접 요청 날려보기)  자동 테스트가 필요 없을 경우
      자동 테스트 

     

    추천하는 테스트 방법

    • 두 부류의 코드르 분리해서 각각 테스트하고
    • 가장자리에서 맞물려 돌아가는 코드는 수동테스트
    반응형
Designed by Tistory.