[워밍업 클럽 3기 BE code] 2주차 발자국
강의 수강
테스트는 왜 필요할까?
추가한 기능이 기존 프로덕션 코드와 겹치는 상황(기존 코드를 건드리는 상황) 발생
이런 일들이 비일비재함
이런 상황에서 사람이 테스트를 진행하면 문제가 발생할 확률이 높음
- 커버할 수 없는 영역 발생
- 경험과 감에 의존
- 늦은 피드백
- 유지보수 어려움
- 소프트웨어 신뢰도 낮아짐
테스트코드를 통해 얻고자 하는 것
- 빠른 피드백
- 자동화
- 안정감
만약 테스트코드가 엉망이라면?
프로덕션코드를 잘 지원하지 못한다.
테스트코드를 잘 짜야한다.
테스트코드를 작성하지 않는다면?
- 변화가 생기는 매순간마다 발생할 수 있는 모든 Case를 고려해야 한다.
- 변화가 생기는 매순간마다 모든 팀원이 동일한 고민을 해야 한다.
- 빠르게 변화하는 소프트웨어의 안정성을 보장할 수 없다.
테스트코드가 병목이 된다면?
- 프로덕션 코드의 안정성을 제공하기 힘들어진다.
- 테스트코드 자체가 유지보수하기 어려운, 새로운 짐이 된다.
- 잘못된 검증이 이루어질 가능성이 생긴다.
올바른 테스트코드는?
- 자동화 테스트로 비교적 빠른 시간 안에 버그를 발견할 수 있고, 수동 테스트에 드는 비용을 크게 절약할 수 있다.
- 소프트웨어의 빠른 변화를 지원한다.
- 팀원들의 집단 지성을 팀 차원의 이익으로 승격시킨다.
- 가까이 보면 느리지만, 멀리 보면 가장 빠르다.
단위 테스트
- 작은 코드 단위(클래스, 메서드)를 독립적으로 검증하는 테스트
- 검증 속도가 빠르고, 안정적이다.
JUnit 5
- 단위 테스트를 위한 테스트 프레임워크
- Xunit(SUnit, JUnit, NUnit...) - Kent Beck
AssertJ
- 테스트 코드 작성을 원활하게 돕는 테스트 라이브러리
- 풍부한 API, 메서드 체이닝 지원
테스트 케이스 세분화하기
질문하기: 암묵적이거나 아직 드러나지 않은 요구사항이 있는가?
- 해피 케이스
- 예외 케이스
경계값 테스트 중요! -> 범위(이상, 이하, 초과, 미만), 구간, 날짜 등
회고
테스트코드 강의를 처음 학습하였다.
이전부터 테스트코드가 중요하다는 것을 많이 들어왔지만, 실제로 많이 작성해보진 못했다.
강의를 통해 테스트코드의 중요성과 테스트 방법에 대해 배웠고 내 프로젝트에도 적용해 볼 생각이다.
앞으로 배우는 구체적인 내용들도 학습해서 테스트코드를 잘 작성할 수 있도록 노력해야겠다.
댓글을 작성해보세요.