유닛 테스트: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
잔글편집 요약 없음
잔글편집 요약 없음
1번째 줄:
컴퓨터 프로그래밍에서 '''유닛 테스트'''(unit test)는 컴퓨터 프로그래밍에서 [[소스 코드의코드]]의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차다. 즉, 모든 함수와 메소드에 대한 테스트 케이스({{lang|en|Test case}})를 작성하는 절차를 말한다. 이를 통해서 언제라도 코드 변경으로 인해 문제가 발생할 경우, 단시간 내에 이를 파악하고 바로 잡을 수 있도록 해준다. 이상적으로, 각 테스트 케이스는 서로 분리되어야 한다. 이를 위해 가짜 객체({{lang|en|Mock object}})를 생성하는 것도 좋은 방법이다. 유닛 테스트는 (일반적인 테스트와 달리) 개발자({{lang|en|developer}}) 뿐만 아니라 보다 더 심도있는 테스트를 위해 테스터({{lang|en|tester}})에 의해 수행되기도 한다.
 
== 장점 ==
 
== 장점목적 ==
유닛 테스트의 목적은 프로그램의 각 부분을 고립 시켜서 각각의 부분이 정확하게 동작하는지 확인하는 것이다. 즉, 프로그램을 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지 검사하고 이를 통해 문제 발생 시 정확하게 어느 부분이 잘못되었는지를 재빨리 확인할 수 있게 해준다. 따라서 프로그램의 안전성이 높아진다. 유닛 테스트는 일견 개발 시간을 증가 시키는 것처럼 보이지만 개발 기간 중 대부분을 차지하는 디버깅 시간을 단축시킴으로써 여유로운 프로그래밍을 가능케 한다.
 
=== 용이한 변경= ==
 
프로그래머는 언제라도 유닛 테스트를 믿고 [[리팩토링]]을 할 수 있다. 리팩토링 후에도 해당 모듈이 의도대로 작동하고 있음을 유닛 테스트를 통해서 확신할 수 있다. 이를 [[회귀 테스트]]({{lang|en|Regression testing}})라 한다. 어떻게 코드를 고치더라도 문제점을 금방 파악할 수 있고 수정된 코드가 정확하게 동작하는지 쉽게 알 수 있게 되므로 프로그래머들은 더욱 더 의욕적으로 코드를 변경할 수 있게 된다. 좋은 유닛 테스트 디자인은 그 유닛이 사용되는 모든 경로를 커버할 수 있는 테스트 케이스를 만들어 준다.
 
지속적인 유닛 테스트 환경을 구축하면 어떠한 변화가 있더라도 코드와 그 실행이 의도대로 인지를 확인하고 검증 할 수 있게 된다. 확립된 개발 방법과 유닛 테스트의 범위에 따라서 프로그램의 정확성이 좌우된다.
 
=== 간단한 통합= ==
유닛 테스트는 유닛 자체의 불확실성을 제거해주므로 상향식({{lang|en|Bottombottom-up}}) 테스트 방식에서 유용하다. 먼저 프로그램의 각 부분을 검증하고 그 부분들은 합쳐서 다시 검증하는 [[통합 테스트]]에서 더욱 더 빛을 발한다.
 
유닛 테스트는 유닛 자체의 불확실성을 제거해주므로 상향식({{lang|en|Bottom-up}}) 테스트 방식에서 유용하다. 먼저 프로그램의 각 부분을 검증하고 그 부분들은 합쳐서 다시 검증하는 [[통합 테스트]]에서 더욱 더 빛을 발한다.
 
=== 언어 지원 ===
 
[[D (프로그래밍 언어)|D]]와 [[루비 (프로그래밍 언어)|루비]]는 유닛 테스트를 직접 지원한다.
 
유닛 테스트 프로세스를 단순화 시켜주는 유닛 테스트 프레임워크는 여러 언어로 개발되고 있다.
 
[[파이썬]]은 [[doctest]]와 [[PyUnit]] 모듈을 지원한다.
 
== 보기언어 지원 ==
[[D (프로그래밍 언어)|D]]와 [[루비 (프로그래밍 언어)|루비]]는 유닛 테스트를 직접 지원한다. 유닛 테스트 프로세스를 단순화 시켜주는 유닛 테스트 프레임워크는 여러 언어로 개발되고 있다. [[파이썬]]은 [[doctest]]와 [[PyUnit]] 모듈을 지원한다.
 
== 같이 보기 ==
* [[소프트웨어 테스트]]
* [[통합 테스트]]
줄 35 ⟶ 26:
* [[테스트 자동화]]
 
== 바깥 고리 ==
* [http://www.xprogramming.com/testfram.htm 켄트 벡의 테스트 프레임워크 논문 원본]
* [http://www.softdevarticles.com/modules/weblinks/viewcat.php?cid=34 유닛 테스트에 대한 글 목록]