SlideShare a Scribd company logo
1 of 13
xUnit Test Pattern 	- 1장 – 간단하게 둘러보기 강효원
1장은…… 책 전체에 대한 간략한 소개. 2
간단한 테스트 자동화 전략 개발 프로세스 + 고객 테스트 + 단위 테스트 + 테스트하기 쉬운 설계 + 테스트 구성 3 개발 프로세스 고객 테스트 단위테스트 테스트하기 쉬운 설계 테스트 조직 테스트  자동화 전략
개발 프로세스 4 소프트웨어 작성 전에 만들어야  어떠한 상태가 성공인가에 대해 의견 일치를 볼 수 있다. 고객 테스트 스위트(suite)를 가장먼저 자동화하여,  Storytest-Driven Development 을 하기위해 노력 테스트는 언제 만들지 무엇 먼저 초록 막대 유지하기 적어도 “고객 테스트” 가 커버하지 못하는  공간에 대한 “단위 테스트”. 코드 체크인 하기 전에 “단위 테스트” 통과 시키기
개발 프로세스 - con’t 5 소프트웨어를 테스트 가능하게. 단위 테스트 결과적으로 -> 잘 정의된 객체와, 비즈니스 로직에만 집중 ( 비즈니스 로직 테스트는 데이터베이스에의 의존을 최소화) 테스트 주도 개발 의 장점 IF 고객이 최종적인 성공 상태를 정의하지 못한다거나,  고객 간에(ex 실무자 와  관리자) 성공 상태의 정의가 다르다면?
고객 테스트 6 고객이 정말 원하는, 성공했을 때 어떻게 보여야 하는가에 대한 정의 고객 테스트 자동화 방법 스크립트 기반 테스트(Scripted Test) 데이터 주도 테스트(Data-Driven Test) 기록 테스트 (Recorded Test) ( 깨지기 쉬운 테스트, Frangile Test) IF 애매한 테스트 결함 국소화 를 제공하지 못함 테스트가 길어지면? 멀 하려던 걸까… 어디가 문제란 걸까 ㅠ.ㅠ
고객 테스트 7 서비스 퍼사드(Service Façade)  피하 테스트(Subcutaneous Testing) , UI 건너 뛰기. 비즈니스 로직을 단순한 인터페이스로 캡슐화,  Test Fixture  테스트의 시작점, 신선한 픽스처(Fresh Fixture)-> 서로 반응하는 테스트(Interacting Test) 을막아줌 테스트 대역(Test Double) 가짜 객체(Fake Object) 엮인 테스트-> 서로 반응하는 테스트 다음 장에서 다른 분들이 잘 해주실 거에요…..
효과적인 테스트가 되려면 단위 테스트 8 완전 자동 테스트 : public 인터페이스로 왕복 테스트(Round-Trip Test) 단일 조건 테스트 : 결함 국소화를 위해 하나의 시나리오 안에서 하나의 메소드나 객체만 실행 문서로서의 테스트 : 4단계 테스트의 각 부분을 쉽게 알 수 있도록테스트 작성 신선한 픽스처 자체 검사 서로 반응하는 테스트나 픽스처 해체를 고민하지 않아도 됨 테스트 대상 클래스별 테스트 케이스 클래스 생성 위임 설치를 통한 최소 픽스처(Minimal Fixture)생성, 최소 픽스처에는 적절한 이름의 생성 메서드 하나 이상의 기대 객체(Expected Object)와 테스트 대상 시스템(System Under Test,SUT)이  리턴하는 실제 객채와 비교 하는 방법으로  검사,  내장된 동등 단언문(Equality Assertion) 이나 맞춤 단언문(Custom Assertion) 사용 검증 메소드: 여러 테스트에서 같은 결과가 나올 것으로 예상되면 검증 로직을 뽑아내어 결과 표현.
단위 테스트 – con’t 9 실행시킬 방법을 찾지 못해 테스트 안 된 코드(Untested Code) 가 있다면  테스트 스텁을 사용해 SUT의 간접 입력을 제어 테스트스텁(Test Stub) 모의 객체(Mock Object) Public 인터페이스로 확인할 수 없는 경우 테스트 안된 요구 사항(Untested Requirement)이 생길 수 있다. 이럴 때 모의 객체(Mock Object) 로 SUT 의 간접 출력을 가로채어 검증
테스트하기 쉬운 설계 10 복잡하고 에러가 나기 쉬운 해체 코드ㅠ.ㅠ 느린 테스트 ( DB 접근, Disk IO) GUI 프레임워크랑 그래픽 객체 관리 ㅠ.ㅠ 레이어 아키텍처(Layered Architecture) 의 도입 - 테스트 자동화가 훨씬 간단해짐. - 비즈니스 로직을 쉽게 테스트 하려면, 적어도 데이타베이스나   사용자 인터페이스와 분리 해야 한다. 데이터베이스 샌드박스(Database Sandbox)와의 의존을 최소화 하기 위해 대부분의 테스트가 메모리에 있는 객체만 쓰도록 작성 GUI 로직을비주얼 클래스(Visual Classses)와 격리 모든 결정을 비 GUI 클레스에 위임하는 대강만든 다이얼로그(Humble Dialog)도입 자원 해체 코드작성 불 필요. 빨라진테스트 GUI 로직이 의존하는 프레임워크나  그래픽 객체 없이 GUI 로직 테스트 가능
테스트하기 쉬운 설계- con’t 11 애플리케이션이 너무 복잡하거나 다른 프로젝트에서 재사용될 컴퍼넌트의 테스트 컴퍼넌트가 의존하는 다른 컴퍼넌트를 대체 하려면 테스트 대역 사용   - 의존 주입(Dependency Injection)   - 의존찾기(Dependency Loopup)   - 상속받은 싱글턴(Subclassed Singleton) Component Test
테스트 조직 12 기능별 테스트케이스 클래스(Testcase Class per Fiature) 픽스쳐별 테스트 케이스 클래스(Testcase Class per Fixture) 테스트 케이스 클래스 들을 위한 테스트 스위트 객체를 하나로 모아  테스트 스위트 객체(??) 작성 하면  ,[object Object]
패키지나 네임스페이스 안에 넣는 방식으로 테스트 스위트 객체에 차례차례 추가 가능.테스트 케이스 클레스에 테스트 메소드가 많아지면 ** 암묵적 설치 -> “픽스처별 테스트 케이스 클레스”를 사용시 픽스처 설치 코드를 setUp메소드에 옮겨 놓는것.

More Related Content

What's hot

단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종
guest7178884
 

What's hot (20)

애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
 
SI 화면테스트(단위) 가이드
SI 화면테스트(단위) 가이드SI 화면테스트(단위) 가이드
SI 화면테스트(단위) 가이드
 
Introduce Katalon tool
Introduce Katalon toolIntroduce Katalon tool
Introduce Katalon tool
 
테스트개선지원 사례 - 웹어플리케이션대상
테스트개선지원 사례 - 웹어플리케이션대상테스트개선지원 사례 - 웹어플리케이션대상
테스트개선지원 사례 - 웹어플리케이션대상
 
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
 
개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)
 
사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)
사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)
사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
 
Istqb 4-테스트설계기법-2015-1
Istqb 4-테스트설계기법-2015-1Istqb 4-테스트설계기법-2015-1
Istqb 4-테스트설계기법-2015-1
 
Tdd with JUnit 1
Tdd with JUnit 1Tdd with JUnit 1
Tdd with JUnit 1
 
오픈 스펙을 대상으로 한 테스트설계사례
오픈 스펙을 대상으로 한 테스트설계사례오픈 스펙을 대상으로 한 테스트설계사례
오픈 스펙을 대상으로 한 테스트설계사례
 
testing for agile?, agile for testing
testing for agile?, agile for testingtesting for agile?, agile for testing
testing for agile?, agile for testing
 
짝 테스트(Pair Testing) 소개와 사례
짝 테스트(Pair Testing) 소개와 사례짝 테스트(Pair Testing) 소개와 사례
짝 테스트(Pair Testing) 소개와 사례
 
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
 
엔지니어링관점에서 테스트 개선방안 질의 응답
엔지니어링관점에서 테스트 개선방안 질의 응답엔지니어링관점에서 테스트 개선방안 질의 응답
엔지니어링관점에서 테스트 개선방안 질의 응답
 
단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종
 
Test Driven Development (TDD) basic
Test Driven Development (TDD) basicTest Driven Development (TDD) basic
Test Driven Development (TDD) basic
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션
 
SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리
 

Similar to X unittestpattern 1장_아꿈사

Tr#3 5) 임성현 책임
Tr#3 5) 임성현 책임Tr#3 5) 임성현 책임
Tr#3 5) 임성현 책임
Lim SungHyun
 
테스트 자동화의 원칙
테스트 자동화의 원칙테스트 자동화의 원칙
테스트 자동화의 원칙
codevania
 
20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나
JunHak Kim
 

Similar to X unittestpattern 1장_아꿈사 (20)

Android unit testing
Android unit testingAndroid unit testing
Android unit testing
 
모바일 게임 테스트 자동화 Igc 2016
모바일 게임 테스트 자동화 Igc 2016모바일 게임 테스트 자동화 Igc 2016
모바일 게임 테스트 자동화 Igc 2016
 
Tdd
TddTdd
Tdd
 
Cygnus unit test
Cygnus unit testCygnus unit test
Cygnus unit test
 
(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구
 
Tr#3 5) 임성현 책임
Tr#3 5) 임성현 책임Tr#3 5) 임성현 책임
Tr#3 5) 임성현 책임
 
테스트 자동화의 원칙
테스트 자동화의 원칙테스트 자동화의 원칙
테스트 자동화의 원칙
 
Tdd
TddTdd
Tdd
 
[IGC 2016] 엔씨소프트 김종원 - 모바일 테스트 자동화 시스템
[IGC 2016] 엔씨소프트 김종원 - 모바일 테스트 자동화 시스템[IGC 2016] 엔씨소프트 김종원 - 모바일 테스트 자동화 시스템
[IGC 2016] 엔씨소프트 김종원 - 모바일 테스트 자동화 시스템
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법
 
20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나
 
모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)
 
모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)
 
TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기
 
자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)
자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)
자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)
 
Istqb 2-소프트웨어수명주기와테스팅-2015
Istqb 2-소프트웨어수명주기와테스팅-2015Istqb 2-소프트웨어수명주기와테스팅-2015
Istqb 2-소프트웨어수명주기와테스팅-2015
 
[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정
 
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화
 
UI 정적분석툴 소개와 활용사례
UI 정적분석툴 소개와 활용사례UI 정적분석툴 소개와 활용사례
UI 정적분석툴 소개와 활용사례
 
Test term
Test termTest term
Test term
 

X unittestpattern 1장_아꿈사

  • 1. xUnit Test Pattern - 1장 – 간단하게 둘러보기 강효원
  • 2. 1장은…… 책 전체에 대한 간략한 소개. 2
  • 3. 간단한 테스트 자동화 전략 개발 프로세스 + 고객 테스트 + 단위 테스트 + 테스트하기 쉬운 설계 + 테스트 구성 3 개발 프로세스 고객 테스트 단위테스트 테스트하기 쉬운 설계 테스트 조직 테스트 자동화 전략
  • 4. 개발 프로세스 4 소프트웨어 작성 전에 만들어야 어떠한 상태가 성공인가에 대해 의견 일치를 볼 수 있다. 고객 테스트 스위트(suite)를 가장먼저 자동화하여, Storytest-Driven Development 을 하기위해 노력 테스트는 언제 만들지 무엇 먼저 초록 막대 유지하기 적어도 “고객 테스트” 가 커버하지 못하는 공간에 대한 “단위 테스트”. 코드 체크인 하기 전에 “단위 테스트” 통과 시키기
  • 5. 개발 프로세스 - con’t 5 소프트웨어를 테스트 가능하게. 단위 테스트 결과적으로 -> 잘 정의된 객체와, 비즈니스 로직에만 집중 ( 비즈니스 로직 테스트는 데이터베이스에의 의존을 최소화) 테스트 주도 개발 의 장점 IF 고객이 최종적인 성공 상태를 정의하지 못한다거나, 고객 간에(ex 실무자 와 관리자) 성공 상태의 정의가 다르다면?
  • 6. 고객 테스트 6 고객이 정말 원하는, 성공했을 때 어떻게 보여야 하는가에 대한 정의 고객 테스트 자동화 방법 스크립트 기반 테스트(Scripted Test) 데이터 주도 테스트(Data-Driven Test) 기록 테스트 (Recorded Test) ( 깨지기 쉬운 테스트, Frangile Test) IF 애매한 테스트 결함 국소화 를 제공하지 못함 테스트가 길어지면? 멀 하려던 걸까… 어디가 문제란 걸까 ㅠ.ㅠ
  • 7. 고객 테스트 7 서비스 퍼사드(Service Façade) 피하 테스트(Subcutaneous Testing) , UI 건너 뛰기. 비즈니스 로직을 단순한 인터페이스로 캡슐화, Test Fixture 테스트의 시작점, 신선한 픽스처(Fresh Fixture)-> 서로 반응하는 테스트(Interacting Test) 을막아줌 테스트 대역(Test Double) 가짜 객체(Fake Object) 엮인 테스트-> 서로 반응하는 테스트 다음 장에서 다른 분들이 잘 해주실 거에요…..
  • 8. 효과적인 테스트가 되려면 단위 테스트 8 완전 자동 테스트 : public 인터페이스로 왕복 테스트(Round-Trip Test) 단일 조건 테스트 : 결함 국소화를 위해 하나의 시나리오 안에서 하나의 메소드나 객체만 실행 문서로서의 테스트 : 4단계 테스트의 각 부분을 쉽게 알 수 있도록테스트 작성 신선한 픽스처 자체 검사 서로 반응하는 테스트나 픽스처 해체를 고민하지 않아도 됨 테스트 대상 클래스별 테스트 케이스 클래스 생성 위임 설치를 통한 최소 픽스처(Minimal Fixture)생성, 최소 픽스처에는 적절한 이름의 생성 메서드 하나 이상의 기대 객체(Expected Object)와 테스트 대상 시스템(System Under Test,SUT)이 리턴하는 실제 객채와 비교 하는 방법으로 검사, 내장된 동등 단언문(Equality Assertion) 이나 맞춤 단언문(Custom Assertion) 사용 검증 메소드: 여러 테스트에서 같은 결과가 나올 것으로 예상되면 검증 로직을 뽑아내어 결과 표현.
  • 9. 단위 테스트 – con’t 9 실행시킬 방법을 찾지 못해 테스트 안 된 코드(Untested Code) 가 있다면 테스트 스텁을 사용해 SUT의 간접 입력을 제어 테스트스텁(Test Stub) 모의 객체(Mock Object) Public 인터페이스로 확인할 수 없는 경우 테스트 안된 요구 사항(Untested Requirement)이 생길 수 있다. 이럴 때 모의 객체(Mock Object) 로 SUT 의 간접 출력을 가로채어 검증
  • 10. 테스트하기 쉬운 설계 10 복잡하고 에러가 나기 쉬운 해체 코드ㅠ.ㅠ 느린 테스트 ( DB 접근, Disk IO) GUI 프레임워크랑 그래픽 객체 관리 ㅠ.ㅠ 레이어 아키텍처(Layered Architecture) 의 도입 - 테스트 자동화가 훨씬 간단해짐. - 비즈니스 로직을 쉽게 테스트 하려면, 적어도 데이타베이스나 사용자 인터페이스와 분리 해야 한다. 데이터베이스 샌드박스(Database Sandbox)와의 의존을 최소화 하기 위해 대부분의 테스트가 메모리에 있는 객체만 쓰도록 작성 GUI 로직을비주얼 클래스(Visual Classses)와 격리 모든 결정을 비 GUI 클레스에 위임하는 대강만든 다이얼로그(Humble Dialog)도입 자원 해체 코드작성 불 필요. 빨라진테스트 GUI 로직이 의존하는 프레임워크나 그래픽 객체 없이 GUI 로직 테스트 가능
  • 11. 테스트하기 쉬운 설계- con’t 11 애플리케이션이 너무 복잡하거나 다른 프로젝트에서 재사용될 컴퍼넌트의 테스트 컴퍼넌트가 의존하는 다른 컴퍼넌트를 대체 하려면 테스트 대역 사용 - 의존 주입(Dependency Injection) - 의존찾기(Dependency Loopup) - 상속받은 싱글턴(Subclassed Singleton) Component Test
  • 12.
  • 13. 패키지나 네임스페이스 안에 넣는 방식으로 테스트 스위트 객체에 차례차례 추가 가능.테스트 케이스 클레스에 테스트 메소드가 많아지면 ** 암묵적 설치 -> “픽스처별 테스트 케이스 클레스”를 사용시 픽스처 설치 코드를 setUp메소드에 옮겨 놓는것.
  • 14. 정리 1장은 간단한 소개일 뿐. 2장~14장 : 1장 내용의 상세화 자세히 알고 싶은 패턴이나 냄새는 2부나 3부 13