41
Monkeyrunner를 이용한 모바일 테스트 자동화 런칭 기술지원팀 이병준

Monkeyrunner를 이용한 테스트

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Monkeyrunner를 이용한 테스트

Monkeyrunner를 이용한 모바일 테스트 자동화

런칭 기술지원팀

이병준

Page 2: Monkeyrunner를 이용한 테스트

테스트 자동화라는 단어를 보고 기대하는 것들,

Page 3: Monkeyrunner를 이용한 테스트

자동으로 테스트가 되는 것

입력(SW, 게임)을 하면,

Page 4: Monkeyrunner를 이용한 테스트

SW

GAME

테스트

완료

Page 5: Monkeyrunner를 이용한 테스트

부분 자동화를 시도해보자

완전 자동화는 힘들지만,

Page 6: Monkeyrunner를 이용한 테스트

어떤 것을 사용해서 만들 수 있을까?

Monkeyrunner

Page 7: Monkeyrunner를 이용한 테스트

1. 나는 QA(의 탈을 쓴 개발자) 이면서,

2. (게임)개발자 도움을 받을 수 없고,

3. (게임)소스 코드를 가지고 있지 않고,

4. 타 어플리케이션에 의존적이지 않고,

5. 개발 편의성이 좋은 것이 좋다!

나에게 적합한 것은 뭐지?

Page 8: Monkeyrunner를 이용한 테스트

(게임)개발자 도움을 받을 수 없고,

(게임)소스 코드를 가지고 있지 않기 때문에

Robotium은 개발된 소스코드에

테스트 코드를 추가하는 형식인데

적합하지 않구나!

Page 9: Monkeyrunner를 이용한 테스트

독립 솔루션이어야 하기 때문에

Sikuli는 다른 프로그램(ex>

Mobizen)으로 PC와 연결해서

사용하는데,

적합하지 않구나!

Page 10: Monkeyrunner를 이용한 테스트

1.Monkeyrunner • 독립 솔루션

• Google 개발

• Jython • ≒ Python

그래서,

2. Sikuli • 비독립 솔루션

• Mobizen

• 오랜 기간 사용

• Jython • ≒ Python

3. Robotium • 비독립 솔루션

• 프로젝트와 연동

• Java

Page 11: Monkeyrunner를 이용한 테스트

단순 클릭 기계

처음에 한 일,

Page 12: Monkeyrunner를 이용한 테스트

1. 작업 중 실패를 하더라도

정상 동작

2. 기록도 없고 그냥 단순 반복

안정적인 동작이 마음에 드는구나

Page 13: Monkeyrunner를 이용한 테스트

1.점수는 마음에 들지만,

2.점수 외 다른 데이터가 없어요

잘 동작 했어요 그런데,…

테스트 계정이, 1등을 했어요! 점수만 높았어요 ^^*

Page 14: Monkeyrunner를 이용한 테스트

잘 동작하는데 기록을 남겨 볼까?

이제부터 사서 고생하기,

나도 성격이 특이하지만 사실 팀장님이 시켰어요, 뿌우~

Page 15: Monkeyrunner를 이용한 테스트

• 단순 텍스트 기반으로 각종 사건 기록,

• 시간, 내역 등을 남기자,

• 어떻게 기록을 남길까?

기록은 어떻게 남기지?

Page 16: Monkeyrunner를 이용한 테스트

• Python Logger 모듈은 매우 좋다!

이렇게 남겼습니다!

로그 열람은

GamautLogView를 사용!

Page 17: Monkeyrunner를 이용한 테스트

이왕 하는 거 통계를 내볼까?

사람의 욕심은 끝이 없구나,

Page 18: Monkeyrunner를 이용한 테스트

• Logger에서 기록한 로그에서 의미

있는 데이터를 추출할까?

• 처음부터 DB에 기록을 넣어서 통계를

낼까?

갈등…

Page 19: Monkeyrunner를 이용한 테스트

엄마가 좋아? 아빠가 좋아?

뭘 해야 하지?

Page 20: Monkeyrunner를 이용한 테스트

• 개발 해야 하는 양은 비슷하다!

• Sqlite3를 격하게 사랑하니까, • JDBC를 이용해서 Sqlite3를 붙이자!

에라 모르겠다~

Page 21: Monkeyrunner를 이용한 테스트

• 쿼리를 이용하여 각종 데이터 추출 • Sqlite Expert Personal 이용

• 승패, 게임 시각, 게임 수 기록

Sqlite3 에서 통계 데이터를 추출!

Page 22: Monkeyrunner를 이용한 테스트

• 전체 게임 수,

• 승리,

• 패배,

데이터 추출 예

Sqlite3 에서 통계 데이터를 추출!

Page 23: Monkeyrunner를 이용한 테스트

이젠 웹 어플리케이션까지?

허허허허허…

사람의 욕심은 정말 끝이 없구나,…

Page 24: Monkeyrunner를 이용한 테스트

• 보다 쉽게 통계 자료를 보고 싶은 욕구 • 차트도 나오고,

• 표도 보여주고

• 그런 웹 어플리케이션을 개발하자는

의지

데이터베이스가 생기니까,

Page 25: Monkeyrunner를 이용한 테스트

1.ASP .NET MVC • 늘 하던 것

• (나는) 재미 없다

• 빨리 할 수 있지만, • (나는) 재미 없다

어떤 플랫폼에서 개발할까?

2. Node.js • 처음 하는 것

• (나는) 재미 있다

• 시간은 걸리지만, • (나는) 재미 있다

Page 26: Monkeyrunner를 이용한 테스트

• 독립 솔루션 • Node.js 만 설치하면 구동 ok!

• 웹 서버니 뭐니 복잡한 설치 없다!

• 일반 사용자가 쓴다면? • 설치와 사용이 간편한 Node.js가 절대로 유리!

Node.js Express 선택

나만 재미 있으면 그걸로 하는 겁니다…

Page 27: Monkeyrunner를 이용한 테스트

1.ASP .NET MVC • 늘 하던 것

• (나는) 재미 없다

• 빨리 할 수 있지만, • (나는) 재미 없다

그래서,

2. Node.js • 처음 하는 것

• (나는) 재미 있다

• 시간은 걸리지만, • (나는) 재미 있다

Page 28: Monkeyrunner를 이용한 테스트

• 모든 기록 열람 화면

Node.js로 만든 웹 어플리케이션

• 경기 기록 열람 화면 • 승률 열람 화면

Page 29: Monkeyrunner를 이용한 테스트

대격변,…!

쉽고, 간편하게 쓸 수 있다!

Page 30: Monkeyrunner를 이용한 테스트

또 다른 개발은 없었나요?

이게 다야?

Page 31: Monkeyrunner를 이용한 테스트

• 시작할 때마다 내 모듈을 추가해야 한다 • import sys -> sys.append(‘경로 추가’) ->

from 내 모듈 경로 import 내 모듈

• 너무 지겹다!

• 3번 이상 반복 되는 것은 자동화가 필수!

• 그래서 개발 했습니다

Winform C#을 이용한 런처 개발

Page 32: Monkeyrunner를 이용한 테스트

Monkeyrunner 런처

실행도 자동으로 하고,

자동으로 문자 입력도 합니다!

Page 33: Monkeyrunner를 이용한 테스트

너무 거창한 것 아닌가?

Page 34: Monkeyrunner를 이용한 테스트

• 블랙박스(Blackbox) 테스트와

• 화이트박스(Whitebox) 테스트가 있다 • 이 방법은 블랙박스 테스트를 자동화 한다

• 추가로 통계 데이터까지 얻을 수 있다

• 그래서 개발 했습니다

테스팅은,

나만 재미 있으면 하는 겁니다…

Page 35: Monkeyrunner를 이용한 테스트

• 급변하는 모바일

• PC 게임 (또는 솔루션)보다 수명 주기가

비교적 짧고,

• 개발 기간도 비교적 짧고,

• 그래서 빠른 출시와 테스트가 필요!

그리고 이제는 모바일이 대세!

Page 36: Monkeyrunner를 이용한 테스트

• 블랙박스 테스트 자동화는 큰 의미가

있다

• 통합된 테스트 솔루션 구축을 위한 사전

포석 • 나 자신의 기술력 과시…

• Jython, C# Winform, Node.js, Java 등 다 잘하는데?

그래서,

Page 37: Monkeyrunner를 이용한 테스트

요약,

반복 테스트 + 텍스트 로그

지속적인 고도화를 통해 “의미 있는 데이터”를

가진 테스트 시스템으로 진화

반복 테스트

테스트 + 텍스트 로그

+ DB (통계)

+ Web App.

+ 런처

Page 38: Monkeyrunner를 이용한 테스트

시연 4x 재생 실제 동작 시연

Page 39: Monkeyrunner를 이용한 테스트

• Jython, Python • Python logger, JDBC Sqlite3

• C# • .net framework, winform

• Node.js • Express, node-sqlite3

• Sqlite3 • Sqlite Expert Personal

사용한 프레임워크와 기술

Page 40: Monkeyrunner를 이용한 테스트

• Jython • http://www.jython.org/

• Python • http://www.python.org/

• C# • http://msdn.microsoft.com/ko-kr/library/kx37x362.aspx

• Node.js • Express

• http://expressjs.com/

• node-sqlite3 • https://github.com/developmentseed/node-sqlite3

• Sqlite3 • http://www.sqlite.org/ • Sqlite Expert Personal

• http://www.sqliteexpert.com/

Reference

Page 41: Monkeyrunner를 이용한 테스트