티스토리 뷰

[테스트 작성하는 팁]

  • 테스트는 상호 독립적으로 작성되어야 한다
  • 공유하는 자원? Spring Bean, Database 등
    1. 테이블을 초기화한다.
    2. DB를 초기화 한다.(@Sql 어노테이션 등을 활용가능)
    3. 스프링 컨테이너를 초기화(Bean을 초기화하기 때문에 비싸다)
  • SpringBootTest → 롤백이 되는 것은 아님. 테스트 환경을 구축
  • DirtiesContext → DB 영향은 없고, 기존 컨텍스트를 더렵혀서 매번 새로운 Bean이 로드되게 한다.
  • MockBean(Mock 객체 테스트시) → 스프링 컨텍스트가 재사용 불가할수도 있다.
  • 테스트는 빠른 피드백이 필요!!! (느림)E2E > Intergration > Unit (빠름)
  • 공통된 테스트 환경(Test Context)을 설정
  • 메소드분리를 통한 가독성 높이기!!
  • 내부코드의 의존을 분리!!
  • 테스트 간의 구분은 모호할 수 있다. 하지만, 어떤 것을 테스트하려고 하는지 목적에 따라 달라진다!

ATDD 특강

  • 인수테스트는 사용자 사용성에 대한 테스트를 API 레벨에서 가능하게 해준다.
  • @SpringBootTest에서 테스트 환경 + 테스트 클라이언트의 조합
    • Mock + MockMvc
    • RANDOM_PORT + RestAssured
  • 블랙박스 환경
  • @DirtiesContext
    • 스프링 테스트 환경에서 캐싱된 Context를 사용하지 않게 설정
    • 매번 Context를 새로 구성하다보니 시간이 오래 걸림
  • 메소드 분리로 가독성 증진
  • 한글 메소드로 가독성 증진

[인증과 인가]

기존

사용자 ——( 인증을 위한 정보 )—> 서버 ——> DB

사용자 <——(     결과     )—— 서버 ——  DB

세션

사용자 ——( 로그인 )——> 서버 ——> DB

                   서버 <—— DB

                   서버 ——> 세션저장소(인증정보를 가지고 있음) 

사용자 < ———————-—  서버 <—— 세션저장소(인증정보를 가지고 있음) 

토큰

사용자 ——(  로그인 ) ————> 서버 ——— > DB

사용자 <—( 토큰 + 인증정보)— 서버 <——— DB

인가과정

사용자 ——( 인증을 위한 정보 )—> 서버 ——> DB

사용자 <——(     결과     )—— 서버 ——  DB

사용자 ——(  데이터 + 결과 )——> 서버 ——> DB

사용자 <——(   요청 Data  )—— 서버 <——DB

세션을 통한 인가

사용자 —————(  로그인  ) ——> 서버 ——> DB

                         서버 <—— DB

                         서버 ——> 세션저장소(인증정보를 가지고 있음) 

사용자 < ———(세션 ID)————— 서버 <—— 세션저장소(인증정보를 가지고 있음) 

사용자 ——( 데이터요청 + 쿠키 )—> 서버 ——> 세션저장소

                           서버 <—— 세션저장소

                           서버 ——> DB 

사용자 <———(   요청 Data  ) —— 서버 <—— DB

토큰을 통한 인가

사용자 ——(       로그인      )———> 서버 ——> DB

사용자 <——(       Token      )——— 서버 ——  DB

사용자 —( 데이터요청 + Token  )-—> 서버 ——> DB

사용자 <——(    요청 Data       )—— 서버 <——DB
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함