[주최측 취지] 개발자 분들이 단위(Unit) 테스팅을 잘 해주는 것은 전체 제품 품질의 향상을 위해 핵심적인 사항입니다. 개발자 단위 테스팅을 커버하는 4일 교육과정이 정부 지원으로 거의 비용 없이 개설되어 여러분 또는 동료분 들이 개발 테스팅을 이해하고 진행하기 위해 본 교육 수강을 제안 드립니다. 본인을 개발자로서 차별화시켜 주는 최고의 도구가 될 것입니다. 또한 주변에 Unit Testing을 할 수 있는 역량을 필요로 하는 다른 개발자분 들이 있으면 많은 소개 바랍니다. 특히 애자일 개발이나 단위 테스팅, 오픈소스 툴 활용에 관심 있는 개발자 분들에게 유닛테스팅에 대한 확실한 지식을 전수해 드리겠습니다.
경험을 정리하고 패턴화하는데 많은 도움이 되는 것인 것 같아 긁어모은 자료들 한번 정리해보았습니다.
----------------------------------
패턴라이팅 (Pattern Writing)과 저자 워크샵
[패턴이란?]
반복적으로 발생하는 문제에 대한 성공적 해결책을 문서화한 것을 패턴이라고 하고, 이 패턴들로 구성되는 언어를 패턴 언어라고 합니다.
간단하게 설명드리면 손자병법의 36계는 적군의 규모가 아군의 3배이상일때 쓰면 좋다라는 식으로 이해하시면 쉬울 것 같습니다.
패턴 언어에는 컴퓨터 프로그램 설계뿐만 아니라 조직 구성, 새로운 아이디어 도입, 그룹 스터디 방식, 교육 방법론등에 대한 것까지 존재하고
있습니다. 이러한 패턴 언어의 장점은 여러가지가 있습니다. 무엇보다도 지식 전파와 공유가 쉬워지며, 효과적인 커뮤니케이션을 할 수
있습니다.
그리고 집단 아이큐를 더 높힐 수 있으며 사회적 변화를 일으키는 원동력이 될 수도 있습니다.
패턴의 개념은 크리스토퍼 알랙산더(건축가)가 만들었고, 우리가 익히 알고 있는 Kent Beck은 Ruby Conf 강연에서 크리스토퍼
알랙산더의
"Timeless way of Building"을 몰래몰래 감명깊게 읽었던 것에 대해서 이야기하고 디자인패턴의 큰 힌트가 되었던 것을
이야기 합니다.
개발자라면 GoF의 디자인 패턴을 안 들어보신 분이 없을 것입니다. 하지만 스스로 패턴을 작성해 보신 분은 드물 것이리라 생각합니다.
패턴을 글로 옮기는 것을 패턴 쓰기(Pattern Writing)라고 합니다. 그리고 함께 서로의 패턴을 개선시켜주는 것을 저자
워크샵(Writer's Workshop)이라고 합니다.
PLOP이라는 컨퍼런스는 매년 세계 도처에서 이 저자 워크샵을 진행해 오고 있으며, 그 결과물이 Pattern Languages of
Program Design이라는 책으로 벌써 5권
까지 출간되기도 했습니다. 이 PLOP의 워크샵은 전통이 깊고 효과적이기로 유명합니다.
[패턴을 모으고 공유하기] Planet: Pattern Language Network 은 일종의
civic movement 로 패턴을 모으고 공유하는 운동을 하고 있습니다.
Situation -What was the setting in which this
case study occurred? SW Product 을 처음 테스트할 때, 테스트 중에 중요한 결함과 사소한 결함들이 여러가지
발견했으나, 개발팀의 리소스(시간,인력)가 여유있지 않을때,
Task -What was the problem to be solved, or the
intended effect? 한꺼번에 많은 결함을 등록할 경우, 원인은 같지만 중복되어 등록된 결함이 많을 수 있는데 중요한
결함해결보다는 결함처리 행정절차에
시간을 사용함으로써 비효율적인 중복이 발생할 수 있다. 또한, 초기에 한꺼번에 많은 결함 리포트는 개발팀의 사기나 자신감을 저하시키고,
결국 모든 결함을 해결하지 못하고 다음 릴리즈로 일부 결함을 연기하게
된다.
Actions -What was done to fulfil the
task? 1차 테스트에는 사소한 결함들은 개발팀에 숨겨두고 중요하고 핵심적인 결함만 리포트하여 그들이 충분한 시간을 가지고 결함을
해결하고 제품을 안정화 시킬 수 있는 버퍼를 제공한다.
Results -What happened? Was is a success? What
contributed to the outcomes?
개발팀의 협업 만족도 증가, 1차 테스트 결함 100% 해결, 2차 테스트 패스율 향상.
Lessons Learned -What did you learn from the
experience? 개발자의 입장에서 그들을 배려한 테스팅을 하되 해피 패스(Happy Pass)가 되지 않게 주의할 필요가
있다. ----------------------------------------------------------------------------------------
[저자 워크샵] 저자 워크숍이라는 것은, 여러 사람의 의견을 통해 저작물을 개선하려는 경우에 모두
적용할 수 있다. 어떤 종류의 저작물이건 가능하다.
저자 워크숍을 통해 글 첫머리에 예를 들었던 제품 의견 수렴회를 대체할 수도 있고, 시인들이 모여 자신의 시를 갈고 닦을 수도 있으며,
논문 준비하는 학생들이 자기 논문을 개선할 수도 있고, 화가들이 그림을 개선할 수도 있으며, 당연히 개발자들이 자기들의 소스 코드를
개선할 수도 있다. 뭐든지 개선이 가능하면 된다.
저자 워크숍은 19세기 말, 아이오와 대학에서 시작되었다. 이 워크숍은 매우 성공적이어서, 예를 들면 이곳 출신 퓰리처상 수상자만 16명이
될 정도다. 아이오와 대학의 저자 워크숍은 빠른 속도로 저자 커뮤니티 사이에 번져 나갔고, 현재는 초중급 작가들이 자신의 실력을 빠르게
높일 수 있는 가장 효과적인 방법 중 하나로 알려져 있다.
하나의 전문 분야에서 무엇인가가 대성공을 이루면 당연히 다른 분야에서 그것을 도용한다. 리처드 가브리엘(시인이면서 프로그래머다)이
문학 쪽에서 이 저자 워크숍을 훔쳐왔다. 그래서 소프트웨어 패턴으로 저자 워크숍을 했고, 나아가서는 소프트웨어 쪽만 아니라 마케팅
캠페인, 요리, 비즈니스 기획, 음악, 인테리어, 헤어 스타일 등 다양한 분야에 걸쳐 적용되었다.
패턴 언어에는 컴퓨터 프로그램 설계뿐만 아니라 조직 구성, 새로운 아이디어 도입, 그룹 스터디 방식, 교육 방법론등에 대한 것까지 존재하고 있습니다.
이러한 패턴 언어의 장점은 여러가지가 있습니다. 무엇보다도 지식 전파와 공유가 쉬워지며, 효과적인 커뮤니케이션을 할 수 있습니다.