SlideShare a Scribd company logo
👷Testing & Refactoring
처음 프로젝트를 시작할 때
🚀 새로운 기술 적용
😎 의욕 넘침
🏗 최대한 유연한 설계
현실
구현하기 바쁨
잦은 요구사항 변경
어제의 코드는 💩
Testing & refactoring
🛠리팩토링(Refactoring)
= 리팩토링은 외부동작을 바꾸지 않으면서 내부 구
조를 개선하는 방법으로, 소프트웨어 시스템을 변
경하는 프로세스이다
Testing & refactoring
🛠 리팩토링을 시작하자!
“두려움”
잘 돌아가고 있는데 ...
정상적으로 동작할까 ?
변화를 돕는 실천방법
오류를 잡아줄 수 있는 꾸준한 테스트
테스트를 자동화
“자동화된 테스트는 개발자의 실수를 보호”
코드 수정
테스트 실행 (npm test)
피드백 (Test Fail)
코드 수정
테스트를 하지 않는 이유
“힘듬”
“귀찮음”
“재미없음”
테스트 코드를 관리하고 작성하는데 비용이 듬
“시간이 지날수록 변경에 많은 비용이 발생”
테스트 주도 개발(TDD)
“Test First”
👷 테스트 주도 개발(TDD)
Red
1. Write a test that fail
Green
2. Make the code work
Refactor
3. Refactor code
💸 TDD 장점
개발의 라이프 사이클을 단축 시켜 줌
테스트 코드를 통해 프로그램 Spec을 명확히 정의
개발자에게 안정감을 줌
😥 TDD 단점
TDD에 익숙하지 않다면 생산성이 떨어짐
테스트 코드에 발목을 잡힐 수 있음
TDD를 적용할 땐 충분한 연습이 필요
처음부터 TDD를 적용하기 보단 Unit Test를 작성
테스트하기 쉬운 코드로 연습
실무에 적용할 코드 보단 토이 프로젝트를 통해서 연습
😀 테스트하기 쉬운 코드
같은 입력, 같은 출력
외부에 의존성을 가지지 않고 외부상태를 변경하지 않음
ex) 알고리즘, Utility & helper 함수
🏃 TDD Example
피보나치 수열
Test First !
Test First !
Test First !
😡 테스트하기 어려운 코드가 섞여있는 경우
테스트하기 쉬운 부분을 따로 분리하여 테스트 한다
Mock, Stub 을 사용하여 행위 검증을 한다.
🗒 Tip
CI 를 통해서 테스트 자동화
처음엔 TDD 보다 Unit Test에 집중
Jest —watch 옵션을 켜두면 편리
Given-When-Then Template 사용
개발한 Application은 항상 변한다
변경에 잘 대응하기 위해 테스트 코드의 작성은 필수적
지속적으로 발전 가능한 코드 기반
=
끝

More Related Content

PDF
파이썬 TDD 101
PDF
TDD&Refactoring Day 02: TDD
PPTX
Advanced nGrinder
PPTX
PPTX
IoT 개발자를 위한 Embedded C에서 TDD를 해보자
PPTX
TDD, 뭐시 중헌디
PPTX
테스트 자동화와 TDD(테스트 주도 개발방법론)
PPTX
Test Driven Development (TDD) basic
파이썬 TDD 101
TDD&Refactoring Day 02: TDD
Advanced nGrinder
IoT 개발자를 위한 Embedded C에서 TDD를 해보자
TDD, 뭐시 중헌디
테스트 자동화와 TDD(테스트 주도 개발방법론)
Test Driven Development (TDD) basic

What's hot (20)

PPTX
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
PPTX
Test driven development
PPTX
TDD: Test Driven Development 첫번째 이야기
PPTX
E1_Deview nhn애자일개발 tdd_질문답
PPTX
프로젝트 Xxx에 적용하고 싶은 개발방법
PPTX
Bdd 개요 및 Karma 도입 예
PPTX
테스트 케이스와 SW 품질
PPT
Software Inspection
PPTX
Tdd ver.2
PDF
[AUG]개발자와 QA가 상생하는 테스트 프로세스
PDF
Learning Unit Testing with Pair Programming
PPTX
Rapid Development
PDF
TDD in gameserver 발표자료
PPTX
행복한 개발을 위한_테스트_케이스
PPTX
Deview nhn애자일개발 ci
PDF
Ui test 자동화하기 - Selenium + Jenkins
PPTX
유지보수를 고려한 SW 개발
PDF
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
PDF
111 n grinder-deview_day1_track1_session_1_ver_2
PDF
테스트 기발 개발, TBD(Test based developement)
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
Test driven development
TDD: Test Driven Development 첫번째 이야기
E1_Deview nhn애자일개발 tdd_질문답
프로젝트 Xxx에 적용하고 싶은 개발방법
Bdd 개요 및 Karma 도입 예
테스트 케이스와 SW 품질
Software Inspection
Tdd ver.2
[AUG]개발자와 QA가 상생하는 테스트 프로세스
Learning Unit Testing with Pair Programming
Rapid Development
TDD in gameserver 발표자료
행복한 개발을 위한_테스트_케이스
Deview nhn애자일개발 ci
Ui test 자동화하기 - Selenium + Jenkins
유지보수를 고려한 SW 개발
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
111 n grinder-deview_day1_track1_session_1_ver_2
테스트 기발 개발, TBD(Test based developement)
Ad

Similar to Testing & refactoring (20)

PDF
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
PPT
애자일 게임 개발: 최전선의 이야기(Gamefest 2006)
PDF
전통적인 개발과 테스트 주도 개발, 그리고 애자일
PDF
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824
PDF
TDD&Refactoring Day 01: Refactoring
PDF
엔지니어의 학습, 그리고 테스트 코드
PPTX
애자일 하라
PDF
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
PPT
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...
PDF
Devon 2011-b-5 효과적인 레거시 코드 다루기
PPT
속도의 필요성
PPTX
테스트자동화와 TDD
PDF
애자일의 모든것
PDF
EMOCON 2015 - 품질과 테스트는 다르다
PDF
testing for agile?, agile for testing
PDF
청강대 특강 - 프로젝트 제대로 해보기
PPT
실전 애자일 게임 개발 (Agile Game Agile Game Development From The Trenches)
PPTX
Dev rookie codecomplete-1
PPTX
VSTS와 Azure를 이용한 팀 프로세스 관리
PDF
[부스트캠프 Tech Talk]김영근_처음 시작하는 TDD
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일 게임 개발: 최전선의 이야기(Gamefest 2006)
전통적인 개발과 테스트 주도 개발, 그리고 애자일
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824
TDD&Refactoring Day 01: Refactoring
엔지니어의 학습, 그리고 테스트 코드
애자일 하라
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...
Devon 2011-b-5 효과적인 레거시 코드 다루기
속도의 필요성
테스트자동화와 TDD
애자일의 모든것
EMOCON 2015 - 품질과 테스트는 다르다
testing for agile?, agile for testing
청강대 특강 - 프로젝트 제대로 해보기
실전 애자일 게임 개발 (Agile Game Agile Game Development From The Trenches)
Dev rookie codecomplete-1
VSTS와 Azure를 이용한 팀 프로세스 관리
[부스트캠프 Tech Talk]김영근_처음 시작하는 TDD
Ad

Testing & refactoring