티스토리 뷰


How Google Tests Software – Part Four

Wednesday, March 02, 2011 10:11 AM

 

By James Whittaker

 

기고, 걷고, 뛰어라(Crawl, walk, run)[1].

 

구글이 다른 회사에 비해 얼마 되지 않는 테스터들을 가지고도 훌륭한 성과를 거둘 수 있었던 핵심적인 이유는 바로 한 번에 많은 기능을 구현하지 않으려 했기 때문이다. 사실은 오히려 그 정반대가 우리의 목표다. 제품의 핵심을 가장 먼저 만들고, 이를 가장 많은 사람들이 누릴 수 있는 가장 좋은 시점에 릴리즈 한다. 이후에 사용자들의 피드백을 받는 과정을 반복하는 것이다. 이것이 우리가 베타(Beta)’라는 딱지를 무려 4년 동안이나 달고 있었던 지메일(Gmail)을 만들어낸 과정이다. 이 딱지는 우리가 사용자들에게 제품이 완벽해지는 과정에 있다는 것을 알려주는 것이다. 우리는 실제 사용자의 이메일 데이터 중 99.9%를 완벽하게 처리한다는 목표에 도달하고 나서야 그 딱지를 떼어버렸다. 점점 더 품질이 좋아지고 있다는 명백한 증거였다!

 

프로세스라는 게 내가 생각한 대로 막 진행되는 건 아니다. 사실, 우리가 말하는 베타 채널 릴리즈를 진행하기 위해서는, 제품이 수많은 다른 채널을 거치면서 그 가치를 스스로 입증해야만 한다. 크롬은 내가 구글에 입사한 다음 처음 2년의 시간을 쏟아 부은 제품이다. 우리는 이 제품의 품질에 대한 확신을 얻기 위해, 그리고 우리가 바라는 피드백을 더욱 많이 받기 위해 다양한 채널을 사용했다. 크롬이 거쳐간 채널의 순서는 다음과 같았다.

 

카나리아 채널(Canary Channel)은 우리가 아직은 릴리즈에 적합하지 않다고 생각하는 코드에 사용된다. 탄광에 가지고 들어가는 카나리아처럼[2], 이 코드들이 살아남지 못한다면 우리는 재작업을 수행해야 한다. 카나리아 채널에 올라간 빌드는 우리의 실험에 동참해 이를 견뎌낼 만큼 참을성 있고, 테스트 대상인 애플리케이션을 실제 작업에 활용하지 않는 사용자들에게만 제공된다.  

 

개발자 채널(Dev Channel)은 개발자들이 매일매일 하루 단위의 작업을 확인하기 위해 사용하는 채널이다. 제품과 관련된 모든 개발자들이 이 빌드를 사용하며 실제 작업에 활용한다.

 

테스트 채널(Test Channel)은 내부적인 개밥 먹기에 사용되며, 지속적으로 양호한 퍼포먼스를 보여주는 베타 채널 빌드를 만드는데 사용된다.

 

베타 채널(Beta Channel) 혹은 릴리즈 채널(Release Channel) 빌드는 외부로 노출되는 최초의 빌드이다. 앞선 여러 채널에서 충분한 시간을 보낸 빌드만이 릴리즈 채널에 올라가며, 이는 곧 테스트와 실제 사용 양 측면에서 제품의 가치를 증명한 것으로 인정받는다.

 

이렇게 기고, 걷고, 뛰는 것과 같은 점진적인 개발 방법은 애플리케이션을 일찌감치 테스트하고 실험할 수 있는 기회를 제공해 줄 뿐만 아니라, 다양한 채널에서 매일 수행하는 자동화 테스트와 실제 이를 테스트하고 사용하는 사람들로부터 동시에 피드백을 받을 수 있게 해준다.

 

이 프로세스에는 버그가 언제 수정되었는지 분석할 수 있는 장점도 존재한다. 만약 필드에서 버그가 발견된다면, 테스터는 이를 재현할 수 있는 테스트를 만들고 이를 각 채널별 빌드에서 수행해 봄으로써 버그의 수정이 구현되었는지 여부를 확인할 수 있게 되는 것이다.



[1] 역자 주: ‘가능한 것부터 단계적으로 수행하라는 의미의 관용구다.

[2] 역자 주: 유해가스를 측정할 만한 기기가 없던 시절, 탄광에 카나리아를 가지고 들어가 카나리아가 죽으면 위험하다고 판단했던 것에서 유래한 구절이다. ‘심각한 문제를 미리 감지해 내는 수단이라는 의미로 사용되며, ‘잠수함의 토끼도 같은 의미로 사용된다.