일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- HTML 태그 모음
- 슈도코드
- javascript 기초
- 2번째 페어
- 호이스팅
- 코딩게임
- Jest
- 코플릿
- nvm 설치
- supertest
- for of
- includes
- TIL
- for in
- foreach
- package.json
- Splice
- global scope
- local scope
- npm 설치
- immutable
- JavaScript Runtime
- 코드스테이츠 1일차
- indexof
- 스프린트 리뷰
- Bracket Notation
- testbuilder
- dot notation
- version control system
- node 설치
- Today
- Total
Honey-Programming
[TIL-015] 20.08.07 본문
1. Summary(3 Line)
프리코스 10일차(3줄 요약)
- 이제 절반이 지나갔다... 2주... 앞으로 2주 남았다
- 컨디션 관리를 잘하자...
- 오늘도 테스트 프레임 워크
2. Today's Todo
- TDD / BDD / DDD
- Test Framework
- Mocha
- chai
@ assert
@ expect
@ should
- Jest
- Supertest
- Jasmine
- Karma
#1. TDD / BDD / DDD
1) TDD (Test-Driven-Development)
: 테스트 주도 개발로써, 개발자는 요구되는 새로운 기능에 대한 자동화된 테스트케이스를 작성하고
해당 테스트를 통과하는 가장 짧고 가독성이 좋고 유지보수성이 뛰어난 코드를 작성한다.
2) BDD (Behavior-Driven-Development)
: TDD를 포함하고 있는 개념이면서 한발 더 나아가 시나리오 기반으로 테스트 케이스를 작성하며
함수 단위 테스트를 권장하지 않으며, 개발자가 아닌 사람이 봐도 이해할 수 있을 정도의 레벨을 권장한다
비지니스 요구 사항이 변경되었을 때 기존 테스트 코드를 수정하는데 있어 TDD보다 BDD가 효율적이다.
3) DDD (Domain-Driven-Development)
: 소프트웨어의 복잡성을 최소화하는 것이 목적이다. 요구사항을 쉽게 반영 할 수 있다. 테스트가 쉽다.
소통이 원활하게 이루어질 수 있다. 개발 범위를 쉽게 파악하고 스케줄링 할 수 있다. 설계의 일관성
BDD (Behaviour-Driven Development)에 대한 간략한 정리 | Popit
단위 테스트는 단순히 테스트 코드가 아니라 리펙토링을 위한 안전망이며 코드를 설명하는 문서 역할도 한다.
www.popit.kr
[개발상식] 22. 테스트 주도 개발에 대하여 - TDD와 BDD 그리고 DDD
TDD Test-Driven Development(TDD)는 매우 짧은 개발 서클의 반복에 의존하는 소프트웨어 개발 프로세스이다. 우선 개발자는 요구되는 새로운 기능에 대한 자동화된 테스트케이스를 작성하고 해당 케스��
asfirstalways.tistory.com
#2 Test Framework
1) Mocha
: 2011년부터 가장 인기있는 javascript 테스트 프레임 워크 중 하나 였다.
이점 : 확장성 용이 / 디버거 지원 / 모든 브라우저에 대한 지원 제공 / 정확한 보고
/ 개발자가 테스트 케이스 작성하기 매우 편리한 프레임 워크
설치 :
$ npm install mocha --global
$ npm install mocha --save-dev
Ex1) x를 n번 곱하는 함수, pow(x, n)를 구현하려 하는데, 유스 케이스를 만들어 본다. ( n은 자연수, n >= 0 )
Mocha 테스트 케이스는 3가지 주요 구성 요소 갖춰진다.
1. describe("title", function() { ... })
- 구현하고자 하는 기능에 대한 설명 pow가 어떤 동작을 하는지에 대한 설명
2. it("유스 케이스 설명", function() { ... })
- 첫 번째 인수(특정 유스 케이스에 대한 설명, 자연어로 작성)
- 두 번째 인수(유스 케이스 테스트 함수)
3. assert.equal(value1, value2)
- assert. * 은 pow가 예상한 대로 동작하는지 확인해준다.
밑에 assert.equal 함수는 인수끼리(value1, value2) 서로 동등 비교했을 때 다르면 에러를 반환
아래 코드에서 pow(2, 3) 의 결과값과 8을 비교한다
describe("pow", function() {
it("주어진 숫자의 n 제곱", function() {
assert.equal(pow(2, 3), 8);
});
});
Ex2) Testbuilder에 있는 예시1
describe("Diner's Club", function() {
it("has a prefix of 38 and a length of 14", function() {
if (detectNetwork("38345678901234") !== "Diner's Club") {
throw new Error("Test failed"); // throw new Error('예외가 되는 상황을 알려준다.')
}
});
it("has a prefix of 39 and a length of 14", function() {
if (detectNetwork("39345678901234") !== "Diner's Club") {
throw new Error("Test failed");
}
});
});
Ex3) Testbuilder에 있는 예시2
describe("American Express", function() {
// if/throw 구문은 번거로우므로 수를 하나 제공. 입력값이 true가 아닐 경우 에러를 발생
let assert = function(isTrue) {
if (!isTrue) {
throw new Error("Test failed");
}
};
it("has a prefix of 34 and a length of 15", function() {
assert(detectNetwork("343456789012345") === "American Express");
});
it("has a prefix of 37 and a length of 15", function() {
assert(detectNetwork("373456789012345") === "American Express");
});
});
nodejs 테스트 도구와 방법론 (테스트의 중요성, 전략, mocha, chai, sinon, istanbul, 유용한 팁)
1. 테스트를 왜 해야하는가? 테스트를 안하는 개발자는 없다. 코드 작성 후 서버를 뛰워서 api url을 호출해서 응답값을 확인해보고, UI에서 버튼을 눌러보고 하는 것도 모두 테스트이다. 그러나 여
sjh836.tistory.com
[Mocha]JavaScript에서 Unit Test하기 - 왕초보만
참고: [JUnit]JUnit IDE에서 사용하기(1) [JUnit]JUnit으로 유닛 테스팅하기(2) https://mochajs.org/ 유닛테스트에 대한 설명은 추가적으로 하지 않겠다. 어짜피 필요한 사람만 할테니까. 그런데 자세히 설명도
kamang-it.tistory.com
2) Chai
: Chai는 테스트에 필요한 헬퍼 함수들이 담긴 라이브러리입니다!
영어 문법에 가까운 코드로 테스트를 사용할 수 있게 도와줌
Chai도 Mocha와 거의 비슷한거 같았다. Chai는 3가지 방법이 있다.
설치 :
$ yarn global add chai
1) chai assert
: 기본적으로 node에서 제공하는 Assert 라이브러리와 유사
호출 방식 : chai.assert;
describe("Visa", function() {
let assert = chai.assert;
it("has a prefix of 4 and a length of 13", function() {
assert(detectNetwork("4123456789012") === "Visa");
});
it("has a prefix of 4 and a length of 16", function() {
assert(detectNetwork("4123456789012345") === "Visa");
});
it("has a prefix of 4 and a length of 19", function() {
assert(detectNetwork("4123456789012345678") === "Visa");
});
});
2) chai assert - expect 용법
: BDD 스타일로 제공되는 인터페이스 중 하나로 chaining을 제공하여 코드를 작성할 수 있게 해준다고 한다.
호출 방식 : chai.expect;
describe("MasterCard", function() {
let expect = chai.expect;
it("has a prefix of 51 and a length of 16", function() {
expect(detectNetwork("5112345678901234")).to.equal("MasterCard");
});
it("has a prefix of 52 and a length of 16", function() {
expect(detectNetwork("5212345678901234")).to.equal("MasterCard");
});
it("has a prefix of 53 and a length of 16", function() {
expect(detectNetwork("5312345678901234")).to.equal("MasterCard");
});
});
3) chai assert - should 용법
: BDD 스타일로 제공되는 인터페이스 중 하나로 chaining을 통한 API를 제공
호출 방식 : chai.should();
describe("MasterCard", function() {
let should = chai.should();
it("has a prefix of 54 and a length of 16", function() {
detectNetwork("5412345678901234").should.equal('MasterCard');
});
it("has a prefix of 55 and a length of 16", function() {
detectNetwork("5512345678901234").should.equal('MasterCard');
});
});
Chai
Powered by Open Source Chai is hosted on GitHub. Have a suggestion or found a bug? Fork this project to help make Chai even better. Even this documentation site is open source and available for contribution.
www.chaijs.com
Mocha Tutorial - Step 02. Chai
Step 01: Hello World!에서는 기본적인 Mocha 사용법에 대해 알아보았다.이번 Step 02에서는 Step 01: Hello World!에서 언급한 Assertion library에 대해 어떻게 사용하는지와 어떤 것인지를 알아보도록 하자.
kdydesign.github.io
3) Jest
: Facebook에서 사용하고 유지 관리하는 JavaScript 테스트 프레임 워크. '제로 구성' 테스트 경험을 제공
이점 : React 기반 애플리케이션에 가장 선호되는 프레임 워크(명확하고 편리한 UI 제공)
/ 빠르고 고성능 / 문서 지원이 포함 된 표준 구문 / 라이브 스냅 샷 사용
설치 : $ npm i -D jest
package.json 안에 test script 를 추가해준다."scripts": { ... "test": "jest" ... }
Jest로 기본적인 테스트 작성하기
Engineering Blog by Dale Seo
www.daleseo.com
4) Supertest
: mocha가 하나의 함수를 테스트했다면, 통합테스트(api 기능 테스트)에서 사용하는 라이브러리
api 서버라면 내부적으로 express 구동 -> 요청보낸 뒤 결과 검증까지함(시나리오 코드 작성)
설치 : npm i -D jest supertest
package.json 안에 test script 를 추가해준다."scripts": { ... "test": "jest" ... }
Node.js로 만든 API 테스트(supertest)
주로 웹 기술에 대해 이야기 합니다
jeonghwan-kim.github.io
5) Jasmin
: 2010년에 나온 JavaScript 테스트 프레임 워크. 모든 유형의 JavaScript 애플리케이션 테스트 가능
이점 : BDD (Behavioral Driven Development) 를 지원 / 깔끔하고 간단한 구문 제공 / DOM이 필요 없다
/ 프론트 엔드 테스트에 매우 유용 / 자연어와 매우 유사해서 코딩 쉽다 / 강력한 문서
6) Karma
: 오픈 소스 생산 테스트 환경. 다양한 환경에서 애플리케이션에 대한 테스트 수행 가능
이점 : 실제 기기 및 브라우저에서 테스트 가능 / 원격 테스트 지원
[node.js] TDD 라이브러리 - mocha, assert, should, supertest
[TDD : Test Driven Develop] - 테스트 주도 개발 : 처음부터 모든 기능을 개발하기보다 테스트 코드를 먼저 개발하고 테스트 한 뒤 개발 - 테스트 해보고 원하는 결과값이 나오는지 확인하고! - 유지 보��
jinbroing.tistory.com
'코드스테이츠 > Today I Learned' 카테고리의 다른 글
[TIL-018] 20.08.12 (0) | 2020.08.12 |
---|---|
[TIL-016] 20.08.10 (0) | 2020.08.10 |
[TIL-014] 20.08.06 (0) | 2020.08.06 |
[TIL-013] 20.08.05 (1) | 2020.08.05 |
[TIL-012] 20.08.04 (0) | 2020.08.04 |