TDD 이야기
소프트웨어 장인에게 필요한 첫번째 Engineering Practice 는 테스트 주도 개발(TDD: Test Driven Development) 입니다. 소프트웨어 장인에게 왜 TDD 가 필요할까요?
소프트웨어 장인은 자신이 개발한 기능이 요구사항 대로 동작한다는 것을 다른 사람에게 맡기지 않고 스스로 증명합니다. SW 가 요구사항 대로 동작한다는 것을 증명하는 방법은 테스트 밖에 없습니다. SW 를 테스트하는 가장 효율적인 방법은 자동화된 테스트 슈트를 실행하는 것이고, 자동화된 SW 테스트 슈트를 확보하는 가장 효과적이고 효율적인 방법이 TDD 이기 때문에, TDD는 소프트웨어 장인에게 필요한 첫번째 Engineering Practice 입니다.
워크샵을 통해 얻게 될 것
테스트 주도 개발(TDD) 책이나 글들을 읽어보았지만 테스트 주도 개발을 현장에 적용하진 못하고 있나요? 테
무엇을 배우게 되나요
TDD 워크샵에서는 새로운 요구사항을 TDD 사이클에 따라 분석하고, 테스트 코드를 만들고, 제품 코드를 작성하고, 리팩토링으로 중복을 제거하고 코드를 개선하는 체계적인 방법을 직간접적인 경험을 통해서 배울 수 있습니다.
- TDD 사이클에 따라 요구사항을 분석하고 테스트 케이스를 작성하고 제품 코드를 개발하고 설계하는 과정을 경험할 수 있습니다.
- 리팩토링으로 코드를 점진적으로 변경하고 설계를 개선하는 방법을 배웁니다.
- 테스트 코드를 간결하고 유지보수 가능하도록 작성하는 방법을 배웁니다.
- TDD 로 즐겁게 SW를 개발하는 방법을 배우게 됩니다.
이런 분들에게 추천합니다.
- TDD, 리팩토링, 클린코드에 관심이 있는 개발자
- TDD 책을 읽었지만 TDD 를 시도할 엄두를 내지 못하고 있는 프로그래머
- 리팩토링 책을 읽었지만 리팩토링이 잘 안 된다면 망설이지 말고 신청하세요.
- 코딩이 재미없고 코딩이 지루한 일상이 되버린 개발자에게 추천합니다.
테스트 주도 개발, 레거시 코드 리팩토링, 클린 코드등을 주제로 개발자를 대상으로 20여회 이상의 워크샵을 진행하여 개발자들이 품질이 높은 코드를 개발하기 위한 방법과 노하우를 전파하고 있으며, 테스트 주도개발, 레거시 코드 리팩토링 위주의 엔지니어링 프랙티스 도입을 위한 컨설팅을 수행하고 있다. → 오재훈 강사 상세 소개
왜 TDD가 필요한가요?
여러분이 속한 팀은 얼마나 자주 소프트웨어를 릴리즈하나요? 1개월에 한번, 1주일에 한번, 하루에 한번, 매 커밋마다? 아마존은 2초에 한번씩 서비스를 배포한다고 하고, 하루에 50번씩 서비스를 배포하는 회사가 점점 많아지고 있습니다. 하루에 50번 이상 서비스를 배포하는 것이 가능할까요? 어떤 노력을 기울이면 하루에 50번씩 서비스를 배포할 수 있을까요?
아래 질문들에 답해 보세요.
- DevOps 프랙티스를 실천하고 있나요?
- 지속적 배포(CD: Continuous Deployment) 프랙티스를 실천하고 있나요?
- 지속적 통합(CI: Continuous Integration) 프랙티스를 실천하고 있나요?
이 프랙티스들은 모두 SW를 기민하게 개발하고 고객에게 빠르게 가치를 전달하기 위한 방법들입니다. 이런 방법들을 실천하고 있다면 아래 질문에 답해 보시기 바랍니다.
여러분이 개발한 SW 기능을 100% 커버하는 테스트 슈트를 확보하고 있나요?
만약 기능을 100% 커버하는 테스트 슈트를 확보하지 못한 상황이라면, 새로 추가하고 변경한 코드가 기존의 동작을 깨뜨리지 않는다는 것을 증명하기 어렵습니다. 수정한 코드가 기존 동작을 깨뜨리지 않는다는 것을 증명하지 못한다면 DevOps, CD, CI 프랙티스를 완전하게 실천하는 것이 아닙니다. 즉, 자동화된 테스트 슈트 없이 DevOps, CD, CI 프랙티스를 실천하는 것은 불가능합니다.
기능을 100% 커버하는 테스트 슈트를 확보하는 가장 좋은 방법은 무엇일까요?
테스트 코드를 먼저 만든 다음에 제품 코드를 작성하는 TDD 프랙티스를 적용하는 것입니다. TDD 로 코드를 작성하면 코드 커버리지를 항상 100% 로 유지할 수 있습니다. 테스트 커버리지를 100%로 유지하면 결함이 주입되었을 때 바로 테스트 코드가 실패하기 때문에 코드 수정시 아주 빠른 피드백을 받을 수 있고, 여러분이 원하는 모습으로 자신있게 설계를 바꿀 수 있습니다.