Search
🚧

[WIP] test coverage 높이기

subtitle
codecov, jest
Tags
test
Created
2021/05/06
2 more properties

make coverage report

istanbul
c8
jest coverage

coverage reporter

coveralls
codecov

coverage CI

github action

Current Code Coverage

1.
2021.05.07 기준 66.18%
첫 codecov 리포트. 그래도 이전에 테스트를 많이 추가해놔서 커버리지가 그렇게 낮은 편은 아니었다.
2. 2021.05.14 기준 74.91%
지난주 대비 8.73% 올랐다. 내가 테스트 커버리지 높이겠다며 테스크 코드를 작성하는 것을 보고, 동료 개발자도 PR을 날릴 때 테스트 코드를 작성해서 올렸다. 좋은 변화다. 후후.

test 추가하면서 배운 것들

1.
code
4.
puppeteer mockup 만들기(테스트할 function 에서 puppeteer가 쓰인 부분만)
code
puppeteer-core 패키지 mocking 후, puppeteer를 쓰던 대로 쓰면 된다.
code
5.
codecov bash upload
code
6.
BDD
describe-context-test
describe: 테스트 대상
context: 특정 상황, 상태
test: 구체적으로 기대하는 기능
jest-plugin-context (+ @types/jest-plugin-context)

Client Test

2021.05.18 화요일
클라이언트 테스트를 작성하면 좋은 것. e2e 테스트나 스타일 확인할 때 빼고는 로컬에서 실행해 확인할 필요없이 테스트만 실행하면 된다. 또한 개발 중일 때도 테스트를 watch 해놓으면 계속 버그나 기능 구현에 피드백을 받을 수 있다.
관심사의 분리: 페이지 내 리스트가 있다면 리스트 컴포넌트로 분리하고 테스트도 따로 한다.
react의 관심사: state reflection. 상태를 반영하는 것에 관심이 있지, 상태 관리에 관심 있는 것은 아니다.
redux의 관심사: state management
SRP(single responsibility principle): 단일 책임 원칙을 지켜 관심사를 분리하고 테스트를 쉽게 작성한다.
ListContainer: list에 대한 상태관리
BDD
상황에 따라 기대되는 행위를 기술하는 것
describe, context, it
context는 jest-context 라이브러리 사용
TDD란?
TDD를 잘하려면 설계를 잘해야 하고, 설계를 잘하려면 TDD를 잘해야 한다.
TDD는 '지뢰 탐지기'다
지금 개발하는 기능에 대해 테스트를 붙이는 것은 쉬우나, 나중에 거대해진 코드에 대해 테스트를 작성하는 것은 어려운 일이다. TDD를 하는 것은 미래의 고통을 현재로 가져오는 기술이다.
요구사항을 명확하게 하는 습관 → 요구 사항이 명확하지 않으면 테스트를 작성할 수 없다.
예제로서의 스펙
App.tsx 테스트
App 테스트는 비대해지는 경향이 있어서 e2e 테스트로 대체 중