좋은 테스트 설명에 대해 함께 고민해보았다.
어떤것이 좋은 설명방법일까?
오늘은 구현이 이미 작성된 함수의 테스트를 작성하는 과정에서, 테스트 설명에 어려움을 느꼈다.
구현이 이미 있다보니, 구현상의 분기가 갈리는 지점에 따라서, 테스트와 테스트 설명을 쓰고 싶은 생각이 자꾸 들었다.
그러다보니 무슨 상황인지 생각하기 보다 자꾸 디테일에만 신경을 썼던 것 같다.
예를 들자면 다음 두 문장 중 아래와 가까워진 느낌이었다.
잔고가 부족할때, 결제가 실패한다
잔고가 500원 이하일때, -1 을 실패값으로 반환한다
테스트는 구현에 대해 알고 있을까? 테스트는 구현 코드를 사용하는 사용자이기 때문에,
구체적으로 뭘 어떻게 할지는 관심이 없을것 같다.
마치 돈 못받은 채권자의 심정처럼, 어떤 상황에서 돈을 받을 수 있는지에만 관심이 있지 않을까?
돈을 어떻게 줄지는 그대가 알아서 하시는거고.
다음에는 돈빌려준 사람의 입장에서 작성하는걸 시도해보아야겠다.
Defensive 프로그래밍에 대한 얘기가 업무중에 나와서 관련 내용들을 좀 뒤져보았다.
코드컴플리트 8장 방어적 프로그래밍의 에러 처리 챕터에서,
Robustness 와 Correctness 중 어떤 것을 방침으로 할 것인가에 관한 내용이 와닿았다.
Robustness means always trying to do something that will allow the software to keep operating, even if that leads to results that are inaccurate sometimes.
Correctness means never returning an inaccurate result
부정확하더라도 동작하게 할 것인가? 정확하지 않으면 동작하지 않게 할 것인가?
업무시간에 알려주신 에러 처리의 의도 차이가 떠올랐지만, 이해도가 낮아서 한번더 여쭤봐야 할 것 같다.
운동은 건너뛴적이 많았지만, 체조까지 건너뛰고 늦잠까지 잔 것은 근 몇달들어 처음있는 일이다.
몸상태가 쪼금 안좋은것 같다.