Book : TDD 실천법과 도구 - 7장 개발 영역에 따른 TDD 작성 패턴

Lee·2020년 5월 6일
0

Book

목록 보기
5/5
post-thumbnail

일반 애플리케이션

책에는 일반적인 애플리케이션에 대한 TDD가 6가지가 나와있지만, 스스로에게 필요하다는 것만 추려서 정리할 예정이다.
좀 더 TDD 작성하는 것이 익숙해질때 추가할 예정이다.

생성자 테스트

단순히 클래스를 생성한다는 의미를 갖는 생성자는 굳이 테스트 케이스를 작성할 필요가 없다. 다만 객체 사용을 위해 반드시 갖춰야 하는 값을 생성자에 설정하는 경우 필요에 따라 테스트를 작성한다.

DTO 객체 생성 테스트

클래스가 속성 필드와 단순 setter/getter로만 이뤄진 DTO 스타일로 만들어진 경우에는 굳이 테스트 케이스를 작성하지 않는다.
하지만 필자 기준으로 자바의 lombok 라이브러리를 이용해 setter/getter를 만드는 경우에는 lombok이 정상적으로 잘 작동되는지 확인하는 용도에 테스트 케이스는 필요하다고 생각한다.

웹 애플리케이션

개인 PC의 웹 브라우저

웹 브라우저는 서버로 요청하는 부분과 응답을 표현하는 부분을 갖는다. 표현은 HTTP로 넘어온 하이퍼텍스트로 이뤄진다. 사용자는 웹 브라우저 위에 시각적(View)으로 표현된 부분을 이용한다.

서버

사용자의 요청을 해석해서 적절한 동작을 취한 다음, 다시 사용자에게 응답을 보낸다.

웹 애플리케이션의 구조

웹 애플리케이션은 시각적인 표현, 요청의 해석, 업무로직 처리, 데이터 관리 등의 작업을 한다.

MVC 아키텍처

MVC 아키텍처는 웹 애플리케이션을 모델-뷰-컨트롤러(Model-View-Controller)라는 세 개의 영역으로 나누너 구성하는 것을 치징한다.
그렇다면 왜 MVC 아키텍처를 이용하는가? 웹 애플리케이션을 이루는 4가지 요소들을 한곳에서 처리하려면 복잡하고 어렵다. 그래서 관심의 분리를 적용해 여러 가지 아키텍처를 구상해냈는데, 그중 현재 가장 널리 일반적으로 받아들여지는 구조가 MVC 아키텍처다.

시각적인 요소를 갖고 있는 웹 애플리케이션의 표현 영역을 뷰(View)라고 부르고, 업무로직과 데이터를 묶어서 모델(Model)이라고 부른다. 그리고 뷰와 모델을 중간에서 중재해주는 역할을 컨트롤러(Controller)가 책임진다. 뷰는 컨트롤러하고만 대화하고, 모델도 마찬가지로 컨트롤러하고 대화하는게 원칙이다. 이때 대화의 매개체로 DTO가 종종 사용된다.

뷰와 관련된 TDD는 작성하지 않겠음

컨트롤러

컨트롤러는 모델과 뷰를 분리하기 위해 사용되는 중간 층이다. 뷰로부터 넘어온 요청에서 데이터 모델을 발췌해서 적절한 모델 쪽으로 넘겨주고, 모델로부터 받은 응답을 다시 뷰로 돌려준다. 뷰 입장에선 컨트롤러만 알면 되고, 모델 입장에서도 역시 컨트롤러만 알면 된다. 컨트롤러에 대한 TDD는 요청으로부터 적절한 데이터를 발췌해내고, 해당 데이터를 모델로 넘긴다. 다시, 그 결과로 모델로부터 받은 데이터를 응답에 담아서 뷰로 넘기는 구조이다.

모델

모델과 뷰를 완전히 분리하는 방식으로 작성해야한다. 모델이 통신하는 컨트롤러와의 관계도 사실 자세히 살펴보면 모델이 컨트롤러를 호출하는 경우는 없다. 모델은 오로지 무언가의 호출에 응답할 뿐이고, 컨트롤러가 모델을 호출하는 역할을 맡고 있을 뿐이다. 모델에 대한 TDD는 일반적인 애플리케이션을 작성하던 방식대로 TDD를 작성하면 된다.

0개의 댓글