TIL (Today I Learned)
2022.03.06
오늘 읽은 범위
9장. 단위 테스트
책에서 기억하고 싶은 내용을 써보세요.
- TDD의 세 가지 법칙 : 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. / 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. / 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. (p.155)
- 실제 코드가 변경되면 테스트 코드 역시 변경이 필요할 수 있다. 테스트 코드를 복잡하게 마음대로 작성하면 이 과정이 매우 골치아파진다. 따라서 테스트 코드의 품질은 실제 코드만큼이나 중요하다. (p.156)
- 실제 코드에 유연성, 유지보수성, 재사용성을 제공하는 버팀목이 바로 단위 테스트다. 테스트 케이스가 있으면 버그를 찾아낼 수 있기 때문에 변화를 두려워하지 않아도 된다. (p.157)
- 테스트 코드에서 가장 중요한 것은 가독성이다. 깨끗한 테스트 코드가 테스트 코드의 유지보수를 보장하고 잘 작성된 테스트 코드가 실제 코드가 발전할 수 있게 해준다. (p.158)
- 테스트 코드는 바로 본론에 돌입해 진짜 필요한 자료와 함수만을 사용한다. (p.160)
- 실제 코드와 테스트 코드는 요구사항이 다르다. 테스트 코드는 가독성을 위해 기존 실제 코드에 적용되는 규칙들을 깨도 되며 리소스가 제한적인 실제 환경과 다르게 메모리, CPU 등에서 제한을 가지지 않는다. (p.162)
- 테스트 하나당 개념은 하나만 테스트한다. 그리고 개념당 asset문은 최소한으로 사용한다. 만약 하나의 개념을 테스트하는 데 assert문이 2개 이상 필요한 것 같다면 최대한 개념을 잘 쪼개보자. (p.167)
- 테스트는 FIRST라는 다섯 가지 규칙을 따른다. (p.167)
- Fast : 테스트는 빨리 돌아가야 한다. (테스트 시간이 오래 걸리면 테스트를 덜 하게 되고 이는 코드 성능의 저하로 이어진다.)
- Independent : 테스트끼리 의존성을 가지면 안 된다. 예를 들어서 한 테스트가 다른 테스트를 준비하면 안 된다. 그렇게 되면 테스트 실패시 원인 추적이 어렵다.
- Repeatable : 테스트는 어떠한 환경에서도 돌아갈 수 있어야 한다. (반복 가능해야 한다.)
- Self-Validating : 테스트 결과는 무조건 성공, 실패 둘 중 하나다.
- Timely : 테스트는 적시, 즉 실제 코드를 작성하기 직전에 작성해야 한다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
- BUILD-OPERATE-CHECK 패턴 : 테스트 자료를 만들고(Build), 테스트 자료를 조작하고(Operate), 조작 결과를 확인하는(Check) 테스트 방법으로 given-when-then을 각각 주석으로 활용하는 것이 관례이다.
- 템플릿 메소드 패턴 (Template-Method Pattern) : 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴이다. 즉, 전체적으로는 동일하면서 부분적으로는 다른 구문으로 구성된 메서드의 코드 중복을 최소화 할 때 유용하다.
'독서 > 클린코드' 카테고리의 다른 글
[클린코드] 2022-03-09 TIL (0) | 2022.03.09 |
---|---|
[클린코드] 2022-03-05 TIL (0) | 2022.03.07 |
[클린코드] 2022-03-04 TIL (0) | 2022.03.05 |
[클린코드] 2022-03-01 TIL (0) | 2022.03.02 |
[클린코드] 2022-02-28 TIL (0) | 2022.03.01 |