티스토리 뷰

How Google Tests Software – A Brief Interlude

Wednesday, February 22, 2011 1:28 PM

 

By James Whittaker

 

이번 포스트는 지난 포스트에 달렸던 몇 가지 흥미로운 코멘트들에 대해 이야기해 보도록 하겠다.

 

우선 부정적인 의견을 피력했던 두 코멘트에 대해 해명을 해야겠다. 이 두 코멘트는 내가 테스터들을 옹호하는 입장에 서 있는 것이 아니라 그들을 팽개쳤다는 것과 구글이 테스트만 수행하는 사람들이 일하기엔 적절하지 않은 곳 같다는 의견이었다. 이러한 코멘트들은 전혀 사실이 아니기 때문에 난 당황할 수 밖에 없었다. 한 사람이 올린 것처럼 동일하게 부정적인 내용이지만 알고 보니 재기 발랄한 서로 다른 두 사람(그들도 이 블로그를 보고 있겠지. 그렇지 않나?)이 올린 의견이었다. 이 코멘트들에 대해 나 스스로 변호를 해야 할 필요가 있을 것 같다.  

 

코멘트는 다음과 같았다.

 

전 세계의 테스터들에게 슬픈 날이다. 우리의 대변자가 우리에게서 등을 돌렸다. ‘개발자들은 테스트를 할 수 없다고 하더니, 이게 어떻게 된 일인가?” – Gengodo -

 

나는 테스트 엔지니어이며 구글은 저에게 꿈의 직장입니다. 당신의 블로그를 읽으면서 구글에서는 테스터들이 그리 중요한 존재가 아니며 쉽게 잘릴 수 있을 거라는 인상을 받았습니다. 슬프네요.”  - Maggi -

 

우선, 나는 구글에서 그 어떤 테스터나 개발자도 잘렸다는 이야기를 들은 적이 없다는 것부터 밝혀야겠다. 우리는 아직도 자주 사람을 채용하고 있다. 우리가 참여하고 있는 프로젝트가 자주 변경되기 때문에 프로젝트에서 제외되었다(taken off a project)’라는 표현을 들었을 수도 있다. 이는 단순히 다른 프로젝트에 참여했다는 것을 의미하는데, 종종 사실보다 훨씬 더 부정적인 의미로 왜곡되어 들릴 수도 있다. 이곳에서 일하는 테스터들은 거의 2년 단위로 프로젝트를 갈아탄다. 아이러니하지만, 이것은 당신이 일했던 곳에서 당신이 더 이상 필요 없다(!)는 것을 의미한다. 하지만 다음과 같은 사실을 알고 보면 이는 곧 명예로운 훈장을 받는 것과 같다는 걸 알게 될 것이다. 프로젝트를 갈아탄다는 것은 당신이 강건성 높은 테스트 프레임워크를 만들어 다른 사람들이 쉽게 테스트를 수행할 수 있도록 만들어 주었거나, 당신이 수행했던 테스트의 경험과 노하우를 더 젊은 테스터들에게 전수해 주고 더 큰 도전을 위해 자리를 옮긴다는 것을 의미하기 때문이다.

 

매기, 지금 가지고 있는 꿈을 잃지 마세요. 만약 구글이 테스터들에게 적대적인 곳이었다면, 난 아마 다른 어떤 곳에서 일하고 있었을 겁니다.

 

그 다음으로, ‘개발자 대 테스터라는 논쟁에 숨어있는 부정적인 뉘앙스들을 부각시키고 싶지 않다는 것도 분명히 해야겠다. 개발자가 테스트를 할 수 있다든지, 혹은 테스터가 코딩을 할 수 있다든지 하는 말들은 두 직군 사이에서 전투적인 분위기를 부추길 뿐이다. 이 두 유형의 엔지니어 모두 성공적으로 제품을 출시해야 한다는 공통적인 목표를 가지고 있는 사람들이다. 세상에는 이보다 더 부정적인 일들이 얼마든지 있다. 테스터들이 개발자들을 미워한다는 따위의 이야기는 10년 전에나 있을 법한 일들이다.

 

사실 고백하자면 나도 예전에는 개발자들에게 날카로운 말들을 쏟아내고는 했었다. 나는 상용화되는 제품에서 테스팅이 엄격하게 시행되지 않는 것을 공개적으로 비판하곤 했었다. 아마 당신이 예전에 나를 봤다면, 형형색색으로 칠해진 버그를 나열하고 화면을 가리키며 여기 한 군데 빠뜨렸군요!”라고 소리치는 나를 볼 수 있었을 것이다. 물론, 이러한 일들은 항상 흥미롭기 그지없다(!).

 

나는 개발자들의 실수를 지적하면서 이런 말들도 했었다.

 

당신은 분명 나보다 더 영리할 거에요. 저는 일부러 만들려고 해도 이런 버그를 만들어 낼 수가 없거든요.”

(You must be smarter than me because I couldn’t write this bug if I was trying to)

 

무슨 일이 일어난건가요? 컴파일러가 당신 눈을 빼버렸나요?”

(What happened, did the compiler get your eye?)

 

상사한테 터져서 눈탱이가 밤탱이된 개발자한테 더 뭐라고 말할래? 아무 말도 하지마, 그 사람은 벌써 두 번은 들었을 거야.”

(What do you say to a developer with two black eyes? Nothing, he’s already been told twice)

 

스스로 차 안에 갇힌 개발자 이야기를 들어본 적 있나요?”

(Did you hear about the developer who locked himself in his car?)

 

, 좋았던 시절이여!

하지만 지금은 2011년이고 나는 충분히 주어진 일을 잘 해내는 개발자들을 신뢰할 수 있을 정도로는 객관적인 사람이다. 구글에서 많은 사람들이 그러하고, 그들은 나머지 다른 사람들에게 예전의 나처럼 사고하고 행동하는 것이 얼마나 부끄러운 일인지를 깨닫도록 하고 있다. 이로 인해 버그를 찾아내는 일은 점점 더 힘든 일이 되어가고 있다. 나는 쉽게 찾을 수 있는 버그에는 약간의 시간만을 할애하고, 정말 미묘하고 크리티컬한 버그를 찾아내기 위해 좀 더 깊게 파고들 수밖에 없었다. 현재 신호대비 잡음 비율(The signal to noise ratio)은 아주 좋다. 그렇다. 어떤 개발자들은 비웃을지는 모르지만, 이것이 바로 진보하는 것이다. 나는 무대에서 데모를 진행하다가 끔직한 장애를 만나 청중들로부터 많은 비웃음을 사는 것보다, 그 전에 수많은 버그를 예방해 이를 피할 수 있다는 것을 잘 알고 있다.

 

이것이 바로 진보다(This is progress).

 

이러한 진보의 부수적인 효과로 개발자들도 테스트를 할 수 있게 된다. 어떤 경우에는 테스터들보다 더 낫다. 최근의 테스팅은 개발자가 테스트하는 경우와 테스터가 테스트를 하는 경우 모두를 고려하고 있다. 이 둘을 얼마나 잘 섞느냐에 따라서 좋은 제품이 나오느냐가 결정된다. 만약 이를 잘못 섞게 되면 아주 우스꽝스러운 발표나 하던 2001년으로 돌아가게 되는 것이다. 

 

어떤 경우에 개발자들이 우리 테스터들보다 더 나은가? 또 어떤 경우에 개발자들이 형편없는 테스터일 뿐만 아니라 아예 제품을 전혀 건드리지 않도록 하는 것이 더 나을까? 글쎄이 주제가 나의 다음 두 포스트의 주제가 될 것이다.

, 그때까지
평화가 함께 하길.