유닛 테스트
위키백과 ― 우리 모두의 백과사전.
컴퓨터 프로그래밍에서 유닛 테스트란 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차다. 즉, 모든 함수와 메소드에 대한 테스트 케이스(영어: Test case)를 작성하는 절차를 말한다. 이를 통해서 언제라도 코드 변경으로 인해 문제가 발생할 경우, 단시간 내에 이를 파악하고 바로 잡을 수 있도록 해준다. 이상적으로, 각 테스트 케이스는 서로 분리되어야 한다. 이를 위해 가짜 객체(영어: Mock object)를 생성하는 것도 좋은 방법이다. 유닛 테스트는 (일반적인 테스트와 달리) 최종 사용자나 테스터가 아닌 개발자(영어: developer)에 이뤄진다.
목차 |
[편집] 장점
유닛 테스트의 목적은 프로그램의 각 부분을 고립 시켜서 각각의 부분이 정확하게 동작하는지 확인하는 것이다. 즉, 프로그램을 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지 검사하고 이를 통해 문제 발생 시 정확하게 어느 부분이 잘 못 되었는지를 재빨리 확인할 수 있게 해준다. 따라서 프로그램의 안전성이 높아진다. 유닛 테스트는 일견 개발 시간을 증가 시키는 것처럼 보이지만 개발 기간 중 대부분을 차지하는 디버깅 시간을 단축시킴으로써 여유로운 프로그래밍을 가능케 한다.
[편집] 용이한 변경
프로그래머는 언제라도 유닛 테스트를 믿고 리팩토링을 할 수 있다. 리팩토링 후에도 해당 모듈이 의도대로 작동하고 있음을 유닛 테스트를 통해서 확신할 수 있다. 이를 회귀 테스트(영어: Regression testing)라 한다. 어떻게 코드를 고치더라도 문제점을 금방 파악할 수 있고 수정된 코드가 정확하게 동작하는지 쉽게 알 수 있게 되므로 프로그래머들은 더욱 더 의욕적으로 코드를 변경할 수 있게 된다. 좋은 유닛 테스트 디자인은 그 유닛이 사용되는 모든 경로를 커버할 수 있는 테스트 케이스를 만들어 준다.
지속적인 유닛 테스트 환경을 구축하면 어떠한 변화가 있더라도 코드와 그 실행이 의도대로 인지를 확인하고 검증 할 수 있게된다. 확립된 개발 방법과 유닛 테스트의 범위에 따라서 프로그램의 정확성이 좌우된다.
[편집] 간단한 통합
유닛 테스트는 유닛 자체의 불확실성을 제거해주므로 상향식(영어: Bottom-up) 테스트 방식에서 유용하다. 먼저 프로그램의 각 부분을 검증하고 그 부분들은 합쳐서 다시 검증하는 통합 테스트에서 더욱 더 빛을 발한다.
...
[편집] 언어 지원
D 프로그래밍 언어는 유닛 테스트를 직접 지원한다.
유닛 테스트 프로세스를 단순화 시켜주는 유닛 테스트 프레임워크는 여러 언어로 개발되고 있다.
[편집] 더 보기
- 소프트웨어 테스트
- 통합 테스트
- 시스템 테스트
- 테스트 주도 개발
- 익스트림 프로그래밍
- 회귀 테스트
- 테스트 케이스
- 유닛 테스트 프레임워크 목록
- 테스트 자동화
[편집] 바깥 고리
![]() |
이 문서는 토막글입니다. 서로의 지식을 모아 알차게 문서를 완성해 갑시다. |
분류: 익스트림 프로그래밍 | 소프트웨어 테스트 | 토막글