본문 바로가기
TREND

테스트 프레임워크 xUnit

by ojava 2015. 8. 24.
반응형

테스트 프레임워크인 jUnit과 nUnit에 대해 검색하던 중

StackOverFlow에 올라온 하나의 질문글을 발견하게 되었다.

 

 

 

 

<출처 : http://stackoverflow.com/questions/9769047/nunit-vs-xunit>

 

 

 

nUnit과 xUnit의 차이점에 대해서 설명해달라며 두 용어의 개념에 대해 올려놓았더라

(작성자는 혼란을 겪고 있다.)

 

여기서 함정은 제목과는 다르게 본문에서 nUnit과 xUnit.net을 비교하고 있다.

nUnit은 .NET language를 위한 unit testing framework로, unit testing tools인 xUnit을 기반으로 하는 것이고

xUnit.net은 .NET Framework를 위한 unit testing tool이다. nUnit의 특정 testing tool.

(이름을 xUnit과 비슷하게 지어서 혼란을 일으켰으므로 xUnit.net의 잘못이 크다)

 

 

 

그럼 질문자가 nUnit과 헷갈릴뻔 했던 xUnit은 무엇일까?

 

 

<출처 : https://en.wikipedia.org/wiki/XUnit>

 

 

용어가 헷갈리다보니 위키피디아에서도 다른 걸 찾는 사람들이 있을까봐 맨 위에 써놓았다.

 

xUnit은 unit testing framework를 통틀어서 칭하는 명칭으로, 1998년에 Kent Beck에 의해 만들어진 프레임워크인 SUnit으로부터 그 기능과 구조를 착안했다.

SUnit은 Smalltalk에 적용된 unit test 도구로 객체지향 구조이며 Java나 C# 같은 언어에 쉽게 적용이 가능하다고 한다.

이를 이용하여 Beck과 Erich Gamma이 Java 언어에 적용하여 JUnit을 만들었고, 이 외에도 현재 사용되고 있는 주요 프로그래밍 언어들에 적용되는 추세이다.

각 언어별로 적용된 프레임워크의 이름은 Java의 JUnit, .NET의 NUnit과 같이 프로그래밍 언어의 맨 첫글자를 차용하여 사용한다.

 

 

 

xUnit 을 통해 개발내역에 대한 유닛테스트 수행이 가능하다는데.. 그럼 유닛테스트란 무엇인가.

 

유닛테스트(Unit test)

컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차.

모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차를 말한다.

이를 통해서 코드 변경으로 인해 문제가 발생할 경우 단시간 내에 이를 파악하고 바로 잡을 수 있도록 해준다.

 

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

 

2) 변경이 쉽다
: 프로그래머는 리팩토링 후에도 해당 모듈이 의도대로 작동하고 있음을 유닛테스트를 통해서 확신할 수 있다.

(* 리팩토링 : 결과값은 바뀌지 않으면서 코드 구조를 변경하는 것. 유지보수성 향상 및 가독성 향상을 위해서 수행됨)
이를 회귀 테스트(Regression testing)라 한다. 어떻게 코드를 고치더라도 문제점을 금방 파악할 수 있고 수정된 코드가 정확하게 동작하는지 쉽게 알 수 있게 되므로 프로그래머들은 더욱 더 의욕적으로 코드를 변경할 수 있게 된다.

 

좋은 유닛 테스트 디자인은 그 유닛이 사용되는 모든 경로를 커버할 수 있는 테스트 케이스를 만들어 준다.

지속적인 유닛 테스트 환경을 구축하면 어떠한 변화가 있더라도 코드와 그 실행이 의도대로 인지를 확인하고 검증 할 수 있게 된다. 확립된 개발 방법과 유닛 테스트의 범위에 따라서 프로그램의 정확성이 좌우된다.

 

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

<출처 : https://ko.wikipedia.org/wiki/유닛_테스트>

 

 

 

 

개념적인 내용만 우선적으로 알아보고 유닛테스트 수행을 도와주는 xUnit의 사용절차는

다음 번 포스팅에서 다루기로 한다.

반응형