00138 20150520 단위 테스트의 가치 - AngryQA/blog GitHub Wiki

단위 테스트의 가치

AngryQA | 2015-05-20 수요일 오전 12:34 | 테스트 도구/JUint 등 / 단위테스트 | 원본

**참고 문헌 : **Effective Unit Testing

요즘 토이프로젝트 만들어 단위테스트 공부를 하고 있습니다.

공부를 하다보니

단위 테스트 작성보다

테스트의 가치 부분이 가장 어렵더군요-_-;;

그래서 나름 끄적끄적 정리하고 넘어갑니다

job_hunting_story-30

단위 테스트?

유닛 테스트(unit test)는 컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차다. 즉, 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차를 말한다. 이를 통해서 언제라도 코드 변경으로 인해 문제가 발생할 경우, 단시간 내에 이를 파악하고 바로잡을 수 있도록 해준다. 이상적으로, 각 테스트 케이스는 서로 분리되어야 한다. 이를 위해 가짜 객체(Mock object)를 생성하는 것도 좋은 방법이다. 유닛 테스트는 (일반적인 테스트와 달리) 개발자(developer) 뿐만 아니라 보다 더 심도 있는 테스트를 위해 테스터(tester)에 의해 수행되기도 한다

※위키백과 참조(http://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%9B_%ED%85%8C%EC%8A%A4%ED%8A%B8)

단위 테스트의 가치?

단위 테스트는 실수를 바로잡아준다.

여기서 실수는 error / defect / bug / issue를 의미합니다.

BTS에 기록된 실수의 유형을 살펴보면 사람은 같은 실수를 반복합니다.

그래서 이러한 실수의 유형을 케이스화하여 단위 테스트로 만들면 이러한 실수를 미리 바로잡을 수 있습니다 %ED%98%B8%ED%83%95%20%EC%9C%A0%EB%A0%B9

다운로드.jpg

단위 테스트는 실사용에 적합한 설계를 끌어내주며, 요구사항을 명확히 알려주어 군더더기를 없애준다.

이걸 TDD(http://sten.kr/lnk/vnzorwtp)라고 하던가요%ED%99%94%EB%82%A8%20%EB%85%B8%EB%9E%80%20%EB%8F%99%EA%B8%80%EC%9D%B4

**테스트 기반으로 ****개발된 코드는 ****필요한 기능을 모두 포함하며 **

테스트를 하지 않던 코드보다 훨씬 간결하게 작성되어 군더더기를 없애줍니다%EC%9D%8C%ED%9D%89%20%EB%85%B8%EB%9E%80%EB%8F%99%EA%B8%80%EC%9D%B4

단위 테스트를 작성해서 얻게 되는 가장 큰 수확은 테스트 자체가 아니라 과정에서 얻는 깨달음이다.

신중하게 만든 100개의 단위 테스트는 엄청난 개선 효과를 체감하지만

이미 많은 단위 테스트가 존재할 경우 100개의 테스트를 추가한다고 해서 변화를 체감하기는 어려울 것입니다.

위 상황을 타파하려면 발상의 전환이 필요합니다.

즉, 테스트를 설계도구로 인식하는 것

테스트를 설계한다는 인식 전환 단계를 통과하면 단위 테스트의 가치는 높은 경지에 도달할 것입니다%ED%98%B8%ED%83%95%20%EC%9C%A0%EB%A0%B9

"우린 답을 찾을 것이다 늘 그랬듯이"

Attachments(1)