SlideShare a Scribd company logo
MULTIPLAYER
GAME TESTING IN
ACTIONS
Yevhen Rudiev
• QA Tech Lead at Trading Tool
Solutions
• 7 years experience in IT
• 4 years experience in
Automated Testing
• Founder of Test Unit Lab
organization
GAMES
ЄВГЕН РУДЄВ «Multiplayer game testing in actions» QADay 2019
ЄВГЕН РУДЄВ «Multiplayer game testing in actions» QADay 2019
ЄВГЕН РУДЄВ «Multiplayer game testing in actions» QADay 2019
ЄВГЕН РУДЄВ «Multiplayer game testing in actions» QADay 2019
ЄВГЕН РУДЄВ «Multiplayer game testing in actions» QADay 2019
GAMES
MULTIPLAYER
GAME
SERVER
DB
DESKTOP
CLIENT
WEB
CLIENT
MOBILE
CLIENT
PAYMENTPLATFORM
DB DB
ENTERPRIS
E
SERVER
DB
DESKTOP
CLIENT
WEB
CLIENT
MOBILE
CLIENT
PAYMENTPLATFORM
DB DB
CLIENTS
CLIENTS
CLIENTS
MAIN FOCUSES
• Interesting
• Easy to play
• Fast
• Beautiful
• Stable
• Synchronized
ЄВГЕН РУДЄВ «Multiplayer game testing in actions» QADay 2019
ЄВГЕН РУДЄВ «Multiplayer game testing in actions» QADay 2019
GAME
SERVER
DB
DESKTOP
CLIENT
WEB
CLIENT
MOBILE
CLIENT
PAYMENTPLATFORM
DB DB
MANUAL
END2END
SYSTEM
UNIT
UNIT TESTS
LEGACY CODE
REFACTORING
REFACTORING
SYSTEMTESTS
GAME SERVER
GAME
SERVER
CLIENT CLIENT
CLIENT
CLIENT
CLIENT
CLIENT
CLIENT CLIENT
DIFFERENCE
ORDINARY BACK-END GAME SERVER
VS
ENTERPRISE
SERVER
CLIENT
REST API
COMMUNICATION
GAME
SERVER
CLIENT
SOCKET API
COMMUNICATION
SOCKET
GAME
SERVER
CLIENT
SOCKET API
REST API
SOCKET
OWN TOOLS
public class SocketClient
{
public void StartConnection(IpAddress address, int port) { }
public void Send(Message message) { }
public void MessageReceived(int messageId) { }
public void MessageWithConditionReceived<T>(int messageId, Func<bool> condition) { }
public void MessageWasNotReceived(int messageId) { }
public void MessageWithConditionWasNotReceived<T>
(int messageId, Func<bool> condition) { }
}
OWN TOOLS
FUNCTIONAL TESTS
GAME
SERVER
DB
FUNCTIONAL TESTS
GAME
SERVER
DB
FUNCTIONAL TESTS
SINGLEPLAYER
GAME
SERVER
DB
SINGLEPLAYERFLOW
public class Player
{
public int Id {get; set;}
public string Name {get; set;}
public string Password {get; set;}
private SocketClient Client {get;}
public void Login()
{
Client.Send(new Message(Protocol.C_LOGIN, this.Id, this.Password));
Client.MessageReceived(Protocol.S_LOGIN_OK);
}
}
PLAYER
[Test]
public void PlayerSetStatus_Away_Positive()
{
Given().PlayerLoggedIn();
When().Message(new Message(Protocol.C_SET_PERSONAL_MESSAGE, Status.Away))
.WasSent();
Then().MessageWithConditionReceived(Protocol.S_SET_PERSONAL_MESSAGE,
msg => msg.Value == Status.Away)
.DBEntityIsRecorded(entity => entity.PlayerId == Context.Current.Player.Id &&
entity.Status == Status.Away.ToString());
}
SINGLEPLAYER
MULTIPLAYER
GAME
SERVER
DB
MULTIPLAYERFLOW
[Test]
public void OpponentSetStatus_Playing_Positive_PlayerReceivedOpponentStatus()
{
Given().Opponents(1)
.OpponentLoggedIn(Context.Current.Opponents[0])
.PlayerLoggedIn();
When().Message(new Message(Protocol.C_SET_PERSONAL_MESSAGE, Status.Playing))
.WasSentBy(Context.Current.Opponents[0]);
Then().MessageWithConditionReceivedBy(Context.Current.Player,
Protocol.S_SET_PERSONAL_MESSAGE,
msg => msg.Value == Status.Playing.ToString());
}
MULTIPLAYER
GAME
SERVER
DB
SYNCHRONIZATION
DEPENDENT FLOWS
DEPENDENT FLOWS
PLAY AGAIN
FEATURE BASEDTESTS
[Test]
public void ClassicGame_PositiveScenario()
{
Given().Opponents(1)
.OpponentLoggedIn(Context.Current.Opponents[0])
.PlayerLoggedIn();
Feature<ClassicModeGame>()
.PlayerEntersToGame_Success(Context.Current.Player)
.PlayerEntersToGame_Success(Context.Current.Opponents[0])
.TwoPlayersAreReady_GameIsStarted()
.PlayerMakeWrongTurn_ScoreWasDescreased(Context.Current.Player)
.PlayerMakeGoodTurn_ScoreWasIncreased(Context.Current.Opponents[0])
.GameTimeWasFinished_ResultsWereReceived();
}
FEATURE BASEDTESTS
GAME
SERVER
PARALLEL PROCESSING
CLIENT
CLIENT
DIFFERENCE
• Technologies
DIFFERENCE
DIFFERENCE
DIFFERENCE
• Technologies
• Test Frameworks
TEST FRAMEWORKS
TEST FRAMEWORKS
TEST FRAMEWORKS
TEST FRAMEWORKS
PUPPETRY
https://www.youtube.com/watch?v=miO5-jmOZPc
PUPPETRY
• Click
• SendKeys
• DragTo
• Swipe
• GetComponent
• GetCoordinates
• Count
public class LoginScreen
{
GameObject nameField = new GameObject(“Canvas”, “nameField”);
GameObject passwordField = new GameObject(“Canvas”, “passwordField”);
GameObject loginButton = new GameObject().ByUPath(“//Canvas//loginButton”);
public MainManuScreen MakeSuccessLogin(string name, string password)
{
nameField.SendKeys(name);
passwordField.SendKeys(password);
loginButton.Click();
return new MainMenuScreen();
}
}
PUPPETRY
TEST
[Test]
public void Login_CorrectCredentials_Success()
{
//Arrange
var name = "Yevhen";
var password = “BAQ_2019";
//Act
var screen = new LoginScreen().MakeSuccessLogin(name, password);
//Assert
Assert.IsTrue(screen.IsScreenOpened,
$"Main Menu was not opened after login with {name} and {password}")
}
FUNCTIONAL UI TESTS
GAME
SERVER
CLIENT
APPROACH
TEST
CLIENT
APPROACH
TEST
TESTS
• CRUD tests
• Functional tests
GAME
SERVER
CLIENT
APPROACH
TEST
GAME
SERVER
FAKE
CLIENT
APPROACH
TEST
PLATFORMS
COMMON LOGIC
CUSTOMLOGIC
OTHER PLAYER RELATED UI
GAME
SERVER
FAKE
CLIENT
SOCKET API
OPPONENT
TEST CLIENT
GAME
SERVER
FAKE
CLIENT
FAKE CONTROLLER
TEST
REST API
SOCKET API
FAKE
REST
CONTROLLER
CLIENT TEST
public class ScenarioBuilder
{
public ScenarioBuilder MakeSuccessLogin_MainManuIsLoaded()
{
Context.Current.Page = new LoginScreen()
.MakeSuccessLogin()
.IsLoaded();
return this;
}
public ScenarioBuilder StartPlayGame_SearchingForOpponentWasStarted()
{
Context.Current.Page = ((MainMenuScreen)Context.Current.Page)
.ClickPlayGameButton()
.SearchingForOpponentMessageIsShown();
return this;
}
}
PLAYERSCENARIO
END2ENDTESTS
GAME
SERVER
DB
CLIENT
PAYMENTPLATFORM
DB DB
TEST
GAME
SERVER
DB
CLIENT
PAYMENTPLATFORM
DB DB
TEST
GAME
SERVER
DB
CLIENT
PAYMENTPLATFORM
DB DB
TEST
GAME
SERVER
DB
CLIENT
PAYMENTPLATFORM
DB DB
TEST
LACKOF TECHNOLOGIES
CROSSBREEDING
CROSSBREEDING
• Puppetry + Appium
GAME
SERVER
DB
MOBILE
CLIENT
TEST
APPIUM
PUPPETR
Y
CROSSBREEDING
• Puppetry + Appium
• Puppetry + Selenium
MANUAL TESTING
MANUAL TESTING
• New functionality
• Functionality that hard to automate
• Exploratory testing
• Layout and visual testing
• Testing of sounds
• Localization testing
WHAT’S NEXT?
• Performance testing of Game Server
• Performance testing of Client
• Visual testing
• Bot for exploratory testing
CONCLUSION
• Games are not usual enterprise application, but
have a lot of common
• You can re-use common approaches
• You can invent your own approaches
CONTACTS:
www.linkedin.com/in/yevhen-rudiev-a5609590
www.facebook.com/evgeniy.rudev.5
yrudiev@gmail.com
@testunitlab
ЄВГЕН РУДЄВ «Multiplayer game testing in actions» QADay 2019

More Related Content

PPTX
CCI2019 - I've got the Power! I've got the Shell!
PPTX
ReadyRoll Core in Visual Studio Enterprise
PPTX
Multiplayer game testing in actions
PPT
YEVHEN RUDIEV "Multiplayer game testing in actions" BAQ
PPT
Making a game "Just Right" through testing and play balancing
PDF
STUDY OF AN APPLICATION DEVELOPMENT ENVIRONMENT BASED ON UNITY GAME ENGINE
PPTX
Software testing vs. Game testing
PPTX
Software testing and game testing
CCI2019 - I've got the Power! I've got the Shell!
ReadyRoll Core in Visual Studio Enterprise
Multiplayer game testing in actions
YEVHEN RUDIEV "Multiplayer game testing in actions" BAQ
Making a game "Just Right" through testing and play balancing
STUDY OF AN APPLICATION DEVELOPMENT ENVIRONMENT BASED ON UNITY GAME ENGINE
Software testing vs. Game testing
Software testing and game testing

Similar to ЄВГЕН РУДЄВ «Multiplayer game testing in actions» QADay 2019 (20)

PDF
Perfecting Gamer’s Experiences with Performance Testing for Gaming Applicatio...
PDF
A Complete Guide to Game Testing - Its Types and Processes.pdf
PPT
Games.ppt
PPTX
Software Engineering Project
PPT
20131105 concepts of game design
PDF
Evaluating Game Usability - How game research will change the face of softwa...
PDF
Srinivas, Nirmalaya - Testing a massively multi-player online game
DOCX
Initial thoughts on live user tests for games
PPT
User interfaces
PDF
速度——敏捷开发的丹田之气(2011敏捷中国大会)
PDF
Know your player - Optimizing the player experience
PPTX
Best Practices in Mobile Game Testing
PDF
생산적인 개발을 위한 지속적인 테스트
PPTX
Testing banking apps
PDF
GDD 2011 - How to build kick ass video games for the cloud
PDF
Shringi Kumari CV
PDF
Google kick ass-game_programming_with_gwt
PDF
Navigating a 3D Avatar using a Single Switch
PDF
Network Game Design: Hints and Implications of Player Interaction
PPTX
Emily Greer at GDC 2018: Data-Driven or Data-Blinded?
Perfecting Gamer’s Experiences with Performance Testing for Gaming Applicatio...
A Complete Guide to Game Testing - Its Types and Processes.pdf
Games.ppt
Software Engineering Project
20131105 concepts of game design
Evaluating Game Usability - How game research will change the face of softwa...
Srinivas, Nirmalaya - Testing a massively multi-player online game
Initial thoughts on live user tests for games
User interfaces
速度——敏捷开发的丹田之气(2011敏捷中国大会)
Know your player - Optimizing the player experience
Best Practices in Mobile Game Testing
생산적인 개발을 위한 지속적인 테스트
Testing banking apps
GDD 2011 - How to build kick ass video games for the cloud
Shringi Kumari CV
Google kick ass-game_programming_with_gwt
Navigating a 3D Avatar using a Single Switch
Network Game Design: Hints and Implications of Player Interaction
Emily Greer at GDC 2018: Data-Driven or Data-Blinded?
Ad

More from QADay (20)

PDF
СТАНІСЛАВ ПОЛЬСЬКОЙ «QA це спільна справа: залучення БА та девів у процес заб...
PPTX
РАМЕЛЛА БАСЕНКО - Tехніки тест дизайну в дії: розбір задач та корисні поради...
PDF
КАТЕРИНА АБЗЯТОВА - Tехніки тест дизайну в дії: розбір задач та корисні порад...
PDF
ЮРІЙ БАЖАН «Один спринт з життя тестувальника»
PDF
АЛЛА ПЕНАЛЬБА «QA automation, the secret weapon that need (a) manual»
PDF
ЮРІЙ МАЛИЙ «QA метрики в процесі SDLC»..
PDF
АНДРІЙ ЗАБЛОЦЬКИЙ « Досвід побудови сильної та ефективної QA команди»
PDF
РІНА УЖЕВКО «Тестування локалізації та терміни в Gamedev»
PPTX
КАТЕРИНА АБЗЯТОВА «Від бар’єрів до мостів: Важливість Accessibility Testing»
PPTX
ЄВГЕН ГАЙДАЙ «Виділена команда автоматизації тестування. Досвід підтримки та ...
PDF
АНАСТАСІЯ ЧУДОВСЬКА «Переїзд з моноліта на мікросервіси з точки зору QA: як ...
PDF
СОФІЯ НОВАЧЕНКО «Успішне поєднання QA/BA обовʼязків»
PDF
ОЛЕНА НІКІТІНА «Глибинне занурення в процеси тестування: від документації до ...
PDF
ОЛЕСЬ НІКАНЮК «Особливості тестування в міжнародних організаціях: досвід та в...
PPTX
ОЛЕГ ЗАРЕВИЧ «Взаємодії між DevOps і QA»
PPTX
СВЯТ ЛОГІН «Що можна витягнути з мобільних додатків»
PPTX
ГАННА КАПЛУН «Тестування на основі персон: ідея, інструменти, приклади»
PDF
НАТАЛІЯ КРИВОНІС «Необхідні навички для керування командою»
PDF
ОКСАНА ВЕРЕТЮК «Effective project quality check або як успішно налагодити про...
PDF
ВІТАЛІЙ МИХАЙЛЮК «Онбордінг нових тестерів до команди: як ефективно навчати і...
СТАНІСЛАВ ПОЛЬСЬКОЙ «QA це спільна справа: залучення БА та девів у процес заб...
РАМЕЛЛА БАСЕНКО - Tехніки тест дизайну в дії: розбір задач та корисні поради...
КАТЕРИНА АБЗЯТОВА - Tехніки тест дизайну в дії: розбір задач та корисні порад...
ЮРІЙ БАЖАН «Один спринт з життя тестувальника»
АЛЛА ПЕНАЛЬБА «QA automation, the secret weapon that need (a) manual»
ЮРІЙ МАЛИЙ «QA метрики в процесі SDLC»..
АНДРІЙ ЗАБЛОЦЬКИЙ « Досвід побудови сильної та ефективної QA команди»
РІНА УЖЕВКО «Тестування локалізації та терміни в Gamedev»
КАТЕРИНА АБЗЯТОВА «Від бар’єрів до мостів: Важливість Accessibility Testing»
ЄВГЕН ГАЙДАЙ «Виділена команда автоматизації тестування. Досвід підтримки та ...
АНАСТАСІЯ ЧУДОВСЬКА «Переїзд з моноліта на мікросервіси з точки зору QA: як ...
СОФІЯ НОВАЧЕНКО «Успішне поєднання QA/BA обовʼязків»
ОЛЕНА НІКІТІНА «Глибинне занурення в процеси тестування: від документації до ...
ОЛЕСЬ НІКАНЮК «Особливості тестування в міжнародних організаціях: досвід та в...
ОЛЕГ ЗАРЕВИЧ «Взаємодії між DevOps і QA»
СВЯТ ЛОГІН «Що можна витягнути з мобільних додатків»
ГАННА КАПЛУН «Тестування на основі персон: ідея, інструменти, приклади»
НАТАЛІЯ КРИВОНІС «Необхідні навички для керування командою»
ОКСАНА ВЕРЕТЮК «Effective project quality check або як успішно налагодити про...
ВІТАЛІЙ МИХАЙЛЮК «Онбордінг нових тестерів до команди: як ефективно навчати і...
Ad

Recently uploaded (20)

PDF
SOIL: Factor, Horizon, Process, Classification, Degradation, Conservation
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PDF
Practical Manual AGRO-233 Principles and Practices of Natural Farming
PPTX
Chinmaya Tiranga Azadi Quiz (Class 7-8 )
PPTX
Lesson notes of climatology university.
PDF
Paper A Mock Exam 9_ Attempt review.pdf.
PDF
RMMM.pdf make it easy to upload and study
PPTX
A powerpoint presentation on the Revised K-10 Science Shaping Paper
PDF
Weekly quiz Compilation Jan -July 25.pdf
PPTX
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
PDF
Chinmaya Tiranga quiz Grand Finale.pdf
PDF
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
PDF
advance database management system book.pdf
PDF
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
PDF
ChatGPT for Dummies - Pam Baker Ccesa007.pdf
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PDF
A systematic review of self-coping strategies used by university students to ...
PDF
GENETICS IN BIOLOGY IN SECONDARY LEVEL FORM 3
PPTX
202450812 BayCHI UCSC-SV 20250812 v17.pptx
PPTX
UV-Visible spectroscopy..pptx UV-Visible Spectroscopy – Electronic Transition...
SOIL: Factor, Horizon, Process, Classification, Degradation, Conservation
Supply Chain Operations Speaking Notes -ICLT Program
Practical Manual AGRO-233 Principles and Practices of Natural Farming
Chinmaya Tiranga Azadi Quiz (Class 7-8 )
Lesson notes of climatology university.
Paper A Mock Exam 9_ Attempt review.pdf.
RMMM.pdf make it easy to upload and study
A powerpoint presentation on the Revised K-10 Science Shaping Paper
Weekly quiz Compilation Jan -July 25.pdf
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
Chinmaya Tiranga quiz Grand Finale.pdf
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
advance database management system book.pdf
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
ChatGPT for Dummies - Pam Baker Ccesa007.pdf
Final Presentation General Medicine 03-08-2024.pptx
A systematic review of self-coping strategies used by university students to ...
GENETICS IN BIOLOGY IN SECONDARY LEVEL FORM 3
202450812 BayCHI UCSC-SV 20250812 v17.pptx
UV-Visible spectroscopy..pptx UV-Visible Spectroscopy – Electronic Transition...

ЄВГЕН РУДЄВ «Multiplayer game testing in actions» QADay 2019