새로운 코드는 무조건 에러가 난다! 제대로 된 소프트웨어를 구현했는가? 소프트웨어를 제대로 개발했는가? 확인하기 위해 필요한 과정.
code ⇒ Expected Result ⇒ Test ⇒ Failure ⇒ Modify & Fix
Why Test?
- 결함 확인, 사전 방지, 시간 절약, 구조 개선, 품질 개선, 확장성
- 내가 만든 코드를 내가 만든 테스트 코드로 자동화 테스트
- 내가 짠 테스트 코드가 오류를 생성해낼지도…? 고로 잘 짜야한다. ⇒ 확장성
- 올바르게 작동될 때 여러 케이스에 적용해보고 제대로 테스트가 되는지 확인 할 수 있음.
개발문화 변천사
- WaterFall → Real Time Test(Test Dribble Development)
- 테스트 코드를 기준으로 나머지 코드를 맞추기…
- 입사한 회사가 TDD 방식이라면 테스트 코드 뜯어보기 ⇒ API document처럼 파악하기
- JDD?(프로젝트에서 절대 하면 안되는 …. 반면교사)
Manual Testing
- 수동 테스팅은 불안정성 증가
- 인력 소모 증가
- 비용 증가
- 테스트 속도 저하
Automation Testing
- 안정성 증가
- 인력 소모 절감
- 비용 절감
- 테스트 속도 증가
시스템 테스트 전략 3가지
- End-to-End(E2E) Tests : cypress(프론트엔드 + 백엔드) || 10%
- Integration Tests(통합 테스트) : postman(톱니바퀴끼리 잘 맞물리는지)/ 모듈간 호환성 검증 || 20%
- UnitTests(단위 테스트) : 독립적인 기능 단위 테스트(톱니바퀴 자체) ⇒ 각각의 함수가 잘 되는지 || 70%
⇒ %는 중요도! 시간이 이만큼 소요된다…/ 구글에서 만듬
단위테스트 작성 필요성
- 빠른 문제파악 가능
- 시간, 비용 절감
- 리팩토링 시 안정성 확보
- 코드에 대한 문서로 활용
코드 커버리지
반드시 살피자!