loop-study
개발 공부할래?
loop-study
전체 방문자
오늘
어제
  • 분류 전체보기 (186)
    • 목표 및 회고 (25)
    • 세미나 & 워크샵 (1)
    • 교육 및 인강 (67)
      • TDD, Clean Code with Java (5)
      • ATDD, 클린 코드 with Spring (6)
      • DDD 세레나데 (3)
      • 인프라 공방 (6)
      • 이규원의 현실 세상의 TDD (19)
      • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (18)
      • 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 (0)
      • 모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한 (8)
      • 코딩으로 학습하는 GoF의 디자인 패턴 (1)
      • 스프링 시큐리티 완전정복 6.x (1)
    • 서적 (62)
      • 객체지향의 사실과 오해 (1)
      • 객체지향과 디자인패턴 (7)
      • 만들면서 배우는 클린 아키텍처 (3)
      • 테스트 주도 개발로 배우는 객체 지향 설계와 실천 (1)
      • 오브젝트: 코드로 이해하는 객체지향 설계 (17)
      • 리팩토링 : 코드 구조를 체계적으로 개선하여 효율적인 리팩터링 구현하기 (0)
      • 토비의 스프링 (3)
      • 엔터프라이즈 애플리케이션 아키텍처 패턴 (9)
      • 개발자의 글쓰기 (1)
      • 소프트웨어 장인 (17)
      • Real MySQL 8.0 (2)
    • 개발 & 방법론 (29)
      • Java (13)
      • TDD (5)
      • ATDD (3)
      • DDD (6)
      • 인프라 (2)
      • SQL (0)
    • 개인이야기 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 백엔드 로드맵

인기 글

태그

  • 객체지향
  • 장인정신
  • 인프런
  • 오브젝트
  • 스터디
  • fastcampus
  • 백기선
  • 테스트 주도 개발
  • 이규원
  • 스프링
  • ATDD
  • TDD
  • Patterns of Enterprise Application Architecture
  • 인프라공방
  • 넥스트스탭
  • 자바
  • 모든 개발자를 위한 HTTP 웹 기본 지식
  • 현실세상의 TDD
  • 소프트웨어 장인
  • 조영호
  • 김영한
  • DDD 세레나데
  • 추상화
  • 엔터프라이즈 애플리케이션 아키텍처 패턴
  • study
  • java
  • JUnit
  • Test Driven Development
  • 마틴 파울러
  • nextstep

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
loop-study

개발 공부할래?

교육 및 인강/이규원의 현실 세상의 TDD

이규원님의 현실 세상의 TDD 깊은 곳, 4편 : 테스트 대역

2021. 5. 26. 19:56

테스트 주도 개발의 깊은 곳 4편 테스트 대역이다.

Mock 같은 테스트 대역 용어들이 나온다. 해당 용어 모두 실습으로 알려주시니 

📖 자세한 내용이 궁금하면 이규원 님의 TDD 수강하는 걸 추천드립니다. 👍 

 

The RED : 이규원의 현실 세상의 TDD : 안정감을 주는 코드 작성 방법 | 패스트캠퍼스

그동안 우리나라에는 TDD를 제대로 다루는 책도 강의도 없었죠. 그래서 제가 개발 현장에서 활용하는 TDD를 정확하게 알려드리고자 강의를 만들었습니다. 이제 TDD에 대한 잘못된 인식은 버리고, '

fastcampus.co.kr


테스트 대역

단위 테스트를 할 때 운영 코드 대신 사용되는 코드를 대역 코드를 테스트 대역이라고 한다.

-> 운영서버, 운영DB로 단위 테스트를 한다면 엄청난 사건사고가 생길것이다, 운영 대신 사용되는 대역이 필요하다. 

 

대역과 가정

  • DOC 준비 비용이 큰 경우
  • DOC가 SUT에 제공하는 계약을 준수하는 대역을 사용
  • 대역의 계약이 DOC와 준수할 것이라 가정

-> 운영 코드 대신 사용되는 대역이 운영 코드와 같은 인터페이스를 제공한다고 생각해야한다. 운영서버, 운영DB가 아닌 대역이라도 최대한 운영 환경과 동일해야한다.

 

Dummy

SUT 준비를 위해 해결되어야 하는 의존성이 테스트 대상 논리에 의해 사용되지 않는 경우에 의존 요소를 대역

-> 말그대로 더미다. 내부 구현에는 아무것도 없다.

 

Stub

단위 테스트를 위한 간접 입력 대역

-> 위의 더미와 비슷하다, 더미는 아무것도 안하는 반면에 스텁은 미리 정해둔 값을 이용한다. 의존의 일부분을 작동하는 것처럼 꾸민다.

 

Spy

단위 테스트를 위한 간접 출력 대역

-> Stub처럼 작동하지만 스파이처럼 기록을 한다. 메일 같은 외부라이브러리 테스트에 사용이 된다.  

 

Mock

SUT 내부의 행위에 검증, (또 다른 의미로 Test Double)

-> 여기서 언급해주신 테스트 더블은 실체를 대신하는 대역의 다양한 방법을 일컫는다.

 

Fake

의존성 계약을 준수하는 가벼운 구현체, DOC보다 적은 부작용, 인메모리 데이터베이스 

-> 데이터베이스에 접근하여 테스트 하는데 자원소모와 시간이 필요하다. 실제 데이터베이스처럼 Fake객체로 적은 자원소모와 적은 시간에 작동하게 만든다. 


후기

이번 시간은 테스트 대역에 대한 실습 설명이였다. 

단위 테스트 작성하다보면 많은 제약사항을 접하게 된다.

외부라이브러리(메일), 데이터베이스 CRUD 등 실제 운영에서 하면 안되는 것들이 많다.

그런 제약사항을 최대한 피하고 테스트를 진행할 수 있게 도와주는 것이 테스트 대역이다.

이 테스트 대역은 위에 언급한것처럼 여러 방법이 있고 이를 지원해주는 도구도 다양하니

잘 알고 넘어가자.

 

'교육 및 인강 > 이규원의 현실 세상의 TDD' 카테고리의 다른 글

이규원님의 현실 세상의 TDD 깊은 곳, 6편 : Should i test private methods  (0) 2021.05.28
이규원님의 현실 세상의 TDD 깊은 곳, 5편 : Mockists vs Classicists  (0) 2021.05.27
이규원님의 현실 세상의 TDD 깊은 곳, 3편 : 입력과 출력  (0) 2021.05.20
이규원님의 현실 세상의 TDD 깊은 곳, 2편 : 환경 변화와 적응력  (0) 2021.05.19
이규원님의 현실 세상의 TDD 깊은 곳, 1편 : 인터페이스와 구현  (0) 2021.05.19
    '교육 및 인강/이규원의 현실 세상의 TDD' 카테고리의 다른 글
    • 이규원님의 현실 세상의 TDD 깊은 곳, 6편 : Should i test private methods
    • 이규원님의 현실 세상의 TDD 깊은 곳, 5편 : Mockists vs Classicists
    • 이규원님의 현실 세상의 TDD 깊은 곳, 3편 : 입력과 출력
    • 이규원님의 현실 세상의 TDD 깊은 곳, 2편 : 환경 변화와 적응력
    loop-study
    loop-study
    오늘도 공부하자

    티스토리툴바