개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
외부 코드를 사용하는 학습 테스트를 작성해라.
외부 코드는 ADAPTER 패턴 적용을 고려
테스트 코드도 가독성이 중요하다.
FIRST
TIL (Today I Learned) 날짜
2022. 05. 09
오늘 읽은 범위
8장. 경계
9장. 단위 테스트
책에서 기억하고 싶은 내용을 써보세요.
외부 코드 사용하기 (p.144)
Map과 같은 경계 인터페이스를 이용할 때는 이를 이용하는 클래스나 클래스 계열밖으로 노출되지 않도록 주의한다. (p. 146)
경계 살피고 익히기 (p.146)
학습 테스트는 프로그램에서 사용하려는 방식대로 외부 API를 호출한다. (p.147)
학습 테스트는 공짜 이상이다 (p.149)
학습 테스트는 패키지가 예상대로 도는지 검증한다. (p.149)
아직 존재하지 않는 코드를 사용하기 (p.150)
ADAPTER 패턴으로 API 사용을 캡슐화해 API가 바뀔 때 수정할 코드를 한곳으로 모았다. (p.151)
깨끗한 경계 (p.151)
소프트웨어 설계가 우수하다면 변경하는데 많은 투자와 재작업이 필요하지 않다. (p.151)
TDD 법칙 세 가지 (p.155)
1. 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다.
2. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다.
3. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.
깨끗한 테스트 코드 유지하기 (p.156)
테스트 코드는 실제 코드 못지 않게 중요하다. (p.157)
테스트는 유연성, 유지보수성, 재사용성을 제공한다. (p.157)
테스트 케이스가 없다면 모든 변경이 잠정적인 버그다. (p.157)
깨끗한 테스트 코드 (p.158)
가독성, 가독성, 가독성 (p. 158)
도메인에 특화된 테스트 언어 (p.161)
이중 표준 (p.161)
실제 환경에서는 절대로 안 되지만 테스트 환경에서는 전혀 문제 없는 방식이 있다. 대개 메모리나 CPU 효율과 관련 있는 경우다. (p.164)
테스트당 assert 하나 (p.164)
assert 문이 단 하나인 함수는 결론이 하나라서 코드를 이해하기 쉽고 빠르다. (p.164)
테스트당 개념 하나 (p.166)
"테스트 함수 하나는 개념 하나만 테스트하라" (p.167)
F.I.R.S.T. (p. 167)
Fast: 테스트는 빨라야 한다. (p.167)
Independent: 각 테스트는 서로 의존하면 안된다. (p.167)
Repeatable: 테스트는 어떤 환경에서도 반복 가능해야 한다. (p.168)
Self-Validating: 테스트는 bool 값으로 결과를 내야 한다. (p.168)
Timely: 테스트는 적시에 작성해야 한다. (p.168)
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
학습 테스트 코드를 작성하며 라이브러리 사용법을 익히는 기법이 신선하고 유용했다.
오늘 읽은 내용에도 Adapter 패턴과 Template 메소드 패턴등 디자인 패턴에 대한 내용이 나왔다. 디자인 패턴을 다시 한번 리마인드 해야겠다.
TDD에 대한 글을 읽을 때마다 매번 테스트 코드부터 작성하는 TDD 법칙을 따라서 해야겠다고 느끼지만, 아직까지 TDD 법칙을 준수하면서 개발했던 적이 한번도 없는 것 같다. 다음 프로젝트는 TDD 준수해서 테스트 코드 작성하는 것도 고려하여 일정을 세우고 진행하보아야 겠다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
BUILD-OPERATE-CHECK 패턴, given-when-then 관례등 테스트 코드 작성시 사용하는 패턴과 관례
JAVA의 제너릭스? C++의 템플릿과 유사한 개념인듯 하다.
오늘 읽은 다른사람의 TIL
None