1. Made by. Lee Jung Woo
TDD (Test-Driven
Development)
Maker 시그 TED
14.12.04
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
테스트
(재)작성
업무 코드
작성
작성한 테스트
들을 실행
코드 정련
테스트 통과
테스트 실패
실패하는
테스트 존재
모든 테스트
통과
반복
테스트가
실패하는가?
20. Chapter2 예제로 살펴보는 TDD 개발
3. 실제 기능 코드 작성
드디어
실제(업무) 코드 작성 !
TDD 이용
개발자
Maker Sig
21. Chapter2 예제로 살펴보는 TDD 개발
4. 단위 테스트 실행!
TDD 이용
개발자
Maker Sig
실제 코드 작성 후
단위 테스트 실행
검증 완료
22. Chapter2 예제로 살펴보는 TDD 개발
4. 개발된 기능 적용
TDD 프로세스를 따르면 결론적으로 질
높고 모듈화된 소스코드를 짜게 됨!
TDD 이용
개발자
Maker Sig
23. Chapter3 결론
초보 개발자들에게 진입장벽이 낮은 편은 절대 아님!
But!
• 결과적으로 객체지향적이고 질 높은 코드 작성하게 해줌.
• 개발자의 실력향상에도 큰 도움이 됨.
• 어떻게 보면 객체지향적 코드 작성을 위한 가이드 역할
• 길게 내다보면 생산성과 유지보수 비용 절감에 큰 도움!
Maker Sig