본문 바로가기
SW

테스트 주도 개발(Test-Driven Development:By Example) - 3부 : 테스트 주도 개발의 패턴 (부록 + 마치는 글) (끝)

by 라꾸스떼(YR) 2020. 2. 21.
반응형

[부록A] 영향도(influence diagram)

영향도의 목적은 한 시스템의 요소들이 서로 어떻게 영향을 끼치는지 보는 것이다.

세가지 요소

-활동

-양적 연결

-음적 연결

 

<피드백>

영향이 한 방향으로만 작용하지는 않는다.

특정 활동의 결과가 거꾸로 그 활동 자체에 양적, 혹은 음적으로 영향을 미치는 경우가 자주 있다.

시스템 설계의 핵심은 다음과 같다.

-양적 피드백 루프가 좋은 활동의 성장을 촉진하는 선순환 만들기

-양적 피드백 루프가 비생산적이거나 파괴적인 활동의 성장을 촉진하는 죽음의 나선 피하기

-좋은 활동의 과용을 예방하는 음적 피드백 주기 만들기

제대로 작용하지 않는 시스템이 있을 때, 다음과 같은 옵션이 있다.

-반대 방향으로 양적 피드백 루프가 돌게 하라. 테스트와 자신감 사이에 루프가 있고 테스트가 죽 실패해서 자신감이 줄고 있다면, 더 많은 테스트가 작동하도록 만들어서 더 많은 테스트를 작동시킬 수 있다는 본인의 능력에 대한 자신감을 증가시킬 수 있다.

-음적 피드백 루프를 도입해서 지나치게 거대해져버린 활동을 컨트롤 할 수 있다.

-연결을 더 맺거나 혹은 끊거나 해서 도움이 안되는 루프를 제거해 버릴 수 있다.

 

[부록B] 피보나치

테스트 케이스에 있는 중복이 점점 성가시게 느껴지기 시작하는데, 새 케이스를 추가하면 더 악화되기만 할 것이다. 입력과 예상값으로 구성된 테이블을 통해 테스트가 돌아가게 하면 단언의 공통 구조를 추출할 수 있겠다.

 

[마치는 글] - 마틴 파울러

테스트 주도 개발에 대해 설명하기 어려운 것 중 하나는 TDD를 하면 돌입하게 되는 정신상태다.

우리가 가진 화려한 도구들에도 불구하고, 프로그래밍은 여전히 어렵다. 동시에 여러 개의 공을 공중에 띄워놓고 저글링할 때처럼, 프로그래밍 할 때도 잠시만 집중을 놓치면 모든 게 무너져 버릴 것 같은 느낌을 받은 적이 많다. 테스트 주도 개발은 이런 느낌을 감소시키는 데 도움이 되고, 그 결과로 신속한 느긋함을 얻게 된다.

테스트 주도 개발 스타일로 작업하면 한 번에 딱 하나의 공만 공중에 띄우는 느낌이 들고, 그렇기 때문에 그 공에 충분히 집중할 수 있고 그 일을 정말 훌륭히 해낼 수 있다는 것이다.

핵심 작업을 분간하고 한 번에 딱 하나만 집중하도록 하는 것이 어떤 활동을 체계화하는 데 주요한 역할을 한다. 아마 테스트 주도 개발이 제안하는 것은 프로그래밍의 행위를 여러 기본적 모드로 나누되, 그런 모드를 재빨리 전환해 가면서 단조로움을 피하는 것이지 않을까. 단일사고적 모드들과 전환의 조합을 통해 집중의 이득을 얻을 수 있고, 조립 라인의 단조로움 없이 뇌에 가해지는 스트레스를 낮출 수 있다.

 

[실전 TDD] - 김창준, 강석천

<GUI 프로그래밍 TDD>

<네트워크 프로그래밍 TDD>

<데이터베이스 프로그래밍 TDD>

<꾸준한 수련이 중요>

개인적으로 TDD를 제대로 사용하기 위해서는 반 년 이상 꾸준히 노력해야 한다고 생각한다. 물론 개인별로 차이는 있을 것이다. 그 기간을 줄이는 방법이 있다면 짝 프로그래밍, 팀과 함께 작업하는 것 등 익스트림 프로그래밍의 실천사항들을 병행하는 것이 아닐까 한다.

반응형

댓글