SlideShare une entreprise Scribd logo
1  sur  17
토비의 스프링 3.1
Chapter 2
php version
Chapter 2
테스트
Test 코드
문제점 :
조회 성공이 테스트가 끝났다는 것을 의미 하지 않음
Test 코드 수정 1
문제점 :
테스트 결과를 일일히 사람이 봐야 함
테스트 하기가 힘듬
1) 일정한 패턴을 가진 테스트를 만들 수 있어야 함
2) 많은 테스트를 간단히 실행시킬 수 있어야 함
3) 테스트 결과를 종합해서 볼 수 있어야 함
4) 테스트가 실패한 곳을 빠르게 찾을 수 있는 기능이 있어야 함
 Phpunit 사용
Test 코드 작성 조건
문제점 :
Test전에 디비의 user 데이터를 지워줘야함
(이전에 실행한 테스트 때문에 DB에 등록된 중복 데이터가 있을 수 있음)
 UserDao Class에 deleteAll, getCount() 함수 추가
테스트 메소드는 한번에 한가지 검증 목적에만 충실한 것이 좋다.
 getCount 함수를 위한 새로운 테스트를 만들어 보자
addAndGet() 보완
(id를 조건으로 해서 사용자를 검색하는 기능을 가진 get() 테스트 보완)
Php singleton 사용시….
한번 테스트를 하면 객체가
메모리에 올라가 있음
Php singleton 사용시….
한번 테스트를 하면 객체가
메모리에 올라가 있음
②
①
① 번 실행 후 UserDao 인스턴스가 이미 메모리에 적재된 상태로 ② 번을 실행함
 Reset 필요
참고 문헌 :
https://sebastian-bergmann.de/archives/882-Testing-Code-That-Uses-Singletons.html
Php singleton 사용시….
코드 중복 제거 ….
코드 중복 제거 ….
End

Contenu connexe

Tendances

Check style 기초가이드
Check style 기초가이드Check style 기초가이드
Check style 기초가이드rupert kim
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven DevelopmentChangHyeon Bae
 
리버싱 실습 보고서
리버싱 실습 보고서리버싱 실습 보고서
리버싱 실습 보고서Dong-Jin Park
 
xUnitTestPattern/chapter12
xUnitTestPattern/chapter12xUnitTestPattern/chapter12
xUnitTestPattern/chapter12Hyosung Jeon
 
Tdd live spring camp 2013
Tdd live spring camp 2013Tdd live spring camp 2013
Tdd live spring camp 2013beom kyun choi
 
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 SangIn Choung
 
으리리버싱시즌3
으리리버싱시즌3으리리버싱시즌3
으리리버싱시즌3형석 김
 
구글테스트
구글테스트구글테스트
구글테스트진화 손
 
Python Unittest
Python UnittestPython Unittest
Python Unittest명규 최
 
시작하자 단위테스트
시작하자 단위테스트시작하자 단위테스트
시작하자 단위테스트YongEun Choi
 
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기Heo Seungwook
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션SangIn Choung
 
Backend Master | 3.2.1 Test - JUnit
Backend Master | 3.2.1 Test - JUnitBackend Master | 3.2.1 Test - JUnit
Backend Master | 3.2.1 Test - JUnitKyunghun Jeon
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)SangIn Choung
 
Xunittestpatternchapter11
Xunittestpatternchapter11Xunittestpatternchapter11
Xunittestpatternchapter11duaa83
 
Effective Unit Testing
Effective Unit TestingEffective Unit Testing
Effective Unit TestingYeon Soo Kim
 
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드SangIn Choung
 
자바 프로그래밍 Agile(2장 자바의 기초)
자바 프로그래밍 Agile(2장 자바의 기초)자바 프로그래밍 Agile(2장 자바의 기초)
자바 프로그래밍 Agile(2장 자바의 기초)brain816
 

Tendances (20)

Check style 기초가이드
Check style 기초가이드Check style 기초가이드
Check style 기초가이드
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
리버싱 실습 보고서
리버싱 실습 보고서리버싱 실습 보고서
리버싱 실습 보고서
 
xUnitTestPattern/chapter12
xUnitTestPattern/chapter12xUnitTestPattern/chapter12
xUnitTestPattern/chapter12
 
Tdd live spring camp 2013
Tdd live spring camp 2013Tdd live spring camp 2013
Tdd live spring camp 2013
 
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
 
으리리버싱시즌3
으리리버싱시즌3으리리버싱시즌3
으리리버싱시즌3
 
TEST?
TEST?TEST?
TEST?
 
구글테스트
구글테스트구글테스트
구글테스트
 
Python Unittest
Python UnittestPython Unittest
Python Unittest
 
Unit Test With J Unit
Unit Test With J UnitUnit Test With J Unit
Unit Test With J Unit
 
시작하자 단위테스트
시작하자 단위테스트시작하자 단위테스트
시작하자 단위테스트
 
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션
 
Backend Master | 3.2.1 Test - JUnit
Backend Master | 3.2.1 Test - JUnitBackend Master | 3.2.1 Test - JUnit
Backend Master | 3.2.1 Test - JUnit
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
 
Xunittestpatternchapter11
Xunittestpatternchapter11Xunittestpatternchapter11
Xunittestpatternchapter11
 
Effective Unit Testing
Effective Unit TestingEffective Unit Testing
Effective Unit Testing
 
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
 
자바 프로그래밍 Agile(2장 자바의 기초)
자바 프로그래밍 Agile(2장 자바의 기초)자바 프로그래밍 Agile(2장 자바의 기초)
자바 프로그래밍 Agile(2장 자바의 기초)
 

En vedette

Clean code(02)
Clean code(02)Clean code(02)
Clean code(02)규열 김
 
Clean code(01)
Clean code(01)Clean code(01)
Clean code(01)규열 김
 
Clean code chapter9
Clean code chapter9Clean code chapter9
Clean code chapter9ukjinkwoun
 
Clean code(03)
Clean code(03)Clean code(03)
Clean code(03)규열 김
 
Clean code(04)
Clean code(04)Clean code(04)
Clean code(04)규열 김
 
Clean code chapter11 - systems
Clean code   chapter11 - systemsClean code   chapter11 - systems
Clean code chapter11 - systemsitomcc
 
Clean code(05)
Clean code(05)Clean code(05)
Clean code(05)규열 김
 
Clean code chapter1
Clean code chapter1Clean code chapter1
Clean code chapter1ukjinkwoun
 
제 5회 전국 대학생 프로그래밍 동아리 연합 여름 대회 해설 슬라이드
제 5회 전국 대학생 프로그래밍 동아리 연합 여름 대회 해설 슬라이드제 5회 전국 대학생 프로그래밍 동아리 연합 여름 대회 해설 슬라이드
제 5회 전국 대학생 프로그래밍 동아리 연합 여름 대회 해설 슬라이드Sun-young Kim
 
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장ukjinkwoun
 
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)Sang Don Kim
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)Jay Park
 

En vedette (17)

Cdr with php
Cdr with phpCdr with php
Cdr with php
 
Clean code(02)
Clean code(02)Clean code(02)
Clean code(02)
 
Clean code(01)
Clean code(01)Clean code(01)
Clean code(01)
 
Clean code chapter9
Clean code chapter9Clean code chapter9
Clean code chapter9
 
Clean code(03)
Clean code(03)Clean code(03)
Clean code(03)
 
Clean code(04)
Clean code(04)Clean code(04)
Clean code(04)
 
코드 Ch20
코드 Ch20코드 Ch20
코드 Ch20
 
Clean code chapter11 - systems
Clean code   chapter11 - systemsClean code   chapter11 - systems
Clean code chapter11 - systems
 
Clean code(05)
Clean code(05)Clean code(05)
Clean code(05)
 
Clean code chapter1
Clean code chapter1Clean code chapter1
Clean code chapter1
 
제 5회 전국 대학생 프로그래밍 동아리 연합 여름 대회 해설 슬라이드
제 5회 전국 대학생 프로그래밍 동아리 연합 여름 대회 해설 슬라이드제 5회 전국 대학생 프로그래밍 동아리 연합 여름 대회 해설 슬라이드
제 5회 전국 대학생 프로그래밍 동아리 연합 여름 대회 해설 슬라이드
 
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
 
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
 
Clean code Chapter.2
Clean code Chapter.2Clean code Chapter.2
Clean code Chapter.2
 
Chean code chapter 1
Chean code chapter 1Chean code chapter 1
Chean code chapter 1
 
함수적 사고 2장
함수적 사고 2장함수적 사고 2장
함수적 사고 2장
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)
 

Similaire à Tobi 스프링 2장 php version

20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나JunHak Kim
 
비동기와 이벤트큐 수업자료
비동기와 이벤트큐 수업자료비동기와 이벤트큐 수업자료
비동기와 이벤트큐 수업자료지수 윤
 
Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Daum DNA
 
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018Kenneth Ceyer
 
Frontend test-environment 이해하기
Frontend test-environment 이해하기Frontend test-environment 이해하기
Frontend test-environment 이해하기성훈 백
 
오픈소스소프트웨어 최종프로젝트 발표자료_201716366_김연영
오픈소스소프트웨어 최종프로젝트 발표자료_201716366_김연영오픈소스소프트웨어 최종프로젝트 발표자료_201716366_김연영
오픈소스소프트웨어 최종프로젝트 발표자료_201716366_김연영ssusera234a4
 
클린코드와 테스트코드
클린코드와 테스트코드클린코드와 테스트코드
클린코드와 테스트코드Herren
 
Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Ryan Park
 
개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)SangIn Choung
 
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 TestOkjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 Testbeom kyun choi
 
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Jaehoon Oh
 
[SWMaestro 100+ 발표자료] 테스트하기
[SWMaestro 100+ 발표자료] 테스트하기[SWMaestro 100+ 발표자료] 테스트하기
[SWMaestro 100+ 발표자료] 테스트하기Luavis Kang
 
xUnitTestPattern/chapter17
xUnitTestPattern/chapter17xUnitTestPattern/chapter17
xUnitTestPattern/chapter17Yoon Hee Hwang
 
엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드Mijeong Park
 
Legacy code refactoring video rental system
Legacy code refactoring   video rental systemLegacy code refactoring   video rental system
Legacy code refactoring video rental systemJaehoon Oh
 

Similaire à Tobi 스프링 2장 php version (20)

20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나
 
비동기와 이벤트큐 수업자료
비동기와 이벤트큐 수업자료비동기와 이벤트큐 수업자료
비동기와 이벤트큐 수업자료
 
Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기
 
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018
 
Frontend test-environment 이해하기
Frontend test-environment 이해하기Frontend test-environment 이해하기
Frontend test-environment 이해하기
 
Cygnus unit test
Cygnus unit testCygnus unit test
Cygnus unit test
 
오픈소스소프트웨어 최종프로젝트 발표자료_201716366_김연영
오픈소스소프트웨어 최종프로젝트 발표자료_201716366_김연영오픈소스소프트웨어 최종프로젝트 발표자료_201716366_김연영
오픈소스소프트웨어 최종프로젝트 발표자료_201716366_김연영
 
클린코드와 테스트코드
클린코드와 테스트코드클린코드와 테스트코드
클린코드와 테스트코드
 
Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005
 
개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)
 
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 TestOkjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
 
Tdd
TddTdd
Tdd
 
Tdd
TddTdd
Tdd
 
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화
 
[SWMaestro 100+ 발표자료] 테스트하기
[SWMaestro 100+ 발표자료] 테스트하기[SWMaestro 100+ 발표자료] 테스트하기
[SWMaestro 100+ 발표자료] 테스트하기
 
xUnitTestPattern/chapter17
xUnitTestPattern/chapter17xUnitTestPattern/chapter17
xUnitTestPattern/chapter17
 
엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드
 
C++과 TDD
C++과 TDDC++과 TDD
C++과 TDD
 
Python - Module
Python - ModulePython - Module
Python - Module
 
Legacy code refactoring video rental system
Legacy code refactoring   video rental systemLegacy code refactoring   video rental system
Legacy code refactoring video rental system
 

Plus de ukjinkwoun

Chapter 1 0 이야기
Chapter 1 0 이야기Chapter 1 0 이야기
Chapter 1 0 이야기ukjinkwoun
 
Head first chapter 1
Head first chapter 1Head first chapter 1
Head first chapter 1ukjinkwoun
 
대규모 서비스를 지탱하는 기술 Ch 4
대규모 서비스를 지탱하는 기술 Ch 4대규모 서비스를 지탱하는 기술 Ch 4
대규모 서비스를 지탱하는 기술 Ch 4ukjinkwoun
 
프로그래머로 사는법 챕터16
프로그래머로 사는법   챕터16프로그래머로 사는법   챕터16
프로그래머로 사는법 챕터16ukjinkwoun
 
프로그래머로 사는법 챕터9
프로그래머로 사는법   챕터9프로그래머로 사는법   챕터9
프로그래머로 사는법 챕터9ukjinkwoun
 
프로그래머로 사는법
프로그래머로 사는법프로그래머로 사는법
프로그래머로 사는법ukjinkwoun
 
대규모 구조
대규모 구조대규모 구조
대규모 구조ukjinkwoun
 
도메인 객체의 생명주기
도메인 객체의 생명주기도메인 객체의 생명주기
도메인 객체의 생명주기ukjinkwoun
 

Plus de ukjinkwoun (10)

Chapter 1 0 이야기
Chapter 1 0 이야기Chapter 1 0 이야기
Chapter 1 0 이야기
 
Head first chapter 1
Head first chapter 1Head first chapter 1
Head first chapter 1
 
대규모 서비스를 지탱하는 기술 Ch 4
대규모 서비스를 지탱하는 기술 Ch 4대규모 서비스를 지탱하는 기술 Ch 4
대규모 서비스를 지탱하는 기술 Ch 4
 
코드 Ch23
코드 Ch23코드 Ch23
코드 Ch23
 
코드 Ch4
코드 Ch4코드 Ch4
코드 Ch4
 
프로그래머로 사는법 챕터16
프로그래머로 사는법   챕터16프로그래머로 사는법   챕터16
프로그래머로 사는법 챕터16
 
프로그래머로 사는법 챕터9
프로그래머로 사는법   챕터9프로그래머로 사는법   챕터9
프로그래머로 사는법 챕터9
 
프로그래머로 사는법
프로그래머로 사는법프로그래머로 사는법
프로그래머로 사는법
 
대규모 구조
대규모 구조대규모 구조
대규모 구조
 
도메인 객체의 생명주기
도메인 객체의 생명주기도메인 객체의 생명주기
도메인 객체의 생명주기
 

Tobi 스프링 2장 php version