-
[TIL] 항해 99 5주차 주특기 심화 회고록_19일차항해[TIL] 2021. 11. 30. 15:44
Today I Learnd
(2021. 11. 30. 화)
목차
- TTD (Test-Driven Development)
- 주특기 심화 2일차 소감 및 부족한 점
1. TDD (Test-Driven Development) - 테스트 주도 개발
TDD는 테스트 코드를 먼저 작성을 하고 프로그램 코드를 작성하는 과정을 말한다.
TDD 프로세스는 다음과 같은 3가지 단계로 나눌 수 있다.
- RED (테스트 실패)
- 구체적인 하나의 기능에 대한 하나의 테스트를 추가하고, 테스트가 실패하는지 확인하는 단계.
- 테스트가 실패를 해야 해당 테스트가 신뢰성이 있다고 볼 수 있다.
- 다만, 실패한 이유가 테스트 코드의 문제가 아니여야 한다.
- GREEN (테스트 성공)
- 모든 테스트에 대해서 코드가 성공을 하도록 코드를 수정하는 단계.
- 테스트 성공을 위해서 최소한의 코드 변경이 이뤄져야한다.
- 그 이유는 필요 이상으로 코드가 변경이 된다면 다른 단계에서 악영향을 끼칠 수 있기 때문이다.
- REFACTOR (리팩토링)
- 코드 베이스를 정리하고, 가독성과 적용성 및 성능을 고려해서 구현 설계를 개선한다.
TDD 방법론을 통해서 개발을 진행하게 되면 이 세가지를 반복을 한다.
(1) TDD의 장점
- 보다 튼튼한 객체 지향적인 코드를 생산
- TDD는 코드의 재사용 보장을 명시하므로 TDD를 통한 소프트웨어 개발 시 기능 별 철저한 모듈화가 이뤄진다.
- 종속성과 의존성이 낮은 모듈로 조합된 소프트웨어 개발을 가능하게 한다.
- 또한 필요에 따라 모듈을 추가하거나 제거해도 소프트웨어 전체 구조에 영향을 미치지 않는다.
- 재설계 시간의 단축
- 테스트 코드를 먼저 작성하기 때문에 개발자가 지금 무엇을 해야할지 분명히 정의하고 개발을 시작하게 된다.
- 테스트 시나리오를 작성하면서 다양한 예외사항에 대해 생각해볼 수 있다.
- 개발 진행 중에 소프트웨어의 전반적인 설계가 변경되는 일을 방지할 수 있다.
- 디버깅 시간의 단축
- 자동화 된 유닛테스팅을 전제하므로 특정 버그를 손 쉽게 찾아낼 수 있다.
- 테스트 문서의 대체 가능
- 테스팅을 자동화 시킴과 동시에 보다 정확한 테스트 근거를 산출할 수 있다.
- 추가 구현의 용이함
- 자동화된 유닛 테스팅을 전제하므로 테스트 기간을 획기적으로 단축시킬 수 있다.
(2) TDD 단점
- 생산성의 저하
- 처음부터 2개의 코드를 짜야하고, 중간중간에 테스트를 하면서 고쳐나가야 한다.
- TDD 방식의 개발 시간은 일번적인 개발 방식에 비해서 대략 10 ~ 30% 정도로 늘어난다.
3. 주특기 심화 2일차 소감 및 부족한 점
소감
주특기 심화 개인 프로젝트에 들어가기에 앞서서 각 용어들과 기초들을 다시 공부를 하고 있다. 여태 내가 그냥 쉽다고 지나쳤던 것들도 이제는 다 까먹고 있었다.
곧장 다음주가 미니 프로젝트기도 하고 이번 심화 주차때 너무 모르는 나에대해서 반성을 좀 하기도 했다. 이번주 토요일 21시까 과제를 제출해야하므로 공부를 핵심적인 부분을 위주로 공부해야될 것 같다.
'항해[TIL]' 카테고리의 다른 글
[TIL] 항해 99 5주차 주특기 심화 회고록_21일차 (0) 2021.12.04 [TIL] 항해 99 5주차 주특기 심화 회고록_20일차 (0) 2021.12.04 [TIL]항해99 5주차 주특기 심화 회고록_18일차 (0) 2021.11.30 [TIL] 항해 99 4주차 주특기 숙련 회고록_15일차 (0) 2021.11.29 [TIL] 항해 99 4주차 주특기 숙련 회고록_15일차 (0) 2021.11.28