196
2
부
구현
발견하기가 더 쉽다.
의미적 변화는 더욱 문제가 된다. 여기서는 엔드포인트의 구조가 변경되지 않고 그 동작이 변
경된다.
calculate
메서드로 되돌아가 메서드의 첫 번째 버전에서 제공된 두 정수를 서로 합
한 결과가 반환된다고 생각해보자. 지금까지는 그런대로 괜찮았다. 이제
calculate
메서드가
두 정수를 곱해 결과를 반환하도록
Hard
Calculations
서비스를 변경한다.
calculate
메
서드의 의미 체계가 소비자의 기대와 다르게 변경됐다.
5.4.25.4.2
스키마를 사용해야 할까? 스키마를 사용해야 할까?
스키마를 사용하고 다른 버전의 스키마를 비교하면 구조적 위반을 포착할 수 있다. 의미적 파
손을 포착하려면 테스트를 사용해야 한다. 스키마가 없거나 스키마는 있지만 호환성을 위해 스
키마 변경 사항을 비교하지 않기로 결정했다면, 운영 환경에 도달하기 전에 구조적 파손을 포
착하는 책임도 테스트에 있다. 이 상황은 분명히 프로그래밍 언어의 정적 타입과 동적 타입을
비교하는 것과 유사하다. 정적 타입 언어를 사용하면 타입이 컴파일 시간에 고정된다. 즉, 코드
가 허용되지 않는 타입으로 작업을 수행하면 (예: 존재하지 않는 메서드 호출 ) 컴파일러가 해
당 실수를 탐지할 수 있다. 이를 통해 다른 종류의 문제를 테스트하는 데 집중할 수 있다. 하지
만 동적 타입 언어에는 컴파일러가 정적 타입 언어에서 발견하는 실수를 잡아내야 하는 테스트
도 있다.
이제 필자는 정적 타입과 동적 타입 언어에 대해 꽤 관대해졌고 ...