Coding/Back - Spring Framework

Spring Testing 개념 1/3 #Day13

꿀딴지- 2023. 9. 3. 14:13

애플리케이션의 일반적인 테스트 분류

  1. 기능테스트 : (제3자) 사용자 입장에서 전체 기능 테스트
  2. 통합테스트(전체테스트) : (개발팀) 클라이언트 측 툴 없이 테스트 코드로 진행하며, controller 부터 db까지 여러 계층이 연관되어 있음. 운영환경과 동일한 조건에서 테스트 @SpringBootTest
  3. 슬라이스 테스트(부분통합테스트) : (개발자) 애플리케이션을 특정계층으로 쪼개어 진행, Mock 객체를 사용해서 계층을 끊어서 테스트 범위 좁힐 수 있음
  4. 단위테스트(Unit Test) : (개발자) 테스트 해야할 부분만 테스트. 일반적으로 메서드 단위. 최대한 독립적이고, 작은 단위인 것이 좋음
    • 단위테스트 원칙 : F.I.R.S.T
    • Fast(빠르게)
    • Independent(독립적으로, 실행순서 상관없이)
    • Repeatable(반복가능하도록)
    • Self-validating(TC 스스로 결과에 대한 T/F 판단 가능)
    • Timely(시기 절절하게 - 테스트하려는 기능 구현을 하기 직전에 작성해야 함)

 

테스트 코드 작성 방식 : BDD(Behavior Driven Development)

  • Given : 테스트를 위한 준비 과정
    • 테스트에 필요한 전제 조건 작성
    • 테스트 대상에 전달되는 입력 값(테스트 데이터) 작성
  • When : 테스트할 동작(대상, 내용) 지정
    • 단위 테스트에서 일반적으로 메서드 호출을 통해 테스트를 진행
  • Then : 테스트의 결과를 검증. 예상했던 결과의 참/거짓 판단
    • 일반적으로 예상하는 값(expected)과 테스트 대상 메서드의 동작 수행 결과(actual) 값을 비교해서 기대한 대로 동작을 수행하는지 검증(Assertion)하는 코드들이 포함
    • assertion : 예상하는 결과 값이 참(true)이길 바라는 것