[Spring] Testing

hyoreal·2022년 9월 13일
0

[Spring]

목록 보기
19/25
post-thumbnail

단위 테스트(Unit Test)

  • 테스트
    • 어떤 대상에 대한 일정 기준을 정해놓고, 그 대상이 정해진 기준에 부합하는지 부합하지 못하는지를 검증하는 과정
    • 테스트 이유 : 테스트를 잘 거쳐 테스트 대상이 검증 과정에 잘 통과하게 만들어 최대한 더 나은 결과를 얻기 위함(100% 완벽할 순 없으나 더 좋은 결과를 위함)
  • 테스트 종류

  • 기능 테스트

    • 테스트의 범위가 제일 큼
    • 애플리케이션 제공 기능이 올바르게 동작하는지 테스트
    • 테스트 주체 : 개발자가 아닌 제 3자
    • 연관 대상이 많기 때문에 단위 테스트라고 부르기 힘듦
      • 연관 대상 : API 툴, DB 등..
  • 통합 테스트

    • 클라이언트 툴 없이 테스트 코드를 통해 테스트
    • 테스트 주체 : 개발자, 개발팀
    • 애플리케이션의 여러 계층과 연관되어 단위테스트라 하기에 범위가 큼
      • 독립적인 테스트가 여전히 불가함
  • 슬라이스 테스트

    • 애플리케이션을 특정 계층으로 쪼개어서 하는 테스트
    • Mock 객체를 사용하여 계층별로 끊어 테스트 가능(테스트 범위 축소화)
    • 각 계층에서 HTTP요청이 필요하고, 외부 서비스, DB 연동 등으로 인해 단위테스트라고 보기엔 단위가 큼
  • 단위 테스트

    • 비즈니스 계층에서 사용하는 클래스들을 메서드 단위로 독립적으로 테스트
    • 단위테스트는 최대한 독립적이고 최대한 작은 단위인게 좋기에 다른 계층들은 단위테스트라고 보기 어려움
  • 단위 테스트 (Unit Test)

    • 단위테스트 코드는 대부분 메서드 단위로 작성
    • DB의 상태가 테스트 전후가 동일하게 유지될 수 있다면 DB가 연동되어있어도 단위테스트라고 할 수 있음
      • 단, 단위테스트는 최대한 독립적이며 최대한 작은 단위인 것이 좋음
  • 단위테스트 사용 이유

    • HTTP 요청을 직접 보내는 번거로운 테스트를 단순화 가능
    • 구현 코드가 의도대로 동작하는지 결과를 빠르게 확인할 수 있음
    • 작은 단위의 테스트에서는 버그를 찾기 용이
    • 테스트 케이스가 잘 짜여져있으면 버그 리포트를 전달받았을 때 단계적으로 찾아가기 용이
      • 테스트 케이스(Test Case) : 메서드 등 하나의 단위를 테스트하기 위해 작성하는 테스트 코드
  • 단위테스트 원칙 F.I.R.S.T

    • Fast(빠르게) : 테스트케이스는 빨라야한다
    • Independent(독립적으로) : 테스트케이스는 독립적이어야한다
    • Repeatable(반복 가능하게) : 테스트케이스는 어떤 환경에서도 반복 실행이 가능해야한다
    • Self-validating(셀프 검증 되도록) : 테이스케이스 스스로 결과가 옳고 그른지를 판단할 수 있어야한다
    • Timely(시기적절하게) : 테스트하려는 기능 구현을 하기 직전에 작성해야한다 (TDD)
profile
좌충우돌 코린이 성장기

0개의 댓글