테스트 시나리오
3차 회의
페어로 함께한 다른 팀분들 양식을 보고 참고하여, 이후 테스트 시나리오를 구글 스프레드시트를 통해 새로이 작성해보기로 결정 하였습니다.
회의를 통해 테스트 시나리오 작성에 필요한 요소를 결정하였으니 이 시트를 통해 시나리오를 작성해주시기 바랍니다!
🎬테스트 시나리오 스프레드시트
이번 미팅을 통해 확실시 된 것
- 유닛이란? : 테스트의 최소단위. 유닛보다 작은 테스트 대상이 없을 때 유닛이라 함.
- 우리가 하는 테스트의 종류? : 유닛테스트
- 작성해야 하는 테스트 시나리오의 종류? : 유닛테스트
- 테스트는 성공과 실패 케이스를 모두 작성해야 하며, 한 유닛당 1개의 성공 테스트, 4개의 실패 테스트가 일반적임
코치님 미팅
- TDD 를 통해 프로젝트가 구성되는 과정
- DDD(도메인 주도 개발)와 TDD 의 다른점은 DDD가 기능의 디테일을 필요사항 위주로 틀을 짜고 세부 로직(유닛) 을 제작하는 방식이라면, TDD는 원하는 기능의 방향만 대략적으로 정한 뒤 필요한 유닛을 작성, 작성한 유닛을 조립하는 방식으로 개발을 주도해나간다는 것.
- 포켓몬 딱지를 예로 들며
- 만약 가지고 있는 포켓몬딱지를 모두 바닥에 쏟은 뒤 유형에 따라 분류해나간다면 그것은 TDD고
- 포켓몬의 유형을 미리 정한 뒤 포켓몬딱지를 하나씩 분류한다면 그것은 DDD다.
- TDD를 통해 개발한다는 것은 단순히 어떤 함수를 만들기 이전에 테스트를 작성한다는 레벨의 것이 아니다.
- 테스트를 작성한다는 것은 유닛을 구상한다는 것이다. 유닛은 기능의 단위이다.
- 기능의 대략적인 방향만 잡고 기능 구성 단위인 유닛을 준비한다.
- 여기서 유닛은 ‘예약’ 이라는 기능을 만들 때 ‘예약 조회’, ‘예약 신청’ 을 말하지 않는다.
- ‘예약 조회’ 를 위해 ‘예약 기간 검색’ 의 과정이 필요할 때 비로소 ‘예약 기간 검색’ 이 유닛 테스트의 대상이 될 수 있다.
- 예약 을 위한 예약 조회 를 위한 예약 기간 검색(테스트 최소단위) 같은 유닛을 우선적으로 구상하고 테스트를 만들면 그것이 TDD의 시작이 된다.
- 유닛 테스트 시나리오 작성중 시너지가 일어날 수 있다.
- 여러 유닛에 등장하는 과정이 있다면 취합되어 그 과정의 완성도를 높이는데 사용될 것이다.
- 예시1
- ‘**사용자의 신상을 검사’**하는 과정은 예약, 알림, 결제등 많은 유닛에서 사용될 수 있다.
- 서로 맡은 유닛 테스트를 작성하는 과정 속에서 유저에게 어떤 데이터를 얻어야 하는지 취합할 수 있다.
- 그렇게 취합된 유저 데이터는 유저 기능을 구성하는데에 결정적인 역할을 한다(예: User 테이블에 필요한 컬럼이 어떻게 되는지 이러한 방법을 통해 결정될수 있다.)
- 때문에 DB는 가장 마지막에 구축되게 된다며 첨언하시기도 했다.
- 예시2
- 위에서 이야기한 ‘예약기간 검색’ 시나리오 작성을 통해, 예약 테이블에 예약 기간을 저장하는 컬럼이 필요하다는 사실을 알았을 것이다.
- 또한 ‘예약정보를 검사’ 시나리오 작성을 통해 예약 테이블에 예약 기간 뿐 아니라 예약하는 동물과 사람의 정보 또한 컬럼으로 작성해야 함을 알았을 것이다.
- 이러한 예약과 관련된 테스트를 작성하면서, 이전에는 두루뭉실했던 ‘예약’ 이라는 테이블의 정체가 점점 뚜렷히 보이는 효과를 낳는다.
코치님 작성) 현업개발자가 나누어 본 테스트 시나리오
코치님이 병원 시나리오를 보시고 자신은 이렇게 쪼갤것 같다는 느낌으로 술술 써주신 유즈케이스 입니다. 시나리오 작성에 참고하시면 좋을 것 같습니다.
i, ii 깊이의 행위가 유닛이 될 수 있을것 같다고 합니다.
유즈케이스
- 고객이 반려동물 등록한다 ( 제약사항 : a ~ j 까지 정보는 필수 )
- 요청값이 정확한지 검증한다.
- 요청값을 기반으로 반려동물 정보를 생성 및 저장한다.
- 예약기능
- 예약을 조회한다.
- 기간별로 검색한다.
- 예약을 신청한다.
- 유저 정보를 검증한다.
- 예약정보를 검증한다.
- 유저가 결제를 요청한다.
- 유저의 예약정보를 저장한다.
- 유저에게 예약정보를 알림요청한다.
- 예약을 취소한다.
- 예약정보를 검증한다.
- 예약정보를 취소한다.
- 유저에게 예약취소 알림요청한다.
- 유저가 진료정보를 5년치까지 조회한다.
- 유저 정보를 검증한다.
- DB 에 진료정보 조회한다.