First if you haven't already make sure you download the free trial to follow along 1) To follow along 👉 https://gamedriver.io/license/
Test automation entails simple, repetitive steps performed by a computer instead of a human, using a test framework such as Selenium, Appium, Cucumber, or GameDriver. These frameworks come in different variants, either coded or low-code. It's important to note that this isn't application development, but rather a set of simple steps performed in lieu of a human. Essentially, any task I consistently repeat can be more efficiently and consistently performed by a computer.
There are various types of automated tests. Unit testing deals with discrete pieces of code, ensuring that methods return the correct values when used properly and throw the right exceptions otherwise. Integration testing is typically performed when parts of the system are functioning as expected, even if the user interface or graphical details aren't complete. The intention here is to verify that different components work together as expected. Play Testing is when we put all the pieces together and observe the system's function in a live environment. This is typically performed by people, particularly in gaming. However, a lot of repetitive play testing can be automated, saving time and allowing manual testers to focus on more advanced tasks. More on that later.
GameDriver adds value particularly in the realms of Integration and Play Testing. By automating repetitive tasks typically carried out by manual testers, we can enhance overall test coverage, speed up feedback to the development team, and accelerate the entire development process by avoiding issues like bad builds, slow test execution, and repetitive tests across multiple platform variations.
The different types of test automation and how they work together can be visualized as a pyramid. Unit testing forms the base, constituting the most frequent and quickest tests. Next up are the more complicated integration tests with more dependencies and more complex scenarios that take longer to execute. At the top, we have UI testing, the most intricate tests typically performed by individuals. These tests are often complex to put together and may require weeks of preparation in a live environment. We aim to limit the time spent on UI testing by performing more integration and unit tests, thereby preserving the structure of the pyramid.
There are numerous benefits to automation in QA. It enables faster test execution and ensures consistency as automated tests are performed identically each time. Properly written tests will be highly resilient to application changes. We can ensure multi-platform support, executing a single test across multiple platforms in the exact same way, ensuring functionality preservation across targeted platforms. Automation helps control crunch time; it's proven that catching defects early in the application lifecycle reduces the cost of resolving those defects. Defects found during the requirements phase cost nothing to fix; we simply change the requirement. Defects found during unit testing only require a developer to adjust the functionality before checking in the code. If a defect is found during integration testing, the tester or automation engineer must quickly relay feedback to the developer for rapid iteration before code commitment. Lastly, defects discovered in production impose a far greater cost to both the business and the individual than if found at any earlier stage.
We can improve concurrency with automation. To my knowledge, the fastest manual tester can only run one test at a time. With automation, we can run multiple tests in parallel across numerous machines. Our only limitations are time and budget. Automation provides measurable insights consistently and repeatedly, capturing data each time regardless of the situation.
Moreover, test automation enables a true DevOps pipeline. For consistent, rapid iteration of new functionalities in Agile DevOps development, automation must be in place to provide timely, repeatable feedback to developers. The video game industry stands apart from the broader software industry in terms of its lack of standardized QA and relatively low usage of automated testing practices. However, at GameDriver, we aim to change that.