Closed kth990303 closed 7 months ago
생성형 테스트 : 무작위 케이스를 생성해 테스트하는 기법? 이를 실제 서비스 API 를 호출해 테스트해보라는 의미 같다. (외부 호출 테스트) (혹은 테스트용 Mock 서버를 관리해서 Mock 서버의 요청 및 응답 값을 조절해서 테스트하는 방식도 있는 것 같다.)
외부 호출가 있으면 외부 API 의 변경을 금방 감지할 수 있다. 하지만 이는 외부 API 서버가 우리 팀과 협업을 원활하게 하는 경우에 가능할 것 같다. (계정 API 같은 경우는 한 팀 한 팀 신경 쓸 겨를이 있을까?)
나중에는 외부 호출 대신 요청/응답에 대한 테스트 코드를 나누어서 외부 의존성을 격리하는 테스트 방식이 나온다. mocking 과 통합 테스트를 적절히 섞어놓은 듯.
API 버전을 변경할 때 할 수 있는 방법들
1번 URL 에 v1, v2 등의 접두사를 넣어 버전을 명시하는 방식이 가장 나은 듯 하다. 버전이 변경된다는 건 이전 버전을 deprecate 해야 한다는 건데, 이전 버전을 손쉽게 제거할 수 있어야 한다. 버전 정보를 숨겨놓는다면 deprecate 작업이 쉽지 않을 듯.. 그리고 가장 명시적이다. API 에 관해 논의할 때 URL 만으로 쉽게 커뮤니케이션이 가능하다.
포스텔 법칙 기존에 작동하던 합의가 계속 동작하려면 (하위 호환성) 받아들이는 범위는 넓고, 보내주는 범위는 좁아야 한다는 법칙입니다. API를 이용하고 있는 수만의 클라에게 변경을 강제해서는 안 되며 API와 데이터 스키마 역시 소스코드 처럼 버저닝이 필요하다는 내용으로 이어집니다.
받아들이는 것에 관대하여라
보내는 것에 깐깐하여라
한 때, API 변경으로 응답 데이터가 작아지면 성능상 좋은거 아닌가 싶었는데요. 메타 같은 큰 벤더 입장에서, 지속 가능한 API는 무중단 배포 뿐만 아니라 하위 호환성도 큰 영향을 미치겠구나 알게 되었습니다.
주제
'14장 - 버전 관리'을 읽고 내용을 요약하거나,
중요✨ 하다고 생각하는 키워드 및 관련 설명을 코멘트로 달아주세요
연관 챕터
39
@caffeine-library/readers-release-everything