Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Tdd live spring camp 2013

7,791 views

Published on

스프링캠프 2013의 TDD 라이브 발표 자료
발표 영상은 http://www.youtube.com/watch?v=AE7K-16dEjo 에서 확인하실 수 있습니다.

Published in: Technology

Tdd live spring camp 2013

  1. 1. TDD Live Spring Camp 2013 with Scala 최범균 (madvirus@madvirus.net, 트위터: @madvirus)
  2. 2. 목표 ● TDD 느껴보기 ○ 조금 더 현실에서 볼 만한 예제 ○ 코딩 하는 과정을 지켜보면서 ‘아~’ 하는 느낌 얻기 ● 사전 필요 지식 ○ JUnit, Mock에 대한 기본 지식 필요 ● TDD가 뭔지는 설명하지 않음
  3. 3. TDD ● Test Driven Development 테스트 주도 개발 ○ 제품 코드 만들기 전에 테스트 먼저 작성하기 ● 기본 흐름 (완료할 때 까지 반복) ● 테스트 작성 순서 ○ 쉬운 것, 예외적인 것 → 어려운 것, 정상적인 것 실패 테스트 작성 테스트 성공시키기 코드 청소하기
  4. 4. 구현해 볼 것 ● 웹 로그인 기능 Login Controller Login Command AuthService Authentication UserRepository User
  5. 5. 라이브 1 - AuthService ● 인증 서비스 Login Controller Login Command AuthService Authentication UserRepository User
  6. 6. 라이브 1 - AuthService ● TDD 순서 ○ 테스트 클래스 만들기 ○ 객체 생성하기 (쉬운) ○ ID 값이 비정상인 경우 (쉬운, 정상에서 벗어난) ○ PW 값이 비정상인 경우 (쉬운, 정상에서 벗어난) ○ User가 존재하지 않는 경우 (정상에서 벗어난) ○ ID에 해당하는 User가 존재하는데, PW가 일치하지 않는 경우 (정상에서 벗어난) ○ ID와 PW가 일치하는 경우 (정상) ■ 인증 정보를 리턴
  7. 7. 라이브2 - LoginController ● 웹 요청 처리 Login Controller Login Command AuthService Authentication UserRepository User
  8. 8. 라이브 2 - LoginContrller ● LoginController ○ 비슷한 순서로 진행 ■ 폼 요청 처리 (쉬움) ■ 폼 전송 시, LoginCommand 값 이상, 폼 뷰 리턴 (비정상) ■ 폼 전송 시, ID/PW 불일치, 폼 뷰 리턴 (비정상) ■ 폼 전송 시, ID/PW 일치, 성공 뷰 리턴 (정상) ● 쿠키 생성 확인 * 시간 관계상, 거의 만들어진 코드로 살펴 봄
  9. 9. 라이브 3 - Spring MVC 테스트 ● 웹 관점에서 컨트롤러 테스트 ○ 컨트롤러 설정이 올바른지 확인 ○ 응답 결과(JSON/XML 등)과 올바른지 확인 ● 브라우저/서버 NO! 테스트 코드 YES! ○ spring-mvc-test 사용 ● 여기선 맛 보기만 ○ 더 자세한 내용은 이어지는 세션에서!
  10. 10. 우릴 기다리는 더 많은 이야기... ● 스프링 통합 테스트 ○ @RunWith(SpringJUnit4ClassRunner.class) ● 스프링 MVC 테스트 ○ MockMVC: 바로 다음 세션! ● DB 통합 테스트 ○ DB Unit ● 테스트 계층 구조 ○ @RunWith(Enclosed.class)
  11. 11. 정리 ● TDD 장점 ○ 짧은 호흡 ■ 흐름(컨텍스트)을 유지, 집중력 향상 ■ 문제 찾기 용이 ● 테스트 직전에 작성한 코드에서 문제 발생 가능성 높음 ○ 점진적 코드 완성 ■ 필요한 코드만 쓰도록 유도 ○ 회귀(regression) 테스트 기반 ■ 코드 수정에 대한 자신감, 과감한 리팩토링 가능 ● Mock ○ 외부 시스템 없이 핵심 코드 작성 가능 ○ 필요한 경우 임시 구현 사용
  12. 12. 참고자료 ● TDD 관련 서적 ○ 테스트 주도 개발 (켄트 벡 저) ○ 객체 지향 설계와 실천 (스티브 프리먼 저) ○ Test Driven (Lasse Koskela) ● 본 강의 자료 ○ http://javacan.tistory.com/entry/TDD-Live-in-SpringCamp-2013 ■ 본 발표 자료와 강의 영상 포함 ● TDD 관련 비디오 ○ 백명석님 TDD 강의 자료 (4회) ■ http://youtu.be/wmHV6L0e1sU (TDD 1) ■ http://youtu.be/c-Pv2ia05Ek (TDD 2) ■ http://youtu.be/fFwDMzML7hI (TDD 3) ■ http://youtu.be/X4JtF2BfA0U (TDD 4)
  13. 13. 광고 ● 코드 리뷰 함께 해요! ○ 코드에 대한 리뷰를 받아보고 싶은데 ■ 마땅한 선배 개발자가 없나요? ■ 주변이 다들 바쁜가요? ○ 자리를 만들어서 같이 리뷰해 보아요~ ■ 준비물은 코드를 볼 수 있으면 됨 (노트북, IDE) ○ 연락주세요! ■ 이메일: madvirus@madvirus.net ■ 트위터: @madvirus ○ 그냥 개발 얘기도 합니다.
  14. 14. Q&A

×