SlideShare a Scribd company logo
1 of 17
BDD 테스팅 소개와 도입
2017.01.12
목차
2
1. BDD ?
2. BDD 테스팅 도구(JS)
3. 도입 예제
4. Karma(test runner) 연동
5. 참고(자동화)
1. BDD ?
3
TDD와 유사. 집중하는 대상의 차이.
테스트 주도 개발(Test Driven Development)
* 메소드에 중점을 두고 진행
행위 주도 개발(Behavior Driven Development)
* 비즈니스 로직에 중점을 두고 진행
TDD & BDD:
* 코드 작성전에 테스트를 먼저 작성
* “Red – Green – Refactor” Cycle
* Acceptance test: spec 이 만족되었는지 확인하는 테스트
비즈니스 로직을 기준으로 테스
팅이 진행되므로, 프로젝트에 관
련된 모두(stakeholders)가 참여
하는게 바람직
1. BDD ?
4
TDD 과정:
# the test
describe "User", ->
it "성과 이름을 제공합니다", ->
user = new User
1. RED: fail 테스트 작성 후 테스트에서 fail 을 확인.
#the code
class User
2. Green: 테스트를 통과하는 최소의 코드 작성.
3. Refactor:
코드 정리 후 1번으로 돌아가 다음 기능 테스트 작성
# the test
describe "User", ->
it "성과 이름을 제공합니다", ->
user = new User
user.setFullName "seulgi choi"
#the code
class User
setFullName: (fullName) ->
1. BDD ?
5
비즈니스 로직을 기준으로 TDD 를 수행한다.
특정 메소드가 아닌 특정 기능이 어떻게 동작하는지 테스트
2. BDD 테스팅 도구(JS)
6
1. Mocha
2. Jasmine
공통점:
테스트 작성 구조
차이점:
assertion, mocking 등 사용 시 외부 library 필요 여부
Mocha:
“chai” library
to.be
to.equal
should.be
….
Jasmine:
toBe
toEqual
….
Mocha:
“sinon” library
sinon.spy
sinon.stub
Jasmine:
spyOn
describe(“대상”,
it(“무엇을 하는지“,
expect() // 무슨 결과를 예상하는지
)
)
3. 도입 예제
7
Jasmine 은 로컬에서 결과를 확인할 수 있다.
1. Jasmine 다운로드
3. 결과를 페이지에 보여주는 것을 도와줄 파일 로드
4. 테스트 대상 코드 및 테스트 코드를 로드
2. 테스트/코드 작성 cycle
3. 도입 예제
8
Jasmine 은 로컬에서 결과를 확인할 수 있다.
1. Jasmine 다운로드
2. 테스트/코드 작성 cycle
RED
테스트를 통과할 최소의 코드 작성TWMap.test.js
3. 도입 예제
9
RED
GREEN
REFACTOR
테스트 통과 코드 작성
TWMap.js
TWMap.test.js
3. 도입 예제
10
GREEN
위 과정을 반복
TWMap.js
4. Karma(test runner) 연동
11
테스트 코드를 실행시키는데 도움을 주는 툴
1. Karma 설치
2. config 에 테스트를 위한 코드 및 브라우저 정보 입력
Node.js 에서 실행되기 때문에 node.js 를 먼저 다운/설치 후 다음 명령어를 통해 Karma 설치를 진행한다
# Install Karma: Karma 설치
$ npm install karma –save-dev
# Install plugins that your project needs: 프로젝트에 필요한 플러그인 설치(Jasmine, Chrome launcher 등)
$ npm install karma-jasmine karma-chrome-launcher jasmine-core --save-dev
# windows 에서 nodejs prompt 로 실행 시 에러나므로, 다음 명령어를 통해 karma-cli 설치가 필요함
$ npm install -g karma-cli
# karma.conf.js 생성. 대화형으로 config 설정을 진행할 수 있음
$ karma init
4. Karma(test runner) 연동
12
2. config 에 테스트를 위한 코드 및 브라우저 정보 입력
실행할 코드 목록(html load 순서)
테스트 시 실행할 브라우저 목록
4. Karma(test runner) 연동
13
3. Karma 실행
$ karma start
4. Karma(test runner) 연동
14
3. Karma 실행
4. Karma(test runner) 연동
15
3. Karma 실행(에러 발생)
최종 에러 갯수
4. Karma(test runner) 연동
16
3. Karma 실행(debug 버튼 클릭 시)
에러 정보
5. 참고(자동화)
17
Jasmine – Testing Library
: 테스트 코드 작성
Karma – Test Runner
: 여러브라우저에서 자동으로 테스트
Jenkins – CI tool
: 자동화 빌드 및 테스트
Jenkins 소개1
Jenkins 소개2
Karma 소개1
Karma 소개2 - nhnent
Jasmine 소개1
Jasmine 소개2 - nhnent

More Related Content

What's hot

Testing & refactoring
Testing & refactoringTesting & refactoring
Testing & refactoringLim Hosung
 
111 n grinder-deview_day1_track1_session_1_ver_2
111 n grinder-deview_day1_track1_session_1_ver_2111 n grinder-deview_day1_track1_session_1_ver_2
111 n grinder-deview_day1_track1_session_1_ver_2NAVER D2
 
Test Driven Development (TDD) basic
Test Driven Development (TDD) basicTest Driven Development (TDD) basic
Test Driven Development (TDD) basicCurt Park
 
공감세미나 성능테스트
공감세미나 성능테스트공감세미나 성능테스트
공감세미나 성능테스트Lim SungHyun
 
[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스철민 신
 
테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)KH Park (박경훈)
 
Pmd step by step v0p1
Pmd step by step v0p1Pmd step by step v0p1
Pmd step by step v0p1jaewon kim
 
Tdd live spring camp 2013
Tdd live spring camp 2013Tdd live spring camp 2013
Tdd live spring camp 2013beom kyun choi
 
필요해서 하는 개발 자동화
필요해서 하는 개발 자동화필요해서 하는 개발 자동화
필요해서 하는 개발 자동화none
 
내가써본 nGrinder-SpringCamp 2015
내가써본 nGrinder-SpringCamp 2015내가써본 nGrinder-SpringCamp 2015
내가써본 nGrinder-SpringCamp 2015Lim SungHyun
 
TDD: Test Driven Development 첫번째 이야기
TDD: Test Driven Development 첫번째 이야기TDD: Test Driven Development 첫번째 이야기
TDD: Test Driven Development 첫번째 이야기Ji Heon Kim
 
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 TestOkjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 Testbeom kyun choi
 
행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스도형 임
 
E1_Deview nhn애자일개발 tdd_질문답
E1_Deview nhn애자일개발 tdd_질문답E1_Deview nhn애자일개발 tdd_질문답
E1_Deview nhn애자일개발 tdd_질문답NAVER D2
 
테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)도형 임
 

What's hot (20)

Testing & refactoring
Testing & refactoringTesting & refactoring
Testing & refactoring
 
111 n grinder-deview_day1_track1_session_1_ver_2
111 n grinder-deview_day1_track1_session_1_ver_2111 n grinder-deview_day1_track1_session_1_ver_2
111 n grinder-deview_day1_track1_session_1_ver_2
 
Test Driven Development (TDD) basic
Test Driven Development (TDD) basicTest Driven Development (TDD) basic
Test Driven Development (TDD) basic
 
공감세미나 성능테스트
공감세미나 성능테스트공감세미나 성능테스트
공감세미나 성능테스트
 
[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스
 
테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)
 
Pmd step by step v0p1
Pmd step by step v0p1Pmd step by step v0p1
Pmd step by step v0p1
 
Tdd live spring camp 2013
Tdd live spring camp 2013Tdd live spring camp 2013
Tdd live spring camp 2013
 
필요해서 하는 개발 자동화
필요해서 하는 개발 자동화필요해서 하는 개발 자동화
필요해서 하는 개발 자동화
 
내가써본 nGrinder-SpringCamp 2015
내가써본 nGrinder-SpringCamp 2015내가써본 nGrinder-SpringCamp 2015
내가써본 nGrinder-SpringCamp 2015
 
TDD: Test Driven Development 첫번째 이야기
TDD: Test Driven Development 첫번째 이야기TDD: Test Driven Development 첫번째 이야기
TDD: Test Driven Development 첫번째 이야기
 
TDD
TDDTDD
TDD
 
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 TestOkjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
 
Work With Engineer
Work With EngineerWork With Engineer
Work With Engineer
 
행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스
 
C++과 TDD
C++과 TDDC++과 TDD
C++과 TDD
 
E1_Deview nhn애자일개발 tdd_질문답
E1_Deview nhn애자일개발 tdd_질문답E1_Deview nhn애자일개발 tdd_질문답
E1_Deview nhn애자일개발 tdd_질문답
 
테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)
 
Tdd ver.2
Tdd ver.2Tdd ver.2
Tdd ver.2
 
Tdd with JUnit 1
Tdd with JUnit 1Tdd with JUnit 1
Tdd with JUnit 1
 

Similar to Bdd 개요 및 Karma 도입 예

Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발지수 윤
 
Spark performance tuning
Spark performance tuningSpark performance tuning
Spark performance tuninghaiteam
 
make hybrid app.
make hybrid app.make hybrid app.
make hybrid app.jiseob kim
 
Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기hanbeom Park
 
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기hajaekwon
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계Leonardo YongUk Kim
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)YEONG-CHEON YOU
 
델파이 소스코드의재발견
델파이 소스코드의재발견델파이 소스코드의재발견
델파이 소스코드의재발견Devgear
 
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018Kenneth Ceyer
 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rdPark Jonggun
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST_NHNent
 
Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Samsung Electronics
 
테스트가 뭐예요?
테스트가 뭐예요?테스트가 뭐예요?
테스트가 뭐예요?Kyoung Up Jung
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정leejungwang
 
postgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdfpostgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdfLee Dong Wook
 
Mago3 d 워크샵
Mago3 d 워크샵Mago3 d 워크샵
Mago3 d 워크샵정대 천
 
mago3D 기술 워크샵 자료(한국어)
mago3D  기술 워크샵 자료(한국어)mago3D  기술 워크샵 자료(한국어)
mago3D 기술 워크샵 자료(한국어)SANGHEE SHIN
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)SangIn Choung
 

Similar to Bdd 개요 및 Karma 도입 예 (20)

Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발
 
Spark performance tuning
Spark performance tuningSpark performance tuning
Spark performance tuning
 
make hybrid app.
make hybrid app.make hybrid app.
make hybrid app.
 
Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기
 
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
 
델파이 소스코드의재발견
델파이 소스코드의재발견델파이 소스코드의재발견
델파이 소스코드의재발견
 
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018
 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
 
Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900
 
테스트가 뭐예요?
테스트가 뭐예요?테스트가 뭐예요?
테스트가 뭐예요?
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정
 
Php
PhpPhp
Php
 
postgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdfpostgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdf
 
Mago3 d 워크샵
Mago3 d 워크샵Mago3 d 워크샵
Mago3 d 워크샵
 
mago3D 기술 워크샵 자료(한국어)
mago3D  기술 워크샵 자료(한국어)mago3D  기술 워크샵 자료(한국어)
mago3D 기술 워크샵 자료(한국어)
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
 

Bdd 개요 및 Karma 도입 예

  • 1. BDD 테스팅 소개와 도입 2017.01.12
  • 2. 목차 2 1. BDD ? 2. BDD 테스팅 도구(JS) 3. 도입 예제 4. Karma(test runner) 연동 5. 참고(자동화)
  • 3. 1. BDD ? 3 TDD와 유사. 집중하는 대상의 차이. 테스트 주도 개발(Test Driven Development) * 메소드에 중점을 두고 진행 행위 주도 개발(Behavior Driven Development) * 비즈니스 로직에 중점을 두고 진행 TDD & BDD: * 코드 작성전에 테스트를 먼저 작성 * “Red – Green – Refactor” Cycle * Acceptance test: spec 이 만족되었는지 확인하는 테스트 비즈니스 로직을 기준으로 테스 팅이 진행되므로, 프로젝트에 관 련된 모두(stakeholders)가 참여 하는게 바람직
  • 4. 1. BDD ? 4 TDD 과정: # the test describe "User", -> it "성과 이름을 제공합니다", -> user = new User 1. RED: fail 테스트 작성 후 테스트에서 fail 을 확인. #the code class User 2. Green: 테스트를 통과하는 최소의 코드 작성. 3. Refactor: 코드 정리 후 1번으로 돌아가 다음 기능 테스트 작성 # the test describe "User", -> it "성과 이름을 제공합니다", -> user = new User user.setFullName "seulgi choi" #the code class User setFullName: (fullName) ->
  • 5. 1. BDD ? 5 비즈니스 로직을 기준으로 TDD 를 수행한다. 특정 메소드가 아닌 특정 기능이 어떻게 동작하는지 테스트
  • 6. 2. BDD 테스팅 도구(JS) 6 1. Mocha 2. Jasmine 공통점: 테스트 작성 구조 차이점: assertion, mocking 등 사용 시 외부 library 필요 여부 Mocha: “chai” library to.be to.equal should.be …. Jasmine: toBe toEqual …. Mocha: “sinon” library sinon.spy sinon.stub Jasmine: spyOn describe(“대상”, it(“무엇을 하는지“, expect() // 무슨 결과를 예상하는지 ) )
  • 7. 3. 도입 예제 7 Jasmine 은 로컬에서 결과를 확인할 수 있다. 1. Jasmine 다운로드 3. 결과를 페이지에 보여주는 것을 도와줄 파일 로드 4. 테스트 대상 코드 및 테스트 코드를 로드 2. 테스트/코드 작성 cycle
  • 8. 3. 도입 예제 8 Jasmine 은 로컬에서 결과를 확인할 수 있다. 1. Jasmine 다운로드 2. 테스트/코드 작성 cycle RED 테스트를 통과할 최소의 코드 작성TWMap.test.js
  • 9. 3. 도입 예제 9 RED GREEN REFACTOR 테스트 통과 코드 작성 TWMap.js TWMap.test.js
  • 10. 3. 도입 예제 10 GREEN 위 과정을 반복 TWMap.js
  • 11. 4. Karma(test runner) 연동 11 테스트 코드를 실행시키는데 도움을 주는 툴 1. Karma 설치 2. config 에 테스트를 위한 코드 및 브라우저 정보 입력 Node.js 에서 실행되기 때문에 node.js 를 먼저 다운/설치 후 다음 명령어를 통해 Karma 설치를 진행한다 # Install Karma: Karma 설치 $ npm install karma –save-dev # Install plugins that your project needs: 프로젝트에 필요한 플러그인 설치(Jasmine, Chrome launcher 등) $ npm install karma-jasmine karma-chrome-launcher jasmine-core --save-dev # windows 에서 nodejs prompt 로 실행 시 에러나므로, 다음 명령어를 통해 karma-cli 설치가 필요함 $ npm install -g karma-cli # karma.conf.js 생성. 대화형으로 config 설정을 진행할 수 있음 $ karma init
  • 12. 4. Karma(test runner) 연동 12 2. config 에 테스트를 위한 코드 및 브라우저 정보 입력 실행할 코드 목록(html load 순서) 테스트 시 실행할 브라우저 목록
  • 13. 4. Karma(test runner) 연동 13 3. Karma 실행 $ karma start
  • 14. 4. Karma(test runner) 연동 14 3. Karma 실행
  • 15. 4. Karma(test runner) 연동 15 3. Karma 실행(에러 발생) 최종 에러 갯수
  • 16. 4. Karma(test runner) 연동 16 3. Karma 실행(debug 버튼 클릭 시) 에러 정보
  • 17. 5. 참고(자동화) 17 Jasmine – Testing Library : 테스트 코드 작성 Karma – Test Runner : 여러브라우저에서 자동으로 테스트 Jenkins – CI tool : 자동화 빌드 및 테스트 Jenkins 소개1 Jenkins 소개2 Karma 소개1 Karma 소개2 - nhnent Jasmine 소개1 Jasmine 소개2 - nhnent