개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
테스트코드는 실제 코드 못지않게 중요하다.
개념 당 assert 문 수를 최소로 줄여라
테스트 함수 하나는 개념 하나만 테스트하라
TIL (Today I Learned) 날짜
2022. 03. 05
오늘 읽은 범위
5장. 깨끗한 코드
책에서 기억하고 싶은 내용을 써보세요.
테스트 코드가 왜 필요한가?
테스트케이스가 없다면 모든 변경이 잠정적이 버그다. 아키텍처가 아무리 유연 하더라도, 설계를 아무리 잘 나눴더라도, 테스트 케이스가 없으면 개발자는 변경을 주저한다. 버그가 숨어들까 두렵기 때문이다. p157
하지만 테스트 케이스가 있다면 공포는 사실상 사라진다. 테스트 커버리지가 높을수록 공포는 줄어든다. 아키텍처가 부실한 코드나 설계가 모호하고 엉망인 코드라도 별다른 우려 없이 변경할수 있다. 아니 오히려 안심하고 아키텍처와 설계를 개선할수 있다 p157
깨끗한 테스트 코드는 어떻게 작성하는가?
깨끗한 테스트 코드를 만들려면? 세 가지가 필요하다. 가독성, 가독성, 가독성
각 테스트는 명확히 세부분으로 나눠진다
첫번째는 테스트 자료를 만든다.
두번째는 테스트 자료를 조작한다.
세번째는 부분은 조작한 결과가 올바른지 확인한다. p161
함수 이름을 바꿔 give-when-then이라는 관례를 사용했다는 사실에 주목한다. p165
한 테스트 함수에서 여러 개념을 테스트한다는 사실이문제다. 그러므로 가장 좋은 규칙은
"개념당 assert 문 수를 최소로 줄여라"와 "테스트 함수 하나는 개념 하나만 테스트하라"p167
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
꽤 오래전에 만들어진 프로젝트를 작업하고 있다. 그러다 보니 Deprecated된 라이프사이클 함수를 사용하는 클래스들도 꽤 있다. 하지만 수정하기가 겁났다. 왜냐하면 어떤 버그가 숨어있을지 모르기 때문이다. 말없이 수정했다 생각지도 못한 버그가 튀어나와 유저가 문의할까 두려웠다.
이 두려움은 바로 테스트 케이스가 없음에서 비롯 되었음을 알았다. 테스트 코드의 필요성이 피부로 다가오는 순간이였다.
더더욱 중요하게 느껴지는건 테스트 코드를 작성하는 것도 중요하지만, 제대로 작성하는 것이 더 중요하다는 것을 느꼈다. 테스트 코드라는 관리 포인트가 하나 늘어나기 때문에. 어떻게 테스트 코드를 관리하고 작성하느지에 대해 유심히 살펴고 깨달을 수 있었다.
즉 각 테스트는 테스트 자료를 만들고, 조작하고, 확인하는 3가지 단계로 이루어져야하며, 함수접두어는 give, when, then으로 작성하여 가독성을 높여준다. 그리고 가능한 테스트 함수는 개념 하나만 테스트 할수 있도록 하자.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
BUILD-OPERATE-CHECK 패턴: 통합 테스트에 적용되는 일반적인 프로덕션 패턴(
빌드 > 작동 > 확인 단계를 거친다)
https://medium.com/swlh/usual-production-patterns-applied-to-integration-tests-50a941f0b04a
DSL 도메인에 특화된 언어 : 특정 관련 분야예 최적화된 프로그래밍 언어 대표적으로 SQL이 있다
(SQL은 DB에 데이터를 참조하기 위한 목적으로 특화되어 있기 때문)
https://www.jetbrains.com/ko-kr/mps/concepts/domain-specific-languages/
TEMPLATE METHOD 패턴
어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴
https://gmlwjd9405.github.io/2018/07/13/template-method-pattern.html
오늘 읽은 다른사람의 TIL
제가 작성한게 처음인거 같아요 ㅎㅎ