새로운 내용을 공부할 때
새로운 내용의 공부를 시작할 때 용어의 정의를 이해하지 못하거나 정확하게 알지 못한다면 그 용어가 포함된 문장을 이해하지 못합니다.
작은 단어 하나가 내용을 이해하지 못하게 하기 때문에 용어를 정확하게 이해하는 것이 중요합니다.
인프런 Readable-code Day 16 미션
📌 2025-03-24 Mission
미션 일자
Day 16
미션 내용
1) 레이어별로 어떤 특징이 있는지 자기만의 언어로 표현하기 2) 어떻게 테스트를 하면 좋을지 자기만의 언어로 표현하기
레이어별
Persentation Layer
-
특징 표현하기
음식점에서 웨이터라고 생각합니다.
클라이언트(고객)은 평소가 가고 싶은 음식점(서버)에 도착했습니다. 고객은 웨이터를 부릅니다.
웨이터에게 여기서 어떤 음식을 취급하는지 알려주실 수 있으신가요(OPTIONS)?
고객은 식사를 제공받기 위해 웨이터를 통해 주문을 요청하려고 합니다.
웨이터에게 스테이크(API)를 주문하려고 합니다.
- 스테이크 갯수
- 고기의 굽기 정도
- 사이드 메뉴 추가
- 음료수 추가
이렇게 웨이터에게 주문을 합니다. 웨이터는 그 자리에서 확인할 수 있는 것은 그 자리에서 대답을 해줍니다.
“손님 스테이크는 1개 이상만 주문이 가능하세요, 손님 스테이크 -10개는 없습니다”
스테이크를 주문할 때 그 자리에서 주문에 대한 사용자의 요청이 올바른지 아닌지 확인을 하고나서 주방(서비스)으로 요청을 합니다.
주방에서 확인하기 전까지 기본적으로 주문에 대한 유효성만 확인합니다. 주방에서 요청을 받아드리고 나서 결정한 결과가 아니라 주문 자체가 제대로 들어갈 수 있도록 확인하는 목적으로 존재합니다.
-
테스트를 어떻게 하면 좋을까?
웨이터가 제대로 주문을 받고 있는지 확인해보려면 스파이를 심습니다.
스테이크 -1개를 주문해보고 예상한 반응와 웨이터의 반응이 같은지 확인해본다.
스테이크 굽기 정도를 “가나다라마바사”로 적을 경우 예상한 반응을 확인해본다.
정상적으로 주문했을 경우에도 웨이터가 손님에게 응답하는 태도를 지켜본다.
Service Layer
-
특징 표현하기
웨이터가 정상적으로 들고온 주문에 대해 확인을 합니다.
스테이크 담당자에게 물어봅니다. “스테이크 3개 재고 있으면 주문해주고 없으면 이야기해줘”
스테이크 담당자는 간단명료하게 대답합니다 “스테이크 재고 없어요”
주방장은 웨이터에게 말합니다. “오늘 스테이크 주문이 많아서 재고 부족해서 주문이 어렵습니다. 다른 메뉴를 주문해주실 수 있으실지 물어봐줘”
그리고 스테이크 담당자, 튀김 담당자, 디저트 담당자를 불러서 요구를 합니다.
스테이크 담당자는 함박 스테이크 3개 만들어줘
스테이크 담당자가 만든 음식을 웨이터에게 전달하기 위해 이쁘게 그릇(DTO)에 담아서 전달합니다.
-
테스트를 어떻게 하면 좋을까?
스테이크 담당자가 던진 재고 부족을 어떻게 웨이터에게 전달할까 확인해봅니다.
주문이 올바르게 들어갈 경우 어떤 그릇에 어떤 구조로 담아서 전달하는지 확인합니다.
그릇에 주문한 재료가 제대로 포함되었는지 확인해봅니다.
음식점에서 세트로 판매하는 상품에서 특정 상품의 재고가 부족하여 주문을 취소할 경우 그외 주문이 들어간 음식도 제대로 취소가 되었는지 확인해봐야합니다.
Persistence Layer
-
특징 표현하기
주방장이 고기 재고 담당자에게 스테이크용 고기를 가져와 달라고 요청합니다.
대신 고기 재고 담당자는 들어온지 얼마 되지 않아 하나부터 열까지 절차적으로 설명해야합니다.
“막내야 안심 스테이크용 소 안심이 몇개 있니?”
“5개 있습니다.”
“5개 가져오고 재고 현황에 0개라고 수정해줘”
이처럼 하나부터 열까지 필요한 물건이 있는지 확인하고, 재고 수량을 관리하는 것을 모두 개별로 요청해야합니다.
-
테스트를 어떻게 하면 좋을까?
주방장이 창고에 고기 재고를 채워넣습니다.
고기 재고 담당자에게 재고 갯수를 확인하기 위해 몇개 있는지 물어봤을때 주방장이 생각한 갯수와 고기 재고 담당자가 확인해본 갯수가 동일한지 확인합니다.
이제는 창고에 고기 재고를 비워놓습니다.
고기 재고 담당자에게 재고 갯수를 물어보고 있다고 하면 재고를 제대로 확인하지 않은 것으로 다시 명령을 제대로 했는지 확인해야합니다.
출처
인프런 워밍업 클럽
인프런 워밍업 클럽 스터디 3기 - 백엔드 클린코드, 테스트 코드(Java, Spring Boot)
댓글남기기