14

Click here to load reader

Tdd live spring camp 2013

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Tdd live spring camp 2013

TDD LiveSpring Camp 2013 with Scala

최범균 ([email protected], 트위터: @madvirus)

Page 2: Tdd live spring camp 2013

목표

● TDD 느껴보기○ 조금 더 현실에서 볼 만한 예제○ 코딩 하는 과정을 지켜보면서 ‘아~’ 하는 느낌 얻기

● 사전 필요 지식○ JUnit, Mock에 대한 기본 지식 필요

● TDD가 뭔지는 설명하지 않음

Page 3: Tdd live spring camp 2013

TDD

● Test Driven Development 테스트 주도 개발○ 제품 코드 만들기 전에 테스트 먼저 작성하기

● 기본 흐름 (완료할 때 까지 반복)

● 테스트 작성 순서○ 쉬운 것, 예외적인 것 → 어려운 것, 정상적인 것

실패 테스트작성

테스트성공시키기

코드청소하기

Page 4: Tdd live spring camp 2013

구현해 볼 것

● 웹 로그인 기능

LoginController

LoginCommand

AuthService

Authentication

UserRepository

User

Page 5: Tdd live spring camp 2013

라이브 1 - AuthService

● 인증 서비스

LoginController

LoginCommand

AuthService

Authentication

UserRepository

User

Page 6: Tdd live spring camp 2013

라이브 1 - AuthService

● TDD 순서○ 테스트 클래스 만들기○ 객체 생성하기 (쉬운)○ ID 값이 비정상인 경우 (쉬운, 정상에서 벗어난)○ PW 값이 비정상인 경우 (쉬운, 정상에서 벗어난)○ User가 존재하지 않는 경우 (정상에서 벗어난)○ ID에 해당하는 User가 존재하는데, PW가 일치하지 않는 경우 (정상에서 벗어난)

○ ID와 PW가 일치하는 경우 (정상)■ 인증 정보를 리턴

Page 7: Tdd live spring camp 2013

라이브2 - LoginController

● 웹 요청 처리

LoginController

LoginCommand

AuthService

Authentication

UserRepository

User

Page 8: Tdd live spring camp 2013

라이브 2 - LoginContrller

● LoginController○ 비슷한 순서로 진행

■ 폼 요청 처리 (쉬움)■ 폼 전송 시, LoginCommand 값 이상, 폼 뷰 리턴

(비정상)■ 폼 전송 시, ID/PW 불일치, 폼 뷰 리턴 (비정상)■ 폼 전송 시, ID/PW 일치, 성공 뷰 리턴 (정상)

● 쿠키 생성 확인

* 시간 관계상, 거의 만들어진 코드로 살펴 봄

Page 9: Tdd live spring camp 2013

라이브 3 - Spring MVC 테스트

● 웹 관점에서 컨트롤러 테스트○ 컨트롤러 설정이 올바른지 확인○ 응답 결과(JSON/XML 등)과 올바른지 확인

● 브라우저/서버 NO! 테스트 코드 YES!○ spring-mvc-test 사용

● 여기선 맛 보기만○ 더 자세한 내용은 이어지는 세션에서!

Page 10: Tdd live spring camp 2013

우릴 기다리는 더 많은 이야기...

● 스프링 통합 테스트○ @RunWith(SpringJUnit4ClassRunner.class)

● 스프링 MVC 테스트○ MockMVC: 바로 다음 세션!

● DB 통합 테스트○ DB Unit

● 테스트 계층 구조○ @RunWith(Enclosed.class)

Page 11: Tdd live spring camp 2013

정리

● TDD 장점○ 짧은 호흡

■ 흐름(컨텍스트)을 유지, 집중력 향상■ 문제 찾기 용이

● 테스트 직전에 작성한 코드에서 문제 발생 가능성 높음○ 점진적 코드 완성

■ 필요한 코드만 쓰도록 유도○ 회귀(regression) 테스트 기반

■ 코드 수정에 대한 자신감, 과감한 리팩토링 가능● Mock

○ 외부 시스템 없이 핵심 코드 작성 가능○ 필요한 경우 임시 구현 사용

Page 12: Tdd live spring camp 2013

참고자료

● 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)

Page 13: Tdd live spring camp 2013

광고

● 코드 리뷰 함께 해요!○ 코드에 대한 리뷰를 받아보고 싶은데

■ 마땅한 선배 개발자가 없나요?■ 주변이 다들 바쁜가요?

○ 자리를 만들어서 같이 리뷰해 보아요~■ 준비물은 코드를 볼 수 있으면 됨 (노트북, IDE)

○ 연락주세요!■ 이메일: [email protected]■ 트위터: @madvirus

○ 그냥 개발 얘기도 합니다.

Page 14: Tdd live spring camp 2013

Q&A