Interactive game for children

Testing and re-engineering an interactive children’s game for visitors of a recreational park

Staff Augmentation, Software Re-engineering, Entertainment, Web development

100%

of app testing was performed by our team

90%

test coverage

Interactive app for children project background image

Project background

Operators of a recreational park in Israel hired our client to create an interactive app for children. We helped our client with app testing and re-engineering. With this app, kids can roam around the park, completing engaging quests.

Country

Israel

Technology

Java 11

Cooperation

March 2022 - May 2022

Comprehensive testing to ensure smooth work

Our experts joined the project during the testing phase. We devised and implemented a comprehensive testing strategy, covering over 90% of the software’s code by tests.

JUnit – exhaustive testing of Java-based apps

Our experts used a popular Java testing framework called JUnit to create tests and streamline the testing process.

Unit, integration and stress testing

We began with unit testing, meticulously examining each individual component of the app. Then, our team proceeded to integration testing, studying how different software modules work together. Lastly, we conducted stress testing to ensure that the app could handle multiple users without crashing.

Resolving issues

We uncovered and fixed a number of inefficiencies and bugs, including a concurrency error and various NullPointerExceptions.

NullPointerExceptions

NullPointerException is a type of runtime exception in Java. It happens when a program tries to use an object reference with a null value. There can be many reasons why NullPointerExceptions occur, like accessing properties of null objects, using a null object in a synchronized block, etc. To resolve these errors, we added more validations to the code.

Fixing the concurrency error

During the game, players had to navigate various park locations, completing tasks. Each location corresponds to a particular “game station” within the app. However, at a certain point, the game was freezing and users were unable to proceed. Our experts investigated the issue and simulated multiple players switching quickly between game stations. We discovered that a concurrency error was the culprit. Concurrency errors are notorious for being difficult to detect yet often causing significant system failures. In general, there are two types of such errors – race condition and deadlock. In our case, it was the latter. To resolve the issue, we implemented proper transaction isolations for the game state update methods.

PostgreSQL

The database we used on the project was PostgreSQL. It is a popular, free, open-source database that supports SQL standards and offers many valuable features.

Liquibase

To simplify database manipulation, our experts used the Liquibase library. It allowed us to easily migrate data between different database versions, adding new tables, columns, etc.

QueryDSL

QueryDSL is a popular library that allows to create SQL-like queries for databases in Java. It helped us streamline data retrieval from PostgreSQL. 


Jackson

Jackson is an efficient Java-based library used to parse or generate files in JSON format, as well as serialize and deserialize Java objects. Our team used Jackson to set up data exchange (in JSON format) between the app’s back and front ends.


Swagger

With Swagger, we generated an interactive, access-restricted UI for the app’s API, simplifying testing and internal use.

Lombok

Lombok allows developers to reduce the size of a standardized Java code. With it, we were able to minimize the code’s length and redundancy, thus, increasing its maintainability. 


1+ years

Of successful cooperation

3 weeks

To test the app

1 professional

Dedicated to the project team