SlideShare a Scribd company logo
Made by. Lee Jung Woo
TDD (Test-Driven
Development)
단기 교육 세미나
15.01.30
24-1기 이정우
테스트 주도 개발
Chapter1
Test-Driven Development(테스트 주도 개발)
1999년 XP(eXtreme Programing)이라는 애자일(Agile) 기반의 방법론이 자리잡을 때 처음 소개
소프트웨어 회사 약 77.5% 이상이 TDD 적용
소스코드 작성 전에 테스트 코드를 먼저 작성하면 어떨까?
디자인 코드 작성 테스트(수동)
TDD란?
기존의 개발 프로세스
설계 수정
TDD의 소개
Maker Sig
Chapter1
디자인 Test 코드 작성 코드 작성
TDD란?
TDD 프로세스
설계 수정
TDD의 소개
Maker Sig
Test-Driven Development(테스트 주도 개발)
1999년 XP(eXtreme Programing)이라는 애자일(Agile) 기반의 방법론이 자리잡을 때 처음 소개
소프트웨어 회사 약 77.5% 이상이 TDD 적용
소스코드 작성 전에 테스트 코드를 먼저 작성하면 어떨까?
Chapter1 TDD의 소개
• 보다 튼튼한 객체지향적인 코드 생산 가능
• 재설계 시간 단축
• 디버깅 시간 단축
• 테스트 문서의 대체 가능
• 추가 구현의 용이함
TDD의 장점
TDD가 코드의 재 사용성 보장
사전에 확고하게 정의된 코드 정체성
모든 레이어 디버깅 X 유닛 테스트 결과에 따름
테스트 자동화 → 보다 정확한 테스트 근거
새 기능 추가가 기존 코드에 미치는 영향력 쉽게 검증
Maker Sig
Chapter1 TDD의 소개
• 코드 생산성 하락
TDD의 단점
1. 빠른 결과물을 원하는 환경이라면 도입이 어려움
2. 예외 대처에 취약한 테스트 원칙
3. 실제 코드를 수정 해야 할 시 오히려 늘어나는 유지보수 작업
정확한 프로그래밍 목적을 디자인 단계에서 반드시 미리 정의해야
만 하고 또 무엇을 테스트해야 할지 확실히 정의해야만 한다.
그래도 실보다 득이 훨씬 많다!
Maker Sig
Chapter1 TDD의 소개
TDD 순서도
Maker Sig
테스트
(재)작성
테스트가
실패하는가?
업무 코드
작성
작성한 테스트
들을 실행
코드 정련
테스트 통과
테스트 실패
실패하는
테스트 존재
모든 테스트
통과
반복
Chapter2 예제로 살펴보는 TDD 개발
1부터 20까지의 수를 출력하는 프로그램을 작성하시오. 단, 3의 배수에서는 숫자대신 “JOEL”
를 5의 배수에서는 “SARAH” 그리고 3과 5의 배수에서는 “JOEL SARAH” 를 출력하시오.
일반적인
개발자
바로 소스코드 작성 후
실행 테스트
Maker Sig
Chapter2 예제로 살펴보는 TDD 개발
1부터 20까지의 수를 출력하는 프로그램을 작성하시오. 단, 3의 배수에서는 숫자대신 “JOEL”
를 5의 배수에서는 “SARAH” 그리고 3과 5의 배수에서는 “JOEL SARAH” 를 출력하시오.
1. 테스트 요소 분석
• 숫자가 3의 배수일 때 JOEL 반환
• 숫자가 5의 배수일 때 SARAH 반환
• 숫자가 3과 5의 배수일 때 JOEL SARAH 반환
• 숫자가 3의 배수도 5의 배수도 아닐 때 숫자를 반환
TDD 이용
개발자
Maker Sig
가장 중요한 단계!!
Chapter2 예제로 살펴보는 TDD 개발
2. 테스트 코드 작성
TDD 이용
개발자
Maker Sig
UnitTest Framework의 종류
• xUnit - 가장 널리 쓰이는 오픈소스 Test Framework
- 자동화된 Test기법 제공
- JUnit, NUnit, CppUnit, DBUnit 등으로 발전
• MSTest - MS의 VisualStudio가 제공하는 Test Framework
- 05부터 VisualStudio에 내장. 사용이 쉬움.
- xUnit에 밀림. 하지만 2012부터 본격적으로 개선.
Chapter2 예제로 살펴보는 TDD 개발
2. 테스트 코드 작성 (MSTest 이용)
실제 코드를 작성할
프로젝트 생성 !
TDD 이용
개발자
Maker Sig
Chapter2 예제로 살펴보는 TDD 개발
2. 테스트 코드 작성 (MSTest 이용)
Unit 테스트
프로젝트 생성 !
TDD 이용
개발자
Maker Sig
Chapter2 예제로 살펴보는 TDD 개발
2. 테스트 코드 작성 (MSTest 이용)
TDD 이용
개발자
Maker Sig
Chapter2 예제로 살펴보는 TDD 개발
2. 테스트 코드 작성 (MSTest 이용)
TDD 이용
개발자
Maker Sig
Chapter2 예제로 살펴보는 TDD 개발
2. 테스트 코드 작성 (MSTest 이용)
TDD 이용
개발자
Maker Sig
실제(업무) 코드 틀
(JSTest) 작성
Chapter2 예제로 살펴보는 TDD 개발
TDD 이용
개발자
Maker Sig
MSTest의 Attribute들
[TestInitialize]
[TestCleanup]
[TestClass]
[TestMethod]
[Owner]
[Description]
[Ignore]
[Priority]
[WorkItem]
[TestContext]
테스트 호출 관련
테스트 클래스와 메서드 식별
테스트 실행 관련 정보 저장
테스트 식별 및 정렬
Chapter2 예제로 살펴보는 TDD 개발
2. 테스트 코드 작성 (MSTest 이용)
테스트 코드 작성 !TDD 이용
개발자
Maker Sig
Chapter2 예제로 살펴보는 TDD 개발
TDD 이용
개발자
Maker Sig
Assert Class
AreEqual
AreNotEqual
AreSame
AreNotSame
Fail
IsFalse
IsTrue
IsNull
IsNotNull
Ex) Assert.AreEqual
참/거짓 명제를 사용하여 단위 테스트의
조건을 확인
Chapter2 예제로 살펴보는 TDD 개발
2. 테스트 코드 작성 (MSTest 이용)
TDD 이용
개발자
Maker Sig
테스트를 한번
해보자
Chapter1 TDD의 소개
TDD 순서도
Maker Sig
테스트
(재)작성
업무 코드
작성
작성한 테스트
들을 실행
코드 정련
테스트 통과
테스트 실패
실패하는
테스트 존재
모든 테스트
통과
반복
테스트가
실패하는가?
Chapter2
Chapter2 예제로 살펴보는 TDD 개발
3. 실제 기능 코드 작성
드디어
실제(업무) 코드 작성 !
TDD 이용
개발자
Maker Sig
Chapter2 예제로 살펴보는 TDD 개발
4. 단위 테스트 실행!
TDD 이용
개발자
Maker Sig
실제 코드 작성 후
단위 테스트 실행
검증 완료
Chapter2 예제로 살펴보는 TDD 개발
4. 개발된 기능 적용
TDD 프로세스를 따르면 결론적으로 질
높고 모듈화된 소스코드를 짜게 됨!
TDD 이용
개발자
Maker Sig
Mock이란?
Maker Sig
Chapter3 Mock을 이용한 TDD
사전적 의미는 가짜의, 모형의 라는 뜻
TDD를 할 때 발생하는 한계 돌파를 위한 노력 중 하나
Mock 객체
실제 모듈과 비슷하게 보이도록 만든 가짜
객체.
비용과시간이 많이 들거나 의존성이 길게
걸쳐져 있는 객체를 대체하여 Test 구성
언제 Mock객체를 사용할 것인가?
Maker Sig
Chapter3 Mock을 이용한 TDD
• 테스트 작성을 위한 환경 구축이 어려울 때
• 테스트가 특정 경우나 순간에 의존적 일 때
• 테스트 시간이 오래 걸릴 때
기능 수행 자체보다 다른 부분으로 인한 시간이 오래 걸릴 경우
특정 모듈을 아직 가지고 있지 않을 때
특정 과정이 타 부서와의 협의나 승인이 필요할 때
순간적인 특정 테스트 상황을 만들기가 어려울 때
ex) 접속 시도 후 4초가 지난 상황에서의 테스트
Maker Sig
Chapter3 Mock을 이용한 TDD
사용자 암호 저장 기능에 대한 테스트를 만드시오
Maker Sig
Chapter3 Mock을 이용한 TDD
사용자 암호 저장 기능에 대한 테스트를 만드시오
+ 암호화 과정을 꼭 거쳐야 함!
암호학 까지 공부해야 하나....
Maker Sig
Chapter3 Mock을 이용한 TDD
사용자 암호 저장 기능에 대한 테스트를 만드시오 + 암호화 과정을 꼭 거쳐야 함!
언제까지 기다리지... X Mock객체 사용!
Maker Sig
Chapter3 Mock을 이용한 TDD
사용자 암호 저장 기능에 대한 테스트를 만드시오 + 암호화 과정을 꼭 거쳐야 함!
암호화를 수행해주는 Cipher를 흉내 낸 Mock객체 생성
Maker Sig
Chapter3 Mock을 이용한 TDD
사용자 암호 저장 기능에 대한 테스트를 만드시오 + 암호화 과정을 꼭 거쳐야 함!
Mock객체를 이용한 테스트 코드 작성 완료!
Mock 개념의 세분화
Maker Sig
Chapter3 Mock을 이용한 TDD
Test
Double
Dummy
Object
Test
Stub
Test Spy
Mock
Object
Fake
Object
Test Double : 스턴트맨을 나타내는 Stunt Double에서 차용해온 단어
Mock에 대한 개념을 세분화 하고 있다.
Maker Sig
Chapter3 Mock을 이용한 TDD
• Dummy
• Test Stub
• Test Spy
• Mock
• Fake
TestStub과 비슷하지만 로직이 있다. 예상대로 메소드가 호출 되지
않으면 테스트 실패
단지 인스턴스화 될 수 있는 수준으로만 구현한 객체
Mock 개념의 세분화
더미 객체를 실제로 동작하는 것 처럼 특정 상태를 구현해 놓은 객체
로직 x, 실패 x
객체 내부를 감시하는 로직이 추가 되어있다. ex) 수행 횟수 카운터
마치 구현이 되어 있는 것처럼 내부 동작까지 구현 해 놓은 객체
기능 상, 구조 상 차이가 있긴 하지만 구별이 애매한 것들이 많다.
Chapter4
TDD에 대한 결론
초보 개발자들에게 진입장벽이 낮은 편은 절대 아님!
But!
• 결과적으로 객체지향적이고 질 높은 코드 작성하게 해줌.
• 개발자의 실력향상에도 큰 도움이 됨.
• 어떻게 보면 객체지향적 코드 작성을 위한 가이드 역할
• 길게 내다보면 생산성과 유지보수 비용 절감에 큰 도움!
Maker Sig
Q & A

More Related Content

PPTX
Windows 성능모니터를 이용한 SQL Server 성능 분석
PDF
開発速度が速い #とは(LayerX社内資料)
PDF
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
PDF
テストを分類してみよう!
PPTX
研究用途でのAWSの利用事例と機械学習について
PDF
JAWS-UG初心者支部 リザーブドインスタンス買ってみた
PDF
Arrow Judge
PDF
TDD のこころ
Windows 성능모니터를 이용한 SQL Server 성능 분석
開発速度が速い #とは(LayerX社内資料)
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
テストを分類してみよう!
研究用途でのAWSの利用事例と機械学習について
JAWS-UG初心者支部 リザーブドインスタンス買ってみた
Arrow Judge
TDD のこころ

What's hot (20)

PDF
初心者向けWebinar AWSで開発環境を構築しよう
PPTX
Testes E2E em Cypress com JS
PDF
オブジェクト指向プログラミングのためのモデリング入門
PDF
Amazon Web Services の本気がみたいか !? スピードと高可用性を両立したゲームインフラの構築と事例
PDF
Selenium Automation Testing Interview Questions And Answers
PDF
実践的な設計って、なんだろう?
PPTX
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
PPT
Test Driven Development
PDF
ISO/IEC/IEEE 29119 Software testing 勉強会 第2回 Part 2 Test Processes
PDF
Envoy 를 이용한 코드 배포 자동화
PPTX
60分でわかった気になるISO29119 #wacate
PDF
SQLアンチパターン読書会 4章 キーレスエンエントリ(外部キー嫌い)
PPTX
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
PDF
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
PDF
オブジェクト指向エクササイズのススメ
PDF
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
PPTX
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
PPTX
Keyword-driven Test Automation Framework
PDF
BigQuery勉強会 Standard SQL Dialect
PDF
Amazon S3による静的Webサイトホスティング
初心者向けWebinar AWSで開発環境を構築しよう
Testes E2E em Cypress com JS
オブジェクト指向プログラミングのためのモデリング入門
Amazon Web Services の本気がみたいか !? スピードと高可用性を両立したゲームインフラの構築と事例
Selenium Automation Testing Interview Questions And Answers
実践的な設計って、なんだろう?
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
Test Driven Development
ISO/IEC/IEEE 29119 Software testing 勉強会 第2回 Part 2 Test Processes
Envoy 를 이용한 코드 배포 자동화
60分でわかった気になるISO29119 #wacate
SQLアンチパターン読書会 4章 キーレスエンエントリ(外部キー嫌い)
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
オブジェクト指向エクササイズのススメ
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
Keyword-driven Test Automation Framework
BigQuery勉強会 Standard SQL Dialect
Amazon S3による静的Webサイトホスティング
Ad

Viewers also liked (20)

PPTX
테스트 자동화와 TDD(테스트 주도 개발방법론)
PPTX
PDF
Tdd retro agile_korea_게시용
PDF
Tdd with JUnit 1
PPTX
C++11
PDF
xUnitTestPattern/chapter7
PPTX
JUnit 지원 라이브러리 소개
PPTX
Test Driven Development (TDD) with FlexUnit 4 - 360|Flex San Jose preso
PPTX
TDD: Test Driven Development 첫번째 이야기
PPTX
행복한 개발을 위한_테스트_케이스
PDF
왜 Swift를 해야할까요?
PPTX
공감세미나 성능테스트
PDF
파크히어 Realm 사용 사례
PPTX
C++과 TDD
PPTX
Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...
PDF
C++ 코드 품질 관리 비법
PDF
Tdd 왜 배우기 어려운가
PDF
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
PDF
Functional Reactive Programming With RxSwift
PPTX
C++ 프로젝트에 단위 테스트 도입하기
테스트 자동화와 TDD(테스트 주도 개발방법론)
Tdd retro agile_korea_게시용
Tdd with JUnit 1
C++11
xUnitTestPattern/chapter7
JUnit 지원 라이브러리 소개
Test Driven Development (TDD) with FlexUnit 4 - 360|Flex San Jose preso
TDD: Test Driven Development 첫번째 이야기
행복한 개발을 위한_테스트_케이스
왜 Swift를 해야할까요?
공감세미나 성능테스트
파크히어 Realm 사용 사례
C++과 TDD
Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...
C++ 코드 품질 관리 비법
Tdd 왜 배우기 어려운가
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
Functional Reactive Programming With RxSwift
C++ 프로젝트에 단위 테스트 도입하기
Ad

Similar to Tdd ver.2 (20)

PDF
엔지니어의 학습, 그리고 테스트 코드
PDF
iOS개발에서 TDD 해보기 - XCTest, Unit Test
PDF
초보개발자의 TDD 체험기
PDF
20130118 토비의 스프링 세미나
PDF
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018
PPTX
PDF
청강대 특강 - 프로젝트 제대로 해보기
PDF
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
PPTX
TDD or TFD
PDF
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
PDF
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
PDF
Devon 2011-b-5 효과적인 레거시 코드 다루기
PDF
Testing & refactoring
PDF
TDD.JUnit.조금더.알기
PPTX
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
PDF
Tdd live spring camp 2013
PDF
TDD&Refactoring Day 02: TDD
PPTX
테스트자동화와 TDD
PDF
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
PDF
아꿈사.C++ api 디자인.20140315 a
엔지니어의 학습, 그리고 테스트 코드
iOS개발에서 TDD 해보기 - XCTest, Unit Test
초보개발자의 TDD 체험기
20130118 토비의 스프링 세미나
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018
청강대 특강 - 프로젝트 제대로 해보기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
TDD or TFD
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
Devon 2011-b-5 효과적인 레거시 코드 다루기
Testing & refactoring
TDD.JUnit.조금더.알기
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
Tdd live spring camp 2013
TDD&Refactoring Day 02: TDD
테스트자동화와 TDD
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
아꿈사.C++ api 디자인.20140315 a

Tdd ver.2

  • 1. Made by. Lee Jung Woo TDD (Test-Driven Development) 단기 교육 세미나 15.01.30 24-1기 이정우 테스트 주도 개발
  • 2. Chapter1 Test-Driven Development(테스트 주도 개발) 1999년 XP(eXtreme Programing)이라는 애자일(Agile) 기반의 방법론이 자리잡을 때 처음 소개 소프트웨어 회사 약 77.5% 이상이 TDD 적용 소스코드 작성 전에 테스트 코드를 먼저 작성하면 어떨까? 디자인 코드 작성 테스트(수동) TDD란? 기존의 개발 프로세스 설계 수정 TDD의 소개 Maker Sig
  • 3. Chapter1 디자인 Test 코드 작성 코드 작성 TDD란? TDD 프로세스 설계 수정 TDD의 소개 Maker Sig Test-Driven Development(테스트 주도 개발) 1999년 XP(eXtreme Programing)이라는 애자일(Agile) 기반의 방법론이 자리잡을 때 처음 소개 소프트웨어 회사 약 77.5% 이상이 TDD 적용 소스코드 작성 전에 테스트 코드를 먼저 작성하면 어떨까?
  • 4. Chapter1 TDD의 소개 • 보다 튼튼한 객체지향적인 코드 생산 가능 • 재설계 시간 단축 • 디버깅 시간 단축 • 테스트 문서의 대체 가능 • 추가 구현의 용이함 TDD의 장점 TDD가 코드의 재 사용성 보장 사전에 확고하게 정의된 코드 정체성 모든 레이어 디버깅 X 유닛 테스트 결과에 따름 테스트 자동화 → 보다 정확한 테스트 근거 새 기능 추가가 기존 코드에 미치는 영향력 쉽게 검증 Maker Sig
  • 5. Chapter1 TDD의 소개 • 코드 생산성 하락 TDD의 단점 1. 빠른 결과물을 원하는 환경이라면 도입이 어려움 2. 예외 대처에 취약한 테스트 원칙 3. 실제 코드를 수정 해야 할 시 오히려 늘어나는 유지보수 작업 정확한 프로그래밍 목적을 디자인 단계에서 반드시 미리 정의해야 만 하고 또 무엇을 테스트해야 할지 확실히 정의해야만 한다. 그래도 실보다 득이 훨씬 많다! Maker Sig
  • 6. Chapter1 TDD의 소개 TDD 순서도 Maker Sig 테스트 (재)작성 테스트가 실패하는가? 업무 코드 작성 작성한 테스트 들을 실행 코드 정련 테스트 통과 테스트 실패 실패하는 테스트 존재 모든 테스트 통과 반복
  • 7. Chapter2 예제로 살펴보는 TDD 개발 1부터 20까지의 수를 출력하는 프로그램을 작성하시오. 단, 3의 배수에서는 숫자대신 “JOEL” 를 5의 배수에서는 “SARAH” 그리고 3과 5의 배수에서는 “JOEL SARAH” 를 출력하시오. 일반적인 개발자 바로 소스코드 작성 후 실행 테스트 Maker Sig
  • 8. Chapter2 예제로 살펴보는 TDD 개발 1부터 20까지의 수를 출력하는 프로그램을 작성하시오. 단, 3의 배수에서는 숫자대신 “JOEL” 를 5의 배수에서는 “SARAH” 그리고 3과 5의 배수에서는 “JOEL SARAH” 를 출력하시오. 1. 테스트 요소 분석 • 숫자가 3의 배수일 때 JOEL 반환 • 숫자가 5의 배수일 때 SARAH 반환 • 숫자가 3과 5의 배수일 때 JOEL SARAH 반환 • 숫자가 3의 배수도 5의 배수도 아닐 때 숫자를 반환 TDD 이용 개발자 Maker Sig 가장 중요한 단계!!
  • 9. Chapter2 예제로 살펴보는 TDD 개발 2. 테스트 코드 작성 TDD 이용 개발자 Maker Sig UnitTest Framework의 종류 • xUnit - 가장 널리 쓰이는 오픈소스 Test Framework - 자동화된 Test기법 제공 - JUnit, NUnit, CppUnit, DBUnit 등으로 발전 • MSTest - MS의 VisualStudio가 제공하는 Test Framework - 05부터 VisualStudio에 내장. 사용이 쉬움. - xUnit에 밀림. 하지만 2012부터 본격적으로 개선.
  • 10. Chapter2 예제로 살펴보는 TDD 개발 2. 테스트 코드 작성 (MSTest 이용) 실제 코드를 작성할 프로젝트 생성 ! TDD 이용 개발자 Maker Sig
  • 11. Chapter2 예제로 살펴보는 TDD 개발 2. 테스트 코드 작성 (MSTest 이용) Unit 테스트 프로젝트 생성 ! TDD 이용 개발자 Maker Sig
  • 12. Chapter2 예제로 살펴보는 TDD 개발 2. 테스트 코드 작성 (MSTest 이용) TDD 이용 개발자 Maker Sig
  • 13. Chapter2 예제로 살펴보는 TDD 개발 2. 테스트 코드 작성 (MSTest 이용) TDD 이용 개발자 Maker Sig
  • 14. Chapter2 예제로 살펴보는 TDD 개발 2. 테스트 코드 작성 (MSTest 이용) TDD 이용 개발자 Maker Sig 실제(업무) 코드 틀 (JSTest) 작성
  • 15. Chapter2 예제로 살펴보는 TDD 개발 TDD 이용 개발자 Maker Sig MSTest의 Attribute들 [TestInitialize] [TestCleanup] [TestClass] [TestMethod] [Owner] [Description] [Ignore] [Priority] [WorkItem] [TestContext] 테스트 호출 관련 테스트 클래스와 메서드 식별 테스트 실행 관련 정보 저장 테스트 식별 및 정렬
  • 16. Chapter2 예제로 살펴보는 TDD 개발 2. 테스트 코드 작성 (MSTest 이용) 테스트 코드 작성 !TDD 이용 개발자 Maker Sig
  • 17. Chapter2 예제로 살펴보는 TDD 개발 TDD 이용 개발자 Maker Sig Assert Class AreEqual AreNotEqual AreSame AreNotSame Fail IsFalse IsTrue IsNull IsNotNull Ex) Assert.AreEqual 참/거짓 명제를 사용하여 단위 테스트의 조건을 확인
  • 18. Chapter2 예제로 살펴보는 TDD 개발 2. 테스트 코드 작성 (MSTest 이용) TDD 이용 개발자 Maker Sig 테스트를 한번 해보자
  • 19. Chapter1 TDD의 소개 TDD 순서도 Maker Sig 테스트 (재)작성 업무 코드 작성 작성한 테스트 들을 실행 코드 정련 테스트 통과 테스트 실패 실패하는 테스트 존재 모든 테스트 통과 반복 테스트가 실패하는가? Chapter2
  • 20. Chapter2 예제로 살펴보는 TDD 개발 3. 실제 기능 코드 작성 드디어 실제(업무) 코드 작성 ! TDD 이용 개발자 Maker Sig
  • 21. Chapter2 예제로 살펴보는 TDD 개발 4. 단위 테스트 실행! TDD 이용 개발자 Maker Sig 실제 코드 작성 후 단위 테스트 실행 검증 완료
  • 22. Chapter2 예제로 살펴보는 TDD 개발 4. 개발된 기능 적용 TDD 프로세스를 따르면 결론적으로 질 높고 모듈화된 소스코드를 짜게 됨! TDD 이용 개발자 Maker Sig
  • 23. Mock이란? Maker Sig Chapter3 Mock을 이용한 TDD 사전적 의미는 가짜의, 모형의 라는 뜻 TDD를 할 때 발생하는 한계 돌파를 위한 노력 중 하나 Mock 객체 실제 모듈과 비슷하게 보이도록 만든 가짜 객체. 비용과시간이 많이 들거나 의존성이 길게 걸쳐져 있는 객체를 대체하여 Test 구성
  • 24. 언제 Mock객체를 사용할 것인가? Maker Sig Chapter3 Mock을 이용한 TDD • 테스트 작성을 위한 환경 구축이 어려울 때 • 테스트가 특정 경우나 순간에 의존적 일 때 • 테스트 시간이 오래 걸릴 때 기능 수행 자체보다 다른 부분으로 인한 시간이 오래 걸릴 경우 특정 모듈을 아직 가지고 있지 않을 때 특정 과정이 타 부서와의 협의나 승인이 필요할 때 순간적인 특정 테스트 상황을 만들기가 어려울 때 ex) 접속 시도 후 4초가 지난 상황에서의 테스트
  • 25. Maker Sig Chapter3 Mock을 이용한 TDD 사용자 암호 저장 기능에 대한 테스트를 만드시오
  • 26. Maker Sig Chapter3 Mock을 이용한 TDD 사용자 암호 저장 기능에 대한 테스트를 만드시오 + 암호화 과정을 꼭 거쳐야 함! 암호학 까지 공부해야 하나....
  • 27. Maker Sig Chapter3 Mock을 이용한 TDD 사용자 암호 저장 기능에 대한 테스트를 만드시오 + 암호화 과정을 꼭 거쳐야 함! 언제까지 기다리지... X Mock객체 사용!
  • 28. Maker Sig Chapter3 Mock을 이용한 TDD 사용자 암호 저장 기능에 대한 테스트를 만드시오 + 암호화 과정을 꼭 거쳐야 함! 암호화를 수행해주는 Cipher를 흉내 낸 Mock객체 생성
  • 29. Maker Sig Chapter3 Mock을 이용한 TDD 사용자 암호 저장 기능에 대한 테스트를 만드시오 + 암호화 과정을 꼭 거쳐야 함! Mock객체를 이용한 테스트 코드 작성 완료!
  • 30. Mock 개념의 세분화 Maker Sig Chapter3 Mock을 이용한 TDD Test Double Dummy Object Test Stub Test Spy Mock Object Fake Object Test Double : 스턴트맨을 나타내는 Stunt Double에서 차용해온 단어 Mock에 대한 개념을 세분화 하고 있다.
  • 31. Maker Sig Chapter3 Mock을 이용한 TDD • Dummy • Test Stub • Test Spy • Mock • Fake TestStub과 비슷하지만 로직이 있다. 예상대로 메소드가 호출 되지 않으면 테스트 실패 단지 인스턴스화 될 수 있는 수준으로만 구현한 객체 Mock 개념의 세분화 더미 객체를 실제로 동작하는 것 처럼 특정 상태를 구현해 놓은 객체 로직 x, 실패 x 객체 내부를 감시하는 로직이 추가 되어있다. ex) 수행 횟수 카운터 마치 구현이 되어 있는 것처럼 내부 동작까지 구현 해 놓은 객체 기능 상, 구조 상 차이가 있긴 하지만 구별이 애매한 것들이 많다.
  • 32. Chapter4 TDD에 대한 결론 초보 개발자들에게 진입장벽이 낮은 편은 절대 아님! But! • 결과적으로 객체지향적이고 질 높은 코드 작성하게 해줌. • 개발자의 실력향상에도 큰 도움이 됨. • 어떻게 보면 객체지향적 코드 작성을 위한 가이드 역할 • 길게 내다보면 생산성과 유지보수 비용 절감에 큰 도움! Maker Sig
  • 33. Q & A