급한 IBM의 협찬으로 볼펜과 샤방한 developerWorks 스티커를 가지고 갔습니다.
한 시간은 JUnit에 대한 이론, 다른 한 시간은 JUnit의 실제 사용, 그리고 세 번 째 시간은 TPTP의 프로파일링에 대한 가벼운 리뷰 정도가 되었습니다.

관련 자료는 http://okjsp.tistory.com/tag/test 에서 확인할 수 있습니다.

강의를 준비하면서 가장 인상 깊었던 것은 상용 JProfiler 못지 않게 좋아진 TPTP였습니다.

좀 더 많이 연구를 해서 공유를 해야할 것 같네요.

참가하신 분들 긴 시간 동안 잘 들어주셔서 고맙습니다.
그리고 IBM dW 고맙습니다. ^^

  1. 쪼매난앙마 2008.06.17 11:19

    세미나 잘 듣고 왔습니다...

    다음에도 기회가 되면 다른 세미나에도 참석하도록 하겠습니다.. ^^

    볼펜도 이쁘구요...ㅎㅎ

지난 글에서도 언급했지만 JUnit은 소프트웨어 업계의 잘 나가는 두 분이 만들었다고 했습니다. Kent Beck, 그리고 Erich Gamma 이 두 분이죠. 한 분은 TDD, Agile, XP로 다른 한 분은 디자인 패턴, 이클립스로 잘 살고 계시죠.

Registered : 2000-11-24 16:05 
뜬금 없는 이 날짜는 sourceforge.net에 JUnit프로젝트가 등록된 날입니다.
http://sourceforge.net/projects/junit/
링크된 페이지 우측 하단에서 확인할 수 있습니다.

8년 전 내가 만든 소프트웨어가 아직도 발전되고 쓰이고 있다면 기분이 어떨까요. 제 생각으로는 비슷한 것 중에 ANT가 있다고 생각됩니다.

JUnit 4.4가 현재 버전입니다. 3.8.x 까지의 컨벤션들이 Javadoc스타일의 Annotation 때문에 모두 바뀌었습니다.

  1. TestCase를 상속받지 않아도 되고요.
  2. 메소드명이 test로 시작하지 않아도 됩니다.

그 외에도 많은 특징들이 있지만 일단 샘플 하나를 소개하고 마칠까 합니다.

package test;

import org.junit.Test;

import junit.framework.Assert;

public class UnitTest {
 @Test
 public void 더하기() {
  Assert.assertEquals(2, add(1,1));
 }

 private Object add(int i, int j) {
  return i + j;
 }
}

  1. sm 개발 2008.06.13 17:54

    내일 kenu님의 junit 강의 기대하겠습니다......^^

    오전9시라서 지각하면 안되는데......심히 걱정 ㅠㅠ

    • kenu허광남 2008.06.13 17:56 신고

      ^^; 너무 기대는 쫌.
      잘 할 께요. 회사에서 리허설은 했습니다.

  2. sm 개발 2008.06.13 18:00

    ^^ 오옷......빠른 댓글

    내일 뵙겠습니다.
    ㅎㅎ

테스트만큼 번잡스러운 것이 없습니다. 모두가 동의하는 것은 테스트를 많이 할 수록 버그는 많이 발견된다는 것인데, 문제는 테스트하기가 귀찮다는 것이죠.
6월 14일 발표하는 자료에서 이런 고민에 대한 저의 생각을 풀어볼 생각입니다.
사용자 삽입 이미지


첨부파일은 freemind(http://freemind.sourceforge.net) 마인드 맵 원본입니다.

  1. songsungkyun 2008.06.08 14:37

    테스트

    막스 레거(Max Reger) : "바흐는 모든 음악의 시작이며 끝이다."
    To me, Bach is the beginning and end of all music.

    위의 말을 바꾸어서 다음과 같이 만들어 봤습니다.

    테스트는 모든 프로그램의 시작이며 끝이다.
    To me, Test is the beginning and end of all program.

    완벽할 수 없지만
    적절하게 만든 테스트 케이스는 안전장치
    조금 후에 이 안전장치는 깨질테지만

    테스트를 테스트하고
    테스트들을 리팩토링하고
    테스트가 항상 실서버환경이 아닌
    테스트환경에서 실행되는지 체크하고

    저에게 있어서 테스트분야는
    아직 안개속에서...

    하지만 저의 사고의
    우선순위에서 상승곡선을 타고 올라가서
    이제 당당히 우선순위 1위

    • kenu허광남 2008.06.11 09:19 신고

      댓글 멋들어지게 써주셔서 감사합니다.
      테스트는 모든 프로그램의 시작이며 끝이다. 정말 멋있습니다. ^^
      행복하세요.

  2. hyunjun19 2008.06.08 21:28

    '내 컴퓨터에서는 동작합니다. ㅡㅡ;'라는 말이 제 가슴에 와 닿네요...^^;;

    • kenu허광남 2008.06.11 09:34 신고

      영어로 본 문구인데요. 원문은 다음과 같습니다.
      "It works on My Computer"
      외국도 똑같은가봐요. ^^

6월 14일 발표할 내용의 일부입니다.
JUnit에 관한 책들은 많이 있습니다.

사용자 삽입 이미지


  1. zpzgsk 2008.06.07 08:54

    정말 참가하고 싶었는데..;지방을 내려가는 관계로..ㅠㅠ
    아쉽네요...흑흑..

JUnit 테스팅과 프로파일링-2008/06/14
	gimp로 만든 이미지입니다. 폰트가 쩝니다. ^^; 
장소: 토즈 강남점 (http://www.toz.co.kr/v2/01about/pop_map_kang.gif)

일시: 2008/06/14 (토) 09:00~12:00 (3시간)

회비: 20,000원

선착: 30명

많은 분들이 기대하시는데, 제 경험을 토대로 진행하게 됩니다. 사내에 적용한 것도 있고, 현재 개발습관이 조금 바뀌었는데, 어떻게 기존 개발에 대비해 개선점을 가져왔는지 공유합니다.


교육내용:

1. 테스트 쉽게 할 수 없을까

2. JUnit 3.8.x

3. 테스트하기 어려운 경우 돌아가는 법

4. 프로파일링으로 알 수 있는 것.

5. JProfiler http://www.okjsp.pe.kr/seq/55492


시간이 가능하다면

optional topic (eclipse debugging, TPTP, JUnit4.x)


신청은 이메일을 보내 주세요.

세미나 비용은 당일 접수합니다.

선착순 30명입니다. 예비로 대기자도 받습니다.

kenu 골뱅 okjsp.pe.kr

이름:

닉네임:

이메일:

휴대폰:


본 강의는 실습강의가 아닙니다. 노트북은 가져오시면 딴 짓만 하실 겁니다. ^^

  1. 김민재 2008.06.06 17:48 신고

    제안...
    담엔 평일날 해 주세요~~
    8시부터 11시 좋잖아... ^^
    즐강하고..
    등산 스케줄이랑 딱 겹치네.. 꼭 듣고 싶었는데..

eclipse에서 JUnit이 기본 탑재되어 있다는 것은 대부분 다 압니다. 그러나 JUnit 쓰시는 분들 손!
^^; 잘 쓰고 싶다고요. 그럼 쓰세요.
요즘 회사 다니는 것이 재밌는 이유 중 하나는 테스트 케이스가 늘어나고 있다는 것입니다. 물론 3년전(?)에 김창준님께서 발표하셨던 2천개가 넘는 테스트에 비해서는 얼마 안되지만 날마다 증가하는 테스트케이스의 숫자에 굉장히 놀라고 있습니다. 우리 팀 짱입니다요.

자꾸 쓰다보니 여러가지 보이네요. 그 중에 하나가 테스트 기록입니다.
사용자 삽입 이미지

JUnit Test 기록


JUnit 뷰에서 툴바에 보여지는 것입니다. 예전 항목을 클릭하면 테스트 기록을 확인할 수 있습니다.
빵빵한 보험을 든 것 같이 개발이 즐겁습니다.
Regression Tests(회귀 테스트; 코드의 추가 변경에 따른 영향도 테스트)를 위한 자산이 있기 때문이죠. ㅎㅎ
  1. songsungkyun 2007.09.14 15:05

    저두 요새 최근 관심사가 testing입니다.
    개발환경이 WSAD 5.X라 eclipse 2.1이지만 JUnit 감질나게 쓰고 있습니다.
    테스트코드 만드는 것도 상당한 노력이 필요하더라구요.
    테스트를 또 테스트 하고
    전 메서드별 단위테스트가 아니고 업무단위별 테스트를 만들고 있습니다.
    아직 저희 회사에는 자동화 테스팅이 개발 프로세화 되어 있지는
    않지만 제가 업무로 하는 곳에는 테스트를 만들어 사용하고 있습니다.
    요샌 초록색바 지켜보는 재미고 쏠쏠합니다.
    아직까진 솔직히 떨려요. 두근두근...
    코드에 약간 찜찜함이 없지 않아 있지만 용기가 납니다.
    - 테스트는 당신에게 용기를 주리라.
    - 테스트는 시작이요. 끝이다.
    - 테스트는 프로젝트의 전조등이다.

    • kenu허광남 2007.09.14 17:08 신고

      홈페이지를 가보니 내공이 장난 아니시군요.
      종종 찾아뵙겠습니다.
      행복하세요.

  2. 담벼락 2007.09.15 16:40

    빨간색 실패를 만나면 깜짝 깜짝 놀랩니다~~

    저는 메소드 테스트에서부터..
    한개의 메소드를 위해 테스트 메소드를 여러개 만들기도 하죠..(종종),
    업무단위별 테스트까지 다양한 테스트케이스를 만듭니다.

    변경요청이 들어오면 테스트 케이스 돌려주고,
    개발서버에 올려서 또 한번 테스트 해주고..
    역시..빌드서버에서는 제가 cvs에 올리기만 하면 알아서 돌아갑니다...^^

    • songsungkyun 2007.09.15 21:55

      안녕하세요.
      혹시요. 업무테스트는 UI영역까지 테스팅을 하시나요?
      전 아직까진 UI를 거치지 않고 테이터 테스팅만 하거던요.
      UI영역까지는 어떻게 하시나요?
      전 웹개발/유지보수쪽 일을 하고 있는데
      테이터 입력, 액션, 결과확인을 하기가 힘들더라구요.

    • kenu허광남 2007.09.17 00:30 신고

      테스트 먼저의 습관을 제대로 익히셨나 봅니다.
      ^^
      행복하세요.

    • kenu허광남 2007.09.17 00:31 신고

      UI 테스트는 selenium 만 알고 있습니다.
      thoughtworks에서 만든 것이죠.

  1. Unit tests
  2. Test coverage
  3. Black-box testing
  4. White-box testing
  5. Regression tests
  6. Boundary-value tests
  7. Acceptance tests
  8. Load tests
  9. Stress tests

from: J2EE Design and Development, Rod Johnson, 75p

1 유닛테스트가 모이면 5 Regression tests 는 자동적으로 풀리게 됩니다.
8 Load tests는 비즈니스 요구사항에 포함되어야할 것이구요. 9 Stress tests는 8 Load tests를 벗어난 수치에 동작하는 모습을 테스트하게 됩니다.

제 특성 중 하나가 이것 저것 알기는 들은 것은 있는데, 실제로 쓰는 것은 별로 없다는 것이죠. 심한 단점일 수도 있고, 제네럴리스트의 장점일 수도 있죠.
어제 오픈소스 프로젝트 세미나에서 김승권님의 테스트에 대한 내용을 들으면서 나온 테스트 커버리지에 관련된  얘기를 듣고 clover를 이제는 써야겠다 생각이 들었습니다.

해서 연구 시작했습니다.
clover 라는 툴이 있습니다.
http://www.cenqua.com/clover/ 에서 30일 평가판을 다운로드 받을 수 있습니다. 물론 이메일 요구합니다.
 

cenqua clover

clover

흔히 하던대로 zip파일 받아서 eclipse의 plugins 디렉토리 아래에 폴더를 놓아둡니다. 그리고 재시동.

다음과 같은 뷰를 볼 수 있습니다.
사용자 삽입 이미지

clover view


html, pdf, xml의 리포트도 뽑아줍니다.
JUnit 테스트에 날개를 달아준 것 같다는 생각이 듭니다.

+ Recent posts