반응형
제목: Qtronic 도구를 사용한 ABOT 게임 서버의 온라인 테스팅(Online Testing of the ABOT Game Server Using the Qtronic Tool)
저자: Xiufeng Liu 외 2인, 핀란드
문서유형: 대학교 기술 문서(총 28페이지), 2008년
모바일 게임 서버 테스트에 모델 기반 테스팅 도구인 Qtronic을 적용한 내용을 기술한 자료
모델 기반 테스팅(Model-Based Testing)
- 전화 스위치(telephone switches) 같은 하드웨어 테스팅에서 유래되어 근래에 소프트웨어 분야에 적용되고 있는 방법으로, 테스트 대상 시스템의 전체 또는 부분을 표현한 모델로부터 자동으로 테스트를 생성해 내는 방법이다.
- 수백 개의 테스트 케이스를 수작업으로 만들어 내는 대신에 테스트 설계자(test designer)가 테스트 대상 시스템의 추상적 모델(an abstract model)을 작성하고 모델 기반 테스팅 도구를 사용하여 해당 모델로부터 테스트 케이스들을 자동으로 도출해 낸다.
- 생성된 테스트 케이스가 어떻게 실행되는지에 따라 온라인 테스팅과 오프라인 테스팅으로 구분된다. 온라인 테스팅에서는 모델로부터 자동으로 생성된 테스트 케이스가 즉석에서 테스트 대상 시스템에 대하여 실행되며, 이 실행 결과를 사전 명세된 예상 결과와 테스트 중에 동적으로 비교한다. 오프라인 테스팅은 테스트 케이스 생성과 테스트 실행이 별개의 단계로 분리되는 전통적인 테스팅을 의미한다. 즉, 모든 테스트 케이스를 먼저 생성하고 나중에 이를 실행시키는 방법이다.
Conformiq Qtronic 도구
- 모델 기반 테스팅 도구로서 특정 시스템의 설계 모델(a design model)을 입력으로 받아 테스트를 자동으로 도출 해 낸다.
- 도출된 테스트를 실행하는데 있어 두 가지 모드를 제공(온라인 테스트 모드와 오프라인 테스트 모드)
- 온라인 모드에서 Qtronic은 주어진 설계 모델로부터 다수의 개별 테스트 케이스들을 생성하고 이들을 가동 중인 시스템 상에서 직접 실행한다.
- 오프라인 모드에서는 주어진 모델로부터 테스트 스크립트를 생성하고 나중에 이것들을 따로 실행시킨다.
ABOT 게임 서버
1) 게임 설명
- Abo Akademi 대학의 임베디드 시스템 랩에서 개발한 멀티 플레이어 모바일 게임 시스템으로 사용자가 모바일 폰 같은 이동 기기로 인터액티브하게 게임을 플레이 할 수 있다.
- 서버는 플레이어의 물리적인 게임 영역을 이동 기기 스크린 상의 가상 맵으로 변환하고, 이동 기기는 게임 영역에 있는 플레이어의 위치를 서버에 주기적으로 업데이트 한다.
- 서버는 플레이어들의 픽셀 위치를 계산하고, 계산된 정보를 모든 로그인한 플레이어에게 보낸다. 이 위치 정보를 수신한 플레이어는 싸울 수 있는 거리 내에 있는 다른 플레이어 또는 봇(bots)과 전투를 한다.
- 봇은 전투 중에 무작위로 움직일 수 있다. 만약 플레이어가 봇을 잡는데 성공하면 해당 봇의 점수를 얻게 된다.
- 만약 전투에서 다른 플레이어에게 지면 패자의 점수와 보유한 봇들이 승자에게로 넘어간다.
- 패자는 홈 베이스로 돌아가 처음부터 다시 시작할 수 있다.
2) 아키텍쳐
- ABOT 게임 서버의 아키텍쳐는 아래 그림처럼 커뮤니케이션 관리자(Communication Manager)와 게임 마스터(Game Master)의 두 개의 주요 컴포넌트로 구성된다. 커뮤니케이션 관리자는 서버를 위한 메시지 중재자(a message mediator) 역할을 하고, 게임 마스터는 기본적으로 서버의 엔진이다.
- 게임 마스터에서는 모든 입력 메시지(the incoming messages)를 먼저 메시지 파서(a Message Parser)로 분석하여 어떻게 처리할지를 결정한다.
- 계정 관리자(Account Manager)는 플레이어의 인증(authentication)과 등록(registration)을 책임진다.
- 로그인 된 플레이어는 플레이어 관리자(a Player Manager)에 의해 그리고 봇은 봇 관리자(a Bot Manager)에 의해 관리된다.
- 전투 결과 관리자(Fight Outcome Manager)는 전투의 결과를 결정하는데 사용된다.
- 위치 관리자(Location Manager)는 GPS 위치를 플레이어의 픽셀(맵) 위치로 전환하고, 특정 플레이어가 다른 플레이어들 및 봇들과 떨어진 거리를 계산하는데 사용된다.
[ABOT 서버 아키텍쳐]
3) 데이터 통신
- 서버와 플레이어간의 데이터 교환을 위해 비대칭 커뮤니케이션(an asymmetric communication)이 사용된다. 즉, 서버는 무선 DVB-H 매체로 플레이어에게 데이터를 방송하는 반면 플레이어는 3G 또는 GPRS의 PtP 링크(a point-to-point link)를 사용하여 서버에게 데이터를 보낸다.
- 이 방식은 플레이어가 능동적으로 게임과 상호작용 할 수 있게 해주며, 서버가 게임 상태를 수정하고 플레이어가 필요로 하는 적절한 데이터를 방송할 수 있도록 해준다.
Qtronic으로 ABOT 게임 서버 온라인 테스팅
1) 시스템 모델링
- Qtronic 도구를 사용하여 온라인 테스팅을 하기 위해서는 테스트 대상 시스템을 Qtronic 모델링 언어(Qtronic Modeling Language: QML)를 사용하여 모델링 해야 함
- QML은 텍스트 표기법(a textual notation)과 그래픽 표기법(a graphical notation) 둘 다 지원(그래픽 표기는 항상 텍스트 표기로 보완 필요)
- 텍스트 형식의 QML 모델은 약간의 변형(variations)을 가진 Java의 상위 집합이라고 볼 수 있다. QML에서 시스템의 정적 명세(the static description)는 Java 클래스 정의(class definition)와 유사하게 텍스트 형식으로 이루어진다.
- 그래픽 모델은 직교 상태(orthogonal states) 또는 상태 이력(history states) 같은 고급 기능은 포함하지 않는 기본 상태 머신(state machines)을 사용한 모델링이다. Qtronic Modeler라 불리는 그래픽 에디터를 사용하여 그래픽 모델을 생성하고 편집한다.
[ABOT 게임 서버 텍스트 형식 모델 예]
[ABOT 게임 서버 상태 머신 – 그래픽 형식 모델]
2) 연결 어뎁터
- 온라인 테스팅 수행을 위해서는 Qtronic 테스트 도구가 어뎁터(an adapter)를 통해 테스트 대상 시스템에 연결되어야 한다. 어뎁터는 Qtronic의 인터페이스를 테스트 대상 시스템의 인터페이스(ABOT 게임 서버의 경우 입/출력 포트)로 전환한다.
- 어뎁터는 모델과 실제 테스트 대상 시스템 간의 추상화 갭(gap)을 연결하는 역할도 한다. 즉, 모델 기반 테스팅 도구가 생성해 낸 테스트 케이스가 실제 테스트 대상 시스템에서 실행되기에는 너무 추상적(충분히 구체적인 사항들을 포함하지 않음)인 점을 보완해준다.
- 어뎁터는 온라인 테스팅 프로세스 초반에 Qtronic에 로드되는 C++ DLL(Dynamic Link Library) 플러그인으로 구현된다.
- 테스팅 프로세스가 시작되면 어뎁터는 자신의 고유의 쓰레드상에서 런 되며, Qtronic의 데이터 전송 시 메쏘드 호출(method calls)을 받고 테스트 대상 시스템으로부터 받은 데이터를 Qtronic에게 전달한다.
- Qtronic는 어뎁터와 커뮤니케이션 하기 위해 datum이라 불리는 데이터 타입을 사용한다. 어뎁터는 datum을 테스트 대상 시스템이 지원하는 데이터 타입으로 전환 및 역전환 하는 일을 한다.
[온라인 테스팅 아키텍쳐의 어뎁터]
3) 테스트 실행(Test execution)
- Abot 게임 서버의 온라인 테스팅은 서버와 플레이어 간에 주고 받는 메시지의 정확성(correctness)을 검증하는데 사용된다. 예를 들어, 플레이어가 로그인 하면 typeOfContent=x08 메시지가 서버로 전송된다. 이 로그인 메시지를 받은 서버는 계정기록부(the account register)을 기반으로 해당 플레이어를 인증하고, 인증이 성공적인 경우 typeOfContent=x09 응답 메시지를 보낸다. 인증이 실패하면 로그인 실패 정보를 결과로 보낸다.
- Qtronic 도구에 시스템 모델과 어뎁터 플러그인을 로딩함으로써 온라인 테스팅이 시작된다. 시스템 모델이 로드되면 Qtronic은 해당 모델이 적격한지(규칙에 맞게 작성되어 있는지) 검토하고 부적절한 것들이 있으면 보고한다.
- 이어서 Qtronic은 주어진 모델로부터 자동으로 테스트 케이스를 생성하고, 이들을 실제 시스템(테스트 대상 시스템)에 실행시켜 그 결과를 하나하나 확인한다. 테스팅 실행 중에 모델 기반 커버리지 기준(예, 상태 커버리지, 전환 커버리지 등)이 테스트 케이스를 생성하는데 적용된다.
[Qtronic 사용자 인터페이스]
- 아래 그림은 ABOT 서버에 적용된 온라인 모드 테스트 실행 결과의
일부이다. à 심볼은 테스트 대상 시스템에 주어지는 입력(Qtronic이 생성한
데이터)을 나타내고, ß 심볼은
테스트 대상 시스템으로부터 나온 응답을 나타낸다.
- 라인 1에서 사용자명과 패스워드 필드가 비어있는 상태로 로그인을 시도하였고 결과적으로 라인 2에 ‘로그인 실패’ 메시지가 나옴
- 라인 3에서 사용자(User2)의 정상적인 로그인 시도가 있었고, 라인 4에서 테스트 대상 시스템은 해당 사용자의 캐릭터 상태를 나타낸 메시지를 반환
- 라인 5에서 새로운 계정을 만들려는 요청이 테스트 대상 시스템에 보내졌고, 라인 6에서 성공적인 확인 메시지 반환
- 라인 7~18은 두 플레이어 간의 여러 전투 시나리오를 나타냄 - 특정 순서의 입력(테스트 케이스)에 대한 테스트 대상 시스템의 응답 메시지를 모델의 현재 상태(the current state)에 비교하여 정확성을 체크함
- 테스트 대상 시스템이 불확정성(nondeterministic)을 가지므로 또 다른 테스트 런(run)에서는 결과가 다르게 나타날 수도 있음
[ABOT 게임 서버 Qtronic 테스팅 런]
4) 테스트 결과
ABOT 서버의 테스트 결과로 아래와 같은 3개의 버그를 발견함
- 버그 1: 봇 오너십(bot ownership)을 변경 시 서버가 ”Segmentation fault!” 에러를 내고 충돌(crash). 원인은 C++ STL iterator의 항목(an element)이 지워질 때 iterator가 invalid 상태가 되기 때문임. 이 상태에서 다음 항목(the next element)에 액세스하려 할 때 위 에러가 발생됨. 문제 해결을 위해 리스트의 현재 항목을 삭제하기에 앞서 다음 항목에 액세스 하는 방법으로 수정
- 버그 2: 서버가 플레이어 통제 관리자(the player control manager)에서 사라진 플레이어를 제거 할 때 ”Segmentation fault!” 에러가 발생. 원인과 해결 방법은 버그 1과 유사
- 버그 3: 서버가 메시지를 수신 시 ”Invalid argument” 에러가 나타남. 서버 프로세스인 커뮤니케이션 관리자(the communication manager)와 게임 마스터(the game master)의 시작 순서 때문에 발생. 게임 마스터가 항상 커뮤니케이션 관리자보다 먼저 시작되도록 하면 문제가 해결됨
반응형
'산업종류별 > 게임' 카테고리의 다른 글
페이퍼요약 – 게임 플레이어빌리티 평가를 위한 휴리스틱 사용 by Desurvire (0) | 2017.11.25 |
---|---|
문서요약 - 게임 소프트웨어 특유의 결함 유형 by Westwood College (1) | 2017.11.22 |
논문요약 - 컴퓨터 게임 로칼라이제이션 by Gustafsson (0) | 2017.11.21 |
브로셔요약 - 온라인 게임 백엔드 애플리케이션의 기능 및 시스템 테스팅 by Gateway TechnoLabs (0) | 2017.11.11 |
페이퍼요약 - 게임 테스팅하기 by Marri (0) | 2017.11.11 |