ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TDD 요약 정리 - 테스트 주도 개발/테스팅 패턴, 빨간/초록 막대
    JAVA 2022. 7. 4. 08:53

    25장. 테스트 주도 개발 패턴

    • 테스트한다는 것은 무엇을 뜻하는가?
    • 테스트를 언제 해야 하는가?
    • 테스트할 로직을 어떻게 고를 것인가?
    • 테스트할 데이터를 어떻게 고를 것인가?

    테스트(명사)

    테스트 - 자동화된 테스트

    격리된 테스트

    테스트를 격리하기 위한 작업 - 응집도가 높고 결합도는 낮은 객체의 모음

    테스트 목록

    • 구현해야 할 모든 목록
    • 모든 오퍼레이션의 사용 예
    • 해당 오퍼레이션의 널 버전
    • 리팩토링 목록

    테스트 우선

    테스트를 먼저 하면 스트레스가 줄고 테스트를 더 많이 하게 된다

    단언 우선

    • 완료된 시스템이 어떨거라는 거부터
    • 기능이 완료되면 통과할 수 있는 테스트 부터
    • 완료될 때 통과해야 할 단언부터

    테스트 데이터

    테스트를 읽을 때 쉽고 따라가기 좋을 만한 데이터 사용

    명백한 데이터

    • 테스트 자체에 예상되는 값과 실제 값 포함
    • 코드를 읽을 사람도 생각

    26장. 빨간 막대 패턴

    테스트를 언제 어디에 작성하고, 작성은 언제 멈출것인가? 

    한 단계 테스트

    테스트를 고를 때 기준 - 새로운 무언가를 가르쳐주고 구현할 수 있다는 확신이 드는 것

    시작 테스트

    오퍼레이션이 아무일도 하지 않는 경우부터 테스트

    뭔가를 가르쳐 줄 수 있으면서 빠르게 구현할 수 있는 테스트를 선택

    설명 테스트

    자동화된 테스트가 더 널리 쓰이도록 테스트를 통해 설명을 요청하고 테스트를 통해 설명

    학습 테스트

    외부 소프트웨어, 라이브러리를 사용하기전 테스트

    또 다른 테스트

    주제와 무관한 아이디어가 떠오르면 이에대한 테스트를 할일 목록에 적어두고 다시 주제로 돌아올 것

    회귀 테스트

    시스템 장애가 보고 될 때 장애로 인해 실패하는 테스트 작성
    테스트가 통과할 경우 장애가 수정 되었다고 볼 수 있는 테스트 작성

    휴식

    멘붕에 빠졌을 땐 쉬는것이 좋다

    다시하기

    길을 잃었을 땐 코드를 지워 버리고 처음부터 다시 시작

    싸구려 책상, 종은 의자

    TDD를 할 땐 좋은 의자, 좋은 컴퓨터


    27장. 테스팅 패턴

    자식 테스트

    작은 테스트 케이스를 작성하고 작은 테스트 케이스가 실행되면
    원래의 큰 테스트 케이스를 추가

    테스트가 너무 크면 큰 테스트를 삭제하고 작은 테스트를 작성

    모의 객체

    비용이 많이 들고 복잡한 리소스 의존하는 객체는 모의 객체를 사용한다

    깨진 테스트

    테스트가 깨진 상태로 마치면 다시 코딩하러 돌아왔을 때 어느 작업부터 시작할 것인지 명백히 알 수 있다

    크래시 테스트 더미

    호출되지 않을 것 같은 에러코드는 예외만 발생시키기만 하는 특수한 객체를 만들어 호출

    깨끗한 체크인

    팀 프로그래밍을 할 때는 항상 모든 테스트가 돌아가는 상태로 만들어 둔다

    안심이 되고 확신이 있는 상태에서 시작할 필요가 있다


    28장. 초록막대 패턴

    가짜로 구현하기(진짜로 만들기 전까지만)

    실패하는 테스트 → 상수 반환 → 단계적으로 리팩토링

    • 심리학적 효과 : 초록막대는 자신의 위치를 알 수 있고 확신을 가지고 리팩토링 할 수 있다
    • 범위 Scope 조절 : 이전 테스트 작동이 보장되면 다음 테스트에 더 집중하게 된다

    삼각 측량

    어떻게 올바르게 추상화할 것인지 감잡기 어려울 때 도움을 받을 수 있다

    그 외의 경우 명백한 구현, 가짜 구현 사용

    명백한 구현

    단순한 연산은 그냥 구현한다

    이미 알고 있는 구현을 눈곱만큼 작은 발걸음으로 내딜 필요는 없다

    하나에서 여럿으로

    객체 컬렉션을 다루는 연산

    1. 컬렉션 없이 구현
    2. 컬렉션 사용

    댓글

Designed by Tistory.