inflearn logo
강의

Course

Instructor

Java/Spring Junior Developer's Mistake Notes

How far should we abstract?

테스트 하기 쉬운 코드에서 테스트의 범위?

Resolved

675

aorri96

4 asked

1

영상에서 종종 "테스트 하기 좋은 코드는 잘 설계된 코드일 것이다." 라는 말을 해주셨습니다. 어떤 테스트를 기준으로 테스트 하기 좋은 코드가 잘 설계된 코드일까요?

- 예를 들어 단위 테스트, 통합 테스트, 인수 테스트가 존재한다 하면, 세가지 테스트 중 어떤 테스트를 테스트하기 편한 코드를 기준으로 잡는게 좋을까요?

java spring 객체지향 소프트웨어-테스트

Answer 2

2

aorri96

자문 자답 하겠습니다

  • 질문에 대한 답은 단위 테스트 인것 같습니다. 단위 테스트를 통해 각 객체간의 책임을 잘 할당하게 되면, 단위 테스트를 작성할 시에, 해당 객체가 가진 책임을 위주로 테스트 코드를 작성할 수 있기에 "객체지향적으로 객체간의 책임과 역할을 잘 분배해서 설계했는지도 같이 검증이 될것 같습니다"

  • 그렇다고, 통합 테스트나 인수 테스트가 불필요하다는 것은 아닌것 같습니다. 단위 테스트에서 검증하기 어려운 서비스의 한 기능을 검증하고, 객체 간의 의존성이 잘 연결되어 전체 시스템이 잘 작동하는지를 확인할 필요도 있기에 이후 강의에서 나오는 테스트 피라미드 모형 처럼 작성하는게 좋겠다 라고 생각이 들었습니다

     

0

kok202

안녕하세요. 답변이 늦어 죄송합니다. 커뮤니티에 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