SlideShare a Scribd company logo
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

PDF
테스트자동화 성공전략
PDF
Io t에서의 소프트웨어단위테스트_접근사례
PDF
사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)
PDF
크로스(멀티)브라우저 테스트수행가이드
PPTX
Guitar
PDF
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
PDF
오픈 스펙을 대상으로 한 테스트설계사례
PPTX
테스트자동화와 TDD
테스트자동화 성공전략
Io t에서의 소프트웨어단위테스트_접근사례
사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)
크로스(멀티)브라우저 테스트수행가이드
Guitar
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
오픈 스펙을 대상으로 한 테스트설계사례
테스트자동화와 TDD

What's hot (20)

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

Viewers also liked (12)

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

Similar to X unit 14장 (20)

PPT
xUnitTestPattern/chapter3
PPT
테스트 자동화의 원칙
PPTX
X unittestpattern 1장_아꿈사
PPTX
[IGC 2016] 엔씨소프트 김종원 - 모바일 테스트 자동화 시스템
PPTX
xUnitTestPattern/chapter17
PDF
[오픈소스컨설팅]소프트웨어테스팅전략
PDF
모바일 게임 테스트 자동화 Igc 2016
PDF
Airtest Mobile Game Automation
PDF
발표자료 1인qa로살아남는6가지방법
PDF
효율적인 개발 프로세스를 위한 지속적 통합
PDF
[오픈소스컨설팅]소프트웨어 개발 준비 과정
PDF
HPE 솔루션과 함께하는 모바일 앱 테스팅 방안 소개
PDF
Istqb 5-테스트관리-2015-배포
PDF
2010 SW Testing Trend
PDF
Growing object oriented software guided by test
PDF
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
PDF
Robot framework 을 이용한 기능 테스트 자동화
PDF
『Effective Unit Testing』 - 맛보기
PDF
모바일 게임 테스트 자동화 (Appium 확장)
PDF
모바일 게임 테스트 자동화 (Appium 확장)
xUnitTestPattern/chapter3
테스트 자동화의 원칙
X unittestpattern 1장_아꿈사
[IGC 2016] 엔씨소프트 김종원 - 모바일 테스트 자동화 시스템
xUnitTestPattern/chapter17
[오픈소스컨설팅]소프트웨어테스팅전략
모바일 게임 테스트 자동화 Igc 2016
Airtest Mobile Game Automation
발표자료 1인qa로살아남는6가지방법
효율적인 개발 프로세스를 위한 지속적 통합
[오픈소스컨설팅]소프트웨어 개발 준비 과정
HPE 솔루션과 함께하는 모바일 앱 테스팅 방안 소개
Istqb 5-테스트관리-2015-배포
2010 SW Testing Trend
Growing object oriented software guided by test
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
Robot framework 을 이용한 기능 테스트 자동화
『Effective Unit Testing』 - 맛보기
모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)

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.