티스토리 뷰

2024년 07월 24일. 수요일에 있었던 테스트 코드 퇴근길 밋업 리뷰이다.

(링크)

 

당시 참가 신청을 했는데 바로 탈락해버렸었다.

 

봐야지 봐야지 하고 미루다가 연휴에 보고 내용을 정리해봤다.

 

#1 내 마음대로 되지 않는 테스트코드, 꼭 작성해야 할까? (희망편)

테스트를 왜 작성해야할까?

1. 테스트 자동화를 통해 비용 절감. 자동화를 통해 더 빠르고 자주 할 수 있게 된다.

2. 실패한 이유를 명확히 알기 위함 - 코드 결함을 빠르게 인지

3. 지속적 피드백 안정성과 생산성 향상

4. 테스트로 검증된 최신 명세를 제공할 수 있고, 심리적 안정감을 얻음

 

자주 반복 수행할 수 있는 테스트를 구축해야해야 한다.

 

1.  빠르게 동작하는 테스트 코드를 구축하는게 좋다.

- 단위 테스트 비중을 높이자

- 통합 테스트로 이루어지는 부분을 단위 테스트로 옮겨보자

 

2. 쉽게 깨지지 않는 테스트를 구축하는게 좋다.

- 테스트 더블(모킹)을 사용 : 실제 사용되는 객체를 교체하는 것을 의미

- 상세구현이 드러나지 않도록 하는 테스트

- 클라이언트가 목표로 하는 행위를 테스트하자

 

3. 회귀 방지를 잘해주는 테스트 : 코드 변경 시 발 생하는 문제를 잘 알려주는 테스트

- 코드가 변경되었을 때, 기능이 의도대로 동작하지 않는 경우

- 많은 부분을 검증하는 테스트를 구축하는게 좋다.

- 코드 복잡도가 높은 부분에 작성된 테스트를 하는게 좋다.

 

내가 생각하는 핵심 고민 중 하나를 잘 정리해줬다.

 

테스트를 작성하다보면 트레이드 오프 관계에 놓이는 경우가 많다.

 

그래서 통합 테스트와 단위테스트의 범위와 비중을 적절히 나누는게 중요하다.

 

#2 내 마음대로 되지 않는 테스트코드, 어떻게 작성해야 할까? (현실편)

인프런은 TDD를 사용하지 않음

 

1. 현실적인 테스트코드

구현 세부사항에 집착할수록 깨지기 쉬운 테스트를 만드게되나.

중간 과정에 속하는 구현 세부 사항을 검증 (findByEmail을 검증하려고 함)하려고 하면 안됨

테스트튼 최종 상태나 출력 결과를 표현하는 명세를 작성

 

테스트 작성 순서 : 작은 단위나 의존성이 거의 없는 영역을 먼저 테스트 : 단위 테스트
-> 도메인 규칙이나 복잡한 알고리즘을 다루는 곳
-> 엣지케이스!!

 

그런데 엣지 케이스는 어디까지 테스트해야하나?
- 의미없는 케이스, 성공하는 케이스만 테스트하기엔 빠른 테스트, 정확한 테스트를 만들기 힘들어진다.
- 경계값 테스트를 통해 해결, 경계값 테스트의 +-1 을 테스트 데이터로 사용한다.
- 랜덤값을 만들어주는 라이브러리나 랜덤값을 생성하는 객체를 만들어서 사용해보자

 

통합 테스트 : 의존성을 어떻게 할 것인가?
공유 의존성 : 서로의 결과에 영향을 미칠 수 있는 수단을 제공하는 의존성

비공개 의존성 : 공유하지 않는 시스템 내부 객체간의 의존성, 구현 세부사항에 속하는 경우가 많다. DB가 대표적 예시

프로세스 외부 의존성 : 어플리케이션 외부에서 실행되는 의존성, 데이터에 대한 프록시

 

공유 의존성과 프로세스 외부 의존성이 테스트 더블의 대상

데이터 베이스는 프로세스 외부 의존성 + 공유 의존성?

 

그러나 데이터베이스는 의존성이 아니라 구현 세부사항이라고 볼 수 있다.


- DB는 테스트 더블 대상이 아니다.
- DB는 시스템 외부에서 접근 불가하기 때문에, 구현 세부 사항에 속한다. 테스트 더블을 사용하게 되면 테스트가 깨지기 쉬움
- 외부에서 접근이 가능한 데이터 : 값이 변경되면 테스트가 깨지기 때문에 테스트 더블로 사용해한다. 
- 비관리 의존성 : 외부에서 접근이 가능
- 테스트 더블을 사용하지 않을 경우 최종 상태만을 검증한다.

 

2. 현실적인 고민

- 테스트 코드 작성 시간 확보와 테스트 코드 작성 속도가 문제

 

 

- 시간관리 잘해라 : 테스트 코드 작성시간을 확보하고 AI의 도움을 받아라

- 커버리지 집착하지마라

- 사용하지 않는 메소드 테스트 과감하게 삭제해라

 

마치며

내가 회사에서 했던 테스트 작업을 정리하면서, 다시한번 가다듬을 게 있을까하면서 봤던 밋업 리뷰였다.

 

짧지만 큰 도움이 될만한 내용이 많았다.

 

특히 내가 테스트를 구축하면서 했던 가장 큰 고민의 몇 가지 사례가 담겨있었는데

 

1. 데이터베이스를 어떻게 해야할까?

2. 단위 테스트를 어떻게 만들면 좋을까?

 

위 두 가지 물음에 나름대로의 결론을 내려줬다.

 

같은 회사에서 이런 고민을 공유할만한 사람들이 있다는게 부럽단 생각이 들었다.

 

8-9월 더워서 그런지 체력이 모자랐는데 선선해지고 있는 것 같으니 다시 피치를 올려야겠다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함