이규원 tdd

모바일 A/B테스트

이규원의 현실 세상의 TDD, 그 두 번째 이야기
이제 실제 현실 세상에 TDD를 도입해 볼 시간입니다.

현업 개발자, 개발 리드, CTO가 기대하고 추천하는
실제 프로젝트 반영 TDD 구현 방법.

10년 이상 현장에 TDD를 도입하여 활용해 온 TDD의 대가 이규원
3,000명 수강생의 고민과 현업 개발자의 의견을
적극 반영한 실전형 강의로 찾아왔습니다.

거대한 레거시 코드에서 시작해 비교적 작은 오류 개선과 기능 추가부터, 새로운 요구사항을 반영하기 위한 모델 통합 과정에서의 자동화된 테스트 케이스를 확보해나가는 문제 해결 과정까지 모두 담았습니다.

커머스 서비스 플랫폼의 3가지 주요 기능인 주문, 정산, 계정 관리 시스템에서 코드 품질과 개발 생산성을 높이는 개선 방법을 80% 이상의 실습으로 배워봅니다.

본 강의를 통해 개발자로서 변화에 적응하는 법과 문제 해결력, 적절한 도구 사용방법 등을 자연스럽게 체득할 수 있습니다.

(자동)
정가 (자동)
현재 판매가 (자동)
12개월 무이자 할부 시 (자동)

[현실 세상의 TDD : 안정감을 주는 코드 설계 방법]이 단위 훈련이었다면,
[현실 세상의 TDD : 점진적인 코드 개선 방법]은 실전과 유사한 모의 전투입니다.


많은 웹 서비스가 회원 정보를 다루고, 시장 진입에 성공할 경우 수익화를 위해 주문/결제 기능을 도입합니다. 이러한 커머스 서비스는 많은 프로그래머에게 낯설지 않기 때문에, 현실적인 문제들을 해결하는 방법을 더 효과적으로 전달드릴 수 있는 프로젝트 주제로 채택하였습니다. 새로운 요구사항을 즉시 수용하기 어려운 기존 코드베이스 및 도메인 모델을 확장성 높은 구조로 진화시켜나가는 과정을 담았습니다.

프로그래머가 실전에서 마주치는 문제들은 단순하지 않습니다. 따라서 한 두 가지 기법을 익혔다고해도 즉시 적용하는게 쉽지만은 않죠. 수많은 문제들에 대한 100% 확실한 해법을 제시해 줄 사람은 어디에도 없을 것이며, 결국 스스로 찾아내야 합니다.

하지만 복잡한 문제를 해결해나가는 과정을 차근차근 따라가다 보면, 새로운 영감과 자신감을 얻을 수 있습니다.

[현실 세상의 TDD]를 완강하고 난 후의 여러분은 달라져 있을 거라 믿습니다. 이번 강의가 배움에서 그치지 않도록 도와주는 도구가 되었으면 합니다.

by. 이규원

Overview

점진적으로 코드를 개선하는 모든 과정을 담은 커리큘럼.

초기 시장 진입을 위해 빠르게 개발된 서버 시스템 코드를 기반으로
버그 수정과 기능 추가를 위해 TDD를 사용하고, 확장성 높은 새로운 모델과 기존 모델을 통합하는 과정을 총 3단계 Step을 통해 학습합니다.

Learning Point

설계 확장성을 위한 3가지 시스템을 개선하며 TDD 실전 정복.

웹 서비스를 개발하는 프로그래머라면 누구나 다룰만한 주문, 정산, 계정 관리 3개의 시스템을 점진적으로 개선해보며
비동기 프로세스 테스트, 데이터베이스 스키마 변경, 원격 서비스 연동 등 실제 현장에서 겪는 문제를 함께 해결해봅니다.


1. 주문 시스템

#테스트 가독성 #상태 머신 #비동기 프로세스

∙ 응용프로그램에서 발견된 버그를 수정하고 기능 개선 요청을 반영하기 위해 TDD를 사용합니다.
∙ 테스트 데이터 생성기와 테스트 언어를 사용해 테스트 코드의 설계 품질을 개선합니다.
∙ 비동기적으로 동작하는 API를 설계하고, 메시징 인프라의 추상화와 구현을 분리하여 외부 결제 승인을 처리하는 비동기 프로세스를 구현합니다.


2. 정산 시스템

#뷰모델 조립 #데이터 소스 추상화 #매개변수화 테스트

∙ 변경 가능성이 높은 설계 결정을 추상화 뒤에 숨기고 비즈니스 논리를 구현합니다.
∙ 다양한 데이터를 사용한 사례를 테스트 하기 위해 매개변수화(parameterized) 테스트를 사용합니다. AutoParams를 사용해 테스트 데이터를 자동 생성합니다.

| OrderViewAggregator 오류 수정 & 개선 |
뷰 레이블 지역화(localization)
주문 상태 및 시간 범위 오류 수정
매개변수화 테스트를 통해 다양한 사례 검증

TDD의 대가 이규원이 직접 개발한 오픈소스 AutoParams는?


∙ AutoParams는 AutoFixture에서 영감을 받은, Java의 매개변수화된 테스트를 위한 데이터 생성기입니다.
∙ 매개변수화된 테스트에 필요한 인자를 자동으로 생성하므로 도메인, 요구사항에 더 집중할 수 있습니다.
∙ 열거형이나 제네릭 등 다양한 형태도 대응이 가능합니다.


3. B2B 계정 관리 시스템

#CQRS #역할 분리 #모델 통합

∙ 복잡한 비즈니스 논리에 확장성을 부여하기 위해 코드의 정적 구조를 개선합니다.
∙ 모델 정제 - 통합 - 확장의 프로세스를 거쳐 새로운 도메인 모델에 API를 추가하고, 기존 모델과 통합하는 설계를 도출한 후

확장성을 높이기 위한 테스트 도구를 작성해 테스트 대역을 활용한 성능 개선 작업을 직접 경험해 봅니다.

+ Plus Benefit

여기서 끝이 아닙니다.

TDD 질의응답 커뮤니티

이규원님이 직접 운영하시는 현실 세상의 TDD 디스코드 채널에서 질의응답을 진행할 수 있습니다.

모든 예제 코드 GitHub 제공

주문, 정산, 계정 관리 예제 코드를 Github으로 모두 제공합니다.

Mac 사용자 고려

강의는 Window 기반 환경이지만, Mac에서 코드를 구동하는 방법도 준비했습니다.

트러블슈팅 모음집

TDD 도입 시 자주 발생하는 문제를 모아 별도의 트러블슈팅 세션도 준비했습니다.

Learn by Doing

저 이규원의 두 번째 강의를 들으면 네 가지를 얻을 수 있습니다.
진화하는 코드를 위한 두 번째 여정.
"우리 레거시에서는 TDD 를 할 수 없어" 라고 결론 내린 분들에게, 이 강의는 최고의 강의가 될 것이라 생각합니다.

두 번째 강의의 주인공이 TDD는 아니지만, 실무의 어려운 과제를 수행하는 과정에서 TDD를 효과적인 도구로 사용할 수 있습니다.

지속적인 요구사항의 변화를 수용하는 것은, 소프트웨어와 프로그래머에게 매우 중요한 임무입니다. 강의를 통해 용감하게 변화를 마주하는 프로그래머가 되어보세요.

프로그래머는 비즈니스 문제를 해결하는 과정에서 발생하는 기술 문제들을 끊임없이 마주칩니다. 제가 문제를 해결해나가는 과정에서 얻은 영감으로 본인의 해답을 찾아나가세요.

효율적인 언어, 라이브러리, 프레임워크, 때로는 직접 만든 도구 등 다양한 수단을 적절하게 사용하여 문제를 효율적으로 해결할 수 있습니다.

강의 미리보기
Top of Top

TDD 활용의 대가이자 개발자들의 연예인,
이규원.

TDD를 알기 전부터 피드백 기반 개발을 한 선구자

2000년대 초반, 첫 회사 입사 후 통계 계산 FORTRAN 코드를 C++, C# 으로 변역하던 중 알려진 테스트 데이터 집합을 기준으로 코드를 늘리거나 수정하는 경험을 했는데 이것이 TDD와 유사했습니다. 코드를 쓰기 전에 쓰여질 코드가 준수해야 할 입출력을 미리 준비하고 이것들의 검증 결과, 피드백을 받아 전진하는 과정이 바로 그랬어요.

불가능하다 했던 것을 TDD로 가능케한 CTO

TDD를 기반으로 코드 파이프라인을 자동화했습니다. 코드가 안전한지 충분한 피드백이 없다면 매우 위험한 일이죠. 오마이랩에서는 시스템 전체를 비동기로 구성했는데, 비동기 시스템은 단위 테스트만으로 문제를 잡아내기 힘듭니다. 그래서 인수 테스트 주도 개발과 수동 테스트 관리도구에 투자했고 결과는 대성공이었습니다.

TDD에 관한 공론의 장을 이끄는 커뮤니티 리더

OKKYCON과 같은 외부 강연, GitHub 및 소셜미디어 활동, TDD 참관 행사 주최 등 다양한 기회를 통해, 현실 세상의 TDD에 관해 함께 공부하고 토론하고 업무로 적용해보는 일을 꾸준히 해오고 있습니다. 개발자 커뮤니티의 일원이자, 전 마이크로소프트 MVP 수상자로서 앞으로도 많은 사람들이 TDD를 제대로 활용할 수 있도록 아낌없이 나누고 싶어요.

이규원
10년 이상 현실 세상에 TDD를 접목한 대가 이규원에게 배우는 ‘설계 확장성을 위한 점진적인 코드 개선'
지금 최저가로 만나보세요!
FAQ
강의를 수강하는데 필요한
사전지식이 있나요?
특정 언어나 플랫폼 경험을 요구하지는 않으나 실무 경험이 있으면 아주 좋습니다. 그렇지 않더라도 간단한 웹 응용프로그램 정도 규모의 시스템을 만들어본 학습 또는 프로젝트 경험이 있어야 잘 와닿을 수 있습니다. 현실 세상의 TDD : 안정감을 주는 코드 작성 방법 강의를 듣고 프로젝트 단위에서 TDD를 본격 도입하려고 하시는 수준이면 충분합니다.

어떤 사람이 들으면
가장 도움이 될까요?
| 권장 |
∙ TDD와 설계 이론을 배웠지만 여전히 실무에 적용하기 어려워하는 프로그래머
∙ ‘현실 세상의 TDD : 안정감을 주는 코드 작성 방법’ 첫 번째 강의 완강한 수강생

| 필수 |
운영중인 시스템의 설계를 안정적으로 확장하는 임무를 맡은 프로그래머

실습에 사용하는
Tool 및 환경
| 기술스택 |
C# 10.0
.NET 6.0
Java 17
Spring Boot 2.7.3
PostgreSQL
Entity Framework

| 실습환경 |
Visual Studio 2022
IntelliJ 2022.2.1
Visual Studio Code
코스 프로모션 배너 전용입니다.
0 0시간 0 0 코스 프로모션 배너 전용입니다.
(자동)
정가 (자동)
현재 판매가 (자동)
12개월 무이자 할부 시 (자동)

상세 커리큘럼

프롤로그. 현실 세상의 TDD

1부. 코드 베이스

2부. 주문 및 정산 기능 개선

3부. B2B 계정관리 기능 개선

에필로그. 두 번째 강의를 마치며

패스트캠퍼스

수강료.

국내 8개 카드사 12개월 무이자 할부 지원! (간편 결제 제외)

  • 삼성카드
  • 신한카드
  • 롯데카드
  • 현대카드
  • 하나카드
  • BC카드
  • KB국민은행
  • NH농협카드

※ BC카드의 경우, 비씨(페이북)을 선택하여 결제시에만 12개월 무이자 할부가 가능합니다.
(BC계열 – 우리/제일/기업/대구/경남/부산/광주/수협/전북/제주/신협)