반응형

제목: 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 또는 GPRSPtP 링크(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)이 지워질 때 iteratorinvalid 상태가 되기 때문임. 이 상태에서 다음 항목(the next element)에 액세스하려 할 때 위 에러가 발생됨. 문제 해결을 위해 리스트의 현재 항목을 삭제하기에 앞서 다음 항목에 액세스 하는 방법으로 수정
  • 버그 2: 서버가 플레이어 통제 관리자(the player control manager)에서 사라진 플레이어를 제거 할 때 ”Segmentation fault!” 에러가 발생. 원인과 해결 방법은 버그 1과 유사
  • 버그 3: 서버가 메시지를 수신 시 ”Invalid argument” 에러가 나타남. 서버 프로세스인 커뮤니케이션 관리자(the communication manager)와 게임 마스터(the game master)의 시작 순서 때문에 발생. 게임 마스터가 항상 커뮤니케이션 관리자보다 먼저 시작되도록 하면 문제가 해결됨


반응형

+ Recent posts