Tdd live spring camp 2013
Click here to load reader
-
Upload
beom-kyun-choi -
Category
Technology
-
view
4.419 -
download
6
description
Transcript of Tdd live spring camp 2013
TDD LiveSpring Camp 2013 with Scala
최범균 ([email protected], 트위터: @madvirus)
목표
● TDD 느껴보기○ 조금 더 현실에서 볼 만한 예제○ 코딩 하는 과정을 지켜보면서 ‘아~’ 하는 느낌 얻기
● 사전 필요 지식○ JUnit, Mock에 대한 기본 지식 필요
● TDD가 뭔지는 설명하지 않음
TDD
● Test Driven Development 테스트 주도 개발○ 제품 코드 만들기 전에 테스트 먼저 작성하기
● 기본 흐름 (완료할 때 까지 반복)
● 테스트 작성 순서○ 쉬운 것, 예외적인 것 → 어려운 것, 정상적인 것
실패 테스트작성
테스트성공시키기
코드청소하기
구현해 볼 것
● 웹 로그인 기능
LoginController
LoginCommand
AuthService
Authentication
UserRepository
User
라이브 1 - AuthService
● 인증 서비스
LoginController
LoginCommand
AuthService
Authentication
UserRepository
User
라이브 1 - AuthService
● TDD 순서○ 테스트 클래스 만들기○ 객체 생성하기 (쉬운)○ ID 값이 비정상인 경우 (쉬운, 정상에서 벗어난)○ PW 값이 비정상인 경우 (쉬운, 정상에서 벗어난)○ User가 존재하지 않는 경우 (정상에서 벗어난)○ ID에 해당하는 User가 존재하는데, PW가 일치하지 않는 경우 (정상에서 벗어난)
○ ID와 PW가 일치하는 경우 (정상)■ 인증 정보를 리턴
라이브2 - LoginController
● 웹 요청 처리
LoginController
LoginCommand
AuthService
Authentication
UserRepository
User
라이브 2 - LoginContrller
● LoginController○ 비슷한 순서로 진행
■ 폼 요청 처리 (쉬움)■ 폼 전송 시, LoginCommand 값 이상, 폼 뷰 리턴
(비정상)■ 폼 전송 시, ID/PW 불일치, 폼 뷰 리턴 (비정상)■ 폼 전송 시, ID/PW 일치, 성공 뷰 리턴 (정상)
● 쿠키 생성 확인
* 시간 관계상, 거의 만들어진 코드로 살펴 봄
라이브 3 - Spring MVC 테스트
● 웹 관점에서 컨트롤러 테스트○ 컨트롤러 설정이 올바른지 확인○ 응답 결과(JSON/XML 등)과 올바른지 확인
● 브라우저/서버 NO! 테스트 코드 YES!○ spring-mvc-test 사용
● 여기선 맛 보기만○ 더 자세한 내용은 이어지는 세션에서!
우릴 기다리는 더 많은 이야기...
● 스프링 통합 테스트○ @RunWith(SpringJUnit4ClassRunner.class)
● 스프링 MVC 테스트○ MockMVC: 바로 다음 세션!
● DB 통합 테스트○ DB Unit
● 테스트 계층 구조○ @RunWith(Enclosed.class)
정리
● TDD 장점○ 짧은 호흡
■ 흐름(컨텍스트)을 유지, 집중력 향상■ 문제 찾기 용이
● 테스트 직전에 작성한 코드에서 문제 발생 가능성 높음○ 점진적 코드 완성
■ 필요한 코드만 쓰도록 유도○ 회귀(regression) 테스트 기반
■ 코드 수정에 대한 자신감, 과감한 리팩토링 가능● Mock
○ 외부 시스템 없이 핵심 코드 작성 가능○ 필요한 경우 임시 구현 사용
참고자료
● 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)
광고
● 코드 리뷰 함께 해요!○ 코드에 대한 리뷰를 받아보고 싶은데
■ 마땅한 선배 개발자가 없나요?■ 주변이 다들 바쁜가요?
○ 자리를 만들어서 같이 리뷰해 보아요~■ 준비물은 코드를 볼 수 있으면 됨 (노트북, IDE)
○ 연락주세요!■ 이메일: [email protected]■ 트위터: @madvirus
○ 그냥 개발 얘기도 합니다.
Q&A