728x90

1. 문제 (과제, 프로젝트를 진행하면서 부딪혔던 기술적인문제)

  • 테스트 코드 작성은 익숙한 상태이나, TDD 방법론에 맞게 개발을 진행한 경험이 없어 초반에 어려움을 겪었습니다.
  • 코틀린 코드에 아직 익숙하지 않아 코틀린스러운 코드를 작성하는데 어려움을 겪었습니다.

2. 시도

  • 항해99 플러스에서 제공한 open Q&A를 참여하였습니다.
  • Git Commit을 최대한 분리하여 작성하면서 TDD 방법론에 맞도록 구현 시도 했습니다.
  • 스파르타 코딩클럽에서 제공해준 코틀린강의를 우선적으로 학습하였습니다.

3. 해결

  • 코틀린 코드를 작성하기 위해 ChatGPT를 사용하며 우선적으로 문제를 해결하였습니다.

4. 알게된 것

  • EndToEnd 테스트, 통합 테스트, 유닛 테스트의 차이점
    • EtoE 테스트
      • 사용자가 요청을 보내고 응답을 받는 전체적인 테스트 (api 테스트)
    • 통합 테스트
      • 하나의 컴포넌트가 다른 하나 이상의 컴포넌트를 참조 및 호출하여 정상적으로 동작하는지에 대한 테스트
    • 유닛 테스트
      • 하나의 컴포넌트가 다른 컴포넌트를 참조하지 않고 가짜 객체(Mock or Stub)를 활용하여 정상적으로 동작하는지에 대한 테스트
  • Test Double 개념에 대한 이해
    • 테스트를 진행하기 어려운 경우 이를 대신해 테스트를 진행할 수 있도록 만들어주는 객체
      • Dummy: 아무 기능도 하지 않는 객체로, 보통 메서드 호출이 필요하지만 실제로 그 결과가 테스트에 중요하지 않은 경우에 사용됩니다.
      • Fake: 실제 동작을 흉내내는 객체로, 보통 간단한 구현을 통해 실제 객체를 대체합니다. 예를 들어, 인메모리 데이터베이스를 사용할 수 있습니다.
      • Stub: 사전 정의된 응답을 반환하는 객체로, 특정 메서드 호출에 대해 고정된 결과를 제공하여 테스트의 예측성을 높입니다.
      • Spy: 호출된 메서드와 전달된 인자를 기록하는 객체로, 호출 여부나 호출된 횟수 등을 검증하는 데 사용됩니다.
      • Mock: 사전 정의된 기대값과 행동을 갖는 객체로, 특정 메서드 호출이 특정 조건을 만족하는지 검증하고, 그에 따라 예외를 던지거나 다른 동작을 수행할 수 있습니다.

Keep : 현재 만족하고 계속 유지할 부분

  • 프로젝트를 진행하면서 앞으로 TDD 방법론을 지키면서 작업을 진행 할 예정입니다.
    • 테스트 코드를 작성함으로써 각 함수들의 기능이 정상적으로 잘 돌아가고있다는 확신이 들며 편안하게 리펙토링을 할 수 있어 좋았습니다.

Problem : 개선이 필요하다고 생각하는 문제점

  • 개발을 들어가기 이전 테스트 테스트 케이스들을 먼저 작성 후 작업을 진행해야 하지만, 그렇게 진행하지 못한부분이 조금 아쉽고 개선해야하는 점으로 생각합니다.

Try : 문제점을 해결하기 위해 시도해야 할 것

  • 개발을 진행하기 이전에 어떻게 작업을 진행할지 노션 혹은 다른 문서에 작성을 우선적으로 진행하도록 시도해 볼 예정입니다.

과제 제출 링크

반응형

+ Recent posts