테스트 하기 쉬운 코드에서 테스트의 범위?
영상에서 종종 "테스트 하기 좋은 코드는 잘 설계된 코드일 것이다." 라는 말을 해주셨습니다. 어떤 테스트를 기준으로 테스트 하기 좋은 코드가 잘 설계된 코드일까요?
- 예를 들어 단위 테스트, 통합 테스트, 인수 테스트가 존재한다 하면, 세가지 테스트 중 어떤 테스트를 테스트하기 편한 코드를 기준으로 잡는게 좋을까요?
Answer 2
2
자문 자답 하겠습니다
질문에 대한 답은 단위 테스트 인것 같습니다. 단위 테스트를 통해 각 객체간의 책임을 잘 할당하게 되면, 단위 테스트를 작성할 시에, 해당 객체가 가진 책임을 위주로 테스트 코드를 작성할 수 있기에 "객체지향적으로 객체간의 책임과 역할을 잘 분배해서 설계했는지도 같이 검증이 될것 같습니다"
그렇다고, 통합 테스트나 인수 테스트가 불필요하다는 것은 아닌것 같습니다. 단위 테스트에서 검증하기 어려운 서비스의 한 기능을 검증하고, 객체 간의 의존성이 잘 연결되어 전체 시스템이 잘 작동하는지를 확인할 필요도 있기에 이후 강의에서 나오는 테스트 피라미드 모형 처럼 작성하는게 좋겠다 라고 생각이 들었습니다
0
안녕하세요. 답변이 늦어 죄송합니다. 커뮤니티에 2달이 넘어간 글들이 쌓여있는 것을 보니 여러모로 민망하고 미안한 마음입니다. 근래에 출판사로부터 좋은 제의를 받아 집필하느라 정신이 없었습니다.
자문자답 해주신 내용 전부 맞는 말입니다. :) 질문을 남기고도 끝까지 고민하셔서 이를 또 본인의 질문에 답으로 달아주시니 감사합니다. 개인적으로 어떤 답이라도 본인만의 결론을 만드는 게 중요하다고 생각하는 데 본받을 만한 것 같습니다. 그래서 아래는 약간의 첨언만 하였습니다.
우선 제가 영상에서 종종 이야기하는 ‘테스트하기 좋은 코드는 잘 설계된 코드일 것이다’라는 말중 테스트하기 좋은 코드 == 테스트하기 쉬운 코드입니다. 그리고 여기서 말하는 테스트하기 쉬운 코드란 사람의 노동이 적게 들어가는 방향이라고 이해해주시면 될 것 같습니다.
그렇다면 인수 테스트는 테스트하기 어려운 테스트입니다. 모든 테스트 중에서 가장 노동이 많이 들어가는 방향이기 때문입니다.
통합 테스트라는 말은 제가 좋아하질 않아서 이를 중형 테스트라고 이해하고 답변하겠습니다. 중형 테스트는 자동화된 테스트이니 그래도 인수 테스트보다는 조금 더 쉽다고 볼 수 있습니다. 하지만 테스트를 위해 외부 시스템과 연동을 해야 하니 단위 테스트에 비하면 노동이 조금 더 들어가는 방향입니다.
단위 테스트는 중형 테스트에 비하면 훨씬 쉬운 테스트입니다. 외부 연동을 하지 않아도 되고 테스트의 속도도 빠르기 때문입니다. 특히 mock과 fake까지 만들어 주지 않아도 된다면 더 좋을 것입니다.
부족하지만 답변이 되었으면 합니다. 감사합니다!
주니어 개발자가 더 나아가기 위한 조언을 부탁 드려도 될까요?
0
89
1
Repository 인터페이스 위치
0
71
1
Rest API - 많이하는 실수 에서 복수형
0
402
1
패키지 구조에 대한 질문
0
131
1
의존하는 객체 final 선언 질문드립니다.
0
159
1
의존성 주입에서 파라미터 주입과 필드 주입 관련 질문 드립니다.
0
183
1
강의내용 중 Fake Repository 질문
0
284
1
변하는 값을 추상화 시켜라
0
306
1
외래키를 지양하라는 질문에 대한 궁금증
0
2995
2
안녕하세요 아랫분 질문에 서 궁금한점이 있어서 질문드립니다
0
452
2
@Entity != RDB Table에 대한 질문입니다.
1
496
2
의존성조언에서 UserService의 login은 Clock에 의존하는지 모르지 않나요?
0
462
2
MySQL 사용에 대한 조언 질문있습니다.
0
865
2
강의와 크게 상관은 없지만 공부의 방향성에 대해서 질문합니다.
1
635
2
진짜 객체지향과 테스트하기 쉬운 코드를 위헤서는 jpa가 의미없는게 아닌가하는 생각이 들어요
2
1855
2
c. Collection,Map 질문
1
536
2
fake Repository로 테스트를 진행하려고 합니다,
1
1175
3
DB 엔티티와 도메인 분리
3
4700
2
도메인 객체 질문
1
582
2
Controller / application Service / Domain 의 역할 구분
1
1413
2
스프링에서 서비스 레이어(Apllication Layer) 테스트에 대한 질문입니다.
2
895
2
Repository 대신 Reader / Writer 사용 질문있습니다!!
1
709
2
ProductService부분에서 리팩토링 언급 질문
1
387
2
IoC != DI에 대한 질문입니다.
1
833
2

