Upload
byungjoon-lee
View
130
Download
9
Embed Size (px)
Citation preview
Monkeyrunner를 이용한 모바일 테스트 자동화
런칭 기술지원팀
이병준
테스트 자동화라는 단어를 보고 기대하는 것들,
자동으로 테스트가 되는 것
입력(SW, 게임)을 하면,
SW
GAME
테스트
완료
부분 자동화를 시도해보자
완전 자동화는 힘들지만,
어떤 것을 사용해서 만들 수 있을까?
Monkeyrunner
1. 나는 QA(의 탈을 쓴 개발자) 이면서,
2. (게임)개발자 도움을 받을 수 없고,
3. (게임)소스 코드를 가지고 있지 않고,
4. 타 어플리케이션에 의존적이지 않고,
5. 개발 편의성이 좋은 것이 좋다!
나에게 적합한 것은 뭐지?
(게임)개발자 도움을 받을 수 없고,
(게임)소스 코드를 가지고 있지 않기 때문에
Robotium은 개발된 소스코드에
테스트 코드를 추가하는 형식인데
적합하지 않구나!
독립 솔루션이어야 하기 때문에
Sikuli는 다른 프로그램(ex>
Mobizen)으로 PC와 연결해서
사용하는데,
적합하지 않구나!
1.Monkeyrunner • 독립 솔루션
• Google 개발
• Jython • ≒ Python
그래서,
2. Sikuli • 비독립 솔루션
• Mobizen
등
• 오랜 기간 사용
• Jython • ≒ Python
3. Robotium • 비독립 솔루션
• 프로젝트와 연동
• Java
단순 클릭 기계
처음에 한 일,
1. 작업 중 실패를 하더라도
정상 동작
2. 기록도 없고 그냥 단순 반복
안정적인 동작이 마음에 드는구나
1.점수는 마음에 들지만,
2.점수 외 다른 데이터가 없어요
잘 동작 했어요 그런데,…
테스트 계정이, 1등을 했어요! 점수만 높았어요 ^^*
잘 동작하는데 기록을 남겨 볼까?
이제부터 사서 고생하기,
나도 성격이 특이하지만 사실 팀장님이 시켰어요, 뿌우~
• 단순 텍스트 기반으로 각종 사건 기록,
• 시간, 내역 등을 남기자,
• 어떻게 기록을 남길까?
기록은 어떻게 남기지?
• Python Logger 모듈은 매우 좋다!
이렇게 남겼습니다!
로그 열람은
GamautLogView를 사용!
이왕 하는 거 통계를 내볼까?
사람의 욕심은 끝이 없구나,
• Logger에서 기록한 로그에서 의미
있는 데이터를 추출할까?
• 처음부터 DB에 기록을 넣어서 통계를
낼까?
갈등…
엄마가 좋아? 아빠가 좋아?
뭘 해야 하지?
• 개발 해야 하는 양은 비슷하다!
• Sqlite3를 격하게 사랑하니까, • JDBC를 이용해서 Sqlite3를 붙이자!
에라 모르겠다~
• 쿼리를 이용하여 각종 데이터 추출 • Sqlite Expert Personal 이용
• 승패, 게임 시각, 게임 수 기록
Sqlite3 에서 통계 데이터를 추출!
• 전체 게임 수,
• 승리,
• 패배,
데이터 추출 예
Sqlite3 에서 통계 데이터를 추출!
이젠 웹 어플리케이션까지?
허허허허허…
사람의 욕심은 정말 끝이 없구나,…
• 보다 쉽게 통계 자료를 보고 싶은 욕구 • 차트도 나오고,
• 표도 보여주고
• 그런 웹 어플리케이션을 개발하자는
의지
데이터베이스가 생기니까,
1.ASP .NET MVC • 늘 하던 것
• (나는) 재미 없다
• 빨리 할 수 있지만, • (나는) 재미 없다
어떤 플랫폼에서 개발할까?
2. Node.js • 처음 하는 것
• (나는) 재미 있다
• 시간은 걸리지만, • (나는) 재미 있다
• 독립 솔루션 • Node.js 만 설치하면 구동 ok!
• 웹 서버니 뭐니 복잡한 설치 없다!
• 일반 사용자가 쓴다면? • 설치와 사용이 간편한 Node.js가 절대로 유리!
Node.js Express 선택
나만 재미 있으면 그걸로 하는 겁니다…
1.ASP .NET MVC • 늘 하던 것
• (나는) 재미 없다
• 빨리 할 수 있지만, • (나는) 재미 없다
그래서,
2. Node.js • 처음 하는 것
• (나는) 재미 있다
• 시간은 걸리지만, • (나는) 재미 있다
• 모든 기록 열람 화면
Node.js로 만든 웹 어플리케이션
• 경기 기록 열람 화면 • 승률 열람 화면
대격변,…!
쉽고, 간편하게 쓸 수 있다!
또 다른 개발은 없었나요?
이게 다야?
• 시작할 때마다 내 모듈을 추가해야 한다 • import sys -> sys.append(‘경로 추가’) ->
from 내 모듈 경로 import 내 모듈
• 너무 지겹다!
• 3번 이상 반복 되는 것은 자동화가 필수!
• 그래서 개발 했습니다
Winform C#을 이용한 런처 개발
Monkeyrunner 런처
실행도 자동으로 하고,
자동으로 문자 입력도 합니다!
너무 거창한 것 아닌가?
• 블랙박스(Blackbox) 테스트와
• 화이트박스(Whitebox) 테스트가 있다 • 이 방법은 블랙박스 테스트를 자동화 한다
• 추가로 통계 데이터까지 얻을 수 있다
• 그래서 개발 했습니다
테스팅은,
나만 재미 있으면 하는 겁니다…
• 급변하는 모바일
• PC 게임 (또는 솔루션)보다 수명 주기가
비교적 짧고,
• 개발 기간도 비교적 짧고,
• 그래서 빠른 출시와 테스트가 필요!
그리고 이제는 모바일이 대세!
• 블랙박스 테스트 자동화는 큰 의미가
있다
• 통합된 테스트 솔루션 구축을 위한 사전
포석 • 나 자신의 기술력 과시…
• Jython, C# Winform, Node.js, Java 등 다 잘하는데?
그래서,
요약,
반복 테스트 + 텍스트 로그
지속적인 고도화를 통해 “의미 있는 데이터”를
가진 테스트 시스템으로 진화
반복 테스트
테스트 + 텍스트 로그
+ DB (통계)
+ Web App.
+ 런처
시연 4x 재생 실제 동작 시연
• Jython, Python • Python logger, JDBC Sqlite3
• C# • .net framework, winform
• Node.js • Express, node-sqlite3
• Sqlite3 • Sqlite Expert Personal
사용한 프레임워크와 기술
• 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