73
“Software Engineer in Test” in 게임 개발 - TERA 테스트 자동화가 가능할까? ([email protected]) Lead SET / 블루홀 스튜디오

KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Embed Size (px)

DESCRIPTION

Document presented at Korea Game Conference 2014. Title is ''Software Enginner in Test' in Game Development' and sub-title is 'How can TERA verify too many scearios by automation ?' 블루홀 스튜디오의 김성민 입니다. 이번 Korea Game Conference 2014에서 발표한 자료를 공유합니다. 발표 주제는 'Software Enginner in Test' in 게임 개발 입니다.

Citation preview

Page 1: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

“Software Engineer in Test” in 게임 개발

- TERA 는 테스트 자동화가 가능할까?

김 성 민([email protected])

Lead SET / 블루홀 스튜디오

Page 2: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

그 동안의 다양한 시행착오를 함께 공유하는 자리입니다

Page 3: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

• 게임 개발에서 테스트 자동화가 과연 가능할까? 를 고민하시는 분,

• 프로그래밍을 활용한 테스트에 관심이 많으신 분,

• 효율적인 개발 프로세스에 관심이 있으신 분들께 작게나마 도움이 되었으면 좋겠습니다.

Page 4: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

1 부 (15:50 ~ 16:50)

1. 발표자 소개

2. Software Engineer in Test?

• Test Automation

• SET at Bluehole Studio

3. TERA Test Framework

• TeraPuppet

• TeraTest

• Selenium Integration

4. Q & A

Agenda

Page 5: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

2부 (17:00 ~ 18:00)

1. Test Scenarios

2. CI & 배포 연동

3. 성과 측정

4. Summary 1. DEMO

2. 현재까지의 성과

3. 아쉬운 점

5. Q & A

Agenda

Page 6: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

• LG Electronics : 3 years Project: 4 mobile devices

Sungmin Kim

• 새로운 개발을 좋아하는 11년 차 개발자 그리고 아내와의 여행을 좋아하는, 한 아이(곧 두 아이)의 아빠

Email: [email protected] / [email protected]

발표자 소개

• Realtime Worlds, Client Programmer : 1 year Project: My Worlds (Data Generation)

• Microsoft, SDET and SDE 2 : 5 years Project: Office 2010, Office 2013 (SharePoint Designer) Award: Gold Star Stock Awards (2011) with SPD Test Automation

• Bluehole Studio, Lead SET (2013.08 ~ 현재) : 1.5 years Project: TERA (Test Automation )

Page 7: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Software Engineer in Test

Page 8: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Software Engineer in Test

• 국내에선 다소 생소하나, 서구에선 보편적

– Blizzard, Riot, EA 등의 게임회사에서도 활발하게 SET 채용

– SET @ Blizzard, EA, Riot, Google, …

– SET @ Bluehole Studio

– SDET @ Epic Games, Microsoft Game Studios,…

• 테스트 분야의 프로그래머 (TEST ≠ QA)

– 테스트 자동화

– 코드 오류 검증

– 개발 단계에서의 이슈 조기 검증

– 프로그래밍을 통한 테스트

– Performance, Security 이슈 검증

– 지속적이고 & 정확한 이슈 관리

– 지식 전파 등

• 테스트 분야도 전문 프로그래머가 필요

Software Engineer in Test ?

Page 9: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Software Engineer in Test

• 컴퓨터가 사람 대신 검증 할 수 있는 일은 컴퓨터

를 통한 검증이 더 효율적

– 반복적인 작업 (Regression 확인)

– 정확한 수치 검증

– Performance, Security, Code Defects

• 개발 현황, 조직 구조, 프로젝트 성격 등에 따라

추구하는 방향은 전혀 달라질 수 있음

* 블루홀 스튜디오의 경우

– Test 가능한 Project는 1개 (TERA)

– 조직 구조: TERA Project 기준 150 여명 ( QA 조직 포함 )

– 성격: 게임 (MMORPG)

– 출시 국가: 6개 (한국, 중국, 대만, 일본, 북미, 유럽)

-> 현재 SET 인원 1명 ;

Software Engineer in Test ?

For software?

Page 10: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Software Engineer in Test

• 모든 것을 검증 할 순 없다.

– 재미

– UX

– 복잡한 환경의 멀티플레이

• 개발자와 QA의 보다 효율적인 업무 가능

• QA 조직과 개발 조직과의 협업이 매우 중요

• 1) 업무 효율성, 2) 커버리지 향상, 3) 개발 프로세스 개선

– 개발비 절감

– 테스트 효율화

– 유지보수 용이 (테스트 담당자인 김 아무개씨의 퇴사 후에도 이미 만들어진

자동화 시나리오는 수행 됨)

– 효과적인 자동화 테스트 프로세스 도입

– 새로운 분석 및 투자를 통한 개발 효율성 향상

Software Engineer in Test ?

재미

UX

Page 11: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Test Automation

Page 12: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
Page 13: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

테스트 자동화란?

Software Engineer in Test ?

Product의 장기적인 안정화와 비용 절감을 위한 중요한 요소

장기적으로 빠르고 안정적으로 이슈를 검증 & 테스트 자동화

를 기반으로 한 다양한 개발 방법론 도입 가능

유지보수에 용이하며 비용 절감 측면에서 효과적

기본 시나리오 검증 뿐 아니라, Security, Performance 및

Localization 테스트에도 용이

다양한 Coverage 측정을 통해 중복 작업 최소화를 통한 자동화

테스트 검증 비용을 측정할 수 있음

Page 14: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

효율적인 자동화 테스트

Software Engineer in Test ?

Reference: http://xunitpatterns.com/Goals of Test Automation.html

Page 15: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

DEMO

Page 16: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
Page 17: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

왜 국내에선 생소할까?

• 항상 바쁘다 (정말 바쁘다.)

• 채용 (당장 개발자 뽑기도..)

• 경험 부족 (나 말고 누군가의 시행착오가 필요하다.)

• 초기 개발 비용

• 프로젝트의 불완전한 미래

– 개발 중에는 검증을 중요시 하진 않더라

– 잦은 스펙의 변화

– 개발 Process 보다는 당장의 Output

– 수작업(일단 바쁘니..) vs 시스템 개발

Software Engineer in Test ?

자동화가 힘들다

바쁘다

Because Because

원래 이렇게 해왔다.

어떻게 하는지 모르겠다.

언제 접힐지 모른다.

다른 것도 할 것이 많다

기타 등등..

Page 18: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

효율적인 SET 도입은 가능할까?

• 국내 개발 환경은 Microsoft 에서의 개발 환경 & 문화와 비교하여 차이가 제법 있음

• 프로젝트 성격과 국내 Online Game 개발 환경에 적합한 SET 역할 정리가 중요

Software Engineer in Test ?

SET at Bluehole Studio SDET at Microsoft

장점 • 회사의 충분한 지원

• 소규모(1인) 개발

• 다양한 개발을 할 수 있다

• 필요한 모든 것을 만들 수 있다.

• 최신의 기술적 시도 가능

• 이미 정착된 문화

• 여러 SDET / SDE 들과 관련한 정보 교류

• 프로세스 & 도구들이 잘 갖추어짐

• Career Path에 대한 방향 제시

단점 • 정착되지 않은 문화

• 기존 Process와 융화 필요

• 소규모(1인) 개발

• 신뢰성

• 변화를 꾀하는 것이 쉽지 않음

• 기존 프레임웍 위에서 수행

• 이미 정착된 문화

• 자율성

특징 • QA 조직 존재 (TERA의 경우)

• 비용 중시

• 모든 것을 만들어야 함

• QA 조직 없음 (Office 2010, 2013 개발의 경우)

• 커버리지 중시

• 개발 초기부터 계획된 라이브러리

Page 19: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

효율적인 SET 도입은 가능할까?

전체의 변화보다는

Software Engineer in Test ?

1) 기술적인 접근을 통한 커버리지 확대

2) 테스트 자동화 수행을 통한 유지 보수로 인한 효율성 및 비용 절감

3) 개발 과정의 테스트 도입을 통한 이슈 조기 검증

을 목표로 진행을 시작한다면 안착 가능성이 높을 것이라 기대

Page 20: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

SET at Bluehole Studio

Page 21: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

• Microsoft 의 테스트 자동화 프로세스는 매우 매력적

• Bluehole Studio 에서 테스트 자동화 도입 중

• 게임에도 도입하면 어떨까? 의 호기심

• TERA는 테스트 자동화를 수행하기 매우 적절한 게임 (다양한 국가, 다양한 레거시 코드, 회사의 새로운 시도 등)

• 분명 더 나아질 것이라 믿고 시작

SET at Bluehole Studio

My SET History (2013.08 ~)

Page 22: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

My SET History (2013.08 ~)

SET at Bluehole Studio

• 나홀로 SET, 무엇을 하였나?

– SET 직무 제안 및 역할 정리

– 테라 테스트 자동화를 위한 Tera Puppet 1.0 개발

– 테라 테스트 자동화를 위한 Tera Test 개발

– 웹 자동화를 위한 Selenium 선정 및 시나리오 작성 도구 개발

– 효율적인 BTS 시스템을 위한 JIRA 도입 및 설정

– QA 실 테스트 자동화를 위한 툴 개발

– QA실 테스트 자동화를 위한 지식 및 기술 전파

– 국가별 배포 시스템 연동을 통한 자동화 시나리오 수행

– 테스트 자동화 도입을 통한 개발 프로세스 효율화

– Client Performance 의 지속적인 측정

:

• 개발 진행 중 & 꾸준한 시도 중

Page 23: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

SET at BHS

Software Engineer in Test ?

Bluehole Studio 에서의 모든 게임 Test Automation Framework 을 디자인하고 개발

QA 및 다른 개발자들과 협업을 통한 전체 테스트 전략 수립

개발자 테스트 및 Unit 테스트 도입 및 지원

효율적인 자동화 테스트를 위한 라이브러리 및 툴 개발

실제 소스코드를 기반의 Code Defect 검증 및 Security Test, Performance Test 및 관련 툴 개발, Code

Coverage 측정 등의 수행

새로운 기술을 항상 분석하여, 여러 프로젝트에 걸쳐 기술을 전파하고 효율적인 테스트 방법론 제시

23

Gathering requirements and Planning test automation framework

Designing and developing test automation framework

Executing test cases and supporting QA and developers

Maintenance

Page 24: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

이런 부분이 다르더라

Game (TERA) Application (MS Office 2010)

테스트 자동화 시점 서비스 시작 이후 개발 초기 단계부터

로직 흐름 비동기 동기

검증 대상 Source Code + Data Source Code + Data

검증 요소 재미 + 기능 기능

상호 작용 여러 유저들과의 Play 검증 필요 없음

개발 규모 1년 6개월 * 1명 10년 이상 * ? 명

QA 별도의 QA 조직 있음 별도의 QA 조직 없음

국가 6 국가 30+ 국가

OS Windows 7 or Windows XP 모든 OS

Product 목적 취미 업무

이슈 발생 패치 + 보상 소송 가능성

업데이트 주기 빠름 (1 ~ 2주) 상대적으로 느림

SET at Bluehole Studio

Page 25: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

협업

SET at Bluehole Studio

• SET

– Product 와 접목되어 수행될, 테스트 프레임 및 라이브러리 기획 및 개발

– 다른 개발자들이나 QA 분들이 사용하실 수 있도록 개발된 라이브러리의 템플릿 제공

– 새로운 기술 개발 및 솔루션 제공

– QA의 요구 사항을 통한 테스트 툴 개발

– 시나리오 & 코드 리뷰

• QA

– 시나리오 제작 및 이슈 분석

– 시나리오 관리 및 유지 보수

– 제작된 테스트 프레임 웍, 툴, 라이브러리 사용 피드백

– 툴 개발을 위한 기획서 작성

• DEV

– 테스트 자동화 시스템 및 시나리오의 업무 활용

– 개발자 테스트

– 결과 확인 및 이슈 수정

Page 26: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

아직 초반

• 더 많은 개발과 프로세스의 도입 필요

– 계획 대비 20 정도의 길

– 나머지 80의 길

• 시행착오가 예상됨

– 관리

– 개발

– 개발자 테스트

– Unit Test

– 코드 커버리지 향상

– 데이터 커버리지 향상

– Server Performance 측정

:

SET at Bluehole Studio

Page 27: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
Page 28: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

TERA Test Framework

Page 29: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

자체 개발 vs 외부 솔루션

• 외부 솔루션을 이용한 게임 테스트 자동화는 한계 발생

• TERA의 서버 & 클라이언트 코드를 완전히 이해하고,

실제 Product 코드 위에 테스트 자동화 시스템을 구축하자

– 실제 Product 코드에서 개발

– 누구나 시나리오를 만들 수 있는, 시나리오 제작 & 재생 방식의

통합된 프레임웍

– Unit Test 및 다양한 테스트 라이브러리 개발을 통한 추후 확장

용이

– .NET을 이용하여 개발 생산성을 높이자

– 필요한 경우 공개 라이브러리를 활용하자 (e.g. Selenium)

TERA Test Framework

IN-HOUSE

EXTERNAL

SOLUTION

Page 30: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Framework Overview

TERA Test Framework

TeraPuppet (Record & Playback for TERA)

- 녹화 / 재생을 통한 시나리오 제

작 및 실행

- 누구나 손쉽게 시나리오를 만들고 재생 가능

- 유지보수가 쉽다.

- 다소 제한적인 기능만 사용 가능하다는 단점

Selenium Integration (Record & Playback for Web)

- 웹 테스트를 위한 Open source

library인 Selenium을 활용한 테스트 자동화

- TeraPuppet 과 연동되어 게임 내

시나리오와 연동하여 웹 테스트

가능 - 웹 기반의 자동화 테스트에 유용

TeraTest (C# Library & Script)

- 테스트 라이브러리 기반

- C# 으로 구성되어 다양한 .NET 라이브러리의 활용 가능

- 대규모 데이터 시트를 활용한 자동화 검증이나 혹은 복잡한 계산이 필요한 경우의 자동화 시나리오 제작에 유용

- 시나리오 제작을 위해 라이브러리

개발이 별도 필요

Puppeteer (BlueholeTestWeb) - 웹 기반의 시나리오 관리 및 실행

CI with the test automation (TeraTestAgent) - TERA 배포시에 자동으로 테스트 자동화 시나리오가 수행되도록 개발

TERA

Page 31: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

TeraPuppet

TERA Test Framework

31

• Record & Playback 방식

• 수행 중인 게임에서, 1) 클라이언트와 서버간의 주고 받는 패

킷, 2) 게임 내부의 UI Event, 3) Key Event, 4) Mouse Event, 5)

그 외의 다양한 기능을 구현하기 위한 Custom Action 등을 녹

화하고, 이들을 조합하여, 원하는 시나리오를 만든 후, 다시

재생하는 방식

• 직관적이므로 프로그래밍을 몰라도 누구나 쉽게 시나리오

제작 가능

• XML 기반의 시나리오로 구성

• 여러 상황을 재현하고 검증하기 위한 다양한 문법과 기능

• 녹화 기능, 스크린 캡쳐, 웹 자동화 연동, EXCEL 연동, DB

조작 등

Page 32: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

TeraPuppet

TERA Test Framework

32

• Excel 등을 활용한 대용량 데이터 처리 가능

• 프로그래머들의 로그 툴이나, 디버깅 용도로도 사용

가능

• Packet과 Event를 많이 파악 할 수록 다양한 시나리

오를 만들 수 있음

• 규격화된 문법이 아닌, 자체 제작된 문법들을 사용하

므로 복잡한 기능의 검증을 위해서는 별도의 기능 구

현이 필요

• QA실에서 Tera Client의 검증의 경우는 Puppet을 활

용하여 다양한 자동화 시나리오를 제작 중

QA분이 만들어주신 Puppet 메뉴얼

Page 33: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

TeraPuppet

TERA Test Framework

33

DEMO

Page 34: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

TeraTest

TERA Test Framework

34

• C# 을 이용한 TERA 제어 & 검증

• 프로그래밍을 아는 사람이라면, 누구나 쉽게 스크립트

작성을 통해 TERA를 제어하고 검증할 수 있도록 라이브

러리를 만들자

• Native 코드로 개발된 TERA를 Managed World로 끌어오

기 위한 별도의 개발 필요

• 복잡한 시나리오나, 프로그래밍의 장점이 필요한 부분,

C#의 막강한 라이브러리를 필요로 하는 부분에 이용되

면 좋음 (e.g. 대용량 데이터를 이용한 검증, TeraPuppet으로 제작

이 힘든 시나리오)

Page 35: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

TeraTest

TERA Test Framework

35

• C++ /CLI Layer

• C# (with WPF (Windows Presentation Foundation) 와 MVVM )

• 개발자들의 UnitTest 개발에 용이

• Puppet과 연동하여 다양한 Packet 재생 가능

• 대부분의 시나리오들이 이론상 구현 가능

• 다양한 Library 개발 중

– BOT

– DirectX 기반 Game UI 검증

Page 36: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

TeraTest

TERA Test Framework

36

DEMO

Page 37: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

AutoIt vs Selenium

• AutoIt 과 Selenium 중 확장성이 높은 Selenium 선정

• QA 팀의 프로그래밍 언어를 C#으로 선정

• 전사 대상으로 C# Study 진행

TERA Test Framework

AutoIt Selenium

코딩 난이도

(상, 중, 하) - -

확장성 중 상

커뮤니티

활성화 중 상

장점

• 최초 진입 장벽이 낮음

• 자체 Library 지원

• 코드 수정이 쉬움

• 자동으로 코드를 생성해주는 Firefox IDE

• 다양한 확장성 (Excel 연동, .NET 연동 등)

• 다양한 언어 지원 및 변환 (VBA, C#, Autoit 등)

단점 • AutoIt 자체 언어를 배워야 함

• C++ / C# 연동이 어려움

• IDE로 최초 작성시 코드 수정이 어려움

• 특정 언어(C#)을 배워야 함

Page 38: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Selenium Integration

TERA Test Framework

• Open Source Library인 Selenium 을 사용한 웹 테스트 자동화

• 웹의 경우 표준을 대부분 따르고, HTML 기반의 구조이므로

외부 자동화 라이브러리 도입이 용이하고 활용도 높음

(JavaScript 제외)

• 현재 웹 기반의 테라 운영툴의 검증에 사용됨

• SET가 Selenium Library 및 Puppet위에 수행될 수 있도록 개발

• QA 분들께서 이를 활용하여 다양한 시나리오 제작

• Puppet 이나 TeraTest의 연동 작업을 통해, 실제 게임에 융화

되어 검증 ( Puppet 으로 TERA 환경 설정 -> Selenium 명령어를 통한 검증 -

> Puppet으로 변경된 게임 결과 검증 )

Page 39: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Selenium Integration

TERA Test Framework

DEMO

Page 40: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

• 2부 에서는..

– TERA Test Framework에서 사용되는 시나리오

– 배포 연동 (CI)

– 성과

– 데모

– 좋았던 점 / 아쉬운 점

– 요약

– Q & A

Page 41: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Q & A

Page 42: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

2부 (17:00 ~ 18:00)

1. Test Scenarios

2. CI & 배포 연동

3. 성과 측정

4. Summary 1. DEMO

2. 현재까지의 성과

3. 아쉬운 점

5. Q & A

Agenda

Page 43: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Test Scenarios

Page 44: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
Page 45: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

테스트 자동화 시나리오

Test Scenarios

• 사람이 하는 일을 컴퓨터가 대신 할 수 있도록 테스트 시나리오 제작

• 기능을 잘 아는 사람이 시나리오를 제작 하는 것이 효과적

• 시나리오를 잘 만드는 것도 경험과 노하우가 중요

• 시나리오를 잘못 만드는 경우, 비용만 들고 효율성이 떨어지는 역효과

• 비교적 안정적인 컨텐츠를 대상으로 제작하는 것이 효과적

장 점 단 점

• 반 영구적으로 사용

• 기능을 잘 모르는 분들도 시나리오 수행을 통

해 안정적인 결과 확보

• 다양한 확장성 ( e.g. performance 검증)

• 시나리오 공유가 가능하면, 국가나 빌드의 추

가에도 비용 최소화

• 다양한 OS나 국가별 OS에서도 쉽게 검증 가능

• 시나리오 유지 보수 비용 발생

• 초기 시나리오 제작 비용 발생

• 사람이 테스트하는 것과 100% 동일 할 순

없음

Page 46: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

TERA 테스트 자동화 시나리오 현황

Test Scenarios

• 5 개의 국가에서 수행 가능한 400 여 개 이상의 시나리오

– 국가: 한국, 중국, 일본, 유럽, 북미

– 목적: 빌드검증, 이슈 검증, 가배포, 세부 컨텐츠

– 대상: 신규 컨텐츠, 기존 컨텐츠, Performance

– 도구: TeraPuppet, TeraTest, Selenium Integration

• QA 분들의 다양한 제작 노하우로 꾸준히 시나리오 제작 중

• QA와 SET의 효율적인 역할 분담 중요

– QA: 시나리오 제작

– SET: 시나리오 제작 도구 개발 및 시나리오 Template 제공

• 개인이 개별 환경에서 별도로 돌리거나 CI (Continuous

Integration) & 배포연동 시스템을 통해 수행

Page 47: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

시나리오 예제 (TeraPuppet)

Test Scenarios

Page 48: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

시나리오 예제 (TeraTest)

Test Scenarios

Page 49: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

시나리오 예제 (Selenium)

Test Scenarios

Page 50: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

시나리오의 제작과 유지 보수는 테스트 자동화의 가장 중요한 요소

Page 51: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Framework Overview

TERA Test Framework

TeraPuppet (Record & Playback for TERA)

- 녹화 / 재생을 통한 시나리오 제

작 및 실행

- 누구나 손쉽게 시나리오를 만들고 재생 가능

- 유지보수가 쉽다.

- 다소 제한적인 기능만 사용 가능하다는 단점

Selenium Integration (Record & Playback for Web)

- 웹 테스트를 위한 Open source

library인 Selenium을 활용한 테스트 자동화

- TeraPuppet 과 연동되어 게임 내

시나리오와 연동하여 웹 테스트

가능 - 웹 기반의 자동화 테스트에 유용

TeraTest (C# Library & Script)

- 테스트 라이브러리 기반

- C# 으로 구성되어 다양한 .NET 라이브러리의 활용 가능

- 대규모 데이터 시트를 활용한 자동화 검증이나 혹은 복잡한 계산이 필요한 경우의 자동화 시나리오 제작에 유용

- 시나리오 제작을 위해 라이브러리

개발이 별도 필요

TERA CLIENT

Puppeteer (BlueholeTestWeb) - 웹 기반의 시나리오 관리 및 실행

CI with the test automation (TeraTestAgent) - TERA 배포시에 자동으로 테스트 자동화 시나리오가 수행되도록 개발

Page 52: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

CI & 배포 연동

Page 53: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Continuous Integration 이란

CI & 배포연동

지속적으로 퀄리티 컨트롤을 적용하는 프로세스를 실행하는 것

소프트웨어의 질적 향상과 소프트웨어를 배포하는데 걸리는 시간을 줄이는데

지속적인 통합은 재작업을 줄여서 비용과 시간을 줄이는데 초점

Page 54: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Test Automation & CI 의 필요성

CI & 배포연동

Reference: http://www.embeddedinsights.com/channels/2012/03/19/unit-test-tools-and-automatic-test-generation/

Page 55: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

TeraTest Agent

CI & 배포연동

• 개발자의 수정 사항의 수시 확인을 통한, 이슈의 빠른 검증이 중요

• 배포가 완료되면, 서버와 클라이언트를 설치 후, 자동으로 테스트 자동화 시나리오들을 검증

• 국가별로 다양하게 배포가 진행되고, 실제 QA 업무에 활용되므로, 안정적이고 신뢰성 있는 시스템 구

축 및 결과 전달이 중요

• TERA의 기존 배포 시스템에 맞물려 수행되기 위한 별도의 시스템

• C# (with WPF) 으로 개발

Page 56: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

TeraPuppeteer

• TeraPuppet 시나리오를 원격으로 수행시켜주는 웹 기반의 시나리오 수행 도구

• 시나리오 수행 결과, 시나리오 현황, 자세한 로그 등을 관리

• 모든 테스트 자동화의 결과를 한 눈에 볼 수 있는 곳

• AngularJS & Bootstrap 으로 개발

CI & 배포연동

Page 57: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

E-mail

• 검증이 모두 완료되면, 정확하고 세부적인 검증 결과의 빠른 전달 필요

이슈 관리

CI & 배포연동

Web

BTS (JIRA)

Page 58: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

• 실패한 결과 발생 시, SET 및 해당 시나리오 담당자 분들의 빠른 이슈 확인 필요

이슈 관리

CI & 배포연동

Page 59: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
Page 60: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

성과 측정

Page 61: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Code Coverage

성과 측정

• 테스트 시나리오들에 의해 코드의 몇 % 가 수행되었는지를 정확하게 측정하기 위한 방법

• Automation & Manual Test 이후 제품이 출시 가능한지를 평가 할 수 있는 중요한 지표

Page 62: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Code Coverage

성과 측정

Microsoft 에서의 테스트의 주요 측정 지표는 Code Coverage

• Office를 포함한 일반적인 Application은 코드를 통한 개발이 일반적

• Code Coverage 결과와의 사투

Page 63: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Code Coverage in 게임 개발

성과 측정

• Game의 경우는 Code Coverage 측정만으로는 한계

– 코드를 통한 개발 + 컨텐츠 데이터를 통한 개발

– Client + Server + Contents Data

• Packet Coverage

– Server 와 Client 의 전체 Packet 중 몇 % 의 Packet 이 테스트에 의해

검증 되었는지

– TERA의 경우, 보다 자세한 테스트 커버리지 측정을 위해, Code

Coverage 뿐만 아니라 Packet Coverage도 측정 중

• Data Coverage

– 전체 데이터 중 몇 %의 데이터가 테스트에 의해 커버되었는지

– 효과적인 Coverage 측정 방법 고민 중

Packet Coverage

Page 64: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Summary

Page 65: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

DEMO

Summary

Page 66: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

성 과

Summary

Page 67: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

• QA 분들과 개발자 분들의 테스트 자동화 업무의 효율성을 인지

• 테스트 자동화를 통한 리소스 절약

• 비용대비 효율이 낮진 않음

• 기본 Packet 검증의 40%를 테스트 자동화로 검증 가능

• 5개 국가에 자동으로 테스트 자동화 시나리오 수행 중

• 일부 빌드는 자동화 테스트를 위주로 검증 확인 예정

• 회사의 관련 업무 지원

긍정적인 성과

Summary

많진 않지만 나름 알찬 랩 실의 테스트 자동화 머신들

Page 68: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

긍정적인 성과

Summary

Page 69: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

아쉬운 점

• 나홀로 개발

– 큰 장점이자 단점

– 개발에만 집중할 수 있는 여유 필요

• 아직은 정착되지 않은 문화

– 모든 것을 만들어야 함

– 다양한 시스템 & 프로세스 구축 필요

– 규모와 프로젝트 성격에 맞는 SET 안착 필요

• 협업

– 이해관계가 얽힌 기존 조직과의 효율적인 업무 협업은 쉽지 않음

– 협업을 위한 리소스가 투입 됨 (회의, 리뷰, 메일 작성 등)

– TERA 조직은 2007년 부터 잘 쌓아온 개발 및 QA 문화를 가지고 있음

– 조직에 많은 공헌을 할 수 있도록 꾸준한 고민과 노력 필요

Summary

Page 70: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

마무으리

Page 71: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

마무으리

• 여전히 실험 단계

• 성공과 실패의 갈림길에서 다양한 고민과 시행착오를 통해 더 나은 길을 찾아가는 중

Page 72: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Q & A

Page 73: KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)

Software Engineer in Test 의 업무에 관심 있으신가요 ?

[email protected] / [email protected]