KR20130017386A - 게임 서버의 안정성 테스트 방법 및 장치 - Google Patents
게임 서버의 안정성 테스트 방법 및 장치 Download PDFInfo
- Publication number
- KR20130017386A KR20130017386A KR1020110079776A KR20110079776A KR20130017386A KR 20130017386 A KR20130017386 A KR 20130017386A KR 1020110079776 A KR1020110079776 A KR 1020110079776A KR 20110079776 A KR20110079776 A KR 20110079776A KR 20130017386 A KR20130017386 A KR 20130017386A
- Authority
- KR
- South Korea
- Prior art keywords
- game
- packet
- action
- server
- scenario
- Prior art date
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/358—Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/53—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
- A63F2300/534—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명에 따른 게임 서버 안정성 테스트 방법은 적어도 하나의 가상 유저가 액션 또는 액션들의 나열인 시나리오를 실행하는 단계; 상기 실행된 액션 또는 상기 실행된 시나리오에 포함된 액션의 실행을 위해 요구되는 적어도 하나의 게임 패킷을 특정 게임 콘텐츠의 게임 프로토콜에 따라 생성하는 단계; 및 상기 생성된 게임 패킷을 게임 서버로 송신하는 단계를 포함하는 것을 특징으로 한다.
Description
본 발명은 게임 서버의 안정성을 테스트하기 위한 방법 및 장치에 관한 것으로, 보다 상세하게는 가상 유저를 이용하여 게임 서버에 부하를 발생시켜 게임 서버의 안정성을 테스트하는 장치 및 방법에 관한 것이다.
주지된 바와 같이, 클라이언트/서버 기반의 온라임 게임을 개발할 때 온라임 게임 서버 어플리케이션의 안정성 테스트가 중요한 부분을 차지한다. 이러한 다중 사용자용 서버 어플리케이션의 안정성 및 성능을 자동으로 테스트하는 분야는 소프트웨어 테스트 분야에 속한다.
임의의 부하를 생성해 낸 뒤 이를 서버에 영향을 주어 서버의 안정성을 테스트하는 연구는 소프트웨어 공학 측면에서 보면 부하 테스트이고, 고부하 상태에서의 서버에 나타나는 이상 현상을 관찰하는 스트레스 테스트의 범주에 해당된다.
또한, 이러한 게임 서버의 테스트를 통하여 게임 서버 및 게임 클라이언트의 안정성을 강화시키는 것은 게임 품질 보증(game quality assurance) 분야에 해당된다.
종래에 사용하고 있는 가상 클라이언트 기반의 게임 서버의 안정성 테스트에서는 게임 패킷을 캡쳐하여 단순히 재생성하는 방법을 사용하거나, 게임 패킷을 캡쳐한 후 분석 작업을 거쳐 게임 패킷의 변화 규칙을 이해하고 이러한 변화 규칙을 스크립트 혹은 자체 패킷 문법으로 표현하는 방법을 사용하고 있다.
그러나 게임 패킷을 단순히 재생성하는 방법은 게임 서버의 상태를 인지하지 못하고 캡쳐된 데이터를 그대로 사용하기 때문에 대규모의 부하를 발생시키는 곳에 적용하기 어렵다는 단점이 있다. 또한 스크립트 혹은 패킷 문법을 사용하는 방식은 별도의 스크립트 또는 패킷 문법을 익혀야 하고, 스크립트의 오류나 패킷 문법의 오류의 발생 시에 오류를 찾아내기 힘들다는 단점이 있다.
본 발명이 이루고자 하는 기술적 과제는 가상 유저를 이용하여 게임 서버에 부하를 발생시켜 게임 서버의 안정성을 테스트함에 있어서 보다 효과적이고 간편하게 테스트할 수 있는 게임 서버 안정성 테스트 장치 및 방법을 제공하는 데 있다.
상기 기술적 과제를 해결하기 위하여 본 발명에 따른 게임 서버 안정성 테스트 방법은 적어도 하나의 가상 유저가 액션 또는 액션들의 나열인 시나리오를 실행하는 단계; 상기 실행된 액션 또는 상기 실행된 시나리오에 포함된 액션의 실행을 위해 요구되는 적어도 하나의 게임 패킷을 특정 게임 콘텐츠의 게임 프로토콜에 따라 생성하는 단계; 및 상기 생성된 게임 패킷을 게임 서버로 송신하는 단계를 포함하는 것을 특징으로 한다.
상기 게임 서버 안정성 테스트 방법은 주어진 액션의 실행을 위해 요구되는 게임 패킷을 특정 게임 콘텐츠의 게임 프로토콜에 따라 생성하며 게임 콘텐츠에 따라 다른 플러그인(plug-in)을 로딩하는 단계를 더 포함하고, 상기 게임 패킷을 생성하는 단계는 상기 플러그인을 통하여 수행될 수 있다.
상기 플러그인은 DLL 형태로 구현될 수 있다.
상기 게임 서버 안정성 테스트 방법은 상기 게임 서버로부터 수신되는 게임 패킷을 상기 특정 게임 콘텐츠의 게임 프로토콜에 따라 해석하는 단계를 더 포함할 수 있다.
상기 게임 서버 안정성 테스트 방법은 상기 게임 서버로부터 수신되는 게임 패킷을 상기 게임 프로토콜에 따라 프로토콜 단위로 재구성하는 단계를 더 포함할 수 있다.
상기 게임 서버 안정성 테스트 방법은 상기 생성된 게임 패킷을 암호화하는 단계를 더 포함할 수 있다.
상기 기술적 과제를 해결하기 위하여 상기된 본 발명에 따른 게임 서버 안정성 테스트 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.
상기 기술적 과제를 해결하기 위하여 본 발명에 따른 게임 서버 안정성 테스트 장치는, 액션들의 나열인 시나리오를 실행하는 시나리오 스케줄러; 액션을 실행하는 액션 스케줄러; 및 상기 실행된 액션 또는 상기 실행된 시나리오에 포함된 액션의 실행을 위해 요구되는 적어도 하나의 게임 패킷을 특정 게임 콘텐츠의 게임 프로토콜에 따라 생성하고 상기 생성된 게임 패킷을 게임 서버로 송신하는 게임 패킷 처리부를 포함하는 것을 특징으로 한다.
상기 게임 패킷 처리부는 게임 콘텐츠에 따라 다른 플러그인(plug-in) 형태로 구현될 수 있다.
상기 게임 패킷 처리부는 DLL 형태로 구현될 수 있다.
상기 게임 패킷 처리부는 상기 게임 서버로부터 수신되는 게임 패킷을 상기 특정 게임 콘텐츠의 게임 프로토콜에 따라 해석할 수 있다.
상기 게임 패킷 처리부는, 상기 적어도 하나의 게임 패킷을 상기 특정 게임 콘텐츠의 게임 프로토콜에 따라 생성하는 게임 패킷 생성부; 및 상기 게임 서버로부터 수신되는 게임 패킷을 상기 특정 게임 콘텐츠의 게임 프로토콜에 따라 해석하는 게임 패킷 해석부를 포함할 수 있다.
상기 게임 패킷 처리부는 상기 게임 서버로부터 수신되는 게임 패킷을 상기 게임 프로토콜에 따라 프로토콜 단위로 재구성하는 MTU 처리부를 더 포함할 수 있다.
상기 게임 패킷 처리부는 상기 생성된 게임 패킷을 암호화하거나, 상기 수신된 게임 패킷을 복호화하는 암호화부를 더 포함할 수 있다.
상기 기술적 과제를 해결하기 위하여 본 발명에 따른 게임 서버 안정성 테스트 장치는, 게임 패킷을 생성하여 게임 서버로 송신하는 복수 개의 가상 유저들; 및 상기 가상 유저들에 액션의 실행 명령 또는 액션들의 나열인 시나리오의 실행 명령을 내리는 가상 유저 제어부를 포함하고, 상기 복수 개의 가상 유저들을 구성하는 각 가상 유저는, 상기 시나리오를 실행하는 시나리오 스케줄러; 상기 액션을 실행하는 액션 스케줄러; 및 상기 실행된 액션 또는 상기 실행된 시나리오에 포함된 액션의 실행을 위해 요구되는 적어도 하나의 게임 패킷을 특정 게임 콘텐츠의 게임 프로토콜에 따라 생성하고 상기 생성된 게임 패킷을 상기 게임 서버로 송신하는 게임 패킷 처리부를 포함하는 것을 특징으로 한다.
상술한 본 발명의 실시예에 의하면, 게임 콘텐츠의 변화 시에 게임 패킷 처리 수단만을 교체함으로써 새로운 게임 콘텐츠에 대하여 용이하게 게임 서버의 안정성 테스트를 수행할 수 있는 장점이 있다. 즉, 새로운 게임 콘텐츠에 대하여 게임 서버의 안정성 테스트를 수행하고자 할 때 테스트 환경 구축에 소요되는 시간과 비용을 현저하게 절감할 수 있다.
도 1은 본 발명의 일 실시예에 따른 게임 서버 안정성 테스트 장치의 구성을 나타낸다.
도 2는 본 발명의 일 실시예에 따른 게임 서버 안정성 테스트 장치의 구성을 세 개의 모듈로 나누어 구성한 도면을 나타낸다.
도 3은 본 발명의 일 실시예에 따른 게임 서버 안정성 테스트 방법의 흐름도를 나타낸다.
도 2는 본 발명의 일 실시예에 따른 게임 서버 안정성 테스트 장치의 구성을 세 개의 모듈로 나누어 구성한 도면을 나타낸다.
도 3은 본 발명의 일 실시예에 따른 게임 서버 안정성 테스트 방법의 흐름도를 나타낸다.
이하에서는 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 이하 설명 및 첨부된 도면들에서 실질적으로 동일한 구성요소들은 각각 동일한 부호들로 나타냄으로써 중복 설명을 생략하기로 한다. 또한 본 발명을 설명함에 있어 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그에 대한 상세한 설명은 생략하기로 한다.
도 1은 본 발명의 일 실시예에 따른 게임 서버 안정성 테스트 장치의 구성을 나타낸다. 게임 서버 안정성 테스트 장치(100)는 다수의 가상 유저(150)들이 발생시키는 게임 패킷들을 게임 서버(200)로 전송하고, 게임 서버(200)로부터 게임 패킷을 수신함으로써 게임 서버(200)의 안정성을 테스트한다. 게임 서버 안정성 테스트 장치(100)는 도시된 바와 같이, 가상 유저 제어부(110), 가상 유저 관리부(120), 게임 데이터 관리부(130), 게임 객체 가시화부(140), 그리고 다수의 가상 유저(150)들을 포함하여 이루어진다. 가상 유저(150)는 도시된 바와 같이, 시나리오 스케줄러(151), 액션 스케줄러(152), 게임 패킷 처리부(153)를 포함하여 이루어진다. 이러한 가상 유저(150)의 구성은 다른 가상 유저(150)들에도 동일하게 적용되는 바, 편의상 하나의 가상 유저(150)에 관하여만 도시하였다.
가상 유저 제어부(110)는 특정 가상 유저(150) 또는 가상 유저(150)들의 그룹에 액션의 실행 명령 또는 액션들의 나열인 시나리오의 실행 명령을 내린다.
가상 유저 관리부(120)는 게임 안정성 테스트 장치(100) 내의 가상 유저들 또는 가상 유저들의 그룹을 관리한다.
가상 유저(150)는 가상 유저 제어부(110)의 액션 실행 명령 또는 시나리오 실행 명령에 따라 게임 패킷을 생성하여 게임 서버(200)로 송신한다. 그리고 가상 유저(150)는 게임 서버(200)로부터 게임 패킷을 수신하고 수신된 게임 패킷을 해석하여 게임 객체와 관련된 정보를 추출한다. 게임 패킷으로부터 추출되는 게임 객체 정보에는 예를 들어 게임 객체(예컨대 플레이어, 몬스터, NPC(Non Player Character) 등)의 위치 정보나 상태 정보(금전, HP(Hit Point), MP(Magic Point), 레벨 등)가 있다.
게임 데이터 관리부(130)는 가상 유저(150)들로부터 추출되는 게임 객체 정보, 예컨대 게임 객체의 위치 정보나 상태 정보를 수집하고 수집된 게임 객체 정보를 관리한다.
게임 객체 가시화부(140)는 가상 유저(150)들로부터 추출되는 게임 객체 정보를 수집하고 수집된 게임 객체 정보를 가시화 데이터로 변환하고 가시화 데이터를 2D 또는 3D 화면으로 출력한다.
시나리오 스케줄러(151)는 가상 유저 제어부(110)의 명령에 따라서 시나리오를 실행한다. 시나리오는 전술한 바와 같이 연속적인 액션들의 나열에 해당한다. 액션에는 예를 들어, 로그인, 전진, 후진, 회전, 공격, 거래 등이 포함된다. 시나리오 스케줄러(151)는 시나리오에 속하는 액션들에 대응하는 연속적인 액션 명령을 액션 스케줄러(152)에 전달한다.
액션 스케줄러(152)는 시나리오 스케줄러(151)로부터의 연속적인 액션 명령에 따라서 해당 액션들을 실행한다. 경우에 따라, 가상 유저 제어부(110)로부터 직접 액션 명령이 전달되는 경우 액션 스케줄러(152)는 이 액션 명령에 따라 해당 액션을 실행할 수도 있다.
액션 스케줄러(152)가 액션을 실행하면 게임 패킷 처리부(153)는 해당 액션의 실행을 위해 요구되는 적어도 하나의 게임 패킷을 생성하고 생성된 게임 패킷을 게임 서버(200)로 송신한다. 이때 게임 패킷 처리부(153)는 특정 게임 콘텐츠의 게임 프로토콜에 따라 게임 패킷을 생성한다. 또한 게임 패킷 처리부(153)는 게임 서버(200)로부터 게임 패킷이 수신되는 경우 수신된 게임 패킷을 해석하여 게임 객체와 관련된 정보를 추출한다. 이때 게임 패킷 처리부(153)는 특정 게임 콘텐츠의 게임 프로토콜에 따라 게임 패킷을 해석한다.
액션은 하나 이상의 게임 프로토콜들의 송수신되는 순서를 정의한다. 액션의 종류는 일반적으로 게임마다 다르지만, 대개 공통되는 것으로 로그인, 월드 접속, 전진, 후진, 좌회전, 우회전, 후진, 채팅 거래, 방 생성, 방 입장 등이 있다. 일례로 로그인 액션에 있어, 게임 프로토콜 순서는 게임마다 달라지지만, 아래와 같은 간단한 스크립트를 통해 로그인 액션의 프로토콜 순서를 정의 할 수 있다. 로그인 액션 스크립트의 예는 다음과 같다.
SENDWAIT 5 6 : 5번 게임 패킷을 보내고 6번 게임 패킷을 수신할 때까지 기다린다. SENDWAIT 8 9 : 8번 게임 패킷을 보내고 9번 게임 패킷을 수신할 때까지 기다린다. DELAY 3 : 3초간 아무것도 하지 않고 기다린다. SEND 55 : 55번 게임 패킷을 보낸다. |
시나리오는 액션의 나열에 해당한다. 시나리오 역시 일반적으로 게임마다 다르지만, 아래와 같은 스크립트를 통해 게임마다 간단히 재 정의될 수 있다. 시나리오 스크립트의 예는 다음과 같다.
doAction 0 : 로그인 액션 수행 doAction 2 : 전진 액션 수행 doAction 2 : 전진 액션 수행 doAction 2 : 전진 액션 수행 doAction 2 : 전진 액션 수행 doAction 3 : 좌회전 액션 수행 doAction 3 : 좌회전 액션 수행 MoveTo 50, 20 , 30 : 현재위치에서 50,20,30위치로 가도록 전진,좌회전,우회전의 액션을 생성 doAction 7 : 채팅 액션 수행 |
위에서 'doAction' 다음의 숫자는 액션의 인덱스 번호를 나타낸다. 다만, 인덱스 번호 대신에 액션의 이름으로 시나리오 스크립트가 작성될 수도 있다(예컨대, doAction 좌회전)
게임 패킷 처리부(153)는 구체적으로, 게임 패킷 생성부(154), 게임 패킷 해석부(155), MTU(Maximum Transfer Unit) 처리부(156), 암호화부(157)를 포함하여 이루어진다.
게임 패킷 생성부(154)는 게임 패킷을 특정 게임 콘텐츠의 게임 프로토콜에 따라 생성한다.
게임 패킷 해석부(155)는 게임 서버(200)로부터 수신되는 게임 패킷을 특정 게임 콘텐츠의 게임 프로토콜에 따라 해석하여 게임 객체와 관련된 정보를 추출한다. 또한, 게임 패킷 해석부(155)는 액션 스케줄러(152)가 실행한 액션에 게임 서버(200)로부터 게임 패킷의 수신을 기다리는 스크립트가 존재하는 경우 게임 서버(200)로부터 수신되는 게임 패킷을 해석하여 기다리는 게임 패킷이 수신되는지 체크하고, 해당 게임 패킷이 수신되는 경우 이를 게임 패킷 생성부(154) 또는 액션 스케줄러(152)에 알리는 역할을 한다. 예컨대, 위에서 예로 든 액션 스크립트에서 6번 게임 패킷이 수신되는지 체크하고, 9번 게임 패킷이 수신되는지 체크하여 게임 패킷 생성부(154)와 액션 스케줄러(152)에 알린다. 그러면 게임 패킷 생성부(154) 또는 액션 스케줄러(152)는 해당 게임 패킷의 수신을 확인하고 다음 게임 패킷의 송신 또는 다음 액션의 실행의 동작을 진행한다.
한편, 게임 서버(200)로부터 수신되는 게임 패킷은 일반적으로 각각의 프로토콜 단위로 분리되어 수신되는 것이 아니라, 한번에 수신된 게임 패킷이 여러 개의 프로토콜로 구성되어 있을 수도 있고, 여러 번에 걸쳐 수신된 게임 패킷이 하나의 프로토콜을 구성할 수도 있다. MTU 처리부(155)는 이렇게 게임 서버(200)로부터 수신되는 게임 패킷을 프로토콜 단위로 재구성하는 역할을 한다. 이때 MTU 처리부(155)는 수신되는 게임 패킷을 특정 게임 콘텐츠의 게임 프로토콜에 따라 프로토콜 단위로 재구성한다.
경우에 따라, 게임 패킷을 게임 서버(200)로 송신하는 경우 해당 게임 패킷을 암호화해야 할 필요가 있다. 또한, 게임 서버(200)로부터 수신되는 게임 패킷이 암호화된 게임 패킷인 경우가 있다. 암호화부(157)는 게임 패킷 생성부(154)에서 생성된 게임 패킷을 암호화고, 게임 서버(200)로부터 수신되는 게임 패킷을 복호화하여 암호화를 해제하는 역할을 한다.
전술한 바와 같이 게임 프로토콜은 게임 콘텐츠에 따라 다르게 구성되나 시나리오와 액션은 게임마다 공통되는 것이 존재한다. 따라서 본 발명의 실시예에서는 게임 패킷 처리부(153)는 게임 콘텐츠에 따라 다른 플러그인(plug-in) 형태로 구현하고, 나머지 구성인 시나리오 스케줄러(151), 액션 스케줄러(152) 등은 게임 콘텐츠에 무관하게 동일한 형태로 구현한다. 다시 말하면, 게임 서버 안정성 테스트의 대상이 되는 게임 콘텐츠가 달라지는 경우 게임 패킷 처리부(153)를 교체하여 달라진 게임 콘텐츠의 게임 프로토콜에 따라 게임 패킷을 생성하고 게임 패킷을 해석하고 게임 패킷을 프로토콜 단위로 재구성한다.
도 2는 이러한 본 발명의 일 실시예에 따른 게임 서버 안정성 테스트 장치의 구성을 세 개의 모듈로 나누어 구성한 도면을 나타낸다. 게임 서버 안정성 테스트 장치는 가상 유저 제어 공통 모듈(300)과, 가상 유저 제어 실행 모듈(400), 그리고 플러그인(500)으로 구성된다.
가상 유저 제어 공통 모듈(300)은 시나리오 스케줄러(151), 액션 스케줄러(152), 가상 유저 관리부(120), 게임 데이터 관리부(130)를 포함하며 DLL(dynamic linking library) 형태로 구현된다. 가상 유저 제어 공통 모듈(300)은 특정 게임 콘텐츠에 국한되지 않고 여러 게임 콘텐츠에 공통으로 적용 가능하다.
가상 유저 제어 실행 모듈(400)은 가상 유저 제어부(110), 게임 객체 가시화부(140)를 포함하며 EXE 형태로 구현된다. 가상 유저 제어 실행 모듈(400) 역시 특정 게임 콘텐츠에 국한되지 않고 여러 게임 콘텐츠에 공통으로 적용 가능하다.
플러그인(500)은 특정 게임 콘텐츠의 게임 프로토콜에 따라 게임 패킷을 처리하는 게임 패킷 처리부(153)를 포함하고, DLL 형태로 구현된다. 플러그인(500)은 게임 콘텐츠가 달라짐에 따라 새로운 형태의 DLL로 교체된다.
도 2에서 화살표는 참조 관계를 나타낸다. 가상 유저 제어 공통 모듈(300)은 가상 유저 제어 실행 모듈(400)과 플러그인(500)에 의해 참조된다. 플러그인(500)은 가상 유저 제어 실행 모듈(400)에 의해 참조된다.
도 2는 본 발명의 일 실시예에 따른 게임 서버 안정성 테스트 장치를 구성하는 각각의 모듈이 담당하는 기능에 대한 예시로 가상유저 제어 공통 모듈(300)과 가상유저 제어 실행 모듈(400)에서 담당하고 있는 각각의 기능들은 필요에 따라 재배치가 가능하다. 일례로 도 2에서는 가상유저 제어부(110)가 가상 유저 제어 실행 모듈(400)에 있어 플러그인(500)에서 참조할 수 없지만, 가상 유저 제어부(110) 기능을 가상유저 제어 공통 모듈(300)에 배치함으로써 플러그인(500)에서 참조가 가능하도록 변형할 수도 있다. 반대로 도 2에서 게임 데이터 관리부(130)가 가상 유저 제어 제어 공통 모듈(300)에 포함되어 있지만, 플러그인(500)에서 참조가 필요 없을 때에는 가상 유저 제어 실행 모듈(400)에 게임 데이터 관리부(130) 기능을 배치할 수도 있다.
도 3은 본 발명의 일 실시예에 따른 게임 서버 안정성 테스트 방법의 흐름도를 나타낸다. 본 실시예에 따른 게임 서버 안정성 테스트 방법은 전술한 게임 서버 안정성 테스트 장치(100)에서 처리되는 단계들로 구성된다. 따라서 이하 생략된 내용이라 하더라도 게임 서버 안정성 테스트 장치(100)에 관하여 이상에서 기술된 내용은 본 실시예에 따른 게임 서버 안정성 테스트 방법에도 적용된다.
600단계에서 가상 유저 제어부(110)는 주어진 액션의 실행을 위해 요구되는 게임 패킷을 특정 게임 콘텐츠의 게임 프로토콜에 따라 생성하는 DLL 형태의 플러그인을 로딩한다. 전술한 바와 같이 게임 프로토콜은 게임 콘텐츠에 따라 다르게 구성되는 바, 이 DLL 형태의 플러그인은 게임 콘텐츠에 따라 다르게 구현되고, 각 게임 콘텐츠마다 미리 마련될 수 있다.
605단계에서 가상 유저 제어부(110)는 게임 서버(200)의 테스트를 위한 액션을 로딩한다. 다시 말하면, 가상 유저 제어부(110)는 미리 마련되어 있는 액션 스크립트들을 로딩한다. 액션 스크립트들은 게임 서버 안정성 테스트 장치(100)의 메모리에 미리 저장되어 있거나 사용자가 임의로 정의할 수 있다.
610단계에서 가상 유저 제어부(110)는 게임 서버(200)의 테스트를 위한 시나리오를 로딩한다. 다시 말하면, 가상 유저 제어부(110)는 미리 마련되어 있는 시나리오 스크립트들을 로딩한다. 시나리오 스크립트들 역시 게임 서버 안정성 테스트 장치(100)의 메모리에 미리 저장되어 있거나 사용자가 임의로 정의할 수 있다.
615단계에서 가상 유저 제어부(110)는 가상 유저(150) 또는 여러 가상 유저(150)들의 그룹을 생성한다. 가상 유저 또는 가상 유저들의 그룹이 생성되면 위의 600단계에서 로딩된 DLL 형태의 플러그인의 기능이 생성된 각 가상 유저에 할당된다.
620단계에서 가상 유저 제어부(110)는 가상 유저(150) 또는 가상 유저 그룹에 특정 시나리오의 실행의 명령을 내린다. 시나리오 실행 명령을 받은 가상 유저(150)의 시나리오 스케줄러(151)는 해당 시나리오를 실행한다. 실행할 시나리오는 로딩된 시나리오들 중에서 사용자에 의해 임의로 선택함으로써 실행되고, 시나리오 스케줄러(151)는 선택된 시나리오의 스크립트를 순차적으로 수행한다. 시나리오 스케줄러(151)는 시나리오에 속하는 액션들에 대응하는 연속적인 액션 명령을 액션 스케줄러(152)에 전달한다.
625단계에서 액션 스케줄러(152)는 시나리오 스케줄러(151)로부터의 연속적인 액션 명령에 따라서 해당 액션들을 실행한다.
경우에 따라, 가상 유저 제어부(110)는 시나리오 실행 명령을 내리지 않고 가상 유저(150)에 직접 액션 실행 명령을 내릴 수도 있다. 이 경우 620단계는 생략되고, 625단계에서 가상 유저 제어부(110)가 가상 유저(150) 또는 가상 유저 그룹에 특정 액션의 실행의 명령을 내린다. 액션 실행 명령을 받은 가상 유저(150)의 액션 스케줄러(152)는 이 액션 실행 명령에 따라 해당 액션을 실행한다. 실행할 액션은 로딩된 액션들 중에서 사용자에 의해 임의로 선택함으로써 실행되고, 액션 스케줄러(152)는 선택된 액션의 스크립트를 순차적으로 수행한다.
액션 스케줄러(152)가 액션을 실행하면, 630단계에서 게임 패킷 처리부(153)는 해당 액션의 실행을 위해 요구되는 적어도 하나의 게임 패킷을 생성한다. 게임 패킷 처리부(153)는 전술한 600단계에서 로딩된 DLL 형태의 플러그인에 속하는 바, 특정 게임 콘텐츠의 게임 프로토콜에 따라 게임 패킷을 생성하게 된다.
640단계에서 게임 패킷 처리부(153)는 생성된 게임 패킷을 게임 서버(200)로 송신한다. 송신 과정에서 암호화부(157)에 의해 게임 패킷의 암호화가 수행될 수 있다.
게임 서버(200)가 게임 서버 안정성 테스트 장치(100)의 가상 유저(150)로부터 게임 패킷을 수신하면 그에 응답하는 게임 패킷을 해당 가상 유저(150)로 송신하게 된다. 640단계에서 가상 유저(150)는 게임 서버(200)로부터 게임 패킷을 수신한다. 수신 과정에서 암호화부(157)에 의해 게임 패킷의 복호화가 수행될 수 있다. 또한, MTU 처리부(156)에 의해 게임 패킷이 특정 게임 콘텐츠의 게임 프로토콜에 따라 프로토콜 단위로 재구성될 수 있다.
645단계에서 가상 유저(150)의 게임 패킷 처리부(153)는 수신된 게임 패킷을 해석한다. 게임 패킷 처리부(153)는 전술한 600단계에서 로딩된 DLL 형태의 플러그인에 속하는 바, 특정 게임 콘텐츠의 게임 프로토콜에 따라 게임 패킷을 해석한다. 게임 패킷의 해석 결과 추출된 게임 객체 정보는 게임 데이터 관리부(130)와 게임 객체 가시화부(140)로 전달된다. 경우에 따라, 실행 중인 액션에 게임 서버(200)로부터 게임 패킷의 수신을 기다리는 스크립트가 존재하는 경우 게임 패킷 처리부(153)는 수신되는 게임 패킷을 해석하여 기다리는 게임 패킷이 수신되는지 체크하고, 해당 게임 패킷이 수신된 경우 이를 액션 스케줄러(152)에 알린다. 이 경우 다시 625단계로 돌아가서 액션의 다음 스크립트를 실행한다.
650단계에서 게임 객체 가시화부(140)는 가상 유저(150)의 게임 패킷 처리부(153)로부터 전달된 게임 객체 정보를 가시화 데이터로 변환하고 가시화 데이터를 2D 또는 3D 화면으로 출력한다.
상술한 본 발명의 실시예에 의하면, 게임 콘텐츠의 변화 시에 DLL 형태의 플러그인으로 구현되는 게임 패킷 처리 수단만을 교체함으로써 새로운 게임 콘텐츠에 대하여 용이하게 게임 서버의 안정성 테스트를 수행할 수 있는 장점이 있다. 즉, 새로운 게임 콘텐츠에 대하여 게임 서버의 안정성 테스트를 수행하고자 할 때 테스트 환경 구축에 소요되는 시간과 비용을 현저하게 절감할 수 있다. 따라서 적은 노력으로 다양한 종류의 게임 콘텐츠에 대하여 게임 서버 테스트를 수행할 수 있게 되어 시스템의 안정도가 향상되고 사용자들은 보다 질 높은 온라인 게임 서비스를 접할 수 있게 된다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
Claims (18)
- 적어도 하나의 가상 유저가 액션 또는 액션들의 나열인 시나리오를 실행하는 단계;
상기 액션 또는 상기 시나리오에 포함된 액션의 실행을 위해 요구되는 적어도 하나의 게임 패킷을 특정 게임 콘텐츠의 게임 프로토콜에 따라 생성하는 단계; 및
상기 생성된 게임 패킷을 게임 서버로 송신하는 단계를 포함하는 것을 특징으로 하는 게임 서버 안정성 테스트 방법. - 제1항에 있어서,
주어진 액션의 실행을 위해 요구되는 게임 패킷을 특정 게임 콘텐츠의 게임 프로토콜에 따라 생성하며 게임 콘텐츠에 따라 다른 플러그인(plug-in)을 로딩하는 단계를 더 포함하고,
상기 게임 패킷을 생성하는 단계는 상기 플러그인을 통하여 수행되는 것을 특징으로 하는 게임 서버 안정성 테스트 방법. - 제2항에 있어서,
상기 플러그인은 DLL 형태로 구현되는 것을 특징으로 하는 게임 서버 안정성 테스트 방법. - 제1항에 있어서,
상기 게임 서버로부터 수신되는 게임 패킷을 상기 특정 게임 콘텐츠의 게임 프로토콜에 따라 해석하는 단계를 더 포함하는 것을 특징으로 하는 게임 서버 안정성 테스트 방법. - 제1항에 있어서,
상기 게임 서버로부터 수신되는 게임 패킷을 상기 게임 프로토콜에 따라 프로토콜 단위로 재구성하는 단계를 더 포함하는 것을 특징으로 하는 게임 서버 안정성 테스트 방법. - 제1항에 있어서,
상기 생성된 게임 패킷을 암호화하는 단계를 더 포함하는 것을 특징으로 하는 게임 서버 안정성 테스트 방법. - 제1항 내지 제6항 중 어느 한 항에 기재된 게임 서버 안정성 테스트 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
- 액션들의 나열인 시나리오를 실행하는 시나리오 스케줄러;
액션을 실행하는 액션 스케줄러; 및
상기 액션 또는 상기 시나리오에 포함된 액션의 실행을 위해 요구되는 적어도 하나의 게임 패킷을 특정 게임 콘텐츠의 게임 프로토콜에 따라 생성하고 상기 생성된 게임 패킷을 게임 서버로 송신하는 게임 패킷 처리부를 포함하는 것을 특징으로 하는 게임 서버 안정성 테스트 장치. - 제8항에 있어서,
상기 게임 패킷 처리부는 게임 콘텐츠에 따라 다른 플러그인(plug-in) 형태로 구현되는 것을 특징으로 하는 게임 서버 안정성 테스트 장치. - 제9항에 있어서,
상기 게임 패킷 처리부는 DLL 형태로 구현되는 것을 특징으로 하는 게임 서버 안정성 테스트 장치. - 제8항에 있어서,
상기 게임 패킷 처리부는 상기 게임 서버로부터 수신되는 게임 패킷을 상기 특정 게임 콘텐츠의 게임 프로토콜에 따라 해석하는 것을 특징으로 하는 게임 서버 안정성 테스트 장치. - 제8항에 있어서,
상기 게임 패킷 처리부는,
상기 적어도 하나의 게임 패킷을 상기 특정 게임 콘텐츠의 게임 프로토콜에 따라 생성하는 게임 패킷 생성부; 및
상기 게임 서버로부터 수신되는 게임 패킷을 상기 특정 게임 콘텐츠의 게임 프로토콜에 따라 해석하는 게임 패킷 해석부를 포함하는 것을 특징으로 하는 게임 서버 안정성 테스트 장치. - 제8항에 있어서,
상기 게임 패킷 처리부는 상기 게임 서버로부터 수신되는 게임 패킷을 상기 게임 프로토콜에 따라 프로토콜 단위로 재구성하는 MTU 처리부를 더 포함하는 것을 게임 서버 안정성 테스트 장치. - 제12항에 있어서,
상기 게임 패킷 처리부는 상기 생성된 게임 패킷을 암호화하거나, 상기 수신된 게임 패킷을 복호화하는 암호화부를 더 포함하는 것을 특징으로 하는 게임 서버 안정성 테스트 장치. - 게임 패킷을 생성하여 게임 서버로 송신하는 복수 개의 가상 유저들; 및
상기 가상 유저들에 액션의 실행 명령 또는 액션들의 나열인 시나리오의 실행 명령을 내리는 가상 유저 제어부를 포함하고,
상기 복수 개의 가상 유저들을 구성하는 각 가상 유저는,
상기 시나리오를 실행하는 시나리오 스케줄러;
상기 액션을 실행하는 액션 스케줄러; 및
상기 액션 또는 상기 시나리오에 포함된 액션의 실행을 위해 요구되는 적어도 하나의 게임 패킷을 특정 게임 콘텐츠의 게임 프로토콜에 따라 생성하고 상기 생성된 게임 패킷을 상기 게임 서버로 송신하는 게임 패킷 처리부를 포함하는 것을 특징으로 하는 게임 서버 안정성 테스트 장치. - 제15항에 있어서,
상기 게임 패킷 처리부는 게임 콘텐츠에 따라 다른 플러그인(plug-in) 형태로 구현되는 것을 특징으로 하는 게임 서버 안정성 테스트 장치. - 제16항에 있어서,
상기 게임 패킷 처리부는 DLL 형태로 구현되는 것을 특징으로 하는 게임 서버 안정성 테스트 장치. - 제15항에 있어서,
상기 게임 패킷 처리부는 상기 게임 서버로부터 수신되는 게임 패킷을 상기 특정 게임 콘텐츠의 게임 프로토콜에 따라 해석하는 것을 특징으로 하는 게임 서버 안정성 테스트 장치.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110079776A KR20130017386A (ko) | 2011-08-10 | 2011-08-10 | 게임 서버의 안정성 테스트 방법 및 장치 |
US13/546,981 US20130040740A1 (en) | 2011-08-10 | 2012-07-11 | Method and apparatus for testing stability of game server |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110079776A KR20130017386A (ko) | 2011-08-10 | 2011-08-10 | 게임 서버의 안정성 테스트 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20130017386A true KR20130017386A (ko) | 2013-02-20 |
Family
ID=47677871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110079776A KR20130017386A (ko) | 2011-08-10 | 2011-08-10 | 게임 서버의 안정성 테스트 방법 및 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20130040740A1 (ko) |
KR (1) | KR20130017386A (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130065694A1 (en) * | 2011-09-13 | 2013-03-14 | Electronics And Telecommunications Research Institute | Method for performance test of online game server |
CN108096831B (zh) * | 2016-11-25 | 2021-07-09 | 盛趣信息技术(上海)有限公司 | 网络游戏防加速控制***及方法 |
KR101881804B1 (ko) * | 2017-08-16 | 2018-07-25 | 넷마블 주식회사 | 게임 테스트 자동화 장치 및 방법 |
CN110381065B (zh) * | 2019-07-23 | 2021-05-04 | 腾讯科技(深圳)有限公司 | 一种协议破解监控方法、装置、服务器及存储介质 |
KR20220086872A (ko) | 2020-12-17 | 2022-06-24 | 한국전자통신연구원 | 인공지능 에이전트를 이용한 게임 품질 보증 방법 및 시스템 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2400587A1 (en) * | 2000-02-17 | 2001-09-07 | Acclaim Entertainment, Inc. | Multi-player computer game system and method |
US20040107360A1 (en) * | 2002-12-02 | 2004-06-03 | Zone Labs, Inc. | System and Methodology for Policy Enforcement |
US20040142744A1 (en) * | 2003-01-08 | 2004-07-22 | Acres Gaming Incorporated | Mobile data access |
AU2005312283B2 (en) * | 2004-09-21 | 2011-09-15 | Timeplay Inc. | System, method and handheld controller for multi-player gaming |
US20070211696A1 (en) * | 2006-03-13 | 2007-09-13 | Finisar Corporation | Method of generating network traffic |
KR101269671B1 (ko) * | 2009-12-01 | 2013-05-30 | 한국전자통신연구원 | 게임 테스트를 위한 게임 문법 기반의 패킷 캡쳐 분석 장치 및 그 방법 |
-
2011
- 2011-08-10 KR KR1020110079776A patent/KR20130017386A/ko not_active Application Discontinuation
-
2012
- 2012-07-11 US US13/546,981 patent/US20130040740A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20130040740A1 (en) | 2013-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Cinque et al. | Microservices monitoring with event logs and black box execution tracing | |
US8667119B2 (en) | System and method for re-generating packet load for load test | |
US9430364B1 (en) | Systems, methods, and apparatuses for testing mobile device applications | |
Chothia et al. | Leakwatch: Estimating information leakage from java programs | |
US20130263090A1 (en) | System and method for automated testing | |
Wallace et al. | Toward sensor-based random number generation for mobile and IoT devices | |
US20200133829A1 (en) | Methods and systems for performance testing | |
CN111831538B (zh) | 调试方法、装置以及存储介质 | |
KR20130017386A (ko) | 게임 서버의 안정성 테스트 방법 및 장치 | |
CN103678126B (zh) | 用于提高应用仿真加速的效率的***和方法 | |
US9367415B1 (en) | System for testing markup language applications on a device | |
CN102592087A (zh) | 标识出可因子分解的代码 | |
CN102483699B (zh) | 密码密钥的虚拟化 | |
KR20130026919A (ko) | 분산 테스트 시스템 및 방법, 분산 테스트 관제 시스템 및 방법, 분산 테스트 플랜 작성 장치 및 방법, 분산 테스트 에이전트 및 분산 테스트 플랜 실행 방법 | |
KR101199485B1 (ko) | 클라이언트/서버간 온라인 성능 테스트 방법 및 장치 | |
CN113722683A (zh) | 模型保护方法、装置、设备、***以及存储介质 | |
CN114328217A (zh) | 应用的测试方法、装置、设备、介质及计算机程序产品 | |
Berger et al. | Does my bft protocol implementation scale? | |
CN110413675A (zh) | 一种实时任务计算的控制方法、装置、服务器及存储介质 | |
Valadares et al. | On designing and testing distributed virtual environments | |
KR101138302B1 (ko) | 온라인 게임 서버-테스트 통합 장치 | |
CN109657167A (zh) | 数据采集方法、装置、服务器及存储介质 | |
CN106888448A (zh) | 应用下载方法、安全元件及终端 | |
EP3970045A1 (en) | Minimizing production disruption through a scan rule engine | |
CN105446867B (zh) | 一种测试数据的生成方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |