단위 테스트(unit test) : 작은 단위의 코드에 대해 테스트를 수행한 것.
단위 테스트를 하는 이유?
개발자가 설계하고 만든 코드가 원래 의도한 대로 동작하는지 개발자 스스로 빨리 확인하기 위해서
getUserFailure() 테스트 코드에 나타난 기능
단계 | 내용 | 코드 | |
조건 | 어떤 조건을 가지고 | 가져올 사용자 정보가 존재하지 않는 경우에 | dao.deleteAll(); assertThat(dao.getCount(), is(0)); |
행위 | 무엇을 할 때 | 존재하지 않는 id로 get()을 실행하면 | get("unknown_id"); |
결과 | 어떤 결과가 나온다 | 특별한 예외가 던져진다 | @Test(expected = EmptyResultDataAccessException.class) |
테스트 주도 개발(TDD, Test Driven Devlopment)
만돌고자 하는 기능의 내용을 담고 있으면서 만들어진 코드를 검증도 해줄 수 있도록 테스트 코드를 먼저 만들고, 테스트를 성공하게 해주는 코드를 작성하는 방식의 개발방법. 또는 테스트를 코드보다 먼저 작성한다고해서 테스트 우선 개발(Test First Development)라고도함.
@Autowired
스프링의 DI에 사용되는 특별한 어노테이션. Autowired가 붙은 인스턴스 변수가 있으면, 테스트 컨텍스트 프레임워크는 변수 타입과 일치하는 컨텍스트 내의 빈을 찾는다. 타입이 일치하는 빈이 있으면 인스턴스 변수에 주입해준다.
학습테스트의 장점
1) 다양한 조건에 따른 기능을 손쉽게 확인해볼 수 있다.
2) 학습 테스트 코드를 개발 중에 참고 할 수 있다.
3) 프레임워크나 제품을 업그레이드 할 때 호환성 검증을 도와준다.
4) 테스트 작성에 대한 좋은 훈련이 된다
5) 새로운 기술을 공부하는 과정이 즐거워진다.
동등분할(equivalence partitioning)
같은 결과를 내는 값의 범위를 구분해서 각 대표 값으로 테스트를 하는 방법을 말함. 어떤 작업의 결과를 종류가 true, false 또는 예외발생 세 가지라면 각 결과를 나타내는 입력 값이나 상황의 조합을 만들어 모든 경우에 대한 테스트를 해보는 것이 좋음.
경계값 분석(boundary value analysis)
에러는 동등분할 범위의 경계에서 주로 많이 발생한다는 특징을 이용해서 경계의 근처에 있는 값을 이용해 테스트하는 방법. 보통 숫자의 입력값인 경우 0이나 그 주변 값 또는 정수의 최대값, 최소값 등으로 테스트해보면 도움이 될 때가 많음.
출처: 토비의 스프링 Vol.1
'JAVA' 카테고리의 다른 글
[Spring] 스프링 핵심 원리 - 기본편(1) (0) | 2021.07.13 |
---|---|
[Spring] 3장 템플릿 (0) | 2021.06.24 |
[Spring] 1장 오브젝트와 의존관계(4) (0) | 2021.06.10 |
[Spring] 1장 오브젝트와 의존관계(3) (0) | 2021.06.09 |
[Spring] 1장 오브젝트와 의존관계(2) (0) | 2021.06.08 |