SlideShare una empresa de Scribd logo
1 de 34
테스트 자동화와 TDD
KESTI 개발역량강화 세미나
2016-01-15
목차
 소프트웨어 개발 수명주기
 소프트웨에 개발 수명주기 종류
 소프트웨어 개발 수명주기와 테스팅
 테스팅 기법
 정적 테스팅
 동적 테스팅
 TDD (Test Driven Development) 개요
2
3
고객설명 PM이 이해한 것 분석가 설계 개발자 구현 컨설턴트 설명
설명서 설치본 비용청구서 유지보수 고객 실제요청
소프트웨어 개발 수명주기
4
Software 개발
 Problem / Requirements ?
 Solution 이 있는가?
 어떻게 구현 할 것인가?
 해결되어야 할 문제는 무엇인가?
 고객이 원하는 산출물인가?
 보완이 필요한가?
 개발기간 동안 발생하는 변화/변경을 어떻게 관리할 것인가?
5
Software 개발
 Big Bang 접근
 제품이 한번에 전달된다
 Waterfall Model
 Iterative 접근
 제품이 단계마다 개발되고 전달된다
 Spiral Model
 Iteration Model
6
정의 (Definition)
개발
(Development)
유지보수
(Maintenance)
보호활동 (Umbrella Activities)
무엇 어떻게 변경
Software Lifecycle
 소프트웨어 개발 프로젝트의 필수 4 단계
 Requirements (Analysis, Specification)
 System Design
 Implementation
 Test
 소프트웨어 수명주기 (Wiki)
 컴퓨터 소프트웨어의 개발 단계의 총체로서, 초기 개발 단
계부터 마지막 출시를 모두 아우른다.
 프로젝트 성격별로 4개 단계를 다르게 해석
 왜 소프트웨어 수명주기 모델을 사용하는가?
 중요한 활동 식별, Milestone 정의, 진척도 측정 용이
 Devide & Conquer (과정을 나눔으로써 관리가 쉬움)
7
수명주기 모델
 Single Version Models
 Big Bang Model
 Waterfall Model
 V Model (Integration Testing)
 Incremental Models
 Single-Version with Prototyping
 Iterative Models
 Spiral Model & Variants
 Scrum Model
 참고: 모델별 장단점
8
Incremental: add new items to the product at each phase
Iterative: re-do the product at each phase
Big-Bang Model
 Build and Fix
 개발자는 고객으로부터 요구사항을 받는다
 개발자는 독립적으로 개발하여 전달한다
 개발자는 고객이 만족하기를 바란다
9
Build First
Version
Modify until
client is satisfied
Maintenance
Development
Maintenance
Waterfall Model (link)
1
0
Design
Inplementation
Test
폭포수 모델을 따르기 위해서는, 완전히 순차적
으로 한 단계, 한 단계를 진행해 나가야 한다
V-Model (link)
11
V 모델은 소프트웨어 개발의 각 단계마다 상세한 문서화를 통해 작업을 진행하는 잘 짜인 방법을 사용한다.
또한 테스트 설계와 같은 테스트 활동을 코딩 이후가 아닌 프로젝트 시작 시에 함께 시작하여, 전체적으로
많은 양의 프로젝트 비용과 시간을 감소시킨다.
Incremental vs Iterative
12
Incremental Model
13
분석 설계 구현 테스트
분석 설계 구현 테스트
분석 설계 구현 테스트
Iteration 1 / Increment 1
Iteration 2 / Increment 2
Iteration 3/ Increment 3
Delivery 1st Iteration
Delivery 2nd Iteration
Delivery 3rd Iteration
W Model
14
W Model 이란
Spiral Model
15
수명주기와 테스팅
 모든 개발활동은 테스팅 활동과 대응된다
 모든 개발 Activity와 관련 있는 Testing Activity 가 있다
 각 테스트 레벨은 그 레벨에 맞는 특정한 목적이 있다
 하위 레벨 테스팅
 단위 테스팅 (Unit Testing)
 통합 테스팅 (Integration Testing)
 상위 레벨 테스팅
 사용성 테스트 (Usability Testing)
 기능 테스팅 (Function Testing)
 시스템 테스팅 (System Testing)
 인수 테스팅 (Acceptance Testing)
 주어진 레벨에 대한 테스트의 분석과 설계는 관련된 개발 Activity
활동 동안에 시작되어야 한다
 개발수명주기 모델에서 문서들의 배포판이 이용 가능하게 되면,
문서 리뷰 시작 시 반드시 테스터들이 포함되어야 한다
16
테스팅 기법
17
테스팅 기법 종류
 정적 테스팅
 테스트 대상 프로그램을 실행하지 않고 테스트
 동적 테스팅
 테스트 대상 프로그램을 실행하여 테스트
18
정적 테스팅
 정의
 대상 소프트웨어가 사용되지 않고 테스팅을 한다
 소스코드, 알고리즘, 문서를 검증하는 것
 특징
 리뷰와 같이 장애(Failures) 보다 결함(Defects)을 발견
 대상 소프트웨어를 실행하지 않는 상태에서 검증 툴 활용
 정적 분석의 효과
 테스트 실행 전 조기 결함 발견
 복잡도 분석
 소프트웨어 모델상의 의존도와 불일치성 (Dependencies and
inconsistencies)
 코드와 설계의 유지보수성(Maintainability) 향상
19
정적 테스팅 기법
 리뷰
 Review, Walkthrough, Inspection, Audit
 Static Analysis
 Coding Standards
 Code Metric
 Code Structure Analysis
 Control Flow Analysis
 Data Flow Analysis
 Data Structure Analysis
20
동적 테스팅
 소스 코드를 실행하면서 테스트
 Code Coverage
 Test Bed 필요 (테스트계)
 블랙 박스
 소스 코드 없이 실행 프로그램만으로 테스트
 TestCase 를 만들고 기대 값을 산출 후 해당 TestCase가 기대값과
일치하는지 확인
 화이트박스
 소스코드를 가지고 테스트하는 방법
 디버깅, 단위 테스트, 스크립트 자동 실행
 검출 가능 결함
 기능의 구현 여부
 성능, 자원의 사용, 메모리 누수 등
21
화이트박스 테스트
 소스코드를 이용하여 특정 부분에 대한 테스트를 수행한다.
 Unit Testing Framework 을 이용한다
 다양한 Testing Framework 이 존재
 Java : JUnit, TestNG 등 (8가지 Java 테스트 툴)
 Javascript: Karma, Jasmine 등
 테스트 검증을 위한 방법
 No Printf  Use logging framework
 테스트 자동화의 필수 조건 : Assertions ( AssertJ 등)
22
TDD
(Test Driven Development)
23
TDD 란
 Test-Driven Development
 요구사항의 테스트 요건을 먼저 고려
 Test-First Development
 실제 코드 구현 전에 테스트 코드를 먼저 작성하여 검증
 검증 완료된 코드를 구현 코드로 refactoring
 1999년 XP (eXtreme-Programming) 이라는 애자일 기반의 개발
방법론과 함께 소개
24
TDD
25
TDD
1.Red
2. Green3. Refactor
• 단위테스트 작성
• 테스트 코드 실패 확인
• 최소한의 필요 코드 작성
• 테스트 성공 검증
• 코드 Refactoring
• 단위테스트로 일관성 확인
테스트 자동화
26
테스트 자동화의 필요성
 Software 복잡성 증가
 Software 기능 변경 요청 빈번
 기능 변경 시마다 기능 검증이 필요
 Software 는 수시로 바뀐다
 이에 대응하기 위해 수시로 Refactoring 을 수행해야 한다
 이상: Refactoring  Test  Refactoring
 현실 : Refactoring  ???  포기  도태
27
테스트를 하지 않는다면?
 소프트웨어 산출물의 품질 저하
 버그 양산  버그 찾기 힘듦
 새로운 기능 추가 어려움
 기능 변경 등이 어려움
28
테스트 자동화가 없다면?
 자체 버그 검출 능력 저하
 모든 기능을 수동으로 테스트할 수 없음
 반복 테스트 불가능
 소스 코드 품질 저하
 소스 코드 수정에 대한 불안감
 Refactoring 불가 – 잘 도는 코드는 건드리지 마라
 자체 테스트 비용 증가
 작은 수정에도 모든 기능을 다시 테스트 해야 한다
29
테스트 자동화란?
 인간의 개입 없이, 테스트를 완료하는 것
 이를 위해 Test Case를 정의하고 코드로 구현해야 함
 테스트 자동화 도구를 이용하여, 수작업이 아닌 배치 작업을
수행하는 것
 소스 변경에 따른 주기적, 자동적으로 테스트 실행
 테스트 실행 결과를 Notification
30
테스트 자동화 Tools
타입 설명 도구
테스트 관리도구 테스트 관리와 수행된 활동에 대한 지원 및 관리 Test Link
Test Director
Test Manager
결함추적 결함관리, 결함 추적, 변경 요구사항 및 작업 할당 Trac
Jira
정적분석 SW를 실행하지 않고 소스코드에서 실행 시 발생할
수 있는 결함 발견
FindBugs
CheckStyle
WhiteBox 소스코드를 실행하여 단위, 통합 테스트 Junit, AssertJ
Qunit, Karma, Protractor, Jasmine
성능/부하
테스트
시스템 시뮬레이션 된 다양한 조건에서 어떻게
동작하는지 모니터링과 테스트 및 Profile
Jmeter
Gatling
9 tools for Java Performance
Tuning
형상 관리 SW, 테스트 관련 산출물의 버전 관리 및 빌드 추적 SVN
Git
빌드&배포 빌드, 단위테스트, 배포 등의 반복 작업을 자동화 Maven, Gradle
Grunt, gulp
지속적 통합 빌드 및 배포 자동화 Jenkins
31
테스트 자동화 Tools 도입의 장단점
 장점
 반복적인 업무 감소
 테스트 노력 절감 및 실수 감소
 객관적인 평가 기준 제공 (정적 측정치, 커버리지)
 효율적인 비용으로 유지보수 가능
 제품의 품질 향상과 고객 만족도 향상
 단점
 테스트 관리 도구 유지비용
 초기 환경 및 테스트 설정에 많은 시간, 비용이 소요
 도구에 의해 생성된 테스트 자산(Assets)을 유지비용
 테스트 스크립트 유지보수가 어려움
32
Test Terms
 Test Basis
 요구사항을 내포하는 모든 문서
 테스트 케이스는 테스트 베이시스를 토대로 만들어진다
 Test Harness
 시스템 및 시스템 컴포넌트를 시험하는 환경의 일부분으로 시험
지원을 목적으로 생성된 코드와 데이터
 Test Oracle
 테스트 실행 결과의 참/거짓 판별 기준
 Test Suite
 여러 테스트 케이스의 집합
 False-fail result (False Alarm)
 결함이 아닌데도 결함으로 보고된 테스트 결과
33
Testing Principle
 원리 1. 테스팅은 결함이 존재함을 밝히는 활동
 결함이 없다는 것을 증명할 수 없다
 원리 2. 완벽한 테스팅(Exhaustive)은 불가능하다
 무한경로, 무한입력값, 무한 타이밍
 리스크 분석과 결정된 우선 순위에 테스팅을 집중
 원리 3. 테스팅을 개발 초기에 시작한다
 개발시작과 동시에 테스트를 계획, 전략적으로 접근
 Test case를 도출하면서 문서상의 결함 발견
 원리 4. 결함 집중 (Defect Clustering)
 적은 수의 모듈에서 대다수의 결함 발견(결함과 장애가 집중)
 원리 5. 살충제 패러독스 (Pesticide Paradox)
 동일한 테스트를 반복적으로 수행하면 버그를 찾기 힘듦
 경험기반기법을 통해 테스트 방법을 다양화
 원리 6. 테스팅은 정황(Context)에 의존적이다
 효율적, 효과적 테스트 팀 조직, 독립적 테스트 환경
 원리 7. 오류-부재의 궤변 (Absence-of-errors fallacy)
 사용자의 요구사항에 맞지 않는다면 결함을 찾고 수정하는 것은 무의미
 결함을 모두 발견했다고 해도 품질이 높다고 할 수 없다
34

Más contenido relacionado

La actualidad más candente

테스트자동화 성공전략
테스트자동화 성공전략테스트자동화 성공전략
테스트자동화 성공전략SangIn Choung
 
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)SangIn Choung
 
Istqb 3-정적테스팅기법-2015
Istqb 3-정적테스팅기법-2015Istqb 3-정적테스팅기법-2015
Istqb 3-정적테스팅기법-2015Jongwon Lee
 
Unit Testing And Mocking
Unit Testing And MockingUnit Testing And Mocking
Unit Testing And MockingJoe Wilson
 
Istqb 2-소프트웨어수명주기와테스팅-2015
Istqb 2-소프트웨어수명주기와테스팅-2015Istqb 2-소프트웨어수명주기와테스팅-2015
Istqb 2-소프트웨어수명주기와테스팅-2015Jongwon Lee
 
SI 화면테스트(단위) 가이드
SI 화면테스트(단위) 가이드SI 화면테스트(단위) 가이드
SI 화면테스트(단위) 가이드SangIn Choung
 
Unit testing best practices
Unit testing best practicesUnit testing best practices
Unit testing best practicesnickokiss
 
Unit Testing Concepts and Best Practices
Unit Testing Concepts and Best PracticesUnit Testing Concepts and Best Practices
Unit Testing Concepts and Best PracticesDerek Smith
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법SangIn Choung
 
위험기반테스트접근 테스트계획 사례
위험기반테스트접근 테스트계획 사례위험기반테스트접근 테스트계획 사례
위험기반테스트접근 테스트계획 사례SangIn Choung
 
SW 테스트 프로세스& 메뉴얼_V 모델
SW 테스트 프로세스& 메뉴얼_V 모델SW 테스트 프로세스& 메뉴얼_V 모델
SW 테스트 프로세스& 메뉴얼_V 모델KU HUISEONG
 
Istqb 1-소프트웨어테스팅기초-2015
Istqb 1-소프트웨어테스팅기초-2015Istqb 1-소프트웨어테스팅기초-2015
Istqb 1-소프트웨어테스팅기초-2015Jongwon Lee
 
Istqb 4-테스트설계기법-2015-3-배포
Istqb 4-테스트설계기법-2015-3-배포Istqb 4-테스트설계기법-2015-3-배포
Istqb 4-테스트설계기법-2015-3-배포Jongwon Lee
 
Rest api 테스트 수행가이드
Rest api 테스트 수행가이드Rest api 테스트 수행가이드
Rest api 테스트 수행가이드SangIn Choung
 
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)SangIn Choung
 
Istqb 4-테스트설계기법-2015-2-1-배포
Istqb 4-테스트설계기법-2015-2-1-배포Istqb 4-테스트설계기법-2015-2-1-배포
Istqb 4-테스트설계기법-2015-2-1-배포Jongwon Lee
 
Istqb 1-소프트웨어테스팅기초
Istqb 1-소프트웨어테스팅기초Istqb 1-소프트웨어테스팅기초
Istqb 1-소프트웨어테스팅기초Jongwon Lee
 

La actualidad más candente (20)

테스트자동화 성공전략
테스트자동화 성공전략테스트자동화 성공전략
테스트자동화 성공전략
 
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
 
Istqb 3-정적테스팅기법-2015
Istqb 3-정적테스팅기법-2015Istqb 3-정적테스팅기법-2015
Istqb 3-정적테스팅기법-2015
 
Unit Testing And Mocking
Unit Testing And MockingUnit Testing And Mocking
Unit Testing And Mocking
 
Istqb 2-소프트웨어수명주기와테스팅-2015
Istqb 2-소프트웨어수명주기와테스팅-2015Istqb 2-소프트웨어수명주기와테스팅-2015
Istqb 2-소프트웨어수명주기와테스팅-2015
 
SI 화면테스트(단위) 가이드
SI 화면테스트(단위) 가이드SI 화면테스트(단위) 가이드
SI 화면테스트(단위) 가이드
 
Unit testing best practices
Unit testing best practicesUnit testing best practices
Unit testing best practices
 
Unit Testing Concepts and Best Practices
Unit Testing Concepts and Best PracticesUnit Testing Concepts and Best Practices
Unit Testing Concepts and Best Practices
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법
 
위험기반테스트접근 테스트계획 사례
위험기반테스트접근 테스트계획 사례위험기반테스트접근 테스트계획 사례
위험기반테스트접근 테스트계획 사례
 
SW 테스트 프로세스& 메뉴얼_V 모델
SW 테스트 프로세스& 메뉴얼_V 모델SW 테스트 프로세스& 메뉴얼_V 모델
SW 테스트 프로세스& 메뉴얼_V 모델
 
Testing methodology
Testing methodologyTesting methodology
Testing methodology
 
Istqb 1-소프트웨어테스팅기초-2015
Istqb 1-소프트웨어테스팅기초-2015Istqb 1-소프트웨어테스팅기초-2015
Istqb 1-소프트웨어테스팅기초-2015
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Istqb 4-테스트설계기법-2015-3-배포
Istqb 4-테스트설계기법-2015-3-배포Istqb 4-테스트설계기법-2015-3-배포
Istqb 4-테스트설계기법-2015-3-배포
 
Rest api 테스트 수행가이드
Rest api 테스트 수행가이드Rest api 테스트 수행가이드
Rest api 테스트 수행가이드
 
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
 
Istqb 4-테스트설계기법-2015-2-1-배포
Istqb 4-테스트설계기법-2015-2-1-배포Istqb 4-테스트설계기법-2015-2-1-배포
Istqb 4-테스트설계기법-2015-2-1-배포
 
Istqb 1-소프트웨어테스팅기초
Istqb 1-소프트웨어테스팅기초Istqb 1-소프트웨어테스팅기초
Istqb 1-소프트웨어테스팅기초
 
TestNG
TestNGTestNG
TestNG
 

Destacado

Ui test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + JenkinsUi test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + JenkinsChang Hak Yeon
 
Istqb 6-테스트도구-2015-배포판
Istqb 6-테스트도구-2015-배포판Istqb 6-테스트도구-2015-배포판
Istqb 6-테스트도구-2015-배포판Jongwon Lee
 
모바일 게임 테스트 자동화 Igc 2016
모바일 게임 테스트 자동화 Igc 2016모바일 게임 테스트 자동화 Igc 2016
모바일 게임 테스트 자동화 Igc 2016Jongwon Kim
 
(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구Lim SungHyun
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)SangIn Choung
 
모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)Jongwon Kim
 
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Jaehoon Oh
 
Guitar
GuitarGuitar
Guitarymtech
 
단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종guest7178884
 
테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)KH Park (박경훈)
 
RESTful API 제대로 만들기
RESTful API 제대로 만들기RESTful API 제대로 만들기
RESTful API 제대로 만들기Juwon Kim
 
[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스KTH, 케이티하이텔
 
Python Unittest
Python UnittestPython Unittest
Python Unittest명규 최
 
디자인패턴
디자인패턴디자인패턴
디자인패턴진화 손
 
API Code Generation
API Code GenerationAPI Code Generation
API Code GenerationBruno Pedro
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션SangIn Choung
 
모바일 앱(App) 개발 테스트 솔루션 v20160415
모바일 앱(App) 개발 테스트 솔루션 v20160415모바일 앱(App) 개발 테스트 솔루션 v20160415
모바일 앱(App) 개발 테스트 솔루션 v20160415SeungBeom Ha
 

Destacado (20)

Ui test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + JenkinsUi test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + Jenkins
 
Istqb 6-테스트도구-2015-배포판
Istqb 6-테스트도구-2015-배포판Istqb 6-테스트도구-2015-배포판
Istqb 6-테스트도구-2015-배포판
 
모바일 게임 테스트 자동화 Igc 2016
모바일 게임 테스트 자동화 Igc 2016모바일 게임 테스트 자동화 Igc 2016
모바일 게임 테스트 자동화 Igc 2016
 
(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
 
모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)
 
X unit 14장
X unit 14장X unit 14장
X unit 14장
 
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화
 
Guitar
GuitarGuitar
Guitar
 
단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종
 
테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)
 
RESTful API 제대로 만들기
RESTful API 제대로 만들기RESTful API 제대로 만들기
RESTful API 제대로 만들기
 
Testing In Django
Testing In DjangoTesting In Django
Testing In Django
 
[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스
 
Modernizing
ModernizingModernizing
Modernizing
 
Python Unittest
Python UnittestPython Unittest
Python Unittest
 
디자인패턴
디자인패턴디자인패턴
디자인패턴
 
API Code Generation
API Code GenerationAPI Code Generation
API Code Generation
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션
 
모바일 앱(App) 개발 테스트 솔루션 v20160415
모바일 앱(App) 개발 테스트 솔루션 v20160415모바일 앱(App) 개발 테스트 솔루션 v20160415
모바일 앱(App) 개발 테스트 솔루션 v20160415
 

Similar a 테스트자동화와 TDD

Tr#3 5) 임성현 책임
Tr#3 5) 임성현 책임Tr#3 5) 임성현 책임
Tr#3 5) 임성현 책임Lim SungHyun
 
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2tobeware
 
엔지니어링관점에서 테스트 개선방안 질의 응답
엔지니어링관점에서 테스트 개선방안 질의 응답엔지니어링관점에서 테스트 개선방안 질의 응답
엔지니어링관점에서 테스트 개선방안 질의 응답SangIn Choung
 
[오픈소스컨설팅]소프트웨어테스팅전략
[오픈소스컨설팅]소프트웨어테스팅전략[오픈소스컨설팅]소프트웨어테스팅전략
[오픈소스컨설팅]소프트웨어테스팅전략Ji-Woong Choi
 
[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정Ji-Woong Choi
 
2015 SINVAS DAY - SINVAS TEST (테스트 자동화를 위한 전략과 구성 방안)
2015 SINVAS DAY - SINVAS TEST (테스트 자동화를 위한 전략과 구성 방안)2015 SINVAS DAY - SINVAS TEST (테스트 자동화를 위한 전략과 구성 방안)
2015 SINVAS DAY - SINVAS TEST (테스트 자동화를 위한 전략과 구성 방안)Suji Lee
 
더 나은 SW프로젝트를 위해
 더 나은 SW프로젝트를 위해 더 나은 SW프로젝트를 위해
더 나은 SW프로젝트를 위해지수 윤
 
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략KTH, 케이티하이텔
 
SonarQube와 함께하는 소프트웨어 품질 세미나 - 소프트웨어 품질의 중요성
SonarQube와 함께하는 소프트웨어 품질 세미나 - 소프트웨어 품질의 중요성SonarQube와 함께하는 소프트웨어 품질 세미나 - 소프트웨어 품질의 중요성
SonarQube와 함께하는 소프트웨어 품질 세미나 - 소프트웨어 품질의 중요성CURVC Corp
 
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)Sungmin Kim
 
Atlassian을 이용한 애자일 ALM 소개 / JIRA 프로젝트 예산 관리 - 커브
Atlassian을 이용한 애자일 ALM 소개 / JIRA 프로젝트 예산 관리 - 커브Atlassian을 이용한 애자일 ALM 소개 / JIRA 프로젝트 예산 관리 - 커브
Atlassian을 이용한 애자일 ALM 소개 / JIRA 프로젝트 예산 관리 - 커브Atlassian 대한민국
 
프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법도형 임
 
[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스철민 신
 
오픈 스펙을 대상으로 한 테스트설계사례
오픈 스펙을 대상으로 한 테스트설계사례오픈 스펙을 대상으로 한 테스트설계사례
오픈 스펙을 대상으로 한 테스트설계사례SangIn Choung
 
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...asfasf4
 
How Google Tests Software (구글의 소프트웨어 테스팅)
How Google Tests Software (구글의 소프트웨어 테스팅)How Google Tests Software (구글의 소프트웨어 테스팅)
How Google Tests Software (구글의 소프트웨어 테스팅)Ye Joo Park
 
X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사효원 강
 
Application Lifecycle Management - CURVC
Application Lifecycle Management - CURVCApplication Lifecycle Management - CURVC
Application Lifecycle Management - CURVCAtlassian 대한민국
 
20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나JunHak Kim
 

Similar a 테스트자동화와 TDD (20)

Tr#3 5) 임성현 책임
Tr#3 5) 임성현 책임Tr#3 5) 임성현 책임
Tr#3 5) 임성현 책임
 
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
 
엔지니어링관점에서 테스트 개선방안 질의 응답
엔지니어링관점에서 테스트 개선방안 질의 응답엔지니어링관점에서 테스트 개선방안 질의 응답
엔지니어링관점에서 테스트 개선방안 질의 응답
 
[오픈소스컨설팅]소프트웨어테스팅전략
[오픈소스컨설팅]소프트웨어테스팅전략[오픈소스컨설팅]소프트웨어테스팅전략
[오픈소스컨설팅]소프트웨어테스팅전략
 
[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정
 
2015 SINVAS DAY - SINVAS TEST (테스트 자동화를 위한 전략과 구성 방안)
2015 SINVAS DAY - SINVAS TEST (테스트 자동화를 위한 전략과 구성 방안)2015 SINVAS DAY - SINVAS TEST (테스트 자동화를 위한 전략과 구성 방안)
2015 SINVAS DAY - SINVAS TEST (테스트 자동화를 위한 전략과 구성 방안)
 
더 나은 SW프로젝트를 위해
 더 나은 SW프로젝트를 위해 더 나은 SW프로젝트를 위해
더 나은 SW프로젝트를 위해
 
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
 
SonarQube와 함께하는 소프트웨어 품질 세미나 - 소프트웨어 품질의 중요성
SonarQube와 함께하는 소프트웨어 품질 세미나 - 소프트웨어 품질의 중요성SonarQube와 함께하는 소프트웨어 품질 세미나 - 소프트웨어 품질의 중요성
SonarQube와 함께하는 소프트웨어 품질 세미나 - 소프트웨어 품질의 중요성
 
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
 
Atlassian을 이용한 애자일 ALM 소개 / JIRA 프로젝트 예산 관리 - 커브
Atlassian을 이용한 애자일 ALM 소개 / JIRA 프로젝트 예산 관리 - 커브Atlassian을 이용한 애자일 ALM 소개 / JIRA 프로젝트 예산 관리 - 커브
Atlassian을 이용한 애자일 ALM 소개 / JIRA 프로젝트 예산 관리 - 커브
 
프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법
 
[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스
 
오픈 스펙을 대상으로 한 테스트설계사례
오픈 스펙을 대상으로 한 테스트설계사례오픈 스펙을 대상으로 한 테스트설계사례
오픈 스펙을 대상으로 한 테스트설계사례
 
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
 
How Google Tests Software (구글의 소프트웨어 테스팅)
How Google Tests Software (구글의 소프트웨어 테스팅)How Google Tests Software (구글의 소프트웨어 테스팅)
How Google Tests Software (구글의 소프트웨어 테스팅)
 
X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사
 
Application Lifecycle Management - CURVC
Application Lifecycle Management - CURVCApplication Lifecycle Management - CURVC
Application Lifecycle Management - CURVC
 
20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나
 
Android QA Process
Android QA ProcessAndroid QA Process
Android QA Process
 

Más de Sunghyouk Bae

JUnit5 and TestContainers
JUnit5 and TestContainersJUnit5 and TestContainers
JUnit5 and TestContainersSunghyouk Bae
 
Introduction of failsafe
Introduction of failsafeIntroduction of failsafe
Introduction of failsafeSunghyouk Bae
 
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018Sunghyouk Bae
 
Kotlin @ Coupang Backend 2017
Kotlin @ Coupang Backend 2017Kotlin @ Coupang Backend 2017
Kotlin @ Coupang Backend 2017Sunghyouk Bae
 
Alternatives of JPA/Hibernate
Alternatives of JPA/HibernateAlternatives of JPA/Hibernate
Alternatives of JPA/HibernateSunghyouk Bae
 
Kotlin coroutines and spring framework
Kotlin coroutines and spring frameworkKotlin coroutines and spring framework
Kotlin coroutines and spring frameworkSunghyouk Bae
 
Java naming strategy (자바 명명 전략)
Java naming strategy (자바 명명 전략)Java naming strategy (자바 명명 전략)
Java naming strategy (자바 명명 전략)Sunghyouk Bae
 
SpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSLSpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSLSunghyouk Bae
 
좋은 개발자 되기
좋은 개발자 되기좋은 개발자 되기
좋은 개발자 되기Sunghyouk Bae
 
Multithread pattern 소개
Multithread pattern 소개Multithread pattern 소개
Multithread pattern 소개Sunghyouk Bae
 

Más de Sunghyouk Bae (16)

JUnit5 and TestContainers
JUnit5 and TestContainersJUnit5 and TestContainers
JUnit5 and TestContainers
 
Introduction of failsafe
Introduction of failsafeIntroduction of failsafe
Introduction of failsafe
 
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
 
Spring data requery
Spring data requerySpring data requery
Spring data requery
 
Requery overview
Requery overviewRequery overview
Requery overview
 
Kotlin @ Coupang Backend 2017
Kotlin @ Coupang Backend 2017Kotlin @ Coupang Backend 2017
Kotlin @ Coupang Backend 2017
 
measure metrics
measure metricsmeasure metrics
measure metrics
 
Alternatives of JPA/Hibernate
Alternatives of JPA/HibernateAlternatives of JPA/Hibernate
Alternatives of JPA/Hibernate
 
Kotlin coroutines and spring framework
Kotlin coroutines and spring frameworkKotlin coroutines and spring framework
Kotlin coroutines and spring framework
 
Java naming strategy (자바 명명 전략)
Java naming strategy (자바 명명 전략)Java naming strategy (자바 명명 전략)
Java naming strategy (자바 명명 전략)
 
SpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSLSpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSL
 
JUnit & AssertJ
JUnit & AssertJJUnit & AssertJ
JUnit & AssertJ
 
좋은 개발자 되기
좋은 개발자 되기좋은 개발자 되기
좋은 개발자 되기
 
Using AdoRepository
Using AdoRepositoryUsing AdoRepository
Using AdoRepository
 
Multithread pattern 소개
Multithread pattern 소개Multithread pattern 소개
Multithread pattern 소개
 
Strategy Maps
Strategy MapsStrategy Maps
Strategy Maps
 

테스트자동화와 TDD

  • 1. 테스트 자동화와 TDD KESTI 개발역량강화 세미나 2016-01-15
  • 2. 목차  소프트웨어 개발 수명주기  소프트웨에 개발 수명주기 종류  소프트웨어 개발 수명주기와 테스팅  테스팅 기법  정적 테스팅  동적 테스팅  TDD (Test Driven Development) 개요 2
  • 3. 3 고객설명 PM이 이해한 것 분석가 설계 개발자 구현 컨설턴트 설명 설명서 설치본 비용청구서 유지보수 고객 실제요청
  • 5. Software 개발  Problem / Requirements ?  Solution 이 있는가?  어떻게 구현 할 것인가?  해결되어야 할 문제는 무엇인가?  고객이 원하는 산출물인가?  보완이 필요한가?  개발기간 동안 발생하는 변화/변경을 어떻게 관리할 것인가? 5
  • 6. Software 개발  Big Bang 접근  제품이 한번에 전달된다  Waterfall Model  Iterative 접근  제품이 단계마다 개발되고 전달된다  Spiral Model  Iteration Model 6 정의 (Definition) 개발 (Development) 유지보수 (Maintenance) 보호활동 (Umbrella Activities) 무엇 어떻게 변경
  • 7. Software Lifecycle  소프트웨어 개발 프로젝트의 필수 4 단계  Requirements (Analysis, Specification)  System Design  Implementation  Test  소프트웨어 수명주기 (Wiki)  컴퓨터 소프트웨어의 개발 단계의 총체로서, 초기 개발 단 계부터 마지막 출시를 모두 아우른다.  프로젝트 성격별로 4개 단계를 다르게 해석  왜 소프트웨어 수명주기 모델을 사용하는가?  중요한 활동 식별, Milestone 정의, 진척도 측정 용이  Devide & Conquer (과정을 나눔으로써 관리가 쉬움) 7
  • 8. 수명주기 모델  Single Version Models  Big Bang Model  Waterfall Model  V Model (Integration Testing)  Incremental Models  Single-Version with Prototyping  Iterative Models  Spiral Model & Variants  Scrum Model  참고: 모델별 장단점 8 Incremental: add new items to the product at each phase Iterative: re-do the product at each phase
  • 9. Big-Bang Model  Build and Fix  개발자는 고객으로부터 요구사항을 받는다  개발자는 독립적으로 개발하여 전달한다  개발자는 고객이 만족하기를 바란다 9 Build First Version Modify until client is satisfied Maintenance Development Maintenance
  • 10. Waterfall Model (link) 1 0 Design Inplementation Test 폭포수 모델을 따르기 위해서는, 완전히 순차적 으로 한 단계, 한 단계를 진행해 나가야 한다
  • 11. V-Model (link) 11 V 모델은 소프트웨어 개발의 각 단계마다 상세한 문서화를 통해 작업을 진행하는 잘 짜인 방법을 사용한다. 또한 테스트 설계와 같은 테스트 활동을 코딩 이후가 아닌 프로젝트 시작 시에 함께 시작하여, 전체적으로 많은 양의 프로젝트 비용과 시간을 감소시킨다.
  • 13. Incremental Model 13 분석 설계 구현 테스트 분석 설계 구현 테스트 분석 설계 구현 테스트 Iteration 1 / Increment 1 Iteration 2 / Increment 2 Iteration 3/ Increment 3 Delivery 1st Iteration Delivery 2nd Iteration Delivery 3rd Iteration
  • 16. 수명주기와 테스팅  모든 개발활동은 테스팅 활동과 대응된다  모든 개발 Activity와 관련 있는 Testing Activity 가 있다  각 테스트 레벨은 그 레벨에 맞는 특정한 목적이 있다  하위 레벨 테스팅  단위 테스팅 (Unit Testing)  통합 테스팅 (Integration Testing)  상위 레벨 테스팅  사용성 테스트 (Usability Testing)  기능 테스팅 (Function Testing)  시스템 테스팅 (System Testing)  인수 테스팅 (Acceptance Testing)  주어진 레벨에 대한 테스트의 분석과 설계는 관련된 개발 Activity 활동 동안에 시작되어야 한다  개발수명주기 모델에서 문서들의 배포판이 이용 가능하게 되면, 문서 리뷰 시작 시 반드시 테스터들이 포함되어야 한다 16
  • 18. 테스팅 기법 종류  정적 테스팅  테스트 대상 프로그램을 실행하지 않고 테스트  동적 테스팅  테스트 대상 프로그램을 실행하여 테스트 18
  • 19. 정적 테스팅  정의  대상 소프트웨어가 사용되지 않고 테스팅을 한다  소스코드, 알고리즘, 문서를 검증하는 것  특징  리뷰와 같이 장애(Failures) 보다 결함(Defects)을 발견  대상 소프트웨어를 실행하지 않는 상태에서 검증 툴 활용  정적 분석의 효과  테스트 실행 전 조기 결함 발견  복잡도 분석  소프트웨어 모델상의 의존도와 불일치성 (Dependencies and inconsistencies)  코드와 설계의 유지보수성(Maintainability) 향상 19
  • 20. 정적 테스팅 기법  리뷰  Review, Walkthrough, Inspection, Audit  Static Analysis  Coding Standards  Code Metric  Code Structure Analysis  Control Flow Analysis  Data Flow Analysis  Data Structure Analysis 20
  • 21. 동적 테스팅  소스 코드를 실행하면서 테스트  Code Coverage  Test Bed 필요 (테스트계)  블랙 박스  소스 코드 없이 실행 프로그램만으로 테스트  TestCase 를 만들고 기대 값을 산출 후 해당 TestCase가 기대값과 일치하는지 확인  화이트박스  소스코드를 가지고 테스트하는 방법  디버깅, 단위 테스트, 스크립트 자동 실행  검출 가능 결함  기능의 구현 여부  성능, 자원의 사용, 메모리 누수 등 21
  • 22. 화이트박스 테스트  소스코드를 이용하여 특정 부분에 대한 테스트를 수행한다.  Unit Testing Framework 을 이용한다  다양한 Testing Framework 이 존재  Java : JUnit, TestNG 등 (8가지 Java 테스트 툴)  Javascript: Karma, Jasmine 등  테스트 검증을 위한 방법  No Printf  Use logging framework  테스트 자동화의 필수 조건 : Assertions ( AssertJ 등) 22
  • 24. TDD 란  Test-Driven Development  요구사항의 테스트 요건을 먼저 고려  Test-First Development  실제 코드 구현 전에 테스트 코드를 먼저 작성하여 검증  검증 완료된 코드를 구현 코드로 refactoring  1999년 XP (eXtreme-Programming) 이라는 애자일 기반의 개발 방법론과 함께 소개 24
  • 25. TDD 25 TDD 1.Red 2. Green3. Refactor • 단위테스트 작성 • 테스트 코드 실패 확인 • 최소한의 필요 코드 작성 • 테스트 성공 검증 • 코드 Refactoring • 단위테스트로 일관성 확인
  • 27. 테스트 자동화의 필요성  Software 복잡성 증가  Software 기능 변경 요청 빈번  기능 변경 시마다 기능 검증이 필요  Software 는 수시로 바뀐다  이에 대응하기 위해 수시로 Refactoring 을 수행해야 한다  이상: Refactoring  Test  Refactoring  현실 : Refactoring  ???  포기  도태 27
  • 28. 테스트를 하지 않는다면?  소프트웨어 산출물의 품질 저하  버그 양산  버그 찾기 힘듦  새로운 기능 추가 어려움  기능 변경 등이 어려움 28
  • 29. 테스트 자동화가 없다면?  자체 버그 검출 능력 저하  모든 기능을 수동으로 테스트할 수 없음  반복 테스트 불가능  소스 코드 품질 저하  소스 코드 수정에 대한 불안감  Refactoring 불가 – 잘 도는 코드는 건드리지 마라  자체 테스트 비용 증가  작은 수정에도 모든 기능을 다시 테스트 해야 한다 29
  • 30. 테스트 자동화란?  인간의 개입 없이, 테스트를 완료하는 것  이를 위해 Test Case를 정의하고 코드로 구현해야 함  테스트 자동화 도구를 이용하여, 수작업이 아닌 배치 작업을 수행하는 것  소스 변경에 따른 주기적, 자동적으로 테스트 실행  테스트 실행 결과를 Notification 30
  • 31. 테스트 자동화 Tools 타입 설명 도구 테스트 관리도구 테스트 관리와 수행된 활동에 대한 지원 및 관리 Test Link Test Director Test Manager 결함추적 결함관리, 결함 추적, 변경 요구사항 및 작업 할당 Trac Jira 정적분석 SW를 실행하지 않고 소스코드에서 실행 시 발생할 수 있는 결함 발견 FindBugs CheckStyle WhiteBox 소스코드를 실행하여 단위, 통합 테스트 Junit, AssertJ Qunit, Karma, Protractor, Jasmine 성능/부하 테스트 시스템 시뮬레이션 된 다양한 조건에서 어떻게 동작하는지 모니터링과 테스트 및 Profile Jmeter Gatling 9 tools for Java Performance Tuning 형상 관리 SW, 테스트 관련 산출물의 버전 관리 및 빌드 추적 SVN Git 빌드&배포 빌드, 단위테스트, 배포 등의 반복 작업을 자동화 Maven, Gradle Grunt, gulp 지속적 통합 빌드 및 배포 자동화 Jenkins 31
  • 32. 테스트 자동화 Tools 도입의 장단점  장점  반복적인 업무 감소  테스트 노력 절감 및 실수 감소  객관적인 평가 기준 제공 (정적 측정치, 커버리지)  효율적인 비용으로 유지보수 가능  제품의 품질 향상과 고객 만족도 향상  단점  테스트 관리 도구 유지비용  초기 환경 및 테스트 설정에 많은 시간, 비용이 소요  도구에 의해 생성된 테스트 자산(Assets)을 유지비용  테스트 스크립트 유지보수가 어려움 32
  • 33. Test Terms  Test Basis  요구사항을 내포하는 모든 문서  테스트 케이스는 테스트 베이시스를 토대로 만들어진다  Test Harness  시스템 및 시스템 컴포넌트를 시험하는 환경의 일부분으로 시험 지원을 목적으로 생성된 코드와 데이터  Test Oracle  테스트 실행 결과의 참/거짓 판별 기준  Test Suite  여러 테스트 케이스의 집합  False-fail result (False Alarm)  결함이 아닌데도 결함으로 보고된 테스트 결과 33
  • 34. Testing Principle  원리 1. 테스팅은 결함이 존재함을 밝히는 활동  결함이 없다는 것을 증명할 수 없다  원리 2. 완벽한 테스팅(Exhaustive)은 불가능하다  무한경로, 무한입력값, 무한 타이밍  리스크 분석과 결정된 우선 순위에 테스팅을 집중  원리 3. 테스팅을 개발 초기에 시작한다  개발시작과 동시에 테스트를 계획, 전략적으로 접근  Test case를 도출하면서 문서상의 결함 발견  원리 4. 결함 집중 (Defect Clustering)  적은 수의 모듈에서 대다수의 결함 발견(결함과 장애가 집중)  원리 5. 살충제 패러독스 (Pesticide Paradox)  동일한 테스트를 반복적으로 수행하면 버그를 찾기 힘듦  경험기반기법을 통해 테스트 방법을 다양화  원리 6. 테스팅은 정황(Context)에 의존적이다  효율적, 효과적 테스트 팀 조직, 독립적 테스트 환경  원리 7. 오류-부재의 궤변 (Absence-of-errors fallacy)  사용자의 요구사항에 맞지 않는다면 결함을 찾고 수정하는 것은 무의미  결함을 모두 발견했다고 해도 품질이 높다고 할 수 없다 34