본문 바로가기

테스트 코드8

단위 테스트란 무엇일까? 런던파와 고전파의 차이점 🆚 이 글은 책 Unit Testing(단위 테스트) 2장과 하단 Reference 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 목차 - 런던파? 고전파? - 단위 테스트 정의 - 런던파의 테스트 격리 - 고전파의 테스트 격리 - 런던파와 고전파의 장단점과 차이 - 통합 테스트 - 개인적 결론 런던파? 고전파? 단위 테스트(Unit Test)는 무엇일까? 단위 테스트는 두 가지 견해 고전파(classical school)와 런던파(London school)로 구분할 수 있다. 고전파는 켄트 백의 테스트 주도 개발(TDD)으로 원론적으로 접근하는 방식 때문에 '고전'이라고 한다. 런던파는 런던 프로그래밍 커뮤니티에서 시작됐다. 목 추종자(mockist)라고도 불린다. 두 분파는 어떤 차이로 단.. 2022. 3. 19.
private 메서드도 테스트를 해야 할까? (private 메서드 테스트 하고 싶을 때...) ✅ 👃 해당 글은 페이스북 그룹 javawocky 박성철 님의 글을 시작으로 하단 Reference을 참고하여 요약했습니다. 자세한 내용은 링크를 참고해주세요 public 메서드의 테스트를 작성하다 보면 private 메서드도 테스트하고 싶은 마음이 들 때가 있다. public 메서드 테스트가 충분하지 않아 보인다. 테스트가 적거나 불안해 보인다. 하지만 보통 public 메서드를 테스트한다면 연결(종속)된 private 메서드도 이미 테스트했다고 생각한다. 그렇다면 public 메서드만 테스트하면 될까? private 메서드도 테스트를 해야 할까? 정답은 없다. 현재 프로그래밍하는 시점의 context을 고려하자. 그렇다. 정답은 없다. 그래도 3가지 상황을 통해 private 메서드의 테스트 여부를 알아보자.. 2022. 2. 16.
Design by Contract(계약에 의한 설계)와 테스트 코드 그리고 예제📝 * 이 글은 책 소프트웨어의 품격 5장과 하단 reference를 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 Design by Contract(계약에 의한 설계, DbC)란 무엇인가? 사전 조건, 사후 조건, 페널티, 불변 조건 세 가지 계약 검사 계약 검사 예제(BoundedSet) DbC와 Test Code Design by Contract(계약에 의한 설계)란 무엇인가? Design by Contract(이하 DbC) 개념은 1980년대 버트란드 마이어가 처음 제시했다. 아이디어는 일상에서의 계약 개념과 동일하다. 예를 들어 통신사-고객 사이의 통신 계약을 맺었다. 통신사는 고객에게 정상적인 시스템을 제공해야 하고 고객은 요금을 내는 의무를 가진다. 이를 소프트웨어 시스템 중 메서.. 2022. 2. 7.
[일일 회고] 22.01.10.월 - 테스트 코드, 다 좋은 게 아니었어.. 오늘은 특정 요구사항에 맞는 데이터 구조를 설계하고 구현했다. 테스트 코드에 집중하다 보니 객체 설계에 신경을 쓰지 못했고 도리어 나쁜 테스트 코드만 작성했다. 📚TIL 좋은 테스트 코드란 무엇일까? 단위 테스트 적용 3일 차, 테스트 코드는 다 좋은 게 아니었어... 😞 책, '단위 테스트 4장'에서 좋은 테스트를 작성하기 위해서는 4가지 특성을 잘 분배해야 한다고 한다. 회귀 방지를하고 리팩터링에 내성이 있으며 빠른 피드백이 가능하고 유지 보수하기 좋은 테스트 코드를 작성해야한다. 오늘은 ‘회귀 방지’를 못한 경험을 했다. 회귀 방지를 못한 것은 요구사항 추가, 수정 시 기능이 의도한 대로 작동하지 않는 경우다. 이점을 인지하지 못했다. 전에는 기능이 추가될 때마다 의도한 대로 작동하지 않으니 매번 .. 2022. 1. 10.
[일일 회고] 22.01.04.화 - 테스트 코드 리팩토링과 개발 생각 👍 Keep 어제 구현한 테스트 코드 리팩토링! 중간에 스트레칭하며 공부 공부한 내용 문서화 & 블로깅 완료 팀원들과의 프로젝트 코드 리뷰 & 토크( +a 간단한 단위 테스트 소개와 사용방법 발표(?)) 🔥Problem 아직도 1~2시간 공부하고 10분 쉰다. 운동 Pass 문서 작성에 시간 투자가 많음 🚒 Try 한 시간 휴식 알람이 울리면 하던 거 멈추고 당장 쉬기 운동을 쉬는 시간 중간에라도 하자! (푸시업) 사소한 내용까지 다 문서화하지 말자 📚TIL 개발 생각 - 프로젝트에서 요구사항이 주어졌을 때 보통 비기능적 요구사항은 주어지지 않는다. 예를 들어 가독성이 좋고 유지보수성이 뛰어나며 효율적이고 간결한 코드에 대한 요구사항은 없다고 봐도 무방하다. 요구사항으로 주어진 기능들을 코딩하며 비기능적.. 2022. 1. 4.