24
How Tests Software Ye Joo Park / 2014 년 10 년 16 년

How Google Tests Software (구글의 소프트웨어 테스팅)

Embed Size (px)

Citation preview

How Tests Software

Ye Joo Park / 2014 년 10 월 16 일

200 3D E V E L O P E R S T E S T E R S

O V E R O N L Y

Don’t hire too many testers… Everyone who writes code at Google is a tester.“

}Software Engineer

Software Engineer in Test

Test Engineer

Test Engineering Manager

테스트 관련 엔지니어들Key Testing-Related Roles

Why so many?

많이 고용할 필요가 없다더니…

왜 이리 다양할까요 ?

Google SW Engineers are feature developers.일반 소프트웨어 개발자는 기능을 개발

Google SW Engineers in Test are test developers. 테스트 담당 소프트웨어 엔지니어는 테스트 효율 / 품질을 높일 수 있는 부분 담당

Google Test Engineers are user developers.테스트 엔지니어는 유저의 입장에서 테스트 담당

+ Google Test Engineering Manager

테스트 관련 엔지니어들Key Testing-Related Roles

Software Engineer in Test Test Engineering ManagerTest Engineer

SW Engineer in Test 는 SW Engineer 가 테스트를 더 효율적으로 수행할 수 있도록 하는 것이 목표

Sync 기능 개발

Software Engineer(SWE)

Test CodeTest-Driven Design

Unit Tests

Software Engineer in Test(SET)

Sync 기능을 효율적으로 테스트 할 수 있는 코드 개발

RefactoringAutomationUnit Testing Frameworks

Ted MaoInterview with Software Engineer in Test

이전의 BugsDB ( 구글이 사용하던 이전 BugsDB) 는 우리의 개발 과정을 도와주긴 커녕 방해하는 일이 대부분이었습니다 . 느린 UI 속도 , 직관적이지 않은 Workflow 등 문제가 많았습니다 . 그래서 Buganizer 를 개발할 때에는 개발자들의 실제 Process 를 도울 수 있도록 설계했습니다 .

Software Engineer in Test Test Engineer Test Engineering Manager

Test Engineer 는 유저 관점에서 테스트

• SW Engineer in Test 보다 더 넓은 관점으로 프로젝트를 바라보게 됨• Technical Skills + User Focus

• User Scenario 가 정상적으로 작동하는지 확인Security

Privacy

Performance

Reliability

Usability

Compatibility

GlobalizationGoogle ChromeTest Engineer

Sync 기능 개발

Software Engineer(SWE)

크롬 개발 과정의 테스터들Testers Involved in Chrome Development

Test CodeTest-Driven Design

Unit Tests

Software Engineer in Test(SET)

Sync 기능을 효율적으로 테스트 할 수 있는 코드 개발

RefactoringAutomationUnit Testing Frameworks

Test Engineer(TE)

사용자 관점에서 테스트

사용성 , 보안 등 사용자 관점에서의 비기능 테스트 수행

Software Engineer in Test Test Engineer Test Engineering Manager

Test Engineering Manager 는 SW Engineer in Test 들과 Test Engineer

들 사이의 협업이 잘 될 수 있도록 하고 Leadership 역할을 담당

• 절반 이상의 Test Engineering Manager 들은 Test Engineer 출신• “Know your product” 정신

크롬 익스텐션 설치 방법브라우저 스킨 변경하기Sync 설정Proxy 설정 변경

DOM 보는 방법Cookie 저장 위치새로운 버전 릴리즈 정책 및 방법+ Backend & Other Technical De-

tails

Google ChromeTest Engineering Manager

Sync 기능 개발

Software Engineer(SWE)

크롬 개발 과정의 테스터들Testers Involved in Chrome Development

Software Engineer in Test(SET)

Sync 기능을 효율적으로 테스트 할 수 있는 코드 개발

Test Engineer(TE)

사용자 관점에서 테스트

Test Engineering Manager (TEM) 프로젝트 전반에 걸쳐 테스팅 관리

Joel HynoskiInterview with YouTube Test Engineering Manager

제가 저희 팀의 Tester 들에게 가장 먼저 시키는 것은 제품을 완전히 이해시키는 것입니다 . 팀원 모두가 제품을 완벽히 이해해야 합니다 . 완벽히 이해한 후에는 테스팅 문제를 이해하게 되고 , 그것을 위한 해결책을 제시할 수 있습니다 .

Engineering Productivity

조직 구성Organizational Structure

테스트의 종류Types of Tests

테스트의 형태 (form) 보다는 범위 (scope) 를 강조하기 위해 code, integra-tion, and system testing 대신 small, medium, and large tests 사용합니다 .

Small Medium Large

Small Test Large TestMedium Test

AutomatedSingle Function or Module

Typical function issuesData corruptionFaked, Mocks

No external dependencies

Single Unit of Code (Unit Test)

Small Test Large TestMedium Test

One or more application modulesUsually automatedNearest neighbor functionsSW Engineers in Test are heavily involved

“ 가까운 모듈들이 서로 의도하던 대로 동작하는가 ?”

Two or More Units of Code (Integration Test)

Small Test Large TestMedium Test

Covers three or more modulesReal user scenariosReal user data sources

“ 사용자가 의도하는 대로 제품이 동작하는가 ?”

Three or More Units of Code (System Test)

리스크 측정Estimating Risks

FREQUENCY IMPACT

What events are we concerned about?

How likely are these events?

How bad would they be to the enterprise?

How bad would they be for customers?

리스크 측정Estimating Risks

FrequencyRarely (Download Page for Chrome)Seldom (Forward button in Chrome)Occasionally (Chrome Sync)Often (Rendering Web Pages)

ImpactMinimal (Chrome Labs)Some (Refresh button)Considerable (Chrome Extensions)Maximal (Autoupdate)

리스크 관리Risk Management

Eliminate the riskiest components

Write user stories around risky capabilities

Recovery and fallback features

Watchdog code on risks with large impact

Test Engineers 들에게 risk 에 대응할 책임이 있음

Apple ChowInterview with YouTube Test Engineer

구글에서의 Test Engineer 들과 Software Engineer in Test 들은 대부분의 다른 회사 엔지니어들보다 기술적인 경험이 많습니다 . 코드를 작성할 줄 모르는 Test

Engineer 를 이곳에서 찾아보기 힘듭니다 . 이러한 코딩 능력을 바탕으로 테스팅의 임팩트를 높일 수 있습니다 .

TOOLS

Apple ChowInterview with YouTube Test Engineer

AUTOMATION TEST-CENTRIC CULTURE

What makes Google Different?

배워야 할 점Thins to Take Away

1. 유저 시나리오에는 기술적인 부분이 아예 없어야 한다 .

2. 자동화시킬 수 있는 것들은 모두 자동화하고 manual 테스팅이 필요한 곳에 집중하라 !

3. 테스팅과 품질 관리는 개발 프로세스에 관련된 모든 사람들이 함께 만들어가고 ,

Productivity Engineering 의 임무는 효율 향상이다 .

4. 테스팅의 중요성을 모두가 인지하고 있는 test-centric 문화는 필수이다 .

5. 기능보다 품질을 중요시해야 한다 .

6. 테스팅이 품질을 보장하진 못한다 !

감사합니다