Page tree
Skip to end of metadata
Go to start of metadata

TDD 에 의한 문제 해결 과정 공유

Goal

라이브코딩을 통해 코딩 자신감 기르기 .....

패어프로그래밍 실습을 통해 커뮤니케이선 에 대해 고민해보기.

토이프로그램이 아닌 의미있는 문제...

사고의 복사

TDD 이슈

  • 단위 테스트의 필요성은 알겠다. Test Last Development로 개발해도 되지 않나? 꼭 Test First Development 방식을 취해야 하나?
  • 테스트 코드를 작성하면 비용이 더 많이 드는 것은 아닌가? 개발 일정이 제한된 상태에서 TDD로 접근하는 것이 바람직한가?
  • 장난감 코드 외에는 적용이 힘든거 아닌가? 웹 애플리케이션과 같이 복잡도가 높은 프로젝트는 힘든거 아닌가? 
  • TDD는 설계가 필요한가? 바로 개발 시작하면 되는 것인가?
  • 정말 현실에서는 가능하기는 한 프랙티스인가? 너무 이상적인거 아닌가?
  • TDD를 하기 위한 개발 문화가 있다면, 사전에 갖추어져야할 부분이 있다면 무엇일까요? 무작정 TDD로 개발 시작하면 되나요?

미팅(04-23 12시~1시)

TDD 를 피보나치수열구현의 예로 맛을 보았음.

짧은 시간으로 인증 샷 찍을 시간적 여유마저 잊어버린 ...ㅜㅜ -경복사거리 카페베네에서 

 

선배님의 불꽃같은 생활코딩 동영상 촬영 중 시작부분만 올려봅니다.ㅋㅋ

동영상은 저만 보는걸로..

 

회고 

  • 피보나치가 머지???
  • 피보나치 수열에 대해서 인터넷을 찾아보고 문제를 정의 해보았음.
  • 클라언트가 피보나치수열 라이브러리를 가져다 어떻게 사용 할 것인지 상상의 나래를 펼쳐봄.
  • 상상의 나래를 토대로 첫번째 테스트를 작성함 
  • 일반적인 케이스보다 예외상황(경계)을 첫번째 테스트로 작성.
  • 빨리 실패하고 빨리 성공하기
  • 감각적으로(???) 의도를 드러내고 까리한 부분 고쳐보는 리펙토링
  • 개발주기를 짧게 가져가며 안정감을 잃지 않도록 노력함.
  • 마음에 평온과 함께 자신감이 붙도록 노력함.

 

피보나치에 대한 사용자스토리 

  1. fibo(음수) ==0
  2. fibo(0) == 0 
  3. fibo(1) == 1
  4. fibo(2) == 1
  5. fibo(3) == 2
  6. fibo(4) == 3
  7. fibo(5) == 5
  8. fibo(6) == 8
  9. fibo(n) == fibo(n-2)+fibo(n-1)

 

양완수

  • 좋았던점
    • 첫만남이여서 두근두근.
    • 점심에 코딩해서 좋았음. ㅋ
  • 싫었던점
    • 점심시간 1시간 밖에 여유가 없어 조급한 마음이 컷음
    • 페어로 하지 못하고 강의식이 된것 같아 아쉬움...

김성희

  • 좋았던점
    • 짧은 시간이지만 점심도 먹고 스터디 준비한 것.
    • 회사근처까지 놋북들고 찾아와주시고 감사했습니다. 꾸벅
  • 싫었던점
    • 싫다기보단 시간적인 여유가 많지 않아서 선배님 혼자 코딩하다 가신점.

개발주기

Iterator 0 : 요구사항 정의하기 및 구체화하기 

Iterator 1 :실패하기 (꿈꾸기, 경계테스트하기)

Iterator 2 :성공하기 (빚내서 성공하기 , 무지막지한 방법을 사용해서 어떻게든지 성공하기, 영혼없는 코딩하기)

Iterator 3 :의도를 드러내고 표현하기, 부채 값기

페어 프로그래밍

역할

드라이버

네비게이터

사용자 요구사항

 

  • 짝은 반드시 짝 리더 + 짝 팔로워로 구성한다.
  • 스터디 짝은 반드시 남자 + 여자로 구성한다. 
  • 스터디 짝은 반드시 기존 회원 + 신규 회원이어야 한다. 
  • 단, 기존 회원이 더 많기 때문에 기존 회원 + 기존 회원 짝도 존재한다.
  • 단, 남자 회원이 더 많기 때문에 남자 + 남자 짝도 존재한다.
  • 여자 여자는 존재하지않는다.

 

제안

  • TDD StringCalculator.pdf : NEXT 소프트웨어 공학 수업 시간에 학생들이 TDD로 실습한 내용.
  • 위 요구사항을 TDD로 구현하는 과정을 진행한 후에 첨부한 문서의 요구사항을 TDD로 구현해 보는 과정을 거치면 어떨까요? 이 때도 짝으로 진행하면 좋을 듯 하네요.
  • 다음 날 노동절이고 하니 좀 늦게까지 진행해 봐도 좋을 듯 합니다.
  • 테스트 프레임워크 직접 만들기 : JUnit과 같은 테스트 프레임워크를 직접 만들어 가는 과정. JUnit 프레임워크를 만들면서 TDD와 다양한 디자인 패턴을 학습해 볼 수 있다.

참고자료

유용한 툴 

junit

hamcrest

moreunit

mockito

dbunit

sprint-test

스터디노트

강대권

  • No labels