Thursday, September 17, 2015

[Unit testing] 1. What is JUnit?

1. 단위 테스트란? - What is Unit test?

* 사전적 의미 ^_^

단위
1) 사물의 길이, 넓이, 무게 등을 수치로 나타낼 때, 기본이 되는 기준
2) 하나의 집단 조직 등을 구성하는 기본적인 한덩어리.

테스트
1) 제품의 성능이나 상태 따위를 일정한 기준에 따라 검사함
2) 일정한 기준에 따라 검사하다.

* 위키 백과 ^_^

유닛 테스트(unit test)는 컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차다.
즉, 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차를 말한다.
이를 통해서 언제라도 코드 변경으로 인해 문제가 발생할 경우, 단시간 내에 이를 파악하고 바로 잡을 수 있도록 해준다.

이미지출처: http://martinfowler.com/bliki/UnitTest.html

* 장점 ^_^

1. 프로그램의 결함을 찾기 쉽다
단위 테스트의 목적은 프로그램의 각각의 부분이 정확하게 잘 동작하는지 확인하는 것.
즉, 프로그램을 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지 검사하고 이를 통해 문제 발생 시 정확하게 어느 부분이 잘못되었는지를 재빨리 확인할 수 있게 해준다!
=> 따라서 프로그램의 안정성이 높아진다.
단위 테스트는 개발 시간을 증가 시키는 것처럼 보인다.
하지만 잘 이용한다면, 개발 기간 중 대부분을 차지하는 디버깅 시간을 단축시킴으로써 여유로운 프로그래밍을 가능케 한다!

2. 변경이 쉽다
리팩토링은 알다시피 기능을 유지하므로, 리팩토링을 진행하고 나서 자신이 변경한 코드가 리팩토링 전 처럼 의도한 대로 작동하고 있음을 단위 테스트를 통해서 확실하게 알 수 있다!
이를 회귀 테스트(Regression testing)라고 한다.
어떻게 코드를 수정해도 문제가 되는 부분을 빠르게 확인 할 수 있고, 수정한 코드가 잘 동작하는지 바로 알 수 있기 때문에 리팩토링에 있어서 안정적으로, 그리고 맘편하게 코드 수정을 할 수 있도록 도와준다~!

3. 통합이 간단하다
단위 테스트는 쪼개어진 단위에서 그 자체의 불확실성을 제거해주므로 상향식(bottom-up) 테스트 방식에서 유용하다.
먼저 프로그램의 각 부분을 검증하고 그 부분들은 합쳐서 다시 검증하는 통합 테스트에서 더욱 더 빛을 발한다.

* 왜 단위테스트를 써야 하지?

두 말할 것 없다!!! "신뢰!"
단위 테스트는 프로그램의 쪼개진 단위마다 테스트 결과가 매우 명확하다.
그렇기 때문에 개발 조직에서 개발자와 개발자간의 코드에 대한 신뢰를 형성한다.
개발 조직과 테스트 팀간의 신뢰 또한 ㅎㅎ!
그리고 우리의 목적인 오픈소스 - 다른 개발자와 코드로 소통을 해야한다.
이 때, 다른 개발자에 대한 최소한의 신뢰를 갖기에 단위테스트가 매우 적절하다!
단위 테스트라는 것을 했고, 그 결과가 명확하기 때문에 그 관계에서 "신뢰" 가 형성될 수 있다 ^_^!!!!

2. JUnit이란?

* 정의?

Java에서 독립된 단위 테스트를 도와주는 framework! (편의성! 자동화!)

* 어떻게?

기대값과 결과값을 비교!
위에서 설명한 바와 같이 단위 테스트란 잘게 쪼갠 소스 코드의 어떠한 모듈이 의도한 대로 정확히 작동하는지 검증하는 것이다.
즉, 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차를 말한다.
해당 모듈이 동작하길 기대하는 값과 실제로 동작 후 나온 결과 값을 비교하며 테스트를 진행한다.

* 참고~ JUnit은 컴파일 시에 JAR로서 링크된다.
JUnit 3.8과 그 이전 버전에서는 프레임워크의 junit.framework 패키지 하위에 있고, JUnit 4와 그 이후 버전에서는 org.junit 패키지 하위에 있다.

다음 포스팅에서는 JUnit 사용법을 알아보자~

참고 논문 및 사이트

1. 시작하자 단위테스트 - http://www.slideshare.net/youngeunchoi12/springcamp2014-35347399

2. 위키백과 - 유닛 테스트 - https://ko.wikipedia.org/wiki/유닛_테스트

3. 왜 단위 테스트를 해야 하는가? - http://blog.powerumc.kr/265

4. Wikipedia - JUnit - https://en.wikipedia.org/wiki/JUnit

No comments:

Post a Comment