일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 인프런
- AOP
- JSP
- Model1
- 롬복
- Model2
- 김영한
- 프로그래머스
- select
- Lombok
- @RestController
- 프레임워크
- 스프링
- 코테
- MVC2
- STS
- DDL
- 인텔리제이
- 기술 대비
- Join
- SQL
- 서블릿
- @Controller
- MVC
- toUpperCase
- 코딩테스트
- 뉴렉처
- 자바
- 메이븐
- 서브쿼리
- Today
- Total
Heestory
기술 대비 ) TDD(Test-Driven Development) 본문
매우 짧은 개발 사이클의 반복에 의존하는 개발 프로세스로, 개발자는 우선 요구되는 기능에 대한 테스트 케이스와 코드를 작성하고 상황에 맞게 리팩토링 하는 테스트 주도 개발 방식을 의미합니다.
새로운 기능을 추가하기 전 테스트를 먼저 작성한다. 테스트를 작성하기 위해 개발자는 해당 기능의 요구사항과 명세를 분명히 이해하고 있어야 하기 때문에 요구사항에 집중 할 수 있게 하고 새로운 기능이 제대로 작동함과 동시에 기존의 기능들이 작 작동하는지 테스트를 통해 확인할 수 있다.
이러한 테스트를 통해 계속해서 리팩토링을 진하고, 리팩토링 속도도 빨라지고 코드의 리티도 향상시켜 보다 객체지향적이고 확장 가능이 용이한 코드, 재설계의 시간을 단축시킬 수 있는 코드, 디버깅 시간이 단축되는 코드가 생성될 수 있다.
1. Junit4와 Junit5의 차이점에 대해 설명해주세요
- 카테고리: [JAVA]
- 문제 난이도: [NEW, JUNIOR]
Junit4는 junit 라이브러리만 정의하면 되지만 junit5는 3가지의 모듈을 정의해야 한다
- junit platform : 테스트를 실행해주는 런처를 제공(일종의 컨텍스트), TestEngine API 제공(실제 구현체는 별도)
- junit jupiter : TestEngine API 구현체
- junit vintage : Junit4와 3을 지원하는 TestEngine 구현체
로 나눠져 있습니다.
※ 참고로 Spring Boot 2.2.0 버전부터 JUnit5가 기본으로 채택
Junit4는 자바5이상, Junit5는 자바 8이상 사용가능
https://dncjf64.tistory.com/397
2022/01/03 망나니개발자 기술면접 - 1
https://mangkyu.tistory.com/200 [기술면접] CS 기술 면접 준비를 위한 문제 구독 서비스(신청하세요!) 1. 기술 면접 준비를 위한 문제 구독 서비스(신청하세요!) [ 서비스 소개 ] 개발자가 되기 위해 또
dncjf64.tistory.com
의문점들
Q. 코드 생산성에 문제가 있지는 않나?
두 배는 아니더라도 분명 코드량이 늘어난다. 비즈니스 로직, 각종 코드 디자인에도 시간이 많이 소요되는데, 거기에다가 테스트 코드까지 작성하기란 여간 벅찬 일이 아닐 것이다. 코드 퀄리티보다는 빠른 생산성이 요구되는 시점에서 TDD 는 큰 걸림돌이 될 수 있다.
Q. 테스트 코드를 작성하기가 쉬운가?
이 또한 TDD 라는 개발 방식을 적용하기에 큰 걸림돌이 된다. 진입 장벽이 존재한다는 것이다. 어떠한 부분을 테스트해야할 지, 어떻게 테스트해야할 지, 여러 테스트 프레임워크 중 어떤 것이 우리의 서비스와 맞는지 둥 여러 부분들에 대한 학습이 필요하고 익숙해지는데에도 시간이 걸린다. 팀에서 한 명만 익숙해진다고 해결될 일이 아니다. 개발은 팀 단위로 수행되기 때문에 팀원 전체의 동의가 필요하고 팀원 전체가 익숙해져야 비로소 테스트 코드가 빛을 발하게 되는 것이다.
Q. 모든 상황에 대해서 테스트 코드를 작성할 수 있는가? 작성해야 하는가?
세상에는 다양한 사용자가 존재하며, 생각지도 못한 예외 케이스가 존재할 수 있다. 만약 테스트를 반드시 해봐야 하는 부분에 있어서 테스트 코드를 작성하는데 어려움이 발생한다면? 이러한 상황에서 주객이 전도하는 상황이 발생할 수 있다. 분명 실제 코드가 더 중심이 되어야 하는데 테스트를 위해서 코드의 구조를 바꿔야 하나하는 고민이 생긴다. 또한 발생할 수 있는 상황에 대한 테스트 코드를 작성하기 위해 배보다 배꼽이 더 커지는 경우가 허다하다. 실제 구현 코드보다 방대해진 코드를 관리하는 것도 쉽지만은 않은 일이 된 것이다.
모든 코드에 대해서 테스트 코드를 작성할 수 없으며 작성할 필요도 없다. 또한 테스트 코드를 작성한다고 해서 버그가 발생하지 않는 것도 아니다. 애초에 TDD 는 100% coverage 와 100% 무결성을 주장하지 않았다.
https://osy0907.tistory.com/61
TDD 란 무엇이며 어떠한 장점이 있는가
TDD 란 무엇인가 Test-Driven Development(TDD)는 매우 짧은 개발 사이클의 반복에 의존하는 소프트웨어 개발 프로세스이다. 우선 개발자는 요구되는 새로운 기능에 대한 자동화된 테스트케이스를 작성
osy0907.tistory.com
'개발(~국비) > 기술면접' 카테고리의 다른 글
기술 대비 링크 LIST (0) | 2022.08.18 |
---|---|
기술 대비 ) 함수형 프로그래밍 (0) | 2022.08.18 |
기술 대비 ) MVC 패턴 (0) | 2022.08.18 |
기술 대비 ) REST , RESTful API (0) | 2022.08.18 |
기술면접 대비 : 객체 지향 프로그래밍 (0) | 2022.08.18 |