# 서울숲_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 - 버그 및 결함이 줄어든다. - 단점 - 개발 기간이 늘어난다. - 생각치 못한 예외케이스가 존재할 수 있고, 테스트 코드를 작성하는 데 어려움이 발생한다면 테스트를 위해 코드의 구조를 바꿔야 하는 주객전도의 상황이 발생할 수 있다.