## 테스트 모두가 필요하다고 하지만 모두가 하지는 않는 것 덤벨을 들 줄 안다고 해서 근육이 만들어지는 것은 아니다. 테스트를 작성하면 요구사항이 명확해진다. 테스트는 기능 명세가 된다. ## TDD RED-GREEN-REFACTOR 리팩토링 설계 변경없이 구현만 개선하는 것 테스트가 변경되지 않는 다는 얘기 ## CI/CD 파이프라인 테스트 작성도 중요하지만 테스트가 계속 실행되고 검증되는 것도 중요하다. CI - 지속적 통합 개발 - 푸시 - 린트 - 빌드 - 테스트 푸시 - 린트 사이에서 지속적 통합이 들어감. 테스트 성공여부에 따라서 PR을 쓸 때 실패를 한 부분을 알려서 개선하기도 하고 coverage가 부족한 부분을 알려주어서 개선하는 식 CD - 지속적 배포 개발 - 푸시 - 빌드 - 배포 스테이징 - 배포할 때 테스트플레이스로 올라감 프로덕션 - 배포할 때 앱스토어로 올라감 파이어베이스 디스트리뷰션 에서 버전관리를 해놓음 CI/CD 는 사람이 할 일을 기계가 대신하는 것 그 시간에 코드를 더 짜게 해줌. ## 피드백 루프 어떤 행동을 하고 피드백을 받고 개선을 하고 행동 - 피드백 - 개선 을 반복하면 성장을 하게 된다. 주기적으로 유효한 피드백을 동료들과 나눌 수 있는 환경을 만드는 것이 중요 짝 프로그래밍 (실시간) 코드리뷰 (작업 단위) 회고 (이터레이션 단위) ## 코드리뷰 25:00~ PR 본문이 좋은 게 리뷰하기 좋은 PR 배경 작업 내용 테스트 방법 리뷰 노트 스크린샷 ## 회고 탓하는 과정이 아니라 더 나아지기 위한 과정 논리를 가지고 해야되는 직업이지만 사람과 일을 하는 것이기 때문에 감정이 굉장히 중요하다 논리적이었다고 생각했던 것도 나중에 돌이켜보면 감정에 의해서 결정이 되고 논리를 붙인것도 실제로 많다. 왜 그런 감정을 느꼈는지에 대해서 구체적으로 회고 구체적이라는 건 주관적일 수 있기 때문에 특정 사건에 대해서 상세히 회고. 만족 - 다음에도 그대로 유지할 것 반성 - 다음에는 좀 바꿀 것 개선 - 개선할 수 있을 것? 개인회고도 중요함. 내가 작업에 임하는 태도 3F Fact - 무엇을 했고 Feeling - 무엇을 느꼈고 Finding - 어떤 교훈이 있었다 네트워크 요청을 테스트 할때는 테스트 대역을 사용한다. 여기서 대역은 연기의 대역같은 느낌을 뜻함 - Dummy - 파라미터를 채우기 위한 개체 - Fake - 테스트만을 위해 만들어진 구현체 - Stub - 지정한 결과를 반환하는 구현체 - Spy - stub에 추가로 함수 호출을 기록할 수 있는 구현체 - Mock - 의도대로 잘 호출되었는지 검증하는 구현체 ## 의존성 주입 좌표