JUNITINACTION:단위테스트의모든것
카테고리 컴퓨터/IT > 프로그래밍/언어 > 웹프로그래밍 > 웹프로그래밍일반
지은이 피터 타치브 (인사이트, 2011년)
상세보기

  회사에 읽을만한 책으로 굴러들어온(?) 녀석이 있어서, 낼름 집어들고 읽은지 2주가 되어간다. 출퇴근길에 쭈욱 훑어읽은지는 1주일(...)쯤 되어서 내용이 잘 기억나지 않을 즈음, 이렇게 반의무감을 부여하면서 독후감을 쓰기 시작한다. 이 책의 모든 내용을 제대로 이해하기에는 턱없이 부족한 내공의 소유자이다보니 글을 쓰는 부분에서 많은 부족함이 드러나겠지만, 시도하지 않는 것보다는 나으니까 이렇게 글을 써본다.
테스트를 해야하는 상황 속에서, 다양한 테스트 기법들 속에서 적절한 테스트를 선정하여 수행하는 것은 어렵다.
오늘 퇴근길에 전철에서, 울트라 슈퍼 개발자와 나란히 앉아 테스트에 대한 이야기를 하면서 가진 전제다.
  많은 개발자와 아키텍트들이 TDD를 통해서 개발을 진행하는 것이 여러가지 이득이 있으니 그러해야한다고 이야기한다. 그러나 대다수의 개발자들은 이런 개발방법에 대해서 제대로 이해하거나 접하지 못한 경우가 굉장히 많다. 나의 경우에도 얼마 전까지만해도 TDD가 무엇인지, 어떤 상황 속에서 사용하는 것인지도 몰랐었다. 그러다가 우연히 TDD에 대한 베타리딩을 시도하면서 '미지의 세계와 조우'를 하게 되었다.
  그 책은,
테스트주도개발TDD실천법과도구
카테고리 컴퓨터/IT > 프로그래밍/언어 > JAVA > JAVA일반
지은이 채수원 (한빛미디어, 2010년)
상세보기
요 녀석이다. 지금도 종종 꺼내어 펼쳐본다. 이 책은 TDD에 대한 촉(Skin ship)을 느껴보기에 참 좋은 책이다. 유머러스한 저자가 자신의 노하우를 잘 뽑아낸 작품이기도 하다. 정작 저자께서는 많이 아쉬움을 표하는 작품이기도 하니, 조만간 '조금 더 쌔끈해진 모습으로 나오지 않을까' 하는 기대를 하고 있기도 하다.

최근 강조되고 있는 개발기법 중 하나가 TDD(Test Driven Development)
- TDD에 대한 글
  = TDD - Wikipedia : http://en.wikipedia.org/wiki/Test-driven_development
  = 알면서 왜 안할까 TDD - Toby's Epril : http://toby.epril.com/?p=500
  = 내가 생각하는 TDD - benelog : http://benelog.egloos.com/2766714


TDD란,

빨간 정지 신호등(실패)에서 녹색 통과 신호등(성공)으로 바꾸기
위한 노력(과정)이다. 

라고 할까나?
 
  TDD에 대한 공부를 하면서도 여전히 어려운 것이... Mock 과 DBUnit을 이용하는 부분인데, 이 책에서는 상세하게 잘 다뤄져있는 편이다. 요즘 Hibernate를 이용한 ORM(http://en.wikipedia.org/wiki/Object-relational_mapping)에 대해서 공부를 하고 싶은 욕심이 생기고 있는데, 쉬이 접근하지 못하고 있다가, 이 책에서 JPA를 사용하기 위해 테스트할 수 있는 방법에 대해서 설명한 부분들을 보고 학습코드(테스트 코드)를 작성해볼 경험을 가질 수 있었다. 이 책에서는 다양한 테스트 기법이 설명되어 있고, 테스트 전략을 가지고서 시도해볼 수 있도록 상세하게 설명해주고 있다.
  개인적으로 구매해서 '찬찬히 예제를 따라하면서 익혀두면 언젠가는 써먹을 수 있지 않을까?'하는 생각을 품게 하는 책이다.

  요즘의 개발환경은 IDE 개발툴을 이용하기 때문에, 터미널 등에서 테스트를 진행할 경우는 흔하지 않다. 이 책 초반에 터미널에서 커맨드를 입력하여 단위테스트를 진행하는 부분이 나온다. 그렇게 커맨드창에서 명령어를 입력하여 테스트를 실행하는 장면에서는 '뭐 이런걸 다. 요즘 누가 이런걸 쓴다고.' 라면서 살짝 깔보듯 읽기를 시작했다. 하지만 이 책은 그렇게 단위테스트의 초창기 사용방법부터 시작해서 차근차근 사용법을 알려주기 시작한다. Ant와 Maven을 이용한 자동화 테스트, 테스트 케이스와 테스트 스위트(Test Suite)를 구성하고 실행하는 방법, 통합툴을 이용하여 지속적으로 테스트를 진행하는 방법에 이르기까지 시시콜콜하다고 할 수 있을만큼 다양한 테스트 기법과 그걸 사용할 수 있는 전략을 설명해준다.

  어떻게 보면... TDD의 가장 핵심줄기라고 할 수 있는 테스트 전략이 이 책에 소개되어 있다.

테스트 가능한 코드 작성하기
- 공개 API는 계약이다.
- 종속성을 줄여라.
- 생성자는 간단하게 만들어라.
- ...

등등의 주옥같은 개념들이 담겨있다. 좀 더 쓰고 싶지만~ 그 이상의 내용들은 직접 구매해서 보시면 좋겠습니다. 저도 한권 살겁니다~ ^^

TDD에 대해 전반적으로 훑으면서 읽어보려고 한다면

테스트주도개발TDD실천법과도구
카테고리 컴퓨터/IT > 프로그래밍/언어 > JAVA > JAVA일반
지은이 채수원 (한빛미디어, 2010년)
상세보기
에서 TDD의 개념과 재미를 접하고,
JUNITINACTION:단위테스트의모든것
카테고리 컴퓨터/IT > 프로그래밍/언어 > 웹프로그래밍 > 웹프로그래밍일반
지은이 피터 타치브 (인사이트, 2011년)
상세보기
에서 TDD의 전략과 적절한 적용범위 등에 대해 생각하고,
자바개발자도쉽고즐겁게배우는테스팅이야기
카테고리 컴퓨터/IT > 프로그래밍/언어 > JAVA > JAVA
지은이 이상민 (한빛미디어, 2009년)
상세보기
에서 TDD를 통해서 얻게되는 이점들에 대해서 알게될 것이다.

의 순으로 읽으면 괜찮겠다 싶다. 여기에다가
메이븐
카테고리 미분류
지은이 박재성 (한빛미디어, 2011년)
상세보기
에서 메이븐에 대해서 잘 배우고, Hudson을 활용하는 방법도 배우면 참 좋겠는데... ㅎㅎ 이렇게 나열하고 보니, 책장사같다. ㅡ_-);;
지금은!! 프로젝트에 투입되어 프로젝트에서 사용중인 아키텍쳐와 개발기술들을 익히는 것만으로도 참 버겁다.
이러면서 주말이면 자전거타고 어디갈까 고민하고 있...

사실 이 책은... 한번 쭈욱하고 훑어봤다. 그리고 마음에 드는 부분들을 몇개 찝어뒀다. 개인적으로는 책에 줄을 쭉쭉 긋고 낙서를 하면서 읽는 편인지라 회사책을 함부로 다루기가 뭐해서 쉽게 다룰 수가 없다. ^^; 빠른 시일내에 구매를 해서 찬찬히 내용을 훑어보고 또다른 블로그에 그 내용을 정리해보면서 내것으로 만들어가면 내 개발능력이 조금 더 향상되지 않을까? 
TDD는 자신의 개발기술을 향상시키기 위한 특별한 무기가 되어줄 것이다.
나는 그렇게 믿고 있다. 그리고 그 무기는 자신의 발등을 찍는 도끼가 되지 않을 것이라고 확신하고 있다.

실패는 성공의 어머니!!




P.S. 

기회가 닿으면 틈틈히 세미나나 컨퍼런스에 참여하고, 기술서적을 읽고, 개발자들을 만나면서 그들이 관심가지는 분야들에 대해서 귀기울이는 것에는 '조금 더 나은 개발자'가 되고 싶은 내 작은 소망이 표출되는 것이라 생각한다. 나는 여전히 배고프고 어리석다. 그래서 더 많은 것을 보고, 듣고, 느끼고, 생각하고, 행동하면서 배워야한다.
  주말에 그 모습을 드러내는 귀차니즘과 게으름을 적절하게 퇴치할 수 있다면 참 좋을텐데...


살짝 아쉬운 점.

  어느 번역서에서나, IT용어를 한글로 표현하는 부분은 고민이 많은 부분이다. 이런 고민은 베타리딩을 몇번 하면서 저자분들이 고민하는 경우를 목격하면서 공감하고 있다. 이 책에서도 조금 아쉬운 점이 있다면, IT용어와 한글의 표현이 뒤섞여있는 편(어떤 장에서는 한글단어로 적혀있고, 어떤 장에서는 그 장의 핵심 키워드들이 영단어로 표현되어 있음)이다. 초반에 스텁(Stub)이나 테스트 스위트(Suite)의 경우 어느 개발자들에게는 익숙한 단어기에 자연스레 그 단어를 떠올리는 이도 있겠지만, TDD를 처음 접하는 개발자들에게는 낯설면서 어리둥절한 느낌을 줄 수가 있다. 번역자분과 출판 관계자들께서 고민을 하셨을 부분이었을 것이다. 
  그 도서에서 단어가 처음 나타나는 곳에서는 단어 옆에 영단어를 표기하여 어떤 의미를 가지는지 분명하게 이해할 수 있도록 했으면 좋겠다.


 
저작자 표시
Posted by 허니몬
채수원(http://blog.doortts.com/)님의 TDD 교육을 받고 와서, 마무리 짓지 못한 TDD로 자판기문제를 작성해보았다.

- 동전은 최소갯수로 반환한다.
- 500, 100, 50원 동전만 사용
- 지폐는 동전으로 반환하지 않는다.

짝 코딩(Pair Programming) 으로, 처음 대면한 분과 모니터를 바라보며 분석, 설계 와 코딩을 시작했다.
당시에는 서로 이런저런 이야기를 주고받으며 의견을 조율했지만, 서로가 생각하는(정확하게는 요구사항에 대한 인식) 바가 달라서 인지, 생각보다는 깔끔하게 정리되지 않았다. 처음으로 짝 코딩을 하면서(이전에도 알게모르게 해온 듯도 하다. 누군가의 코드를 봐주면서, 누군가에게 코드를 보여주면서 입력 중에 혹은 입력 중 생긴 오타나 오류에 대해서 찾는 작업을 해왔으니까) 이런저런 감흥을 지금에 와서야 느끼고 있다. ^^;

집에와서 다시 작성해본 ToDoList
- 입금된 금액을 저장한다. -> Ok
- 잔액을 보여준다. -> Ok
- 상품을 구매하면 입금액에서 상품액을 뺀 잔액을 보여준다. -> Ok
- 반환버튼을 누르면 잔액에 따라 1000, 500, 100, 50원의 잔액을 각각 반환한다. -> Ok
- 동전(500, 100, 50)은 최소갯수를 주도록 한다. -> Ok
- 반환 결과를 화면에 보여준다. -> returnMoney(); -> OK

<< 작성한 테스트코드 : TestVendingMachine.java >>

<< 작성한 자판기코드 : VendingMachine.java >>

TDD JUnit 통과





저작자 표시
Posted by 허니몬

이 글은 허니몬님의 2010년 7월 14일에서 2010년 7월 15일까지의 미투데이 내용입니다.

Posted by 허니몬
  • 훗… ㅡ_-);; 숙취는 없군…. Orz… 하지만, 버스타고 졸다가 마석까지 가고야 말았으니… 나름의 숙취가 남아있…(Orz.... 다행히 잃어버린 게 없다.) 2010-07-10 09:41:17
  • 비빔면 먹고… JCO 개발자 페스티벌 나갈채비를 해야겠구나.(이화여대 ECC 에서 열리는 JCO, 신촌에 또 나가는구나....) 2010-07-10 10:22:49
  • 흠… 미투앱을 종료시키지 않은 상태에서… 장시간이 흐른 다음… 새로운 글들을 보려고 하면 미투앱이 정지된 시점부터 현시각까지의 글들을 모두 가져오느라 많은 시간과 데이터가 소모된다…(아이폰 미투앱 일시정지 그 후 글 불러오기 // 설정에서 불러오는 글의 시간대를 설정할 수 있으면 어떨까?? // 안되면 미투앱 종료했다가 다시 시작하는게 편하다. me2mobile) 2010-07-10 11:40:53
  • 이 시간에는 할아버지 할머니가 참 많으시네여…(이런 날에는 서서 가는게 맘 편하지 말입니다. me2mobile) 2010-07-10 11:45:28
  • 여친이 생기면…!! 이 아잉폰을 전용 호출기 선물해야지…(하지만 안생겨요!! me2mobile) 2010-07-10 11:47:49
  • 오오!! 이대!!(여기가 바로!!! me2mobile me2photo) 2010-07-10 12:27:02

    me2photo

  • ₩funfin₩ 어디로 가야하나요!!!(미아되기 직전 me2mobile) 2010-07-10 12:35:06
  • 치사빤스하다 네스팟!!!(이화여신대 ECC 무선인터넷 네스팟!! 학교 내에서는 무료로 개통시켜라!!! me2mobile me2photo) 2010-07-10 12:49:30

    me2photo

  • fupfin님의 개회사!!! 이제 시작이구나 두근두근!!(하지마... 찾아오다가 헤매었음... JCO 자바 개발자 페스티벌 me2mobile me2photo) 2010-07-10 12:58:21

    me2photo

  • SDD를 전파하고 계시는 너구리님을 뵙는군요!!(테스트 가능한 소프트웨어 설계와 TDD 작성 패턴 me2mobile me2photo) 2010-07-10 13:02:43

    me2photo

  • 오오오!!! 책에서 읽은 내용들이 연결되기 시작했어!!! ㅡㅅ-); 역시 책만 읽는 것으로는 부족한 부분들이 있었어!!!(너구리님의 설명을 듣고서 테스트 주도 개발 에서 읽은 내용들이 이어지기 시작했어. me2mobile me2photo) 2010-07-10 13:47:02

    me2photo

  • 백문이 불여일견문!!! 백번듣는 것보다는 한번보고듣는게 훨씬 낫다!! ㅎㅎ 음..!! 내가 만드는 거에서 어찌 쓸지도 상상된다!!
    오오오!!! 책에서 읽은 내용들이 연결되기 시작했어!!! ㅡㅅ-); 역시 책만 읽는 것으로는 부족한 부분들이 있었어!!! by 허니몬 에 남긴 글 2010-07-10 14:02:03
  • 너구리님의 명언!!(오늘 하루 가슴에 새겨두기 me2mobile me2photo) 2010-07-10 14:16:11

    me2photo

  • 이러면 개발자 스러운가!! ㅎㅎ(리팩토링과 검증 // 차민창님의 발표 // KSUG me2mobile me2photo) 2010-07-10 14:19:57

    me2photo

  • 여대 내부 탐방 중..!! 주말에는 외부인들도 출입가능?!(이화 여신대!!??? me2mobile me2photo) 2010-07-10 15:25:19

    me2photo

  • 스프링은 프레임워크일까요??!!(스프링은 프레임워크가 맞습니다! ㅎㅎㅎ me2mobile me2photo) 2010-07-10 15:36:08

    me2photo

  • 스트레스 많이 받는 착취형 쥐…(ㅡㅅ-) 얼마 안있음... 너의 것들이 빼앗길 날이 온다... 2년 반... me2mobile me2photo) 2010-07-10 16:42:44

    me2photo

  • 모르면 질문을 할 수 없다…(me2mobile 아는 만큼 보인다. 모르면 볼 수 없다. 물을 수 없다. 알려고 노력하라.) 2010-07-10 16:51:23
  • 옆에 앉아계신 여성분…. 연신 머리칼 끝을 쓰다듬고 꼬고… ㅎㅎ 그러고 계심…(me2mobile 호오.... 신기한 것들도 보여준다!!!) 2010-07-10 17:08:10
  • 발표하시는 분…. 똑똑하다!!!(me2mobile 생각의 차이가 있어!!! 똑똑하다는 것을 깨달을 수 있어!!) 2010-07-10 17:12:04
  • 이대 거리… ㅡㅅ-);; 저녁이 되니 드저분해지기 시작… 지네가 먹은 건 챵겨가서 쓰레기통에 버리는 것도 못하는 기초질서 능력 부족자들이 많은 거리…. 다시 오고 싶지 않아진다.(me2mobile 사람들이 더 많아지고 노점상들이 문을 열면서 거리는 쓰레기판으로 변해간다.... ㅡㅅ-);; 다시 오기 싫을정도로... 드저분한 이대 거리.... 홍대거리보다 더 하군....) 2010-07-10 18:07:09
  • 데브멘토 :: 안드로이드 어플 개발 전략 10가지 1부(웹갈피, 안드로이드 어플 개발 전략 10가지 , 안드로이드 사이드, 한동호씨, 이제 팀을 이뤄야할때...?) 2010-07-10 23:44:36

이 글은 허니몬님의 2010년 7월 10일의 미투데이 내용입니다.

Posted by 허니몬
TAG 10가지, 2년, ECC, JCO, ksug, me2mobile, me2photo, orz, tdd, ㅎㅎㅎ, ㅡㅅ-, 가는게, 가능한, 가슴에, 개발, 개발자, 개통시켜라, 거리, 거리는, 검증, 것들도, 것들이, 것을, , , , 글의, 깨달을, 나가는구나, 날에는, 날이, 내에서는, 내용들이, 너구리님의, 너의, 네스팟, 노력하라, 노점상들이, 다시, 다행히, , 드저분한, 듣고서, , 똑똑하다는, 리팩토링과, 만큼, 많아지고, 말입니다, , 맞습니다, 모르면, 무료로, 무선인터넷, 문을, 물을, 미아되기, 미투앱, 바로, , 발표, 변해간다, 보여준다, 보인다, , 불러오기, 불러오는, 빼앗길, 사람들이, 사이드, 새겨두기, 생각의, 서서, 설계와, 설명을, 설정에서, 설정할, 소프트웨어, , 스프링은, 시간대를, 시작하는게, 시작했어, 신기한, 신촌에, 싫을정도로, 쓰레기판으로, 아는, 아이폰, 안되면, 안드로이드, 안생겨요, 안있음, 알려고, 어떨까, 어플, 얼마, 없다, 에서, 여기가, 여신대, 열리는, 열면서, 오기, 오늘, 온다, 웹갈피, 이대, 이런, 이뤄야할때, 이어지기, 이제, 이화, 이화여대, 이화여신대, 일시정지, 읽은, 잃어버린, 있어, 있으면, 자바, 작성, 전략, 종료했다가, 주도, 직전, 차민창님의, 차이가, 찾아오다가, 테스트, 팀을, 패턴, 페스티벌, 편하다, 편하지, 프레임워크가, 하군, 하루, 하지마, 하지만, 학교, 한동호씨, 헤매었음, 호오, 홍대거리보다,
이전버튼 1 이전버튼