본문 바로가기

공부/Spring

[서적 핵심 정리 - 토비의 스프링 3] Ch2. 테스트

단위 테스트 (Unit Test)

  • 주로 클래스/메소드 단위로 수행하는 작은 단위의 테스트
  • 주로 프로그래머에 의해 만들어지므로, 프로그래머 테스트라고 하기도 함


JUnit

  • 자바 단위 테스트 프레임워크
  • 사용 방법
    • @Test
      • 메소드에 @Test 어노테이션을 부여하고 JUnit을 실행하면 테스트를 수행
    • assertThat
      • 2개의 매개변수를 (조건에 의해) 비교하여, 올바르지 않을 경우 예외를 발생
    • @Test(expect=[Exception 종류].class)
      • 특정 Exception이 발생함을 검증하기 위해 사용하는 어노테이션
    • @Before, @After
      • 매 JUnit 테스트 케이스를 실행하기 전후에 수행할 메소드에 사용하는 어노테이션
      • 이 어노테이션은 매 테스트 케이스마다 실행되므로, 모든 테스트에 공통으로 사용하는 정보나 오브젝트(Fixture, 픽스쳐)의 경우 메소드 추출 등의 방식으로 처리하는 것이 나음
    • @BeforeClass, @AfterClass
      • 테스트 클래스 전체에 걸쳐 한번만 실행되는 static 메소드
    • 스프링 테스트 컨텍스트 프레임워크
      • @RunWith(SpringJUnit4ClassRunner)
      • @ContextConfituration(locations="/applicationContext.xml")

테스트 주도 개발 (TDD, Test Driven Development)

  • 테스트 코드를 먼저 만들고, 테스트를 성공하게 해주는 코드를 작성하는 방식의 개발 방법
  • 장점: 모든 개발 코드에 대해 테스트가 수행됨 
  • Test First Development

침투적(invasive) 기술 vs 비침투적(noninvasive) 기술
  • 침투적 기술
    • 특정 기술을 사용하기 위해 API나 인터페이스를 강제하는 기술
  • 비침투적 기술
    • 특정 기술을 코드에 영향을 주지 않고 적용 가능한 기술


동등 분할 (equivalence partitioning)

  • 같은 결과를 내는 값의 범위를 구분하여 각 대표 값으로 테스트하는 방법


경계값 분석 (boundary value analysis)

  • 동등 분할 범위의 경계값을 이용해 테스트 (숫자일때 0, 정수의 최대값, 최소값 등으로 테스트)