test code
#CI를 위해,,
깃 액션을 이용해서 (배포는 일단 제외하고) build 해서 검사한 후 pr 이나 push 하게 하려는데,,
test code 가 있어야해서 test code 작성법에 대해서 알아보았다
#test
테스트는 Manual Testing, Automated Testing 으로 나뉨
현 자바수업은 풀스택이라 프론트화면 구성해서 직접 확인했지만,
전 코틀린수업때는 swagger에서 직접 테스트 했는데 이런 과정이 Manual Test 이다
Automated Test는 이름대로 자동으로 수행되는 테스트로, Menual Test보다 신뢰도를 높일 수 있고, CI/CD를 위해 필수적이다
#test 단위
1. unit test
가장 작은 단위의 테스트
보통 하나의 메소드 단위로 테스트 진행
Mocking 과정 필요 (테스트 중에 실제 객체 대신 사용할 가짜 객체를 만드는 과정)
2. integration test
서로 다른 모듈 두개 이상을 합쳐서 테스트
ex) service 와 repository 합쳐서 테스트
3. end-to-end test (E2E Test) >> Acceptance Test 라고도 부름(phase 기반으로 분류 시)
회원가입 > 인증 > 로그인 등 유저 행동과 동일하게 테스트 진행
자동화 어려움
#Junit? Mokito? AssertJ?
추후 추가
#BDD(Behavior Driven Development)
TDD(Test Driven Development) 에서 파생된 개발 방법론
*TDD : 테스트코드 먼저 작성 후 테스트 실패상태(레드상태)에서 기능 하나씩 구현하면서 테스트코드 한줄씩 그린상태로 만들기 (Red-Green-Refactor)
TDD는 method 중점으로, BDD는 사용자 관점 중점으로(더 큰단위 테스트)
BDD 기반 테스트는 GWT 와 DCI 형태 있음
GWT (Given-When-Then) : 주어진 상황 / 사용자의 행위 / 기대 결과
ex) 강의가 마감된 상황 / 강의를 신청하면 / 강의 신청 실패
DCI (Describe-Context-It) : 설명할 테스트 대상 / 테스트 대상이 놓인 상황 / 테스트 대상의 행동
ex) GET/courses/{id} API는 / 없는 id 기반으로 요청할때 / 404 응답함