
In this lecture, we will discuss the course introduction, where we will talk about what AltTester® is and why it is important in game automation. We will explore the advantages of using AltTester® over other automation tools and how it simplifies Unity game testing. Finally, we will understand why learning AltTester® is essential for automating Unity game testing effectively. By the end of this session, you will have a clear understanding of AltTester’s role in game automation and why it is a great choice for testing Unity games.
In this session, we will discuss AltTester® in detail, exploring the different ways to perform game automation testing. You will get an introduction to the AltTester Unity SDK and AltTester® Desktop Server, understanding their roles in automation. We will also examine the AltTester® Desktop components, the programming languages it supports, and how it enables effective game testing, similar to how other tools are used for app or web automation. By the end, you’ll have a clear understanding of how AltTester® simplifies Unity game automation.
In this session, we will go through an overview of the course, outlining what you will learn and the key topics we will cover. We will discuss the goals of the course, including how you will gain hands-on experience with game automation testing using AltTester® and AltTester® Desktop. By the end of this session, you will have a clear understanding of what to expect from the course and how it will help you develop the skills needed for automating Unity game testing efficiently.
In this lecture, we will go through the prerequisites needed to set up AltTester® for game automation testing. You will learn about all the essential tools required, including Java Development Kit (JDK), .NET 8, and other necessary installations. Additionally, we will discuss what is not covered in this course so you can take care of those aspects separately. By the end of this session, you will have a clear understanding of the required setup to start with AltTester®.
In this session, you will learn how to install Java and go through all the necessary steps required for a successful installation. We will cover how to set up the environment path to ensure Java runs smoothly on your system. By the end of this session, you will have Java properly installed and configured, allowing you to proceed with game automation testing using AltTester®.
By the end of this session, you will have learned how to install .NET 8 and Visual Studio Code and understand their significance in automation testing. We will walk through the installation process step by step, ensuring your development environment is set up correctly. Additionally, you will gain a clear understanding of why .NET 8 is crucial for building and running an automation testing framework with AltTester®.
In this session, you will learn how to install Android Studio and understand its importance in the automation testing setup. We will go through the installation process step by step and explore why Android Studio is essential for running and debugging Android builds. Additionally, you will learn how to set up its environment variables to ensure smooth integration with your automation framework. By the end of this session, your Android Studio setup will be ready for testing with AltTester®.
In this session, we will learn how to install Allure Reports, an essential tool for test reporting in automation testing. We will go through the installation process step by step and cover all dependent tools required for Allure setup. By the end of this session, you will have Allure Reports properly installed.
In this session, you will learn how to install AltTester® Desktop and where to download it. We will go through the step-by-step installation process to ensure it is set up correctly for game automation testing. By the end of this session, you will have AltTester® Desktop installed and ready to use, allowing you to inspect game objects and interact with them using automation scripts.
This is the conclusion lesson for this chapter, where we will review everything we have learned so far. In this session, we will go over the complete list of installed tools to ensure you have everything set up correctly before moving forward.
In this chapter, we will introduce the AltTester® Desktop application and explore its starting guide, basic modules, and functionalities provided by the AltTester® First-Time User Experience (FTUE).
In this session, we will explore the types of servers provided by AltTester® and their key components. By the end of this session, you will have a clear understanding of how AltTester® servers function in game automation testing and how to configure them for efficient test execution.
In this session, we have provided the AltTester® instrumented build for your automation practice. You can either download the APK directly or access it from the cloud link provided. Choose whichever method is most convenient for you. This build will help you get hands-on experience with AltTester® automation testing.
In this session, you will learn how to connect your Android build to the AltTester® Server using ADB commands and reverse port forwarding. We will go through the step-by-step process to establish a connection, ensuring smooth communication between your instrumented Android build and AltTester® Desktop.
In this session, we have provided key troubleshooting steps to help you resolve issues if your build is not connecting to AltTester® Desktop. By following these steps, you can quickly identify and fix connectivity problems, ensuring a smooth testing experience.
In this session, we will overview the components of the AltTester® Support section. By the end of this session, you will know where to find support and how to utilize these resources effectively for your game automation testing.
In this session, we will learn how to sign up for AltTester® and activate the AltTester® license. We will go through the step-by-step process to create an account, access the licensing portal, and activate your license for seamless game automation testing.
In this session, we will discuss the new sign-up policy for AltTester®. You will learn about any updated requirements, changes in the registration process. We will go through the steps needed to successfully create an account and ensure a smooth onboarding experience.
In this session, we will discuss the updates in the AltTester® Community License policy. You will learn about the latest changes and eligibility criteria for community license.
In this session, we will explore the User Interface components of the AltTester® Desktop application, focusing on the Game Screen area and its key features. You will learn about the Live Update toggle, Image Quality settings, Time Scale slider, Object Selection, Default Actions, Refresh button, and Scene Management. Each of these components plays a crucial role in inspecting and interacting with game elements during automation testing.
In this session, we will explore the Game Object Hierarchy Area in AltTester® Desktop, where all objects from the selected scene are displayed in a structured format. You will learn how to navigate the hierarchy, expand and collapse elements, and use the “Search by” feature to quickly find game objects.
In this session, we will explore the Game Element Details Area in AltTester® Desktop, where you can access key information about any selected game object. You will learn how to view details such as Name, ID, World Coordinates, Screen Coordinates, etc. We will also dive into the Components and Assembly section, where you can inspect Methods, Fields, and Properties of each game object.
In this session, we will explore the Recorder feature in AltTester® Desktop, which allows you to record, track, and manage test interactions within your game. You will learn how to start recording, choose a scripting language and utilize different recording modes like Click Objects and Click Coordinates. We will also cover mouse movement tracking, setup inclusion, test playback, logs, and the copy functionality.
In this session, we will explore all the components of the Settings menu in AltTester® Desktop. You will learn how to configure various options to optimize your game automation testing experience, including adjusting display settings, enabling or disabling features and customizing interaction preferences. By the end of this session, you will have a clear understanding of the Settings menu and how to tailor it to your testing needs.
This is the conclusion session for AltTester® Desktop. In this session, we will take a glance at everything we have covered in this chapter, including the user interface, Game Object Hierarchy, Game Element Details, Recorder feature, and Settings menu.
In this session, we will go through the initial setup process for using AltTester®, including installing the AltTester® package, creating the necessary repositories, and setting up a console application project. You will also learn how to install the NUnit package to write and execute test scripts efficiently.
In this session, we will focus on designing a well-organized automation testing framework using Pages and Tests folders. Additionally, we will write a base class that will be inherited by other test classes, ensuring code reusability and maintainability. This structured approach will help in creating a scalable and efficient test automation framework using AltTester®.
In this session, we will implement our first key method, Find Object, to locate and interact with game elements using AltTester®. Before working on the method, we will first create a MainMenuPage class in the Pages folder, ensuring a structured automation framework. You will learn how to import the necessary AltTester package, define the class structure, and inherit from BasePage to reuse common functionality. We will then implement the Find Object method to locate the Start Button and Start Text using FindObject by Name and Text. By the end of this session, you will have a fully functional page class that can identify and interact with UI elements using FindObject() method.
In this session, we will set up and write a test to verify that the Start Page of our game loads correctly. This is a crucial step in game automation testing to ensure that the Start Page is fully visible and accessible before interacting with any game elements.
We will begin by creating a new test file named MainMenuTest inside the Tests folder. Then, step by step, we will:
Establish a connection to the game using AltTester®.
Verify that the Start Scene has loaded successfully.
Write test cases to check the visibility of key UI elements.
Implement cleanup methods to close the connection after each test.
By the end of this session, you will have a functional test setup that ensures the Start Page loads correctly, forming the foundation for further automation testing.
Now it's time for a simple assignment!
In this session, we will learn how to find multiple objects in AltTester® based on specific criteria. The FindObjects() method allows us to locate multiple game elements such as buttons, texts, images, or other UI components and interact with them dynamically. By the end of this session, you will understand how to efficiently find and interact with multiple game objects in AltTester®, making your test scripts more flexible and robust.
In this lesson, we will learn how to locate objects in a scene that contain specific text in their name using AltTester®. The FindObjectWhichContains() method allows us to find the first object in the scene that matches a given text criterion. By the end of this session, you will understand how to use partial text search to find and interact with UI elements in AltTester®.
In this lesson, you will learn how to use FindObjectsWhichContain() method to locate multiple elements dynamically. Retrieve and interact with all matching objects in a scene. Apply this technique for buttons, labels, and gameplay elements with similar naming patterns. By the end of this session, you will have a clear understanding of how to efficiently find and interact with multiple game objects using AltTester®.
In this session, we will explore the FindObjectAtCoordinates() method in AltTester®, which allows us to retrieve a Unity object located at specific screen coordinates. This is especially useful when interacting with objects based on their exact screen position, such as UI elements, buttons, or in-game objects. By the end of this session, you will understand how to locate and interact with objects using screen coordinates, making your test automation more precise and dynamic.
In this lesson, we will explore the GetAllElements() method, a powerful tool in AltTester® that helps inspect and validate all objects currently loaded in a game’s scenes. It will retrieves details of every active object in the scene, including UI elements, interactive components, and persistent objects that allows inspection of object properties for better test validation.
In this lesson, we will explore the WaitForObject() method, an essential API in game automation testing that helps manage timing challenges by ensuring the test waits for specific objects to appear before proceeding. By the end of this session, you will understand how to use WaitForObject() to improve test reliability, ensuring tests progress only when elements are fully loaded.
In this lesson, we will explore the WaitForObjectWhichContains() method for locating objects dynamically in game automation testing. In this method instead of looking for an exact match, it waits for an object whose name or property contains a specified value, useful for dynamic or randomly generated objects where the full name is unknown.
In this tutorial, we will explore the WaitForObjectNotBePresent() method for verifying when an object is removed from the scene before proceeding. This is particularly useful in scenarios where transitions occur, such as - moving from a splash screen to the main menu, ensuring a loading spinner disappears before the next action and validating the removal of temporary elements.
By the end of this session, you will understand what an AltObject is and how it represents Unity game objects in the testing environment. You will also learn how to retrieve and use the Name property of an AltObject in test automation, enabling you to interact with game elements efficiently.
By the end of this session, you will understand the X and Y axis coordinate properties of an AltObject and how they are used in game automation testing to identify the position of the 2D object in the environment.
By the end of this session, you will learn about the Enabled property of an AltObject and how to use it in test automation. You will also see how to retrieve and print the Enabled state of an object, such as the Start Button, in a test script.
By the end of this session, you will understand the GetWorldPosition() method of an AltObject and how it differs from GetScreenPosition(). Understanding GetWorldPosition() is essential for 3D interactions, spatial validations, and precise object placement checks in game automation testing.
By the end of this session, you will understand the GetText() method of an AltObject and its importance in UI validation during game automation testing. The GetText() method retrieves the text content of a Unity game object, making it particularly useful for buttons, labels, text fields, and other UI elements. Mastering this method will help you perform effective text-based validations in your automated tests.
By the end of this session, you will understand the SetText() method of an AltObject and how it is used to dynamically update text in Unity game automation.
By the end of this session, you will understand the GetScreenPosition() method of an AltObject and how it helps retrieve an object's X and Y coordinates on the screen. This method returns an AltVector2, representing the object's position in 2D space, which is useful for verifying UI element placement, checking object visibility etc.
By the end of this session, you will understand the GetWorldPosition() method of an AltObject and how it retrieves its exact location in 3D world space using X, Y, and Z coordinates. This method is particularly useful for 3D interactions, spatial validations, and ensuring accurate object placement within the Unity game environment.
In this lecture, we will explore an advanced feature of AltTester® called CallComponentMethod() and understand how it enables us to interact with Unity components programmatically during test automation. We will begin by discussing what a Component is in Unity, followed by understanding Component Methods and their role in game objects. We will then explore why CallComponentMethod() is important in automation testing.
In this session, we will learn about the GetComponentProperty() method in AltTester® and how it allows us to retrieve properties of a component attached to a Unity object. We will explore why GetComponentProperty() is important in automation testing and how it helps in validating UI elements, retrieving runtime values, and ensuring correct component properties. Finally, we will see a practical example by fetching the fontSize property of a Text component on the StartButton, demonstrating how to use this method effectively in test automation.
In this session, we will explore the SetComponentProperty() method in AltTester® and understand how to change the value of a component’s property dynamically during runtime.
In this session, we will introduce the UpdateObject() method in AltTester® and explore how it helps refresh an AltObject to retrieve its latest state from the game.
In this session, we will begin endless runner gameplay automation using AltTester®. First, we will set up the gameplay class file to structure our automation. Then, we will identify key component methods required for gameplay automation. We will focus on enabling the invincible method, automating the click button action, and verifying whether the player starts running and the invincible method is activated. By the end of this session, you will have a functional gameplay automation setup to test core mechanics efficiently.
In this session, we will explore the game environment and list all obstacles present in the gameplay using AltTester® Desktop. This step is crucial for preparing automated obstacle detection and avoidance in future sessions. By the end of this session, you will have a comprehensive list of obstacles, helping to enhance game automation testing.
In this session, we will use the CallComponentMethod() in AltTester® to trigger player actions such as jump and slide. We will automate these actions through a test script and verify whether the corresponding methods execute correctly in the game. By the end of this session, you will have a working automation script that interacts with the player's movement mechanics, ensuring smooth and responsive gameplay automation.
In this session, we will use the CallComponentMethod() in AltTester® to trigger player actions such as Move Left and Move Right. We will automate these actions through a test script and verify whether the corresponding methods execute correctly in the game. By the end of this session, you will have a working automation script that interacts with the player's movement mechanics, ensuring smooth and responsive gameplay automation.
In this session, we will focus on writing gameplay automation by utilizing key character properties and fields in AltTester® Object. These properties will help us track the player's state and make automated decisions during gameplay. We will explore essential properties such as Character’s Current-Life, which determines if the player has lost a life, Character’s Current-Lane, which identifies the lane in which the character is running, and Character’s Current-Speed, which tracks speed variations over time. Understanding these properties will enable us to create more intelligent and responsive automation scripts for gameplay testing.
In this session, we will focus on writing code to detect and avoid initial obstacles in the game using AltTester®. We will analyze the positions of the player and obstacles to ensure smooth and efficient automation. The process begins by fetching and storing all available unique obstacles in a list. Once collected, we will sort and filter them, eliminating any obstacles that are unnecessary for automation testing.
In this session, we will focus on tracking dynamically appearing obstacles in the game using AltTester®. As the character moves forward, new obstacles continuously spawn, requiring us to maintain an updated list for efficient detection and avoidance. We will implement logic to identify and add newly generated obstacles to a separate list while also monitoring the existing list to ensure it doesn’t run out. This approach will help in creating a real-time adaptive obstacle detection system, making our gameplay automation more accurate and responsive.
In this lesson, we will implement a method to calculate the jump distance based on the player’s speed. Understanding this will help us determine the precise moment to trigger jump and slide actions, ensuring the player successfully avoids obstacles. Additionally, we will analyze the positions of the current, next, and next-to-next obstacles to strategize movement effectively. By the end of this lesson, you will be able to dynamically adjust jump and slide actions based on real-time gameplay conditions.
In this lesson, we will implement obstacle avoidance logic using jump and slide methods to navigate around obstacles like Rat, LowBarrier, and HighBarrier. Additionally, we will calculate the wrapped Z position of obstacles based on their current position. By the end of this session, you will have a robust obstacle avoidance mechanism that ensures smooth and precise navigation around these obstacles in the game.
In this session, we will extend our obstacle avoidance logic to handle Obstacle Dogs. To achieve this, we will first determine the player’s current lane, then check the obstacle’s world X position, and finally implement the necessary logic to avoid the Obstacle Dog. We will integrate this functionality below the existing conditions for avoiding Obstacle Rat, Low Barrier, and High Barrier. By the end of this lesson, you will have a fully functional system to detect and navigate past Obstacle Dogs efficiently.
In this session, we will implement the logic to handle the remaining single obstacles along the path, including Road Work Barrier, Bin, Cone, and Wheelie Bin. By the end of this session, you will have a clear understanding of how to detect and avoid these obstacles efficiently, ensuring smooth gameplay.
In this session, we will implement the logic to handle double obstacles along the path. Double obstacles are those that share the same Z position value. We will start by determining the player's current lane—left, middle, or right—before applying the appropriate obstacle avoidance strategy. This will involve structuring conditional checks within the else-if block to assess the player's position and execute the necessary movements.
Additionally, we will execute our entire obstacle avoidance code to verify that the player character successfully avoids all obstacles as per the implemented logic. By the end of this session, you will have a fully functional obstacle avoidance system that handles both single and double obstacles effectively.
Congratulations on reaching the conclusion of the Endless Runner Project!
In this session, we will explore advanced features of AltTester, focusing on parallel test execution. Parallel execution is a Pro version feature that allows running tests on two devices simultaneously. By the end of this session, you will have a clear understanding of how to configure and execute parallel test runs, optimizing test efficiency for game automation.
In this session, we will learn how to generate an Allure report using AltTester and NUnit. By the end of this session, you will have a hands-on understanding of how to generate, view, and analyze Allure reports to improve test visibility.
In this session, we will explore the screenshot feature in AltTester, which allows us to capture and save screenshots during test execution. This feature is crucial for test verification, and visual validation, helping us pinpoint the exact screen where an issue has occurred.
In this lecture, you'll learn how to execute automated tests on cloud-based real mobile devices using the BrowserStack platform.
In this session, we will understand what assets are in Unity.
In this session, we will understand what models are in Unity.
In this session, we will understand what materials are in Unity.
In this session, we will understand what shaders are in Unity.
In this session, we will understand what textures are in Unity.
In this session, we will understand what fonts are in Unity.
In this session, we will understand what audio is in Unity.
In this session, we will understand what sprites are in Unity.
In this session, we will understand what prefabs are in Unity.
In this session, we will understand what packages are in Unity.
In this session, we will understand the difference between Game Objects and Components in Unity.
In this session, we will understand what the Transform component is in Unity.
In this session, we will understand what the Rigidbody component is in Unity.
In this session, we will understand what vectors are in Unity.
In this session, we will go through the complete installation process of Unity 3D, step by step, to set up the environment for game development and automation.
In this session, we will learn how to import the AltTester package into our project and set it up for testing.
In this session, we will learn how to set up the test environment in the Unity Editor.
In this session, we will run our very first automated test inside the Unity Editor and verify the setup.
In this session, we will explore game elements in the Unity Editor using AltTester Desktop, and also explore the Record and Playback feature with the Unity Editor.
By the end of this lecture, you will have a clear understanding of what a WebGL build is and how to create one using the Unity Editor.
In this session, you will gain a clear understanding of how to set up and run the WebGL build on your local machine.
In this session, you will learn how to upload a WebGL build to the Firebase cloud server, perform the necessary setup, and access the build in your browser. You will then connect the live build to AltTester® Desktop to explore the game objects.
In this session, we will learn how to run a live WebGL build on a mobile browser, and then connect it to AltTester® Desktop.
In this session, we will set up the project for a WebGL build, explore the required game objects, and write the necessary functions to start the match by playing the user’s service in tennis.
In this session, we will write the logic to detect the ball hit by the opponent player and play the shot when the ball gets closer.
Download Tennis files
Learn the AltTester® SDK automation tool for game testing.
Gain hands-on experience with AltTester®, a powerful tool for automating Unity game testing. Understand its features, installation process, and integration with your test scripts.
Convert manual test into efficient automation scripts.
Learn how to take existing manual test and transform them into robust, reusable automation scripts using C# and NUnit. Reduce repetitive testing efforts while improving accuracy and efficiency.
Design and develop a Unity game automation testing framework.
Build a scalable and reusable test automation framework tailored for Unity games. Learn best practices for structuring your test cases, handling game objects, and ensuring maintainability.
Implement game automation testing through a real-world project case study.
Apply your knowledge by working on a practical case study, simulating real-world testing scenarios. Learn how to automate different gameplay actions, validate UI elements, and handle dynamic game elements.
Understand object identification and interaction in automated tests.
Master techniques for identifying and interacting with game objects using AltTester® commands. Learn to handle various game elements, such as buttons, menus, characters, and gameplay automation.
Execute tests on multiple devices using parallel testing.
Set up and run tests on multiple devices in parallel to improve test efficiency. Learn how to configure AltTester® for parallel execution.
Generate detailed test reports for better analysis and debugging.
Learn how to create detailed test reports using tools like Allure Reports to track test execution, detect failures, and improve test coverage.
Automation Execution in Unity 3D Editor.
The course is updated to guide you how to execute tests directly within the Unity 3D Editor, enabling a more efficient and streamlined testing workflow for game developers and testers.
Automation Execution Outside Unity 3D Editor (Mobile & Browser)
The course is designed to guide you through executing automated tests outside the Unity 3D Editor — including on mobile devices and web browsers — offering a flexible and production-ready approach to game testing. This empowers testers and developers to validate real-world user interactions, hardware behavior, and platform-specific features across diverse environments.
Test Automation Execution of WebGL Build
We will learn how to generate an AltTester® instrumented build and test the WebGL build locally, live, and on both mobile and desktop browsers.
Test Execution on Cloud Devices using BrowserStack.
We have extend the course to cover test execution on cloud-based devices using platforms like BrowserStack, allowing scalability and cross-device testing.
Future Plans for the this Course
We are committed to continuously improving and expanding this course to provide even more value. Here’s what we plan to add in future updates:
C# Foundational Tutorials.
We will introduce beginner-friendly C# coding tutorials, specifically designed for absolute beginners and manual testers with no prior coding experience.
More Testing Projects for Different Game Genres.
We will continuously add new automation projects covering different game genres, helping learners gain hands-on experience with diverse testing scenarios.
Stay tuned for these exciting updates to enhance your game automation testing skills!