관리 메뉴

나의 개발일지(김지헌)

항해 99 46일차 11/03일 본문

항해 99

항해 99 46일차 11/03일

코딩이좋아요 2022. 11. 3. 23:53

오늘은 클론 프로젝트가 끝나고 금요일부터 실전 프로젝트가 시작된다. 아직 부족한게 많은데 막상 실전 프로젝트를 할려고 하니 걱정도 많이 되고 부족한게 많은데 리더를 하게 되어서 더욱 더 긴장이 되는거 같다. 팀원들과 의사소통도 중요하고 할 것도 많고 많이 공부도 해야하는데 잘 할 수 있을까라는 생각을 많이 하게 되는거 같다. 그래도 리더를 맡았는데 책임감을 가지고 해야할꺼 같다. 많이 공부해서 팀원들을 많이 알려주고 싶다.

-- 테스트 코드 작성하기 --

API의 구성만 하기에도 바빠서 테스트 코드를 쓰지 못했는데 자기전에 잠깐 공부를 하고 잘려고 한다.

우리가 작성한 API가 제대로 동작하는지 또 원하는 결과 값이 나왔는지를 테스트 하기 위해 작성 하는 코드이다.

Sequelize의 Test 환경 구성하기

SequelizeMySQL을 연결할 때, NODE_ENV를 test로 설정할 경우 기존에 설정된 DB가 아닌, config.json에 test 부분에 설정된 값으로 DB를 연결 할 수 있습니다.

Integration Test를 실행할 때, 기존에 사용하는 Development 환경이 아닌, test DB를 사용할 경우 데이터를 언제든지 자유롭게 관리 할 수 있고, 생성삭제가 쉽게 가능해집니다.

많이 사용하는 Jest 문법

toBe(value)

입력받은 결과값과 동일한지 비교합니다.

만약 Instance를 비교하려 한다면, Instance의 ID까지 비교하므로 엄격하게 동일한지 검증합니다.

.toEqual(value)

입력받은 결과값과 동일한지 비교합니다.

.toMatch(regexp | string)

입력받은 결과값과 문자열이 같은지 검증합니다.

String 또는 정규표현식으로 검증할 수 있습니다.

.toBeTruthy()

결과값이 True인지 검증합니다.

.toBeInstanceOf(Class)

입력받은 값과 Class가 동일한 Instance인지 검증합니다.

Error를 검증할 때 주로 사용합니다.

.toHaveProperty(keyPath, value?)

입력받은 객체의 Key와 Value가 일치하는지 검증합니다.

.toMatchObject(object)

결과값의 객체와 입력받은 객체가 일치하는지 검증합니다.

만약 입력받은 객체에서 없는 속성이 있더라도 일치하게끔 연결합니다.

.toHaveBeenCalledTimes(number)

Mock이 몇번 호출되었는지 검증합니다.

.toHaveBeenCalledWith(arg1, arg2, ...)

어떤 인자를 이용해 Mock이 호출되었는지 검사합니다.

 

테스트란 (feat: Clean Code)

  • T1: 불충분한 테스트
  • 테스트 케이스는 잠재적으로 깨질 만한 부분을 모두 테스트해야 한다. 테스트 케이스가 확인하지 않는 조건이나 검증하지 않는 계산이 있다면 그 테스트는 불완전하다.
  • T2: 커버리지 도구를 사용하라
  • 커버리지 도구는 테스트가 빠뜨리는 공백을 알려준다. 커버리지 도구를 사용하면 테스트가 불충분한 모듈, 클래스, 함수를 찾기 쉬워진다.
  • T3: 사소한 테스트를 건너뛰지 마라
  • 사소한 테스트는 짜기 쉽다. 사소한 테스트가 제공하는 문서적 가치는 구현에 드는 비용을 넘어선다.
  • T4: 무시한 테스트는 모호함을 뜻한다.
  • 때로는 요구사항이 불분명하기에 프로그램이 돌아가는 방식을 확신하기 어렵다. 불분명한 요구사항은 테스트 케이스를 주석으로 처리하거나 테스트 케이스에 @ignore를 붙여 표현한다.
  • T5: 경계 조건을 테스트하라
  • 경계 조건은 각별히 신경 써서 테스트한다. 알고리즘의 핵심 조건은 올바로 짜놓고 경계 조건에서 실수하는 경우가 흔하다.
  • T6: 버그 주변은 철저히 테스트하라
  • 버그는 서로 모이는 경향이 있다. 한 함수에서 버그를 발견했다면 그 함수를 철저히 테스트하는 편이 좋다.
  • T7: 실패 패턴을 살펴라
  • 테스트 케이스가 실패하는 패턴으로 때때로 문제를 진단할 수 있다. 합리적인 순서로 정렬된 꼼꼼한 테스트 케이스는 실패 패턴을 드러낸다.
  • T8: 테스트 커버리지 패턴을 살펴라
  • 통과하는 테스트가 실행하거나 실행하지 않는 코드를 살펴보면 실패하는 테스트 케이스의 실패 원인이 드러난다.

 

항해에서 제공하는 강의 자료입니다.

'항해 99' 카테고리의 다른 글

항해 99 48일차 11/05일  (0) 2022.11.06
항해 99 47일차 11/04일  (0) 2022.11.05
항해 99 45일차 11/02일  (0) 2022.11.03
항해 99 44일차 11/01일  (0) 2022.11.02
항해 99 43일차 10/31일  (0) 2022.11.01