블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»


개발환경 자동화 환경에 대한 추천 조합

ALM | 2008.03.13 11:04 | Posted by 조대협

몇가지 개발환경 자동화에 대한 테스트 조합을 해본결과에 대해서 추천을 드리겠습니다.

1. 이슈 관리 시스템
Mantis,Trac,Bugzilla,JIRA를 운용해봤습니다
결과는 JIRA가 가장 좋다는 것이 결론이고 구입 비용은 대충 120만원이면 일반 기업에서 무리 없이 사용이 가능합니다.
나머지는 오픈 소스 인데, Trac의 경우 기능은 막강하지만 인스톨과 운용이 어렵기 때문에 작은 단위나 기술력이 부족한경우에는 그다지 추천하고 싶지 않습니다.
Bugzilla의 경우 제 경우 매우 편리하게 사용을 했습니다만, 인스톨이 제법 까다롭습니다.
Matins의 경우 Instant Mantis라는 것으로 매우 쉽게 설치 및 운용이 가능합니다. 한글 지원도 잘되구요. 그러나.. 프로세스에 대한 흐름이나 UI가 좀 딸리는 느낌이 듭니다.

2. 소스 관리 도구
SVN이 널리 사용되기 때문에 다른 언급은 하지 않겠습니다.
단 SVN의 내용을 (소스나 변화 내용, 브렌치 추적) 웹에서 보여주는 도구로는 Fisheye가 제일 좋더군요. (유료입니다.) JIRA하고 연동도 쉽구요.
 무료로는 sventon이 비교적 사용도 쉽고 연동도 쉽습니다. 둘중 하나를 사용해보시는것이 좋겠습니다.

3. 빌드 스크립트
대표적으로 ANT와 MAVEN이 있습니다만, MAVEN의 경우 의존성 관리등이나 여러 기능적인 장점은 가지고 있습니다.
그러나.. 저의 경우 대부분의 작업이 엔터프라이즈 솔루션을 기반으로 하고 있는데, 이런 엔터프라이즈 개발 도구들은 MAVEN을 아직까지 지원하지 않는 경우가 많기 때문에 ANT를 사용합니다.

4. CI도구
Cruise Control, Team City, Anthill Pro, Hudson등이 있습니다.
Cruise Control은 오래된 솔루션 같구요.. 자바진영에서는 이미 좋은 솔루션들이 많아서 다른 솔루션을 사용하시는것이 좋겠습니다. Anthill pro가 많이 언급되는데 유료이고 아직 사용해본 경험은 없습니다만 널리 사용되는 만큼 추천할만 합니다.

무료로 사용될 수 있는 솔루션이 Team City Pro, Hudson이 있는데,
Hudson이 직관적이고 사용법도 매우매우 쉽습니다.
그러나 아직 개발 중인 관계로 버그가 종종 있고 자료가 적어서 다소 삽질이 많이 필요합니다. Team City는 완성도가 높지만 직관도는 Hudson에 비해서 떨어지는 것 같습니다.

5. 테스팅 도구
단위 테스트는 말할것 없이 JUnit이 추천할만합니다.
단!! JUnit은 3.X와 4.X가 코딩 스타일이 다르고 (물론 기능은 4.X가 더 좋습니다.) 특히 JUnit과 조합되는 프레임웍에서 4.X를 지원하지 않는 경우가 많기 때문에 3.X를 추천합니다.

In Container Test로는 JUnitEE와 Cactus가 있는데, 개인적으로는 Cactus를 추천합니다.
Cactus의 경우 Test Wrapper를 JUnit을 상속 받아 만들 수 있기 때문에, JUnit을 지원하는 모든 도구들과 잘 어울립니다. 특히 단위 부하 테스트를 해야하는 경우 Japex와 잘 조합이 되기 때문에 JUnitEE보다 약간 불편하긴 하지만 Cactus를 사용하는 것이 좋겠습니다.

다음으로 엔터프라이즈 시스템의 경우 DB에 대한 테스트 전후에 데이타 초기화와 개발자간의 테스트 데이타 동기, 그리고 테스트 결과 비교에 매우 유용합니다.

다음은 단위 성능 테스트인데,
JPerfUnit은 성능지표를 측정만 하는 것이기 (테스트가 어느 성능에 도달했는지 못햇는지) 때문에 단독으로는 큰효과를 얻을지는 미지수 입니다.
Japex의 경우 Junit과 조합되어 기존 JUnit에 대한 부하 테스트가 가능하고 Hudson과 통합이 매우 잘됩니다. (사용법도 간단하구요..) 이건 꼭 추천합니다. 그래프 기능도 좋구요..

6. 테스트 커버러지
다음으로는 테스트 결과에 대한 분석을 위한 커버러지 도구인데, 크게 Cobertura와 EMMA가 있습니다. EMMA는 이클립스 연동은 잘되지만 EAR이나 WAR에 대한 Instrument를 지원하지 않기 때문에, EJB등의 패키징이 많은 (JAR,WAR,EAR) JEE 시스템에는 그리 적절하지 않습니다. Cobertura의 경우 기존 패키징된 아카이브에 instrument를 할 수 있기 때문에 편리하게 사용할 수 있습니다. EMMA의 경우 runtime instrumentation을 지원하기 때문에 대안은 될 수 있겠지요. 이건 사용자의 몫에 맏깁니다.

7. Code Inspection
코딩에서 에러 발생 가능성이 있는 부분이나 코딩 스타일의 문제를 지적하는 것인데, FindBug나 PMD같은 도구들이 있고 상용으로는 Klockworks등이 있습니다만 이건 팀의 기술과 프로세스 운용 수준이 높지 않은 이상 도입에 무리가 있다고 봅니다.

그래서 제가 추천하는 조합은

SVN+JIRA+FISHEYE+HUDSON+JUnit 3.8x+DBUnit+Cactus+Cobertura+Japex

입니다. 여기에 확장으로 Confluence Wiki를 통한 팀내의 지식 공유 기반을 마련하는 것이 좋을것으로 생각됩니다.

요즘 Goverance 이야기 많이 하는데.. 뜬 구름 잡는 Governance보다는 이런 환경들이 진정한 Goverance로 가는 지름길이 아닌가 싶네요.

참고하세요

본인은 구글 클라우드의 직원이며, 이 블로그에 있는 모든 글은 회사와 관계 없는 개인의 의견임을 알립니다.

댓글을 달아 주세요

  1. 안모대리 2008.03.14 09:21  댓글주소  수정/삭제  댓글쓰기

    답변 감사드립니다. 새로운 쪽으로 돌리기 쉽지 않은데..
    조대협님과 같은 분들 때문에 도움을 많이 받네요.
    그런데 나열된 솔루션을 언제 다 볼지 ^^
    암튼 이번에 작은 프로젝트하면서 정말 느낀 점이
    많아서 꼭~~ 해보고 싶네요.

    감사드리구요. 궁금한거 자주 문의드리겠습니다.
    그럼 주말 잘 계획하세요.~~~

  2. 자바지기 2008.03.21 17:35  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. 그 동안 공부 열심히 하시더니 체계적으로 정리를 잘 하셨네요. Japex는 모르는 툴인데 저도 한번 분석해 봐야겠네요. 좋은 글 잘 읽고 갑니다.

    위에 더불어서 Watij, Selenium 같은 기능 테스트 툴도 포함시키면 좋겠다는 생각이 듭니다. 아직 단위테스트도 많이 하지 않는 상황에서 UI 테스트까지 자동화하는 건 욕심일까요? ㅋㅋ
    Junit도 괜찮지만 TestNG도 한번 쯤 살펴볼만하다고 생각됩니다. 복잡도는 Junit보다 높지만 Junit이 가지는 한계점을 극복해줄 수 있는 테스트 도구라고 생각됩니다.

    저도 이와 관련해서 강의를 한번 진행할까 준비중인데 겹치는 부분이 많겠네요. 강의하면 놀러가겠습니다.

  3. 조대협 2008.03.21 22:35  댓글주소  수정/삭제  댓글쓰기

    안그래도 Selenium을 사용하려고 생각중인데..
    다루는 시스템들이 대부분 UI가 없거나 RIA를 사용해서 실제 테스트해볼 기회가 없네요... 박재성님 강의하시면 제가 가서 꼭 듣고 싶습니다.
    답글 고맙습니다.

  4. 영회 2008.04.22 00:57 신고  댓글주소  수정/삭제  댓글쓰기

    매우 생생하면서도 구체적인 내용이 많네요.

  5. 레인 2008.10.17 07:49  댓글주소  수정/삭제  댓글쓰기

    SVN+JIRA+FISHEYE 에다가 Confluence Wiki 까지는 쓰고 있는데.. :) 좋은 글 잘 보고 갑니다.

  6. 낄리 2008.11.13 02:05  댓글주소  수정/삭제  댓글쓰기

    정말 금쪽같은 글이네요. 각각을 직접 사용하시고 쓰신 글일텐데 읽는건 잠깐이었지만 글을 쓰시기까지 들인 시간과 노력이 눈에 선합니다. 앞으로도 좋은 글 부탁드리겠습니다. 감사합니다.

  7. 이경훈 2013.03.27 14:50  댓글주소  수정/삭제  댓글쓰기

    Jira에 Fisheye 연동하는 방법이 궁금합니다.
    좀처럼 잘 안되네요...

    연동방법좀 알수 있을까요?
    idtong@naver.com