---
# System prepended metadata

title: 서울숲_S_Day09 리뷰 레포트

---

# 서울숲_S_Day09 리뷰 레포트

### 참석자

- 정예원 김민성 김희라 이충섭

## 1. 코드 동작 이해

`lib/tester.js` 에서 test, assert, equal, notEqual, detailEqaul 을 구현하여 `spec/souce.test.js` 에 있는 테스트 코드를 완성한다. `src/source.js` 에는 promise를 반환하는 비동기함수인 `appendLazy` 가 있으며, 테스트 코드에 포함된다. `async/await` 으로 비동기 로직을 처리하였다.



## 2. 코드 동작 개선

#### 김희라, 정예원
 - `spec/souce.test.js` 에서 asyncTest는 한번만 실행되므로 즉시 실행함수로 변경

#### 김민성
 - 사용자의 입력을 받을때 올바른 입력인지 예외처리를 하는 부분을 수정하였다. 예를 들어 assert.detailEqual에서 입력으로 들어온게 배열이 맞는지, 두 배열의 길이가 같은지 등



## 3. Consideration

### 다같이 확인할 사항

#### 1. 라이브러리에서 제공하는 유용한 기능 제공

> 인기있는 테스트프레임워크나 테스트라이브러리를 찾아본다. 거기에서 제공하는 유용한 기능이 있다면, 이를 흉내낼 수 있는 구현 방법을 고민해본다. 유용한 기능은, **함수이거나 동작방식**등 다양하게 선택한다.

[참고](https://jinbroing.tistory.com/148)

 ### mocha, assert
 - 테스트 코드 작성 후 실행 해보는 테스트 러너, 테스트 베이스를 만들기 쉬움, 테스트 결과를 알기쉽게 보여줌
 - 테스트 수트, 케이스 : 테스트를 위한 환경을 만들어준다.
 - mocha : 모듈 패키지 내 실행파일로 테스트 코드 실행
 - assert : 실행 결과를 비교하기위해 사용하는 내장 모듈, 테스트할 때 가장 필요한 모듈
 
 ### should
 - 테스트 코드를 검증할 때 사용하는 써드파티 라이브러리
 - mocha가 하나의 함수를 테스트했다면, 통합테스트(api 기능 테스트)에서 사용하는 라이브러리
- api 서버라면 내부적으로 express 구동 -> 요청보낸 뒤 결과 검증까지함(시나리오 코드 작성)
 
 ### supertest
 -  테스트 환경에서 api 테스트할 수 있게 해준다.
 -  하나의 함수가 아닌 통합테스트(api 기능 테스트)에서 사용하는 라이브러리.
 -  api 서버라면 내부적으로 express 구동 -> 요청보낸 뒤 결과 검증까지함(시나리오 코드 작성)


#### 2. TDD

>  TDD 방식을 찾아본후, TDD의 장점과 단점은 무엇일까? 토론해본다.
- TDD(Test Driven Development): 테스트케이스를 작성 한 후 실제 코드를 개발하는 소프트웨어 개발 프로세스
    - 디자인 -> testcase -> 코드 개발(리팩토링)
    - 요구사항과 피드백 사이의 갭을 인식, 줄이기 위한 프로세스
    - 불확실성이 높은 경우 요구되는 방식

- 장점
    - 프로그램의 품질은 높이고 안정성을 확보할 수 있다.
    - 리팩토링 및 유지보수가 편리하다.
    - 코드 복잡도가 떨어진다. => Clean Code
    - 버그 및 결함이 줄어든다.
    
- 단점
    - 개발 기간이 늘어난다.
    - 생각치 못한 예외케이스가 존재할 수 있고, 테스트 코드를 작성하는 데 어려움이 발생한다면 테스트를 위해 코드의 구조를 바꿔야 하는 주객전도의 상황이 발생할 수 있다.