https://sundaland.tistory.com/32
단위 테스트는 S/W 개발에서 개별적인 작은 코드 단위를 독립적으로 검증하는 테스트 기법이다. 여기서 단위는 보통 하나의 메서드, 함수 또는 클래스와 같은 가장 작은 기능 단위를 의미한다. 단위 테스트는 이러한 작은 코드 단위가 예상한 대로 동작하는지를 확인하기 위해 작성된다.
- 작은 범위 : 단위 테스트는 작은 코드 단위를 대상으로 한다. 주로 함수나 메서드 수준에서 이루어지며, 하나의 기능을 독립적으로 테스트한다.
- 독립성 : 단위 테스트는 독립적으로 실행될 수 있어야 한다. 각 테스트는 다른 테스트에 의존하지 않으며, 다른 테스트의 실행 여부와 상관없이 동일한 결과를 제공해야 한다.
- 빠른 실행 : 단위 테스트는 빠르게 실행되어야 한다. 이는 개발자가 코드 수정 후 즉시 테스트를 수행해 피드백을 받을 수 있게 해준다.
- 자동화 기능 : 단위 테스트는 일반적으로 자동화되어야 한다. 이를 통해 지속적인 통합(CI) 환경에서 코드가 변경될 때마다 자동으로 테스트를 수행하고, 코드의 품질을 유지할 수 있다.
- 명확한 결과 : 단위 테스트는 성공 또는 실패를 명확히 판별할 수 있어야 한다. 실패 시에는 테스트 케이스가 무엇을 테스트하려고 했고, 왜 실패했는지를 알 수 있어야 한다.
Unit Test 장점
- 빠른 피드백 : 개발자는 코드 작성 후 바로 단위 테스트 수행함으로써 코드의 버그나 오류를 신속하게 발견할 수 있다.
- 코드 품질 향상 : 단위 테스트는 코드의 논리적인 오류를 미리 발견하여 S/W 품질을 높인다. 이를 통해 예상치 못한 오류가 적고, 유지보수가 쉬운 코드를 작성하게 된다.
- 리팩토링 지원 : 단위 테스트가 존재하면 코드 리팩토리(코드 구조 변경)시에도 기존 기능이 제대로 동작하는 지를 검증할 수 있어, 안심하고 코드를 개선할 수 있다.
- 문서화 역할 : 잘 작성된 단위 테스트는 코드의 사용법과 동작을 보여주는 좋은 예시가 되어, 코드의 문서화 역할을 할 수 있다.
- 버그 예방 : 새로운 코드 작성 시 단위 테스트를 함께 작성하면, 버그를 사전에 방지할 수 있다.
Unit Test 단점
- 초기 작성 비용 : 단위 테스트를 작성하는데 시간이 들기 때문에 초기 개발 속도가 느려질 수 있다. 하지만 장기적으로 보면 유지보수 비용을 줄일 수 있다.
- 변경에 따른 유지보수 : 코드가 자주 변경되면 단위 테스트도 함께 수정해야 하는데, 이는 테스트 코드의 유지보수 비용을 증가시킬 수 있다.
- 테스트의 한계 : 단위 테스트는 개별 기능 단위만을 테스트하므로, 통합 테스트나 시스템 테스트에서 발견할 수 있는 상호작용이나 복잡한 시나리오를 포착하지 못할 수 있다.
Unit Test 예시
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
class CalculatorTest {
@Test
void testAddition() {
Calculator calculator = new Calculator();
int result = calculator.add(2, 3);
assertEquals(5, result);
}
}
단위 테스트는 S/W 개발에서 코드의 신뢰성을 높이고, 유지보수를 쉽게 하기 위해 필수적인 기술이다. 이를 통해 개발자는 코드의 작은 단위들이 올바르게 동작하는지를 확인할 수 있으며, 이후 코드 변경에서도 안정성을 유지할 수 있다.
'테스트 주도 개발 (TDD)' 카테고리의 다른 글
Mockito (0) | 2024.08.28 |
---|---|
테스트 주도 개발 (TDD) (0) | 2024.08.08 |
JUnit 5 (0) | 2024.08.07 |