-
TDD 요약 정리 - 테스트 주도 개발/테스팅 패턴, 빨간/초록 막대JAVA 2022. 7. 4. 08:53
25장. 테스트 주도 개발 패턴
- 테스트한다는 것은 무엇을 뜻하는가?
- 테스트를 언제 해야 하는가?
- 테스트할 로직을 어떻게 고를 것인가?
- 테스트할 데이터를 어떻게 고를 것인가?
테스트(명사)
테스트 - 자동화된 테스트
격리된 테스트
테스트를 격리하기 위한 작업 - 응집도가 높고 결합도는 낮은 객체의 모음
테스트 목록
- 구현해야 할 모든 목록
- 모든 오퍼레이션의 사용 예
- 해당 오퍼레이션의 널 버전
- 리팩토링 목록
테스트 우선
테스트를 먼저 하면 스트레스가 줄고 테스트를 더 많이 하게 된다
단언 우선
- 완료된 시스템이 어떨거라는 거부터
- 기능이 완료되면 통과할 수 있는 테스트 부터
- 완료될 때 통과해야 할 단언부터
테스트 데이터
테스트를 읽을 때 쉽고 따라가기 좋을 만한 데이터 사용
명백한 데이터
- 테스트 자체에 예상되는 값과 실제 값 포함
- 코드를 읽을 사람도 생각
26장. 빨간 막대 패턴
테스트를 언제 어디에 작성하고, 작성은 언제 멈출것인가?
한 단계 테스트
테스트를 고를 때 기준 - 새로운 무언가를 가르쳐주고 구현할 수 있다는 확신이 드는 것
시작 테스트
오퍼레이션이 아무일도 하지 않는 경우부터 테스트
뭔가를 가르쳐 줄 수 있으면서 빠르게 구현할 수 있는 테스트를 선택
설명 테스트
자동화된 테스트가 더 널리 쓰이도록 테스트를 통해 설명을 요청하고 테스트를 통해 설명
학습 테스트
외부 소프트웨어, 라이브러리를 사용하기전 테스트
또 다른 테스트
주제와 무관한 아이디어가 떠오르면 이에대한 테스트를 할일 목록에 적어두고 다시 주제로 돌아올 것
회귀 테스트
시스템 장애가 보고 될 때 장애로 인해 실패하는 테스트 작성
테스트가 통과할 경우 장애가 수정 되었다고 볼 수 있는 테스트 작성휴식
멘붕에 빠졌을 땐 쉬는것이 좋다
다시하기
길을 잃었을 땐 코드를 지워 버리고 처음부터 다시 시작
싸구려 책상, 종은 의자
TDD를 할 땐 좋은 의자, 좋은 컴퓨터
27장. 테스팅 패턴
자식 테스트
작은 테스트 케이스를 작성하고 작은 테스트 케이스가 실행되면
원래의 큰 테스트 케이스를 추가테스트가 너무 크면 큰 테스트를 삭제하고 작은 테스트를 작성
모의 객체
비용이 많이 들고 복잡한 리소스 의존하는 객체는 모의 객체를 사용한다
깨진 테스트
테스트가 깨진 상태로 마치면 다시 코딩하러 돌아왔을 때 어느 작업부터 시작할 것인지 명백히 알 수 있다
크래시 테스트 더미
호출되지 않을 것 같은 에러코드는 예외만 발생시키기만 하는 특수한 객체를 만들어 호출
깨끗한 체크인
팀 프로그래밍을 할 때는 항상 모든 테스트가 돌아가는 상태로 만들어 둔다
안심이 되고 확신이 있는 상태에서 시작할 필요가 있다
28장. 초록막대 패턴
가짜로 구현하기(진짜로 만들기 전까지만)
실패하는 테스트 → 상수 반환 → 단계적으로 리팩토링
- 심리학적 효과 : 초록막대는 자신의 위치를 알 수 있고 확신을 가지고 리팩토링 할 수 있다
- 범위 Scope 조절 : 이전 테스트 작동이 보장되면 다음 테스트에 더 집중하게 된다
삼각 측량
어떻게 올바르게 추상화할 것인지 감잡기 어려울 때 도움을 받을 수 있다
그 외의 경우 명백한 구현, 가짜 구현 사용
명백한 구현
단순한 연산은 그냥 구현한다
이미 알고 있는 구현을 눈곱만큼 작은 발걸음으로 내딜 필요는 없다
하나에서 여럿으로
객체 컬렉션을 다루는 연산
- 컬렉션 없이 구현
- 컬렉션 사용
'JAVA' 카테고리의 다른 글
AsyncRestTemplate PATCH 메서드 유효하지 않은 요청 (0) 2022.12.30 Memory leak - Thread dump 활용 (0) 2022.07.10 TDD - 2부 xUnit 간단 정리 (0) 2022.06.27 TDD 17장. Money 회고 요약 및 정리 (0) 2022.06.27 primitive type vs wrapper class (0) 2021.10.31