일전에 패이스북의 소프트웨어 테스트 방법(따로 테스터가 없이 개발자가 직접)이 이슈가 된 적이 있었는데 구글의 소프트웨어 테스트 방법도 일반적인 방법과 다른 것 같습니다.

Google Testing Blog에서 Test Engineering DirectorJames A Whittaker씨가 How Google Tests Software라는 글을 통해서 구글의 소프트웨어 테스트 방법을 소개하고 있습니다.

( googletesting.blogspot.com/2011/01/how-google-tests-software.html )

 

 

구글에 테스트 전문 부서는 없다.

구글은 테스트를 전문으로 하는 부서는 없음. 다만 Engineering Productivity 라고 부르는 포커스 에어리어(Focus Area) 안에 있다고 함. 포커스 에어리어는 구글의 조직 분류로 Search, Apps, Ads, Mobile. OS 등에 각각 하나씩 Engineering Productivity가 있다.

Engineering Productivity 라는 조직은 구글 내의 엔지니어 생산성을 향상 시키는 것이 목적으로 그 중에서도 테스트를 가장 중요하게 여긴다고 한다.

 

 

Engineering Productivity3개의 팀으로 구성

Engineering Productivity 3개의 팀으로 구성되어 있다고 한다.

프로덕트 팀

내부 툴, 오픈 소스에 관계 없이 사내의 모든 엔지니어를 위한 툴을 개발. IDE, 테스트 관리 툴, 자동 테스트 툴, 빌드 툴, 소스 관리 툴, 코드 리뷰 스케줄러, 버그 데이터베이스 등 엔지니어의 생산성 향상을 위한 모든 것을 담당.

 

서비스 팀

사내의 제품 팀에 툴, 문서, 테스트, 릴리스 관리, 트레이닝이라고 하는 모든 전문적인 서비스를 제공. 그 범위는 신뢰성, 보안, 국제화 대응이라고 하는 제품 팀이 직면하는 과제를 포함한다.

 

임베디드 엔지니어(Embedded engineers)

사내의 제품 팀의 요청에 의해 엔지니어를 파견한다. 구글은 엔지니어에게 가끔 담당 제품을 변경하는 것을 장려하고 있으며 항상 제품에 대한 경험과 동시에 신선한 시점을 유지할 수 있도록 하고 있다.

 

3개의 팀으로 구성된 Engineering Productivity의 멤버는 Engineering Productivity 매니저가 상사(리포트 라인)이지만 Search, Gmail, Chrome 이라고 하는 각각의 제품 팀에 소속해 있다. 미팅, 식사, 보너스의 수령도 그 제품 팀의 멤버로서 다루어진다.

 

 

테스터가 하는 일은 개발자가 테스트 할 수 있도록 도와주는 것

지금까지는 테스터는(제품 팀에 있어서) 외부의 자원이었고 제품 팀에 있어서 테스트라는 것은 너무나 많은 자원을 필요로 하기 때문에 그것을 적절히 유지할 수 없어서 프로젝트와 리포트 라인을 나누는 것은 도전이었다고 한다

 

일반적으로 테스트는 제품 개발의 마지막 단계에서 행해지고 제품 팀/개발 팀 안에 테스트 팀을 넣어도 테스트 할 때 이외에는 불필요한 존재가 되어버려 많은 개발 조직에서는 테스트 팀은 제품 팀/개발 팀과는 따로 존재하고 필요한 때에 불러서 테스트를 한다 라는 경우가 대부분.

그런데 구글에서는 Engineering Productivity에 속하며 가진 테스트 노하우로 지원하는 엔지니어들은 각 제품 팀에 소속해 있다.

그래서 구글에서는 테스트 팀이 없고, 제품 팀 자신이 품질관리를 책임지고 있다. 그리고 각 개발자는 자신이 테스트 해야 한다. 테스터의 일은 자동 테스트 인프라를 확립하는 것으로 거기에 따라 개발자 자신이 그것을 프로세스 안에서 실행할 수 있도록 하는 것. 테스터는 개발자가 테스트를 할 수 있도록 한다.

 

이렇게 각 제품 팀은 Engineering Productivity 멤버의 지원을 받으면서 스스로 책임지고 테스트를 하는 것이 구글의 테스트 정책.

또 사내가 뛰어난 개발 노하우, 테스트 노하우, 툴 등이 Engineering Productivity의 리포트 라인에 의해서 신속하게 전사적으로 공유되는 이점도 생겼다고 한다.

 

 

3개로 나누는 엔지니어의 역할

구글은 엔지니어를 3개의 역할로 나눈다고 한다.

 

Software Engineer(SWE)

지금까지의 엔지니어와 같으며 고객에게 제공하기 위한 제품의 코드를 만드는 역할. 문서, 데이터 구조, 아키텍쳐 등도 이 역할이 담당. 그와 동시에 품질의 책임도 진다.

 

Softweare Engineer in Test(SET)

테스트의 하기 쉬움(Testability)에 집중한다. 디자인 리뷰를 하고 품질이나 리스크를 체크. 코드를 테스트하기 쉽게 리랙토링 한다. 유닛 테스트나 테스트 프레임웍, 자동 테스트도 만든다.

 

Test Engineer(TE)

TESET와는 반대의 입장에서 테스트가 최우선. 개발은 두 번째로 생각하는 역할. 유저로서 행동하고 이용 시나리오를 고려하여 자동 테스트 스크립트를 만든다. SWESET의 테스트 작업을 도와주고 결과를 알기 쉽게 전달한다.

 

 

 

참고 : http://www.publickey1.jp/blog/11/post_144.html
by 흥배 2011. 2. 16. 19:20