Skip to content

포인트 기본기능 구현#1

Open
tonyhan18 wants to merge 4 commits intomasterfrom
TDD-0-Basic
Open

포인트 기본기능 구현#1
tonyhan18 wants to merge 4 commits intomasterfrom
TDD-0-Basic

Conversation

@tonyhan18
Copy link
Copy Markdown
Owner

커밋 링크

  1. PointService, UserPoint 기능 추가 및 단위 테스트 추가

리뷰 포인트(질문)

  • 초반 기능이 많지 않아 간단하게 테스트들을 작성했습니다.
  • 기본 코드에 이 정도의 코드만 넣어도 될지 질문드립니다.

이번주 KPT 회고

Keep

  • 멘토링 듣고 내 것으로 만들기 위한 노력하기

Problem

  • 고민 있는 내용들을 바로바로 질문하지 않음

Try

질문 내용 바로바로 질문드리고 도움 받는 것에 무서워하지 않기

Test : UserPointTest 단위 테스트 코드 작성
Test : PointHistoryTable 단위 테스트 코드 작성
Test : PointService 단위 테스트 코드 작성
TEST : PointService에 포인트 사용 테스트 추가
@tonyhan18
Copy link
Copy Markdown
Owner Author

허재 멘토님 멘토링

  • userPointTable 에 저장하는 영역도 recording 의 영역 아닐까요? ㅎㅎ

  • 도메인 모델 내에서 비즈니스 검증을 포함한 로직이 충분히 잘 수행되고 있는 편인 것 같아요. chkForValidate 로 뭉쳤을 때 얻는 이점이 큰가? 에 대해서는 오히려 검증이나 나중에 변경의 전파 등에서 유의해야할 것 같아요. 예를 들면, 유저포인트의 charge, use 함수가 이를 사용하고 있기 때문에 chkForValidate 에서의 변경에 의한 사이드이펙트를 감지하려면 charge, use 함수에서도 동일한 케이스를 점검하는 단위테스트가 추가되어야 할 것 같습니다 :)
    테스트 함수명도 다소 추상적이여서, "사용하는 포인트가 보유 포인트보다 많다면, 예외를 발생시킨다." 와 같이 구체화해보면 좋을 것 같아요.

  • 컨디션이 좋지 않으셨을텐데, 고생하셨습니다.

  • 동시성 제어 보고서와 같은 기술 문서, 보고서를 작성할 때 "사례" 를 들어 명확한 키워드 전달이 되도록 작성하는 연습을 해보면 좋을 것 같습니다.
    LockManager 가 락을 단순히 획득해주는 책임만 주게 되면, 이를 활용하는 모든 객체에서 "동작을 수행한 후 unlock 을 명시적으로 수행하는가?" 를 mock 과 같은 행위검증해야할 수 있는데, 이를 해소할 방법을 고민해봐주세요! ( e.g. PointService 에서 락을 "제어" 하는 중 )
    LockManager 에서 명확하게 락 획득에 관한 동시성 제어 테스트도 존재하는 점이 좋았습니다.

  • 포인트 서비스 통합테스트에서 동시성 테스트를 실제로 작성해보는 것 ( 포인트 충전 중복, 사용 중복, 충전/사용 동시 ) 도 꼭 고민해보시기 바랍니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant