원하는 상품을 선택해 친구에게 선물하는 프론트엔드,프론트엔드,API를 모두 이용해 웹 어플리케이션을 제작한다.
ㅁ 무엇을 만들 것인가?
→ 마카오 선물하기 고객을 위한 웹 사이트를 제작.
→ 5만원 금액 내에서 선물을 골라 친구에게 선물할 수 있도록 제작한다.
ㅁ 아키텍처
거시적 3-tier Architecture로 구성.
- n-tier Architecture/Multi-tier Architecture
- 비즈니스 로직을 완전히 분리하여 데이터베이스 시스템과 클라이언트의 사이에 배치한 클라이언트 서버 시스템의 일종.
- UI Layer
- Application Layer
- Domain Layer
- Infrastructure Layer
상위 레이어는 하위 레이어에 의존, 하위 레이어는 상위 레이어를 모름.
애플리케이션 레이어가 모든 기능 목록을 드러내고, 도메인 객체들이 협력할 수 있는 진입점을 마련.
참조:https://wikibook.co.kr/article/layered-architecture/
마찬가지로 프론트엔드 애플리케이션 하나에 적용하면 Flux Architecture가 된다.
- View - Action
- Dispatcher
- Store
ㅁ 사용자 스토리
- 회원가입
- 로그인
- 고객은 자신임을 증명하기 위해 로그인
- 상품 목록 확인
- 고객은 마음에 드는 상품을 고르기 위해 상품 목록을 볼 수 있다.
- 상품 세부 정보 확인
- 고객은 상품을 구매하기 위해 상품의 세부 정보를 확인할 수 있다.
- 상품 선택
- 고객은 원하는 상품을 친구에게 선물하기 위해 상품과 개수를 선택하고 주문할 수 있다.
- 상품 주문
- 고객은 상품을 친궁게 보내기 위해 주문을 완료 할 수 있다.
- 주문 목록 확인
- 고객은 자신이 선물한 이력을 확인하기 위해 주문 목록을 확인할 수 있다.
- 주문 세부 정보 확인
- 고객은 자신이 선물한 상품과 메세지를 자세히 알기 위해 주문 세부 정보를 확인할 수 있다.
ㅁ 인수 테스트(Acceptance Test)
회원가입
고객은 웹 사이트를 이용해 선물하기 위해 회원가입을 해야한다.
시나리오 #1 - 회원가입을 성공했을 경우
Given
- 회원가입 버튼을 누른다.
When
- 이름을 조건에 맞게 입력한다.
- 아이디를 조건에 맞게 입력한다.
- 비밀번호를 조건에 맞게 입력한다.
- 비밀번호 확인을 조건에 맞게 입력한다.
Then
- 회원가입 완료가 보인다.
시나리오 #2 - 회원가입에 실패했을 경우
Given
- 회원가입 버튼을 누른다.
When
- 이름을 조건에 맞지 않게 입력한다.
- 아이디를 조건에 맞지 않게 입력한다.
- 비밀번호를 조건에 맞지 않게 입력한다.
- 비밀번호 확인을 조건에 맞지 않게 입력한다.
Then
- 이름을 다시 확인해주세요가 보인다.
- 아이디를 다시 확인해주세요가 보인다.
- 비밀번호를 다시 확인해주세요가 보인다.
- 비밀번호 확인을 다시 확인해주세요가 보인다.
로그인
고객은 웹 사이트를 이용해 선물하기 위해 로그인을 해야한다.
시나리오 #1 - 로그인에 성공했을 경우
Given
- 로그인 버튼을 누른다.
- 선물하기 버튼을 누른다.
When
- 아이디를 입력한다.
- 비밀번호를 입력
Then
- 홈 페이지로 이동한다.
시나리오 #2 - 로그인에 실패했을 경우
Given
- 로그인 버튼을 누른다.
- 선물하기 버튼을 누른다.
When
- 다른 아이디를 입력한다.
- 비밀번호를 입력
Then
- 아이디 혹은 비밀번호가 맞지 않습니다가 보인다.
Given
- 로그인 버튼을 누른다.
- 선물하기 버튼을 누른다.
When
- 아이디를 입력한다.
- 다른 비밀번호를 입력
Then
- 아이디 혹은 비밀번호가 맞지 않습니다가 보인다.
Given
- 로그인 버튼을 누른다.
- 선물하기 버튼을 누른다.
When
- 아이디를 입력한다.
Then
- 비밀번호를 입력해주세요가 보인다.
Given
- 로그인 버튼을 누른다.
- 선물하기 버튼을 누른다.
When
- 비밀번호를 입력한다.
Then
- 아이디를 입력해주세요가 보인다.
잔액 확인
고객은 얼마를 쓸 수 있는지 알기 위해 본인 계좌의 잔액을 확인할 수 있다.
시나리오 #1 - 올바르게 내 잔액 정보를 확인.
- (전제) 고객의 잔액 정보: A,B 고객이 50,000원을 갖고 있다.
- A 고객이 웹 사이트에 접속
- 로그인 → 내가 누구인지 인증.
- 회원가입 버튼이 내 잔액으로 바껴서 내 잔액이 보인다.
시나리오 #1 - 잔액이 0인 경우
Given
- 고객 잔액 정보 세팅(전제) → 0원
When
- 웹 사이트에 접속해서 로그인함.
Then
- 회원가입 버튼 부분에 내 잔액:0원 이 보인다.
시나리오 #2 - 잔액이 있을 경우
Given
- 고객 잔액 정보 세팅 (전제)Given
- 고객 잔액 정보 세팅(전제) → 50,000원
When
- 웹 사이트에 접속해서 로그인함.
Then
- 회원가입 버튼 부분에 내 잔액:50,000원 이 보인다.
상품 선택
고객은 본인의 잔액 내에서 상품을 구매할 수 있다.
시나리오 #1 - 올바르게 상품을 선택했을 경우.
Given
- 웹 사이트에 접속해서 로그인함.
- 스토어 버튼을 누른다.
When
- 원하는 상품을 선택한다.
- 내 잔액 내에서 원하는 개수를 선택한다.
- 선물하기 버튼을 누른다.
Then
- 선물하기 페이지가 보인다.
시나리오 #2 - 잔액 이상의 수량을 선택한 경우
Given
- 웹 사이트에 접속해서 로그인함.
- 스토어 버튼을 누른다.
When
- 원하는 상품을 선택한다.
- 내 잔액 이상의 원하는 개수를 선택한다.
Then
- 잔액이 부족하여 선물하기가 불가합니다가 보인다.
상품 구매
고객은 상품 구매에 대한 대가를 지불한다.
시나리오 #1 - 올바르게 정보를 적었을 경우.
Given
- 웹 사이트에 접속해서 로그인함.
- 금액 내에서 상품 개수 선택
- 선물하기 누른다
When
- 받는 분 성함 입력
- 받는 분 주소 입력
- 받는 분에게 보내는 메시지 입력
- 선물하기 버튼 누름
Then
- 내가 주문한 내역에 선택한 상품이보인다.
주문조회
고객은 주문한 상품에 대해 조회할 수 있다.
시나리오 #1 - 주문한 상품이 있을 경우
Given
- 웹 사이트에 접속해서 로그인함.
- 원하는 상품을 선택한다.
- 금액 내에서 상품 개수를 선택한다.
- 선물하기 누른다.
- 받는 분 성함 입력
- 받는 분 주소 입력
- 받는 분에게 보내는 메시지 입력
- 선물하기 버튼 누름
When
- 주문조회 버튼을 누른다.
Then
- 내가 선물한 목록이 나온다.
시나리오 #2 - 주문한 상품이 없을 경우
Given
- 웹 사이트에 접속해서 로그인함.
When
- 주문조회 버튼을 누른다.
Then
- 내가 주문한 내역이 없습니다가 보인다.