티스토리 뷰
TDD 수련법
무술 수행 단계 : 수파리
수
1. 간단한고 쉬운 문제들을 TDD로 시도 합니다. 가능하면 전에 접하고, 프로그래밍해본 문제가 좋습니다.
2. 초록 막대 주기는 가능하면 짦도록 합니다. 예를 들어서 a=b+3xc 를 입력하고자 할 때, a=까지 입력한 시점은 빨간 막대 시점입니다. 그 시점에서 테스트를 실행하면 분명히 실패(정확히는 에러가)할 것이기 때문입니다. 가능한 빨리 초록 막대가 나오도록 해야 합니다.
3. 이때 초록 막대 주기의 최대 시간을 정해놀고 진행하다가 시간을 초과하면 직전 초록 막대 상태로 돌린 다음(그 동안의 코드는 포기하고) 새로 시작하는 것이 좋습니다.
4. '진짜로 만들기 전까지만 가짜로 구현하기'를 적극적으로 사용하려고 노력합니다. 가짜로 구현하기는 초록 막대 주기가 짦아지는 가장 간단하고 빠른 방법입니다.
5. 같은 문제를 여러번 풀어봅니다. 동일한 프로그램이 나오나요? 무엇이 비슷하고 무엇이 틀린가요? 뭘 배웠나요?
6. 초기에는 리팩토링 툴을 사용하지 않는 것이 좋습니다. 초보에겐 순서와 과정이 중요한데 그걸 성큼 건너뛰게 되기 때문입니다.
파
1. 여유를 가지세요, TDD가 꼭 정신없이, 별 생각없이 프로그래밍을 하라는 것은 아닙니다. 모든 '학습'과 '개선'의 필수적 요소는 자기를 돌아보기와 자기가 생각하는 것을 생각하는 메타인식입니다. 자신이 하는 것을 관조, 관찰하고 기록하고 분석하세요. 프로토콜 분석도 좋은 방법입니다. 같은 문제를 여러 번 풀어보는 것도 중요합니다.
2. 자신이 TDD로 해보지 않았던 영역을 하나씩 실험해 봅니다. 어려운가요? 왜 어려울까요? 쉬운 방법은 없을까요?
3. 보톡을 조절해 봅시다. 잘 된다 싶으면 속도를 높이고 뭔가 안풀린다 싶으면 바로 속도를 늦추는 훈련을 합니다. 자신이 편한 속도를 찾습니다.
4. 작은 애풀리케이션 하나를 오로지 TDD로 완성해봅니다. 일주일 정도 걸리는 것이면 좋습니다.
5. 다른 언어로 TDD 를 해봅니다. 이전에 많이 풀어 봤던 문제를 시도해 봅니다. 전혀 다른 해를 얻지 못하면 자산의 TDD방식에 뭔가 문제가 있다는 겁니다. 특히 동적언어(스몰토크, 파이썬 등)를 사용해 보는 것이 좋습니다. 자신이 전혀 생각하지 못했던 부분까지 중복제거가 가능합니다 물론 더 짧은 시간에 말이죠. 생각의 틀을 뒤집어 놓기에 참 좋습니다.
리
1. TDD를 사용하지 않고 같은 문제에 접근해 보세요. 이전에 하던 방식과 뭐가 달라졌나요? TDD를 써서 좋은 때가 있고 안 써서 좋을 떄가 있나요?
2. TDD와 적철한 초기 설계를 섞어보세요. 어느 정도가 적절한 수준인가요? 어떤 방식으로 디자인하는 것이 좋은가요? CRC는 어떤가요? 처음 디자인했던 것이 TDD를 거친 후에 얼마나 달라지나요? 뭐가 그대로 남던가요? 어떤 '안 좋은 부분'이 그래도 남나요? 어떤 '좋은 부분'이 그대로 남나요?
3. TDD와 함께 다른 방법들을 사용하는 방법을 시도해 보세요. 의도에 의한 프로그래밍, 단계적 개선, 도메인 주도설계...
TDD 수련에 도움이 되는 문제
1. 세계 대학생 프로그래밍 경진대회 문제 등 알고리즘 중심의 문제
2. 자동판매기 테스터
3. 계산기
4. 엘러베이터 시뮬레이션
5. 웹 게시판
6. 멀티 채팅 프로그램
위의 내용은 테스트 주도 개발 김창준님이 추천해준 수련 방법이다.
이를 바탕으로 이번 스터디 그룹에 맞게 변경을 해보려 한다.
수
간단하고 쉬운 알고리즘 부터
=> 결제 관련된 알고리즘, 간단한 백준 알고리즘을 통한 TDD 작성
=> java, junit, springboot 활용
파
작은 어플리케이션을 하나 만들어 보자
=> 승인, 인증등 결제 관련 어플리케이션 (1주~2주에서 완성 가능한 범위) TDD 개발
=> java 가 아닌 다른 언어로 개발 ex) 파이썬, Unittest
프로젝트에 실제 적용
리
=> TDD 를 넘어 DDD, BDD 등 기법을 사용하여 장단점 비교
=> 작성 했던 예제를 다른 방법론으로 개발 하며 장단점 습득 및 공유
그 후, TDD 예제로 추천해준 문제로 수파리를 다시 회전하는 방식으로.
참고 : 테스트 주도 개발 (켄트 백)
'테스트' 카테고리의 다른 글
테스트 주도개발_3 (0) | 2023.02.12 |
---|---|
테스트 주도개발_2 (0) | 2023.02.11 |
테스트 주도 개발_1 (0) | 2023.02.05 |
BDD (0) | 2019.02.26 |
TTD란? (0) | 2019.02.26 |
- Total
- Today
- Yesterday
- GateWayApi
- 테스트주도개발
- 테스트
- TDD
- MSA
- data crawling
- Python #FastAPI
- kafka
- AWS
- mongodb
- SpringBoot
- Python
- data mining
- 웹개발
- 퀜트백
- EC2
- 분산처리
- nodejs
- fastapi
- 웹서비스
- 테스트 주도 개발
- 켄트 백
- MQ
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |