33
테테테 테테테테 TDD 테테테

테스트 자동화와 TDD(테스트 주도 개발방법론)

Embed Size (px)

DESCRIPTION

테스트 자동화와 TDD

Citation preview

Page 1: 테스트 자동화와 TDD(테스트 주도 개발방법론)

테스트 자동화와 TDD

박경훈

Page 2: 테스트 자동화와 TDD(테스트 주도 개발방법론)

진행순서 자동화 된 테스트가 없다면 ?

자동화 된 테스트의 정의

TDD 의 소개

Page 3: 테스트 자동화와 TDD(테스트 주도 개발방법론)

자동화 된 테스트가 없다면 ?

Page 4: 테스트 자동화와 TDD(테스트 주도 개발방법론)

Fact1. 소프트웨어의 소스는 복잡하게 연결되어 있다 .

Page 5: 테스트 자동화와 TDD(테스트 주도 개발방법론)

작은 한 부분이 수정된다면 ?

Page 6: 테스트 자동화와 TDD(테스트 주도 개발방법론)

모든 기능을 다시 테스트 해야 한다 .

Page 7: 테스트 자동화와 TDD(테스트 주도 개발방법론)

Fact2. 소스코드는 시간이 흐르면 녹이 슨다 .

Page 8: 테스트 자동화와 TDD(테스트 주도 개발방법론)
Page 9: 테스트 자동화와 TDD(테스트 주도 개발방법론)

끊임없이 OOD(Object Oriented Design) 와 패턴 구문들을 적용해가며 리펙토링 해야 한다 .

Page 10: 테스트 자동화와 TDD(테스트 주도 개발방법론)

하지만 리펙토링이 어려운 이유

Page 11: 테스트 자동화와 TDD(테스트 주도 개발방법론)

모든 기능을 다시 테스트 해야 한다 .

Page 12: 테스트 자동화와 TDD(테스트 주도 개발방법론)

자동화 된 테스트가 없다면 ?

자체 버그 검출 능력 저하- 모든 기능을 테스트 하기 어려움

소스 코드의 품질 저하- 어디서 버그가 생길지 모르기 때문에 잘못된 코드도 고치지 않으려 하는 현상

자체 테스트 비용의 증가- 작은 수정에도 모든 기능을 다시 테스트 해야 되는 문제

Page 13: 테스트 자동화와 TDD(테스트 주도 개발방법론)

자동화 된 테스트란 ?

Page 14: 테스트 자동화와 TDD(테스트 주도 개발방법론)

자동화 된 테스트란 ?

모든 테스트 케이스를 코드 스크립트로 변환한 집합체

Page 15: 테스트 자동화와 TDD(테스트 주도 개발방법론)
Page 16: 테스트 자동화와 TDD(테스트 주도 개발방법론)

통합 테스팅의 예

Page 18: 테스트 자동화와 TDD(테스트 주도 개발방법론)

누가 테스트 스크립트를 만드는가 ?

Software Engineers

QA Engineers

Software Architect

Page 19: 테스트 자동화와 TDD(테스트 주도 개발방법론)

개발 프로세스

요구사항

Software & QA Engineer

테스트 케이스수립

- 공백입력 하면 오류 메시지 띄우기- 사용자가 여러 개의 비디오를 옮길 수 있게

개발

Software EngineerQA Engineer

통합 테스트 코드 작성

Page 20: 테스트 자동화와 TDD(테스트 주도 개발방법론)

TDD

Page 21: 테스트 자동화와 TDD(테스트 주도 개발방법론)

TDD 란 무엇인가 ?

Test-Driven Development- 요구사항의 테스트 요건을 먼저 고려

Test-First Development- 개발 전 테스트 코드를 먼저 작성하여 개발

1999 년 XP 라는 애자일 기반의 개발 방법론과 함께 소개 됨

Page 22: 테스트 자동화와 TDD(테스트 주도 개발방법론)

TDD 란 무엇인가 ?

기존 개발방식

TDD 의 개발방식

Page 23: 테스트 자동화와 TDD(테스트 주도 개발방법론)

TDD 의 장점 높은 소스코드 품질

- MS 와 IBM 사의 조사 결과 TDD 약 15~35% 정도의 개발시간 증가 결함율 ( 버그 ) 은 약 40~90% 정도 줄어듬- http://research.microsoft.com/en-us/groups/ese/nagappan_tdd.pdf

재설계 시간의 절감 손쉬운 테스트 근거 산출 및 문서화 (test

coverage, performance) 디버깅 시간의 절감

Page 24: 테스트 자동화와 TDD(테스트 주도 개발방법론)

TDD 의 단점 all about 개발 생산성 !

Page 25: 테스트 자동화와 TDD(테스트 주도 개발방법론)

1 부터 10 까지의 수를 출력하는 프로그램 만들기 !

- 단 , 3 의 배수에서는 숫자대신 “ HOONS” 를 출력 - 5 의 배수에서는 “ JAEDAM” 을 출력

Page 26: 테스트 자동화와 TDD(테스트 주도 개발방법론)

통합테스트와 유닛테스트

Dependency Injection = AOP

Page 27: 테스트 자동화와 TDD(테스트 주도 개발방법론)

편의점 카운터에서 물건을 스캔한 뒤에 고객에게 최종 가격을 알려주는 프로그램이 필요합니다 .

물건들의 가격은 데이터 베이스에 있으며 , 한가지 특별한 것은 현재 모든 물건을 2 개 사면 하나 더 주는 이벤트를 하고 있기 때문에 이 로직을 반영해주세요 .

Page 28: 테스트 자동화와 TDD(테스트 주도 개발방법론)

데이터 레이어 => 가격정보

비지니스 레이어 => 할인점검 유닛테스트

유닛테스트

통합테스트

Page 29: 테스트 자동화와 TDD(테스트 주도 개발방법론)

Test Automation /TDDAOP

Repository Pattern

MVC, MVP, MVVM

Dependency In-jection

SOLID, DRY, KISS

ORM - Entity

CI

Pair programing

Git – code re-view

BDD/DDD

Agile – XP/Scrum

Daily Standup

User Story & Esti-mation

패턴 문화

Page 30: 테스트 자동화와 TDD(테스트 주도 개발방법론)

결과 중심적 개발 프로세스

Project Manager

Software Engineer

Tester

요구사항결과물

개발

Page 31: 테스트 자동화와 TDD(테스트 주도 개발방법론)

품질 중심적 개발 프로세스

Project Manager

① 요구사항

Architect / Lead developer

Software Engineers

② 분석 / 설계 전달개발

결과물③ 코드리뷰 요청 (pull request)

Architect / Lead developer

Tester

테스트 요청

결과물

피드백

코드 리뷰

Page 32: 테스트 자동화와 TDD(테스트 주도 개발방법론)

Q&A

Page 33: 테스트 자동화와 TDD(테스트 주도 개발방법론)