SlideShare a Scribd company logo
1 of 15
14. 효과적인 테스트 자동화를 위한 길잡이 아꿈사박민욱
- 테스트 자동화 전문가는 하루아침에 되는게 아니다. 1. 테스트 자동화의 어려움.  - 기술이 많이 필요하고 잘 알려지지 않은 데다 쓸 만한 도구도 별로 없다.
테스트하기  쉬운것-> 어려운것 1. 간단한 엔티티 객체 	- 의존관계 없는간단한 비지니스클래스 	- 의존관계 있는복잡한 비지니스클래스 2. 상태 없는 서비스 객체 	- 개별 컴포넌트를 통한 컴포넌트 테스트 	- 전체비지니스로직레이어를 통한 레이어 테스트
3. 상태가 다양한 서비스 객체 - 고객 테스트를 통한 서비스 퍼사드와 피하 테스트 	- 상태가 다양한 컴포넌트를 통한 컴포넌트 테스트 4. '테스트하기 힘든' 코드 	- 노출된 사용자 인터페이스 로직을대충 만든 다이얼로그 	- 데이터베이스로직 	- 다중 쓰레드소프트 웨어
5. 객체지향 기반의 레거시 소프트웨어 6. 비객체지향레거시 소프트웨어
아이러니 -> 많은 개발팀이 기존의 레거시 프로그램에 테스트를 도입하면서 테스트에 발을 담그기시작한다
알다시피  -> 레거시 소프트웨어 테스트에 실패하고 이로 인해 테스트 주도 개발을 포함한 자동화에 별로 좋지 않은 생각을 갖게 된다.
어떻게 하면 되나? -> 2가지만 기억하라 	1. 비슷한 일을 해본 사람을 고용해 도움을 청하고  	2. 마이클 페더스의환상적인 책을 읽어 보아라
자동 테스트를 유지 보수하기 좋게 만드는 길잡이 매슬로우의욕구 계층 이론 1. 생리적 욕구: 먹을 것, 마실 것, 쉴 곳, 성적 만족, 그리고 다른 신체적인 요구들.  2. 안전 욕구: 안전과 육체적 및 감정적인 해로움으로 부터의보호욕구. 3. 사회적(소속) 욕구: 애정, 소속감, 받아들여짐, 우정  4. 자존(존경) 욕구: 자기존중, 자율성, 성취감 등과 같은 내적인 자존요인과 지위, 인정, 관심과 같은 외부적인 존경요인.  5. 자아실현 욕구: 성장, 잠재력 달성, 자기 충족성; 자신이 될 수 있는 것이 되고자 하는 욕구
주요 경로 코드 실행 - SUT의 API를 호출하는 간단한 왕복 테스트 형태로 단순 성공 테스트를 자동화 해야 한다. - SUT를 실행전SUT를 테스트 전 상태로 초기화해 테스트 픽스처를 설치한다. - SUT가 에러 없이 샐행 한다면 테스트는 통과!
2. 주요 경로의 직접 출력값검증 - SUT 응답에 대한 단언 메소드를호출한다. - SUT의 다른 메소드를 호출하거나 SUT의 테스트 후 상태를 얻을수 있고 이런 값들에 대해서도 단언 메소드를호출할수 있다.
3. 대안 경로 검증  - SUT 메소드에다양한 인자를 넣어본다.  - SUT 테스트 이전 상태를 다양하게 해본다. ( 시작 상태를 다르게 초기화 한다. )   - 테스트 스텁을 통해 SUT의 간접 입력을 제어해 본다. 테스트 스텁? 특정 시스템 컴포넌트의 개발이 완료되지 않은 상황에서도 필요한 시험을 진행하기 위해 생성된 더미 컴포넌트(dummy component). 단지 기능(function) 또는 프로시저 헤더 등의 코드 루틴만 갖고 내부 프로세싱은 제한적으로 존재하거나 존재하지 않는 것이 일반적이다.
4. 간접 출력 동작 검증 - 여전히 잘 되는지 알 수는 없다.  - 테스트 스텁과그의 친구들을 통해 SUT로 나가는 메소드 호출을 가로챌수 있다.   - 친구들 : 모의 객체 (Mock Object)나 테스트 스파이
5. 테스트 실행, 유지 보수 최적화 - 테스트 실행을 빠르게 만들기  	: 테스트 픽스쳐재사용이나 간접출력 검증에서 사용했던 기법을 기반으로해서가짜 객체로 의존 컴포넌트를 바꾸기 등등 - 테스트를 이해하고 유지 보수하기 쉽게 만들기 : 인라인 자주 쓰이는 로직을 테스트 유틸리티 메소드 안에 리팩토링하면애매한 테스트를 이해하기 쉽게 만들고, 테스트 코드 중복을 제거할수 있다 - 누락된 버그에 대한 위험 줄이기 	: 테스트 로직의 복잡함을 캡슐화해서 거짓음성의 위험을 줄일수 있다. 	(거짓음성false negative) 실제로는 참(true)인 것이 거짓(false)으로 잘못 판정되는 검사 결과의 오류
끝

More Related Content

What's hot

자동화된 Test Case의 효과
자동화된 Test Case의 효과자동화된 Test Case의 효과
자동화된 Test Case의 효과도형 임
 
개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)SangIn Choung
 
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 SangIn Choung
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)SangIn Choung
 
짝 테스트(Pair Testing) 소개와 사례
짝 테스트(Pair Testing) 소개와 사례짝 테스트(Pair Testing) 소개와 사례
짝 테스트(Pair Testing) 소개와 사례SangIn Choung
 
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드SangIn Choung
 
testing for agile?, agile for testing
testing for agile?, agile for testingtesting for agile?, agile for testing
testing for agile?, agile for testingSangIn Choung
 
테스트개선지원 사례 - 웹어플리케이션대상
테스트개선지원 사례 - 웹어플리케이션대상테스트개선지원 사례 - 웹어플리케이션대상
테스트개선지원 사례 - 웹어플리케이션대상SangIn Choung
 
테스터가 말하는 테스트코드 작성 팁과 사례
테스터가 말하는 테스트코드 작성 팁과 사례테스터가 말하는 테스트코드 작성 팁과 사례
테스터가 말하는 테스트코드 작성 팁과 사례SangIn Choung
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션SangIn Choung
 
[고급과정] 코드 테스트와 커버리지 교육(실습위주)
[고급과정] 코드 테스트와 커버리지 교육(실습위주)[고급과정] 코드 테스트와 커버리지 교육(실습위주)
[고급과정] 코드 테스트와 커버리지 교육(실습위주)SangIn Choung
 
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)SangIn Choung
 
116 deview2013-guitar
116 deview2013-guitar116 deview2013-guitar
116 deview2013-guitarNAVER D2
 
SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리SangIn Choung
 
SI 화면테스트(단위) 가이드
SI 화면테스트(단위) 가이드SI 화면테스트(단위) 가이드
SI 화면테스트(단위) 가이드SangIn Choung
 
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략KTH, 케이티하이텔
 
Rest api 테스트 수행가이드
Rest api 테스트 수행가이드Rest api 테스트 수행가이드
Rest api 테스트 수행가이드SangIn Choung
 
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)SangIn Choung
 
UI빈발결함 및 테스트의 필요성 초기교육자료
UI빈발결함 및 테스트의 필요성 초기교육자료UI빈발결함 및 테스트의 필요성 초기교육자료
UI빈발결함 및 테스트의 필요성 초기교육자료SangIn Choung
 

What's hot (20)

자동화된 Test Case의 효과
자동화된 Test Case의 효과자동화된 Test Case의 효과
자동화된 Test Case의 효과
 
개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)
 
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
 
짝 테스트(Pair Testing) 소개와 사례
짝 테스트(Pair Testing) 소개와 사례짝 테스트(Pair Testing) 소개와 사례
짝 테스트(Pair Testing) 소개와 사례
 
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
 
testing for agile?, agile for testing
testing for agile?, agile for testingtesting for agile?, agile for testing
testing for agile?, agile for testing
 
테스트개선지원 사례 - 웹어플리케이션대상
테스트개선지원 사례 - 웹어플리케이션대상테스트개선지원 사례 - 웹어플리케이션대상
테스트개선지원 사례 - 웹어플리케이션대상
 
테스터가 말하는 테스트코드 작성 팁과 사례
테스터가 말하는 테스트코드 작성 팁과 사례테스터가 말하는 테스트코드 작성 팁과 사례
테스터가 말하는 테스트코드 작성 팁과 사례
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션
 
[고급과정] 코드 테스트와 커버리지 교육(실습위주)
[고급과정] 코드 테스트와 커버리지 교육(실습위주)[고급과정] 코드 테스트와 커버리지 교육(실습위주)
[고급과정] 코드 테스트와 커버리지 교육(실습위주)
 
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
 
116 deview2013-guitar
116 deview2013-guitar116 deview2013-guitar
116 deview2013-guitar
 
SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리
 
SI 화면테스트(단위) 가이드
SI 화면테스트(단위) 가이드SI 화면테스트(단위) 가이드
SI 화면테스트(단위) 가이드
 
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
 
Coded ui가이드
Coded ui가이드Coded ui가이드
Coded ui가이드
 
Rest api 테스트 수행가이드
Rest api 테스트 수행가이드Rest api 테스트 수행가이드
Rest api 테스트 수행가이드
 
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
 
UI빈발결함 및 테스트의 필요성 초기교육자료
UI빈발결함 및 테스트의 필요성 초기교육자료UI빈발결함 및 테스트의 필요성 초기교육자료
UI빈발결함 및 테스트의 필요성 초기교육자료
 

Viewers also liked

단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종guest7178884
 
JUnit 지원 라이브러리 소개
JUnit 지원 라이브러리 소개JUnit 지원 라이브러리 소개
JUnit 지원 라이브러리 소개Hyunil Shin
 
더 나은 SW프로젝트를 위해
 더 나은 SW프로젝트를 위해 더 나은 SW프로젝트를 위해
더 나은 SW프로젝트를 위해지수 윤
 
(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구Lim SungHyun
 
7주 JavaScript Part1
7주 JavaScript Part17주 JavaScript Part1
7주 JavaScript Part1지수 윤
 
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용Terry Cho
 
Java와 Python의 만남: Jython과 Sikuli
Java와 Python의 만남: Jython과 SikuliJava와 Python의 만남: Jython과 Sikuli
Java와 Python의 만남: Jython과 Sikuli용 최
 
Istqb 1-소프트웨어테스팅기초-2015
Istqb 1-소프트웨어테스팅기초-2015Istqb 1-소프트웨어테스팅기초-2015
Istqb 1-소프트웨어테스팅기초-2015Jongwon Lee
 
Istqb 6-테스트도구-2015-배포판
Istqb 6-테스트도구-2015-배포판Istqb 6-테스트도구-2015-배포판
Istqb 6-테스트도구-2015-배포판Jongwon Lee
 
Python on Android
Python on AndroidPython on Android
Python on Android용 최
 
소프트웨어 테스팅
소프트웨어 테스팅소프트웨어 테스팅
소프트웨어 테스팅영기 김
 
Ui test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + JenkinsUi test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + JenkinsChang Hak Yeon
 

Viewers also liked (12)

단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종
 
JUnit 지원 라이브러리 소개
JUnit 지원 라이브러리 소개JUnit 지원 라이브러리 소개
JUnit 지원 라이브러리 소개
 
더 나은 SW프로젝트를 위해
 더 나은 SW프로젝트를 위해 더 나은 SW프로젝트를 위해
더 나은 SW프로젝트를 위해
 
(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구
 
7주 JavaScript Part1
7주 JavaScript Part17주 JavaScript Part1
7주 JavaScript Part1
 
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
 
Java와 Python의 만남: Jython과 Sikuli
Java와 Python의 만남: Jython과 SikuliJava와 Python의 만남: Jython과 Sikuli
Java와 Python의 만남: Jython과 Sikuli
 
Istqb 1-소프트웨어테스팅기초-2015
Istqb 1-소프트웨어테스팅기초-2015Istqb 1-소프트웨어테스팅기초-2015
Istqb 1-소프트웨어테스팅기초-2015
 
Istqb 6-테스트도구-2015-배포판
Istqb 6-테스트도구-2015-배포판Istqb 6-테스트도구-2015-배포판
Istqb 6-테스트도구-2015-배포판
 
Python on Android
Python on AndroidPython on Android
Python on Android
 
소프트웨어 테스팅
소프트웨어 테스팅소프트웨어 테스팅
소프트웨어 테스팅
 
Ui test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + JenkinsUi test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + Jenkins
 

Similar to X unit 14장

테스트 자동화의 원칙
테스트 자동화의 원칙테스트 자동화의 원칙
테스트 자동화의 원칙codevania
 
xUnitTestPattern/chapter16
xUnitTestPattern/chapter16xUnitTestPattern/chapter16
xUnitTestPattern/chapter16suitzero
 
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Jaehoon Oh
 
xUnitTestPattern/chapter3
xUnitTestPattern/chapter3xUnitTestPattern/chapter3
xUnitTestPattern/chapter3수윤 장
 
SW 테스트 프로세스& 메뉴얼_V 모델
SW 테스트 프로세스& 메뉴얼_V 모델SW 테스트 프로세스& 메뉴얼_V 모델
SW 테스트 프로세스& 메뉴얼_V 모델KU HUISEONG
 
X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사효원 강
 
Sonarqube 20160509
Sonarqube 20160509Sonarqube 20160509
Sonarqube 20160509영석 조
 
구글테스트
구글테스트구글테스트
구글테스트진화 손
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법SangIn Choung
 
xUnitTestPattern/chapter17
xUnitTestPattern/chapter17xUnitTestPattern/chapter17
xUnitTestPattern/chapter17Yoon Hee Hwang
 
Istqb 2-소프트웨어수명주기와테스팅-2015
Istqb 2-소프트웨어수명주기와테스팅-2015Istqb 2-소프트웨어수명주기와테스팅-2015
Istqb 2-소프트웨어수명주기와테스팅-2015Jongwon Lee
 
행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스도형 임
 
[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스KTH, 케이티하이텔
 
20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나JunHak Kim
 
回国去哪买毕业证办迪肯大学毕业证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
 
Istqb 5-테스트관리-2015-배포
Istqb 5-테스트관리-2015-배포Istqb 5-테스트관리-2015-배포
Istqb 5-테스트관리-2015-배포Jongwon Lee
 
Web Application Testing Patterns
Web Application Testing PatternsWeb Application Testing Patterns
Web Application Testing PatternsJune Kim
 
UI 정적분석툴 소개와 활용사례
UI 정적분석툴 소개와 활용사례UI 정적분석툴 소개와 활용사례
UI 정적분석툴 소개와 활용사례SangIn Choung
 
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
 

Similar to X unit 14장 (20)

테스트 자동화의 원칙
테스트 자동화의 원칙테스트 자동화의 원칙
테스트 자동화의 원칙
 
xUnitTestPattern/chapter16
xUnitTestPattern/chapter16xUnitTestPattern/chapter16
xUnitTestPattern/chapter16
 
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화
 
xUnitTestPattern/chapter3
xUnitTestPattern/chapter3xUnitTestPattern/chapter3
xUnitTestPattern/chapter3
 
SW 테스트 프로세스& 메뉴얼_V 모델
SW 테스트 프로세스& 메뉴얼_V 모델SW 테스트 프로세스& 메뉴얼_V 모델
SW 테스트 프로세스& 메뉴얼_V 모델
 
X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사
 
Sonarqube 20160509
Sonarqube 20160509Sonarqube 20160509
Sonarqube 20160509
 
구글테스트
구글테스트구글테스트
구글테스트
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법
 
xUnitTestPattern/chapter17
xUnitTestPattern/chapter17xUnitTestPattern/chapter17
xUnitTestPattern/chapter17
 
Cygnus unit test
Cygnus unit testCygnus unit test
Cygnus unit test
 
Istqb 2-소프트웨어수명주기와테스팅-2015
Istqb 2-소프트웨어수명주기와테스팅-2015Istqb 2-소프트웨어수명주기와테스팅-2015
Istqb 2-소프트웨어수명주기와테스팅-2015
 
행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스
 
[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스
 
20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나
 
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
 
Istqb 5-테스트관리-2015-배포
Istqb 5-테스트관리-2015-배포Istqb 5-테스트관리-2015-배포
Istqb 5-테스트관리-2015-배포
 
Web Application Testing Patterns
Web Application Testing PatternsWeb Application Testing Patterns
Web Application Testing Patterns
 
UI 정적분석툴 소개와 활용사례
UI 정적분석툴 소개와 활용사례UI 정적분석툴 소개와 활용사례
UI 정적분석툴 소개와 활용사례
 
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)
 

X unit 14장

  • 1. 14. 효과적인 테스트 자동화를 위한 길잡이 아꿈사박민욱
  • 2. - 테스트 자동화 전문가는 하루아침에 되는게 아니다. 1. 테스트 자동화의 어려움. - 기술이 많이 필요하고 잘 알려지지 않은 데다 쓸 만한 도구도 별로 없다.
  • 3. 테스트하기 쉬운것-> 어려운것 1. 간단한 엔티티 객체 - 의존관계 없는간단한 비지니스클래스 - 의존관계 있는복잡한 비지니스클래스 2. 상태 없는 서비스 객체 - 개별 컴포넌트를 통한 컴포넌트 테스트 - 전체비지니스로직레이어를 통한 레이어 테스트
  • 4. 3. 상태가 다양한 서비스 객체 - 고객 테스트를 통한 서비스 퍼사드와 피하 테스트 - 상태가 다양한 컴포넌트를 통한 컴포넌트 테스트 4. '테스트하기 힘든' 코드 - 노출된 사용자 인터페이스 로직을대충 만든 다이얼로그 - 데이터베이스로직 - 다중 쓰레드소프트 웨어
  • 5. 5. 객체지향 기반의 레거시 소프트웨어 6. 비객체지향레거시 소프트웨어
  • 6. 아이러니 -> 많은 개발팀이 기존의 레거시 프로그램에 테스트를 도입하면서 테스트에 발을 담그기시작한다
  • 7. 알다시피 -> 레거시 소프트웨어 테스트에 실패하고 이로 인해 테스트 주도 개발을 포함한 자동화에 별로 좋지 않은 생각을 갖게 된다.
  • 8. 어떻게 하면 되나? -> 2가지만 기억하라 1. 비슷한 일을 해본 사람을 고용해 도움을 청하고 2. 마이클 페더스의환상적인 책을 읽어 보아라
  • 9. 자동 테스트를 유지 보수하기 좋게 만드는 길잡이 매슬로우의욕구 계층 이론 1. 생리적 욕구: 먹을 것, 마실 것, 쉴 곳, 성적 만족, 그리고 다른 신체적인 요구들. 2. 안전 욕구: 안전과 육체적 및 감정적인 해로움으로 부터의보호욕구. 3. 사회적(소속) 욕구: 애정, 소속감, 받아들여짐, 우정 4. 자존(존경) 욕구: 자기존중, 자율성, 성취감 등과 같은 내적인 자존요인과 지위, 인정, 관심과 같은 외부적인 존경요인. 5. 자아실현 욕구: 성장, 잠재력 달성, 자기 충족성; 자신이 될 수 있는 것이 되고자 하는 욕구
  • 10. 주요 경로 코드 실행 - SUT의 API를 호출하는 간단한 왕복 테스트 형태로 단순 성공 테스트를 자동화 해야 한다. - SUT를 실행전SUT를 테스트 전 상태로 초기화해 테스트 픽스처를 설치한다. - SUT가 에러 없이 샐행 한다면 테스트는 통과!
  • 11. 2. 주요 경로의 직접 출력값검증 - SUT 응답에 대한 단언 메소드를호출한다. - SUT의 다른 메소드를 호출하거나 SUT의 테스트 후 상태를 얻을수 있고 이런 값들에 대해서도 단언 메소드를호출할수 있다.
  • 12. 3. 대안 경로 검증 - SUT 메소드에다양한 인자를 넣어본다. - SUT 테스트 이전 상태를 다양하게 해본다. ( 시작 상태를 다르게 초기화 한다. ) - 테스트 스텁을 통해 SUT의 간접 입력을 제어해 본다. 테스트 스텁? 특정 시스템 컴포넌트의 개발이 완료되지 않은 상황에서도 필요한 시험을 진행하기 위해 생성된 더미 컴포넌트(dummy component). 단지 기능(function) 또는 프로시저 헤더 등의 코드 루틴만 갖고 내부 프로세싱은 제한적으로 존재하거나 존재하지 않는 것이 일반적이다.
  • 13. 4. 간접 출력 동작 검증 - 여전히 잘 되는지 알 수는 없다. - 테스트 스텁과그의 친구들을 통해 SUT로 나가는 메소드 호출을 가로챌수 있다. - 친구들 : 모의 객체 (Mock Object)나 테스트 스파이
  • 14. 5. 테스트 실행, 유지 보수 최적화 - 테스트 실행을 빠르게 만들기 : 테스트 픽스쳐재사용이나 간접출력 검증에서 사용했던 기법을 기반으로해서가짜 객체로 의존 컴포넌트를 바꾸기 등등 - 테스트를 이해하고 유지 보수하기 쉽게 만들기 : 인라인 자주 쓰이는 로직을 테스트 유틸리티 메소드 안에 리팩토링하면애매한 테스트를 이해하기 쉽게 만들고, 테스트 코드 중복을 제거할수 있다 - 누락된 버그에 대한 위험 줄이기 : 테스트 로직의 복잡함을 캡슐화해서 거짓음성의 위험을 줄일수 있다. (거짓음성false negative) 실제로는 참(true)인 것이 거짓(false)으로 잘못 판정되는 검사 결과의 오류
  • 15.