지속적인 통합(Continuous Integration)

지속적인 통합8점
폴 M. 듀발 외 지음, 최재훈 옮김/위키북스

테스트 주도형 개발(TDD) 의 꽃이라고 할 수 있는 지속적인 통합에 대해 설명하는 책입니다. “지속적인 통합 하겠다고 CruiseControl 하나 깔아놨다. 이제 뭐하지?” 라고 질문하시는 분들에게 딱 좋은 입문서고, 아직 아무것도 한 게 없다는 걸 깨닫게 해 주는 책입니다. 이 책 한 권 읽어보면 모든 게 해결될 거라는 기대는 금물입니다. 자 F사의 상황을 봅시다. 작년에 제작한 C/C++ 코드 5만 라인이 있습니다. 대략 크고 작은 30여 개의 펌웨어, 부트로더, 리눅스 커널, 리눅스 디바이스 드라이버, 리눅스 데몬, 윈도우 서비스, 리눅스 응용, 윈도우 GUI 응용이 있습니다. 여기에 올해 대략 7만 라인 정도의 Java, .NET, Python, Web 서비스 가 붙어야 하지요. 4가지 종류의 CPU 와 6가지 타깃 OS 에 포팅되어야 합니다. 어떤 놈은 64비트 리눅스 서버에, 어떤 놈은 윈도우 XP, Vista, 어떤 놈은 리눅스 데스크탑, 어떤 놈은 날 보드에, 어떤 놈은 로봇 완제품에 설치되어야 하지요. 누군가 모듈 하나를 수정하면 20여 개의 테스트 머신이 서브버전으로부터 코드를 가져와서 각 플랫폼 별로 빌드 한 후에 설치하고 단위테스트를 수행하고, 자원 누수와 쓰레드 오류를 검사합니다. 통과하면 연동 테스트를 수행한 후에 로봇에 설치하고 실제 상황에 대해 시스템 테스트를 진행합니다. 이 과정 중 문제가 발견되고 근무시간 중이라면 미친 로봇이 비명을 지르며 사무실을 돌아다닙니다. 이런 테스트가 하루에 24번 정도 저절로 이루어져야 합니다. 아참 테스트 커버리지 보고서, Copy & Paste Detector, Coding Style Verifier, 문서화 커버리지 보고서, 플랫폼 별 인스톨러 생성도 있지요. 어머나 스마트 폰 빼먹었다고요? 여기까지 오면 결과는? QA 부서의 해체? 음 다행히 F사에는 QA부서가 없네요. 골치 아프시면 오가네와 상의하세요. :)

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>