테스트 자동화를 이용한 고품질 소프트웨어 개발(TDD+리팩토링)

TDD + 레거시 코드 리팩토링을 이용한 고품질 소프트웨어 개발

요구사항의 진화와 변화에 유연하게 대응하면서도
코드 품질이 높은 SW를 개발하고 싶다면 바로 신청하세요. — 애자일스쿨@슬로우캠퍼스

-일정 : 4월 12,13일 9:00~18:00 ( 총 16시간 )
- 강사 : 오재훈 (주)XPWorks 대표
- 참가비 : 88만원
- 최대인원 : 10명
- 장소 : 서울시 강남구 대치동 890–29 정인빌딩 9층 (
선릉역1번출구)
- 준비물 : 노트북, JDK 7 이상, IDE(STS, Eclipse 혹은 IntelliJ IDEA)

TDD/리팩토링 워크샵 참가자들의 후기입니다

후기및사진

- Plus ( 좋았던 점 )
- TDD 와 리팩토링에 대해 개념을 잡고 직접 따라해 볼 수 있어서 좋았습니다.
- 리마인딩하고 다시 좀 공부해야 겠습니다.
- 막연하게 TDD 가 필요하다는 것을 알고 있었지만, 어떻게 시작해야할지 몰랐는데, 어떻게 시작해야 할지 알게 되었습니다.
- 페어프로그래밍을 처음 해 보는데, 이야기도 나누고 다른 사람이 어떻게 생각하는지도 볼 수 있고, 도움도 받을 수 있어서 좋았습니다. 
- TDD 에 대해 기존 블로그에서 제공하지 못한 상세한 설명이 좋았다.
- 좋은 직원 파트너를 만나서 감사했습니다. 
- IDE 를 사용해서 실질적인 테스트 코드, 리팩토링 진행
- Pair Programming
- IDE 를 통해 실제 TDD 적용을 하는 방법을 볼 수 있어서 좋았습니다.
- TDD, 리팩토링의 개념을 알 수 있었다. 
- 평소는 결과 먼저 생각 후 작성했었는데, 실패 Case 부터 작성하고 TDD 과정을 거치면서 더 간단한 로직을 구현할 수 있었다.
Minus ( 아쉬운 점 )
- 시간이 좀 짧아서 조금 복잡한 코드에 대한 TDD 와 리팩토링을 경험할 수 있으면 좋을 것 같습니다.
- IDE 와 Java 에 익숙치 않아 따라갈 때 단축키를 몰라 힘들었습니다.
- 1일로 진행하기는 짧음
- 더 배우고 싶었지만 시간 여건 문제… 아쉽습니다.
- 동아리에서 진해하던 리팩토링 스킬적인 부분이 빠져서 아위운데 다음주에 할 것 같아요.
- 하루가 너무 짧네요. 다음 수업도 듣고 싶은데 궁금하고 아쉽습니다.

오재훈 강사 소개

포스텍 컴공 석사 졸업후 20여년간 소프트웨어 개발을 해온 SW엔지니어이며, SW엔지니어들의 발전을 돕는데서 보람을 느낀다.

테스트 주도 개발, 레거시 코드 리팩토링, 클린 코드등을 주제로 개발자를 대상으로 20여회 이상의 워크샵을 진행하여 개발자들이 품질이 높은 코드를 개발하기 위한 방법과 노하우를 전파하고 있으며, 테스트 주도개발, 레거시 코드 리팩토링 위주의 엔지니어링 프랙티스 도입을 위한 컨설팅을 수행하고 있다. → 오재훈 강사 상세 소개

스트 주도 개발 책을 읽어도 현장에 적용하기는 쉽지 않습니다. 리팩토링 책을 읽어도 리팩토링을 현업에 잘 사용하지 못합니다. 강사가 20여회의 워크샵을 수행하면서 3년간 개선하고 설계한 TDD 실무적용 실습을 통해 그 해법을 찾아보시기 바랍니다.

오재훈과 함께하는 TDD/리팩토링 수련 워크샵

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번씩 서비스를 배포할 수 있을까요?

아래 질문들에 답해 보세요.

  1. DevOps 프랙티스를 실천하고 있나요?
  2. 지속적 배포(CD: Continuous Deployment) 프랙티스를 실천하고 있나요?
  3. 지속적 통합(CI: Continuous Integration) 프랙티스를 실천하고 있나요?

이 프랙티스들은 모두 SW를 기민하게 개발하고 고객에게 빠르게 가치를 전달하기 위한 방법들입니다. 이런 방법들을 실천하고 있다면 아래 질문에 답해 보시기 바랍니다.

여러분이 개발한 SW 기능을 100% 커버하는 테스트 슈트를 확보하고 있나요?

만약 기능을 100% 커버하는 테스트 슈트를 확보하지 못한 상황이라면, 새로 추가하고 변경한 코드가 기존의 동작을 깨뜨리지 않는다는 것을 증명하기 어렵습니다. 수정한 코드가 기존 동작을 깨뜨리지 않는다는 것을 증명하지 못한다면 DevOps, CD, CI 프랙티스를 완전하게 실천하는 것이 아닙니다. 즉, 자동화된 테스트 슈트 없이 DevOps, CD, CI 프랙티스를 실천하는 것은 불가능합니다.

기능을 100% 커버하는 테스트 슈트를 확보하는 가장 좋은 방법은 무엇일까요?

테스트 코드를 먼저 만든 다음에 제품 코드를 작성하는 TDD 프랙티스를 적용하는 것입니다. TDD 로 코드를 작성하면 코드 커버리지를 항상 100% 로 유지할 수 있습니다. 테스트 커버리지를 100%로 유지하면 결함이 주입되었을 때 바로 테스트 코드가 실패하기 때문에 코드 수정시 아주 빠른 피드백을 받을 수 있고, 여러분이 원하는 모습으로 자신있게 설계를 바꿀 수 있습니다.

오재훈과 함께 TDD/리팩토링을