워드 커닝햄과 릭 머그리지의 공동 저작 『Fit for Developing Software』가 『불확실성과 화해하는 프로젝트 추정과 계획』을 번역하신 이병준 님의 수고로 번역되어 발간을 기다리고 있습니다. 번역서 제목은 『Fit, 통합 테스트 프레임워크-Fit 테스트는 소통이다』입니다. 워낙 유명한 책이라 이름에 걸맞은 번역을 하시느라 개인적으로 어려운 상황임에도 불구하고 무척 고생을 많이 하셨습니다. 번역서 제목도 직접 지어주셨습니다. 이 자리를 빌려 깊은 감사의 말씀 전합니다.

Fit 테스트는 소통이다

이 책이 지닌 의의에 대해 데이브 토마스(Dave Thomas)가 명쾌하게 짚어 냈습니다.

“아무리 좋은 접근법을 써도, 사용자가 원하는 소프트웨어와 실제로 만들어진 소프트웨어 사이의 간극은 남아 있다. Fit 덕분에 마침내 그 무한 루프에 마침표를 찍을 수 있게 되었다. Fit은 애자일 개발이라는 퍼즐을 구성하는 중요한 한 조각이다.”

또한 이 책이 가진 고유한 성격에 대해서는 켄트 벡(Kent Beck)의 표현으로 단번에 알 수 있습니다.

“이 책이 가진 고유한 장점은, 고객/테스터/분석가와 프로그래머 사이의 인터페이스를 다루는 방식이다. 그들 모두가 얼마나 효율적인 소통을 갈망하는지 이 책을 통해 배울 수 있을 것이다. Fit이 추구하는 바는 사업 중심적인 팀원을 위한 언어를 창조하는 것이기 때문에 프로그래머만을 위한 것이 아니다. 사업가만을 위한 Fit 책도 역시 말이 되지 않는다. 그 언어를 만드는 과정에 프로그래머가 참여해야 하기 때문이다. 그 모두를 고려한 결과로 만들어진 이 책은, 팀의 소통을 증진한다는 목표를 공유하는 많은 사람들에게 호소력을 가진다.”

Fit 은 소통과 균형 그리고 기민성을 위한 통합 테스트 프레임워크

흔히 소프트웨어의 가치와 품질을 결정짓는 핵심적인 요소는 각 이해관계자가 소프트웨어에 무엇이 필요한지를 생각하고, 이에 대해 의견을 교환하는 실질적인 과정이 있느냐는 것과 프로그램이 제대로 동작하는지, 그리고 기능이 추가되더라도 계속 그 상태를 유지할 수 있을 것인지 검증하는, 사업적인 관점에서의 자동화된 테스트가 있느냐는 것일 겁니다. 하지만 많은 프로젝트에서 이 작업들을 제대로 수행되지 못하여 사업적 요구사항들을 실제 프로그램으로 바꾸는 단계에서 실패를 맛보곤 합니다.

문제는 시스템과 연관된 사람들이 사업적 요구사항들을 충분히 이해하지 못해서 그럴 수도 있겠고 요구사항을 깊이 있게 성찰할 수 있게 할 만한 명료한 방법이 없기 때문일 수도 있겠습니다. 뭐 한마디로 말한다면 그런 요구에 대해 소통할 방법이 없다는 말도 되겠습니다. 뭐 이러면 소통 부재-> 솔루션 불통-> 품질 저하-> 시스템 장애, 불 보듯 뻔한 일들이 발생하겠죠.

Fit (Framework for Integrated Tests)는 이런 문제들을 해결하기 위해 고안된, 아주 강력한 자동 테스트 프레임워크입니다. 사업적 관점에서 테스트를 수행하는 데 아주 탁월합니다. 테스트를 표현하고 그 결과를 자동으로 점검하기 위해 테이블을 사용하는데, 이걸 사용하면 프로그래밍 경험이 없는 사람들도 테스트를 작성할 수 있기 때문에 시스템의 전반적인 개발 과정을 훨씬 쉽게 이끌어 나갈 수 있습니다. 범용의 열린 프레임워크라서 다양한 형태의 테스트를 표현할 수 있도록 확장도 아주 손쉽습니다.

이쯤에서 저자들이 말하는 Fit 테이블의 가치에 대해 좀 살펴보겠습니다.

1. 소통(Communication): 시스템을 원하는 사람들이 그 요구사항에 대해 구체적으로 토론할 수 있도록 해 준다. 소프트웨어가 당초 목표한 바와 달리 구현되는 일은 생각보다 흔하다. 이는 무엇이 필요하고 무엇이 가능한지에 대한 이해도가 높아지는 대신 애초의 모호한 상태 그대로 남아 있기 때문이다. 피드백을 충분히 받지 못하는 탓에 벌어지는 일이다.

요구사항 문서만으로는 충분하지 않다. 개발 프로세스로부터 피드백을 받을 수 없는 상태에서 완성되어야 하는 문서라면 더욱 더 그렇다. 미래에 무엇이 중요할지 추측해야 할 것이고, 사업적 가치를 실현할 많은 기회들이 사라져버릴 것이다.

요구사항 문서만으로는 오해하기가 쉬워서, 결국 잘못된 소프트웨어가 만들어지게 된다. 사업 영역에서 나온 현실적 사례들로 만든 구체적인 테스트가 있으면, 사업상의 필요에 대한 공통된 이해를 구축하기가 더욱 쉬워진다.

2. 기민성(Agility): 사업적 요구사항 변화에 맞추기 위해 반드시 필요한 소프트웨어 설계 변경 작업을 지원함으로써 소프트웨어의 상태를 항상 바람직하게 유지할 수 있도록 해준다. 자동화된 테스트가 있으면 소프트웨어를 쉽게 변경할 수 있고, 이미 만족된 요구사항이 변경 결과로 깨어지지 않도록 보장하기 용이해진다.

Fit 테스트는 문제와 그 해법에 대한 최신 지식에 근거하여, 사업가들이 최선의 방향으로 개발 과정을 인도할 수 있도록 가장 유용한 피드백을 가능한 한 빨리 제공하는 것을 목표로 하여, 개발 프로세스에 집중하도록 도와준다.

3. 균형(Balance): 문제의 수와 심각성을 감소시키고, 문제를 더 빨리 찾아내고 또한 그 문제가 다시 반복되지 않도록 함으로써, 문제 교정 작업과의 균형을 맞추는 데 더 적은 시간을 쓰도록 해 준다.

Fit 테스트는 이런 균형을 상실하여 변화를 받아들일 필요가 있는 기존 소프트웨어에 단계적으로 (각 단계는 작고, 집중적이다) 도입될 수 있다. 균형을 찾고 유지하는 것은 기민성, 즉 사업이나 조직의 변화에 빠르게 반응하는 능력을 갖추는 데 핵심적인 부분이다.

소통을 테스트하라!

Fit은 다양한 영역에서 많은 분들에게 의미를 줍니다. 우선 테스터나 관리자에게 의미가 있겠지만 사업가, 사업 분석가, 시스템 분석가에게 더욱 큰 의미가 있습니다. 그밖에 프로그래머, 소프트웨어 아키텍트, 소프트웨어 엔지니어에게도,, 두말하면 잔소리겠죠.

이 책은 강컴, 교보, 예스24, 인터파크, 알라딘에서 (조만간 ^^) 예약 구매 가능합니다.