본론으로 들어가기 전에 몇 가지 말씀드리겠습니다. 첫째는 다시 강조해 말씀드리지만 소개하는 책들이나 글들의 대부분은 저도 읽지 못했습니다. 여기 저기서 좋은 책이더라 혹은 좋은 글이더라는 입소문을 정리해놓고 언젠가는 한번 읽어야지 하고 생각하고 있을 뿐입니다. 설사 읽었더라도 10%도 이해하지 못한 수준으로 읽었을 뿐입니다. 그런데 보내는 글마다 "이 글은 저는 못읽었지만, 누가 그러는데 좋더라"라는 식으로 쓰는 게 어색해 보여서 당연히(?) 제가 읽었다는 투로 할뿐입니다.
둘째는 그래서 제가 이야기하는 주제에 대해서 저도 잘 모릅니다. 어쩌면 "주제 넘게" 설치고(?) 있는 것인지도 모르겠습니다. 알기 때문에 주장하거나 글을 쓰는 것이 아니라, 주장하고 싶기 때문에 주장하는 것이고 글을 쓰고 싶기 때문에 글을 쓰는 것입니다. 앎의 크기와는 별개로... 무식하면 용감해진다고 하는 것처럼. 제가 쓰는 글들이 학술 세미나에 발표될 논문도 아닌 거의 낙서(?) 수준인데 학문적 엄밀성 같은 건 없습니다. 그리고 알게 모르게 구라(?)도 좀 있습니다.
셋째는 제가 쓰는 글들이 "Agile" 적인 것에 집착(?)하면서 다른 것들을 의도적으로 폄하(?)하거나 무시(?)하는 경향이 있다는 것을 알고 있습니다. 금년 KBL 챔피언 결정전처럼 허재를 위해서 김승현과 김병철, 그리고 힉스가 저같은 허재의 팬들에게는 세상의 나쁜 놈이 되었던 것 처럼... 내년이면 저도 서른이군요. 제가 아무리 설쳐야 CMM이나 RUP가 가지는 위상에 변함이 없을거란, 그리고 Agile에 아무런 도움도 되지 않을 거란 정도는, 그리고 더 이상 세상이 "나"를 중심으로 돌아가지 않는 다는 정도는, 그리고 스스로의 능력의 크기 정도는 알 정도의 철은 들었습니다. 그러나 이것도 맞고 저것도 맞고 혹은 이것도 틀리고 저것도 틀리다는 식의 양비론 혹은 양시론적인 글쓰기는 쓰는 사람이나 읽는 사람이나 지루(?)하지 않을까요. 그건 조선일보만으로도 충분하다고 생각합니다. 앞으로도 쭉 Agile은 좋은 놈(?) RUP와 CMM은 나쁜 놈(?)입니다.
넷째, 제가 이런 글들을 쓰는 목적의 하나는 잘난 척(?)하려는 거고, 둘은 Agile을 주장하고 싶은 거고, 셋은 가지고 있는 생각들을 정리하려는 거고, 넷은 공유하려는 것입니다. 중요도 순(?)입니다.
JUnit Framework
"JUnit is a regression testing framework written by Erich Gamma and Kent Beck. It is used by the developer who implements unit tests in Java. JUnit is Open Source Software, released under the IBM's Common Public License Version 1.0 and hosted on SourceForge."
Kent Beck과 Erich Gamma가 어느 컨퍼런스 참석을 위해서 타고 가던 비행기에서 함께 만들었다고 알려진 자바 환경에서의 단위 테스트 실행(?) 프로그램입니다. 당연히 비즈니스 클래스였겠지요... 정확하게는 xUnit architecture for unit testing frameworks(이하 xUnit Architecture)로 불리는 자동 단위 테스트 실행을 위한 개념적 디자인을 자바 환경에서 구현한 것으로 파악할 수 있습니다. 이는 MDA(Model Driven Architecture)의 전형적인 예라고 할 수 있습니다. 실제로 xUnit Architecture를 프로그램밍 언어에 맞게 구현한 것이 30여개에 이르고 있습니다. 동일한 디자인(xUnit Architecture)을 공유하면서 다양한 플랫품(언어)에서 구현했다는 점에서 MDA와 같습니다. 그러나 MDA는 하나의 디자인이 상이한 플랫폼들로 구현되는 과정의 자동화를 추구한다는 점에서 특정 프로그램밍 언어 개발자들에 의해서 직접 구현되는 xUnit Architecture와는 다릅니다. 아래의 사이트에서 JUnit Framework에 대한 많은(?) 정보를 얻을 수 있습니다.
www.junit.org
최소한 자바 개발자들에게는 Martin Fowler의 격찬(?)이 맞다고 생각합니다.
Never in the field of software development was so much owed by so many to so few lines of code.
많은 사람들이 단위 테스트를 위한 툴이라는 본래의 목적 외에도 JUnit Framework는 패턴 스터디 대상물로 적격이라고 말합니다. Design Pattern이 실제 프로그램에서 어떻게 구현되는지를 알 수 있게 해주며 동시에 소스코드의 양도 작기 때문입니다. 또한 Kent Beck이나 Erich Gamma가 아직도 개발에 참여하고 있기 때문에 대가의 코드를 직접 접할 수도 있습니다. [JUnit A Cook's Tour]라는 글을 참조하면 좋을 것 같습니다.
JUnit Framework에 대한 좋은 읽은 거리는 다음과 같습니다.
Test Infected: Programmers Love Writing Tests (Erich Gamma)
http://junit.sourceforge.net/doc/testinfected/testing.htm
JUnit Cookbook (Kent Beck, Erich Gamma)
http://junit.sourceforge.net/doc/cookbook/cookbook.htm
JUnit A Cook's Tour (Erich Gamma, Kent Beck)
http://junit.sourceforge.net/doc/cookstour/cookstour.htm
JUnit FAQ (Mike Clark)
http://junit.sourceforge.net/doc/faq/faq.htm
이상은 JUnit(3.8.1)을 다운받으면 그 안(doc 디렉토리)에 모두 들어 있습니다. JUnit FAQ는 계속 수정이 되기 때문에 웹에서 확인하는 것이 좋습니다.
Martin Fowler의 [Refactoring: Improving the Design of Existing Code]에도 JUnit과 관련된 장이 있습니다. [Java Tools for Extreme Programming: Mastering Open Source Tools Including Ant, JUnit, and Cactus]에도 내용이 있습니다.
JUnit Framework를 설치하고 사용할 줄 아는데 걸리는 시간은 아는 사람들의 도움을 받으면 1시간이면 충분합니다. 사용해보고 싶은 분들은 언제든지 말씀하세요. 다음은 eXtreme Programming(XP)에서의 TDD와 Test-First Programming(TFP)에 대해서 이야기하도록 하겠습니다.
잡설 하나.
xUnit Architecture는 .NET에서는 NUnit Framework로 구현되었습니다.
잡설 둘.
Grich Gamma의 [Test Infected: Programmers Love Writing Tests]는 꼭 한번 읽어보세요. 이 글은 The Problem, Example, Testing Practices, Conclusions으로 구성되어 있는데 Example을 빼면 1 페이지 정도의 분량입니다. JUnit Framework에 익숙하지 않은 상태라면 Example을 제외하고 읽으시면 됩니다.
No comments:
Post a Comment