SlideShare a Scribd company logo
토비의 스프링

 2장 테스트


          (주) 에즈넷
              김준학
목차
•   2.1   다시 보기
•   2.2   개선
•   2.3   개발자를 위한 테스팅 프레임워크 JUnit
•   2.4   스프링 테스트 적용
•   2.5   학습 테스트로 배우는 스프링
2.1 UserDaoTest 다시 보기
-1장에서 main메소드로 작성한 테스트 코드의 특징

1.   자바에서 가장 손쉽게 실행 가능한 main() 메소드 이용한다.
2.   테스트할 대상인 UserDao의 오브젝트를 가져와 메소드 호출한다.
3.   테스트에 사용할 입력 값(User 오브젝트)을 직접 코드에서 만들어 넣어준다.
4.   테스트의 결과를 콘솔에 출력해 준다.
5.   각 단계의 작업이 에러 없이 끝나면 콘솔에 성공 메시지로 출력해준다.
2.1 UserDaoTest 다시 보기


-웹을 통한 DAO 테스트 방법의 문제점
-작은 단위의 테스트
-자동수행 테스트 코드
-지속적인 개선과 점진적인 개발을 위한 테스트
2.2 UserDaoTest 개선
수정 전 테스트 코드


수정 후 테스트 코드




Junit 테스트로 전환
1.   메소드가 public으로 선언 돼야 함
2.   메소드에 @Test라는 애노테이션을 붙여주는것




검증 코드 전환
2.2 UserDaoTest 개선
Junit을 적용한 UserDaoTest




Junit 테스트 실행
JUnit 프레임워크도 자바 코드로 만들어진 프로그램이므로 어디선가 한번은 JUnit 프레임워크를 시작시켜줘야 한다.
2.3 개발자를 위한 테스팅 프레임워크 JUnit
Junit 테스트 실행 방법
IDE : 사실상의 표준 자바 IDE인 이클립스는 오래전부터 JUnit테스트를 지원하는 기능을 제공하고있다. @Test가 들어
있는 테스트 클래스를 선택한 뒤에, 이클립스 run메뉴의 Run As 항목 중에서 JUnit Test를 선택하면 자동으로 실행된
다. JUnitCore처럼 main()메소드를 만들지 않아도 된다.
2.3 개발자를 위한 테스팅 프레임워크 JUnit

테스트 주도 개발(TDD, Test Driven Development)

만들고자 하는 기능의 내용을 담고 있으면서 코드를 검증도 해줄 수 있도
록 테스트 코드를 먼저 만들고, 테스트를 성공하게 해주는 코드를 작성하
는 방식의 개발 방법

 테스트보다 코드를 먼저 작성한다고 해서 테스트 우선 개발(TFD, Test
First Development)이라고도 함

 TDD 기본 원칙
"실패한 테스트를 성공시키기 위한 목적이 아닌 코드는 만들지 않는다“

테스트를 작성하고 이를 성공시키는 코드를 만드는 작업의 주기를 가능한
짧게 가져가도록 권장(오류가 발생했을때 쉽게 대응이 가능)
2.4 스프링 테스트 적용
DI를 테스트에 이용하는 방법의 선택

-스프링 컨테이너 없이 태스트할 수 있는 방법을 가장 우선적으로 고려
: 테스트 수행 속도가 가장 빠르고 테스트 자체가 간결하다

-스프링의 설정을 이용한 DI 방식의 태스트
:여러 오브젝트와 복잡한 의존관계를 갖고 있는 오브젝트를 테스트해야 할 경우
:테스트에서 애플리케이션 컨텍스트를 사용하는 경우에는 태스트 전용 설정파일을
따로 만들어 사용하는 편이 좋다.

-컨텍스트에서 DI 받은 오브젝트에 다시 테스트 코드로 수동 DI 해서 태스
트하는 방법
:예외적인 의존관계를 강제로 구성해서 태스트해야 할 경우
:테스트 메소드나 클래스에 @DirtiesContext 애노테이션을 붙여야 함
2.5 학습 테스트로 배우는 스프링
학습 테스트의 장점
•   다양한 조건에 따른 기능을 손쉽게 확인 해 볼수 있다.
•   학습 테스트 코드를 개발 중에 참고할 수 있다.
•   프레임워크나 제품을 업그레이드 할 때 호환성 검증을 도와준다.
•   테스트 작성에 대한 좋은 훈련이 된다.
•   새로운 기술을 공부하는 과정이 즐거워진다.

버그 테스트의 장점
• 테스트와 완성도를 높여준다.
• 버그의 내용을 명확하게 분석하게 해준다.
• 기술적인 문제를 해결하는 데 도움이 된다.

More Related Content

What's hot

테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션
SangIn Choung
 
엔지니어링관점에서 테스트 개선방안 질의 응답
엔지니어링관점에서 테스트 개선방안 질의 응답엔지니어링관점에서 테스트 개선방안 질의 응답
엔지니어링관점에서 테스트 개선방안 질의 응답
SangIn Choung
 
우리 제품의 검증 프로세스 소개 자료
우리 제품의 검증 프로세스 소개 자료 우리 제품의 검증 프로세스 소개 자료
우리 제품의 검증 프로세스 소개 자료
SangIn Choung
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
SangIn Choung
 
SW 테스트 프로세스& 메뉴얼_V 모델
SW 테스트 프로세스& 메뉴얼_V 모델SW 테스트 프로세스& 메뉴얼_V 모델
SW 테스트 프로세스& 메뉴얼_V 모델
KU HUISEONG
 
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
SangIn Choung
 
Io t에서의 소프트웨어단위테스트_접근사례
Io t에서의 소프트웨어단위테스트_접근사례Io t에서의 소프트웨어단위테스트_접근사례
Io t에서의 소프트웨어단위테스트_접근사례
SangIn Choung
 
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
SangIn Choung
 
Introduce Katalon tool
Introduce Katalon toolIntroduce Katalon tool
Introduce Katalon tool
재연 김
 
크로스(멀티)브라우저 테스트수행가이드
크로스(멀티)브라우저 테스트수행가이드크로스(멀티)브라우저 테스트수행가이드
크로스(멀티)브라우저 테스트수행가이드
SangIn Choung
 
UI 정적분석툴 소개와 활용사례
UI 정적분석툴 소개와 활용사례UI 정적분석툴 소개와 활용사례
UI 정적분석툴 소개와 활용사례
SangIn Choung
 
X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사효원 강
 
Coded ui가이드
Coded ui가이드Coded ui가이드
Coded ui가이드
SangIn Choung
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
SangIn Choung
 
파이썬 TDD 101
파이썬 TDD 101파이썬 TDD 101
파이썬 TDD 101
정주 김
 
테스트자동화 성공전략
테스트자동화 성공전략테스트자동화 성공전략
테스트자동화 성공전략
SangIn Choung
 
개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)
SangIn Choung
 
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
SangIn Choung
 
SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SangIn Choung
 

What's hot (20)

테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션
 
엔지니어링관점에서 테스트 개선방안 질의 응답
엔지니어링관점에서 테스트 개선방안 질의 응답엔지니어링관점에서 테스트 개선방안 질의 응답
엔지니어링관점에서 테스트 개선방안 질의 응답
 
우리 제품의 검증 프로세스 소개 자료
우리 제품의 검증 프로세스 소개 자료 우리 제품의 검증 프로세스 소개 자료
우리 제품의 검증 프로세스 소개 자료
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
 
SW 테스트 프로세스& 메뉴얼_V 모델
SW 테스트 프로세스& 메뉴얼_V 모델SW 테스트 프로세스& 메뉴얼_V 모델
SW 테스트 프로세스& 메뉴얼_V 모델
 
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
 
Io t에서의 소프트웨어단위테스트_접근사례
Io t에서의 소프트웨어단위테스트_접근사례Io t에서의 소프트웨어단위테스트_접근사례
Io t에서의 소프트웨어단위테스트_접근사례
 
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
 
Introduce Katalon tool
Introduce Katalon toolIntroduce Katalon tool
Introduce Katalon tool
 
크로스(멀티)브라우저 테스트수행가이드
크로스(멀티)브라우저 테스트수행가이드크로스(멀티)브라우저 테스트수행가이드
크로스(멀티)브라우저 테스트수행가이드
 
UI 정적분석툴 소개와 활용사례
UI 정적분석툴 소개와 활용사례UI 정적분석툴 소개와 활용사례
UI 정적분석툴 소개와 활용사례
 
X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사
 
Tdd
TddTdd
Tdd
 
Coded ui가이드
Coded ui가이드Coded ui가이드
Coded ui가이드
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
 
파이썬 TDD 101
파이썬 TDD 101파이썬 TDD 101
파이썬 TDD 101
 
테스트자동화 성공전략
테스트자동화 성공전략테스트자동화 성공전략
테스트자동화 성공전략
 
개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)
 
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
 
SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리
 

Viewers also liked

신입웹개발자교육
신입웹개발자교육신입웹개발자교육
신입웹개발자교육
은숙 이
 
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
DK Lee
 
스프링공부1
스프링공부1스프링공부1
스프링공부1NaKaNaRa
 
스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기
Sungchul Park
 
Go 페이징게시판만들기
Go 페이징게시판만들기Go 페이징게시판만들기
Go 페이징게시판만들기
라한사 아
 
구글앱엔진+스프링+스프링datajpa+메이븐
구글앱엔진+스프링+스프링datajpa+메이븐구글앱엔진+스프링+스프링datajpa+메이븐
구글앱엔진+스프링+스프링datajpa+메이븐
라한사 아
 
신림프로그래머 스터디 웹팩 발표자료
신림프로그래머 스터디 웹팩 발표자료신림프로그래머 스터디 웹팩 발표자료
신림프로그래머 스터디 웹팩 발표자료
라한사 아
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
DK Lee
 
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
spring data jpa 간단한 튜토리얼
spring data jpa 간단한 튜토리얼spring data jpa 간단한 튜토리얼
spring data jpa 간단한 튜토리얼
라한사 아
 
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
DK Lee
 
스프링 프레임워크로 블로그 개발하기
스프링 프레임워크로 블로그 개발하기 스프링 프레임워크로 블로그 개발하기
스프링 프레임워크로 블로그 개발하기
라한사 아
 
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
DK Lee
 
구글 검색엔진 최적화(Seo) 정리
구글 검색엔진 최적화(Seo) 정리구글 검색엔진 최적화(Seo) 정리
구글 검색엔진 최적화(Seo) 정리
라한사 아
 
SpringMVC 전체 흐름 알아보기
SpringMVC 전체 흐름 알아보기SpringMVC 전체 흐름 알아보기
SpringMVC 전체 흐름 알아보기
Myung Woon Oh
 

Viewers also liked (16)

신입웹개발자교육
신입웹개발자교육신입웹개발자교육
신입웹개발자교육
 
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
 
스프링공부1
스프링공부1스프링공부1
스프링공부1
 
스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기
 
Go 페이징게시판만들기
Go 페이징게시판만들기Go 페이징게시판만들기
Go 페이징게시판만들기
 
구글앱엔진+스프링+스프링datajpa+메이븐
구글앱엔진+스프링+스프링datajpa+메이븐구글앱엔진+스프링+스프링datajpa+메이븐
구글앱엔진+스프링+스프링datajpa+메이븐
 
신림프로그래머 스터디 웹팩 발표자료
신림프로그래머 스터디 웹팩 발표자료신림프로그래머 스터디 웹팩 발표자료
신림프로그래머 스터디 웹팩 발표자료
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
 
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
 
spring data jpa 간단한 튜토리얼
spring data jpa 간단한 튜토리얼spring data jpa 간단한 튜토리얼
spring data jpa 간단한 튜토리얼
 
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
 
스프링 프레임워크로 블로그 개발하기
스프링 프레임워크로 블로그 개발하기 스프링 프레임워크로 블로그 개발하기
스프링 프레임워크로 블로그 개발하기
 
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
 
구글 검색엔진 최적화(Seo) 정리
구글 검색엔진 최적화(Seo) 정리구글 검색엔진 최적화(Seo) 정리
구글 검색엔진 최적화(Seo) 정리
 
SpringMVC 전체 흐름 알아보기
SpringMVC 전체 흐름 알아보기SpringMVC 전체 흐름 알아보기
SpringMVC 전체 흐름 알아보기
 

Similar to 20130118 토비의 스프링 세미나

Tr#3 5) 임성현 책임
Tr#3 5) 임성현 책임Tr#3 5) 임성현 책임
Tr#3 5) 임성현 책임Lim SungHyun
 
TDD
TDDTDD
Tdd ver.2
Tdd ver.2Tdd ver.2
Tdd ver.2
Henry Lee
 
[SWMaestro 100+ 발표자료] 테스트하기
[SWMaestro 100+ 발표자료] 테스트하기[SWMaestro 100+ 발표자료] 테스트하기
[SWMaestro 100+ 발표자료] 테스트하기
Luavis Kang
 
TDD or TFD
TDD or TFDTDD or TFD
TDD or TFD
young-il Park
 
iOS개발에서 TDD 해보기 - XCTest, Unit Test
iOS개발에서 TDD 해보기 - XCTest, Unit TestiOS개발에서 TDD 해보기 - XCTest, Unit Test
iOS개발에서 TDD 해보기 - XCTest, Unit Test
DoyKim
 
효율적인 개발 프로세스를 위한 지속적 통합
효율적인 개발 프로세스를 위한 지속적 통합효율적인 개발 프로세스를 위한 지속적 통합
효율적인 개발 프로세스를 위한 지속적 통합
홍렬 임
 
C++과 TDD
C++과 TDDC++과 TDD
C++과 TDD
선협 이
 
Tdd with JUnit 1
Tdd with JUnit 1Tdd with JUnit 1
Tdd with JUnit 1
Junyoung Lee
 
TDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDDTDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDDSuwon Chae
 
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
tobeware
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)
DONGSU KIM
 
xUnitTestPattern/chapter17
xUnitTestPattern/chapter17xUnitTestPattern/chapter17
xUnitTestPattern/chapter17Yoon Hee Hwang
 
Android unit testing
Android unit testingAndroid unit testing
Android unit testing
Hyeoungkyu Chang
 
테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)
KH Park (박경훈)
 
아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 a아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 a
Choonghyun Yang
 
TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기
Wonchang Song
 
02.개발환경 실습교재
02.개발환경 실습교재02.개발환경 실습교재
02.개발환경 실습교재
Hankyo
 
Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기
hanbeom Park
 

Similar to 20130118 토비의 스프링 세미나 (20)

Tr#3 5) 임성현 책임
Tr#3 5) 임성현 책임Tr#3 5) 임성현 책임
Tr#3 5) 임성현 책임
 
TDD
TDDTDD
TDD
 
Tdd ver.2
Tdd ver.2Tdd ver.2
Tdd ver.2
 
Cygnus unit test
Cygnus unit testCygnus unit test
Cygnus unit test
 
[SWMaestro 100+ 발표자료] 테스트하기
[SWMaestro 100+ 발표자료] 테스트하기[SWMaestro 100+ 발표자료] 테스트하기
[SWMaestro 100+ 발표자료] 테스트하기
 
TDD or TFD
TDD or TFDTDD or TFD
TDD or TFD
 
iOS개발에서 TDD 해보기 - XCTest, Unit Test
iOS개발에서 TDD 해보기 - XCTest, Unit TestiOS개발에서 TDD 해보기 - XCTest, Unit Test
iOS개발에서 TDD 해보기 - XCTest, Unit Test
 
효율적인 개발 프로세스를 위한 지속적 통합
효율적인 개발 프로세스를 위한 지속적 통합효율적인 개발 프로세스를 위한 지속적 통합
효율적인 개발 프로세스를 위한 지속적 통합
 
C++과 TDD
C++과 TDDC++과 TDD
C++과 TDD
 
Tdd with JUnit 1
Tdd with JUnit 1Tdd with JUnit 1
Tdd with JUnit 1
 
TDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDDTDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDD
 
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)
 
xUnitTestPattern/chapter17
xUnitTestPattern/chapter17xUnitTestPattern/chapter17
xUnitTestPattern/chapter17
 
Android unit testing
Android unit testingAndroid unit testing
Android unit testing
 
테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)
 
아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 a아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 a
 
TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기
 
02.개발환경 실습교재
02.개발환경 실습교재02.개발환경 실습교재
02.개발환경 실습교재
 
Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기
 

20130118 토비의 스프링 세미나

  • 1. 토비의 스프링 2장 테스트 (주) 에즈넷 김준학
  • 2. 목차 • 2.1 다시 보기 • 2.2 개선 • 2.3 개발자를 위한 테스팅 프레임워크 JUnit • 2.4 스프링 테스트 적용 • 2.5 학습 테스트로 배우는 스프링
  • 3. 2.1 UserDaoTest 다시 보기 -1장에서 main메소드로 작성한 테스트 코드의 특징 1. 자바에서 가장 손쉽게 실행 가능한 main() 메소드 이용한다. 2. 테스트할 대상인 UserDao의 오브젝트를 가져와 메소드 호출한다. 3. 테스트에 사용할 입력 값(User 오브젝트)을 직접 코드에서 만들어 넣어준다. 4. 테스트의 결과를 콘솔에 출력해 준다. 5. 각 단계의 작업이 에러 없이 끝나면 콘솔에 성공 메시지로 출력해준다.
  • 4. 2.1 UserDaoTest 다시 보기 -웹을 통한 DAO 테스트 방법의 문제점 -작은 단위의 테스트 -자동수행 테스트 코드 -지속적인 개선과 점진적인 개발을 위한 테스트
  • 5. 2.2 UserDaoTest 개선 수정 전 테스트 코드 수정 후 테스트 코드 Junit 테스트로 전환 1. 메소드가 public으로 선언 돼야 함 2. 메소드에 @Test라는 애노테이션을 붙여주는것 검증 코드 전환
  • 6. 2.2 UserDaoTest 개선 Junit을 적용한 UserDaoTest Junit 테스트 실행 JUnit 프레임워크도 자바 코드로 만들어진 프로그램이므로 어디선가 한번은 JUnit 프레임워크를 시작시켜줘야 한다.
  • 7. 2.3 개발자를 위한 테스팅 프레임워크 JUnit Junit 테스트 실행 방법 IDE : 사실상의 표준 자바 IDE인 이클립스는 오래전부터 JUnit테스트를 지원하는 기능을 제공하고있다. @Test가 들어 있는 테스트 클래스를 선택한 뒤에, 이클립스 run메뉴의 Run As 항목 중에서 JUnit Test를 선택하면 자동으로 실행된 다. JUnitCore처럼 main()메소드를 만들지 않아도 된다.
  • 8. 2.3 개발자를 위한 테스팅 프레임워크 JUnit 테스트 주도 개발(TDD, Test Driven Development) 만들고자 하는 기능의 내용을 담고 있으면서 코드를 검증도 해줄 수 있도 록 테스트 코드를 먼저 만들고, 테스트를 성공하게 해주는 코드를 작성하 는 방식의 개발 방법 테스트보다 코드를 먼저 작성한다고 해서 테스트 우선 개발(TFD, Test First Development)이라고도 함 TDD 기본 원칙 "실패한 테스트를 성공시키기 위한 목적이 아닌 코드는 만들지 않는다“ 테스트를 작성하고 이를 성공시키는 코드를 만드는 작업의 주기를 가능한 짧게 가져가도록 권장(오류가 발생했을때 쉽게 대응이 가능)
  • 9. 2.4 스프링 테스트 적용 DI를 테스트에 이용하는 방법의 선택 -스프링 컨테이너 없이 태스트할 수 있는 방법을 가장 우선적으로 고려 : 테스트 수행 속도가 가장 빠르고 테스트 자체가 간결하다 -스프링의 설정을 이용한 DI 방식의 태스트 :여러 오브젝트와 복잡한 의존관계를 갖고 있는 오브젝트를 테스트해야 할 경우 :테스트에서 애플리케이션 컨텍스트를 사용하는 경우에는 태스트 전용 설정파일을 따로 만들어 사용하는 편이 좋다. -컨텍스트에서 DI 받은 오브젝트에 다시 테스트 코드로 수동 DI 해서 태스 트하는 방법 :예외적인 의존관계를 강제로 구성해서 태스트해야 할 경우 :테스트 메소드나 클래스에 @DirtiesContext 애노테이션을 붙여야 함
  • 10. 2.5 학습 테스트로 배우는 스프링 학습 테스트의 장점 • 다양한 조건에 따른 기능을 손쉽게 확인 해 볼수 있다. • 학습 테스트 코드를 개발 중에 참고할 수 있다. • 프레임워크나 제품을 업그레이드 할 때 호환성 검증을 도와준다. • 테스트 작성에 대한 좋은 훈련이 된다. • 새로운 기술을 공부하는 과정이 즐거워진다. 버그 테스트의 장점 • 테스트와 완성도를 높여준다. • 버그의 내용을 명확하게 분석하게 해준다. • 기술적인 문제를 해결하는 데 도움이 된다.