Upload
joel-park-
View
2.944
Download
5
Embed Size (px)
DESCRIPTION
테스트 자동화와 TDD
Citation preview
테스트 자동화와 TDD
박경훈
진행순서 자동화 된 테스트가 없다면 ?
자동화 된 테스트의 정의
TDD 의 소개
자동화 된 테스트가 없다면 ?
Fact1. 소프트웨어의 소스는 복잡하게 연결되어 있다 .
작은 한 부분이 수정된다면 ?
모든 기능을 다시 테스트 해야 한다 .
Fact2. 소스코드는 시간이 흐르면 녹이 슨다 .
끊임없이 OOD(Object Oriented Design) 와 패턴 구문들을 적용해가며 리펙토링 해야 한다 .
하지만 리펙토링이 어려운 이유
모든 기능을 다시 테스트 해야 한다 .
자동화 된 테스트가 없다면 ?
자체 버그 검출 능력 저하- 모든 기능을 테스트 하기 어려움
소스 코드의 품질 저하- 어디서 버그가 생길지 모르기 때문에 잘못된 코드도 고치지 않으려 하는 현상
자체 테스트 비용의 증가- 작은 수정에도 모든 기능을 다시 테스트 해야 되는 문제
자동화 된 테스트란 ?
자동화 된 테스트란 ?
모든 테스트 케이스를 코드 스크립트로 변환한 집합체
통합 테스팅의 예
3rd party testing tools
http://www.youtube.com/watch?v=qsh4zWa6bE8
http://www.youtube.com/watch?v=4TGkGQonmy4#t=64
누가 테스트 스크립트를 만드는가 ?
Software Engineers
QA Engineers
Software Architect
개발 프로세스
요구사항
Software & QA Engineer
테스트 케이스수립
- 공백입력 하면 오류 메시지 띄우기- 사용자가 여러 개의 비디오를 옮길 수 있게
개발
Software EngineerQA Engineer
통합 테스트 코드 작성
TDD
TDD 란 무엇인가 ?
Test-Driven Development- 요구사항의 테스트 요건을 먼저 고려
Test-First Development- 개발 전 테스트 코드를 먼저 작성하여 개발
1999 년 XP 라는 애자일 기반의 개발 방법론과 함께 소개 됨
TDD 란 무엇인가 ?
기존 개발방식
TDD 의 개발방식
TDD 의 장점 높은 소스코드 품질
- MS 와 IBM 사의 조사 결과 TDD 약 15~35% 정도의 개발시간 증가 결함율 ( 버그 ) 은 약 40~90% 정도 줄어듬- http://research.microsoft.com/en-us/groups/ese/nagappan_tdd.pdf
재설계 시간의 절감 손쉬운 테스트 근거 산출 및 문서화 (test
coverage, performance) 디버깅 시간의 절감
TDD 의 단점 all about 개발 생산성 !
1 부터 10 까지의 수를 출력하는 프로그램 만들기 !
- 단 , 3 의 배수에서는 숫자대신 “ HOONS” 를 출력 - 5 의 배수에서는 “ JAEDAM” 을 출력
통합테스트와 유닛테스트
Dependency Injection = AOP
편의점 카운터에서 물건을 스캔한 뒤에 고객에게 최종 가격을 알려주는 프로그램이 필요합니다 .
물건들의 가격은 데이터 베이스에 있으며 , 한가지 특별한 것은 현재 모든 물건을 2 개 사면 하나 더 주는 이벤트를 하고 있기 때문에 이 로직을 반영해주세요 .
데이터 레이어 => 가격정보
비지니스 레이어 => 할인점검 유닛테스트
유닛테스트
통합테스트
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
패턴 문화
결과 중심적 개발 프로세스
Project Manager
Software Engineer
Tester
요구사항결과물
개발
품질 중심적 개발 프로세스
Project Manager
① 요구사항
Architect / Lead developer
Software Engineers
② 분석 / 설계 전달개발
결과물③ 코드리뷰 요청 (pull request)
Architect / Lead developer
Tester
테스트 요청
결과물
피드백
코드 리뷰
Q&A