XenoGuard Documentation

How XenoGuard Works for Testing

In this section, we want to make a recap of what is described here in more detail and make it more testing-centered. We will go through the most important technical aspects of XenoGuard to help you in understanding what happens in the background of your automated tests, what ActionScripts are actually doing, and why.

Where XenoGuard Comes From

The versions 1.0. to 3.0 of XenoGuard were developed for test automation in the automotive industry. These versions were mainly tailored for testing infotainment devices and telecommunication systems. In a typical use case, XenoGuard would access an application installed on an external device or vehicle and operate it to emulate human behaviour. 

For instance, XenoGuard can interact with a vehicle's interface systems and electronic devices. That helps to check that all systems work correctly. The following scenarios are possible:

  • Head units functional tests. A head unit is the cockpit in the car from where you can control navigation, music player, radio, climate control, etc. XenoGuard would start it up and try different functionalities.
  • Stress or endurance tests. XenoGuard would operate a single device or entire head unit for a long period of time, longer than it would have been the case in the real world. 
  • Regression tests. Those are necessary as a final check before each new release. 
  • Trouble-Code-Tests. XenoGuard imitates error conditions, such as cable attenuations and short circuits, to help engineers in checking the vehicle's or device's reaction to such conditions.

Gradually, we recognized that XenoGuard may find an application in other industries. We want to provide everyone with a tool that can perform automated tests and will help developers, engineers, and users to focus on more sophisticated tasks and become more productive. 

Windows Desktop Application Testing

XenoGuard can access any Windows application through a .NET interface, command line, sockets, or certain libraries and make it perform any operations. 

With XenoGuard, you can test any applications that run on Windows OS. It does not matter if an application comes natively with a Windows PC or Office 365 installation, or was offered in the Windows App Store, or was even custom developed using one of the application development frameworks.

Native Windows Applications

XenoGuard can execute a sequence of tasks in a native Windows application. This may be necessary if you want to build workflow automation in XenoGuard and need to test how it works. 

Custom Windows Applications

More importantly, you can use XenoGuard to test custom Windows applications that you developed by yourself. 

The popular frameworks are:

Automated Graphical User Interface Testing

XenoGuard emulates human user behaviour by clicking on the buttons, links, and other elements inside an application. It imitates a mouse and keyboard and uses an image recognition algorithm to locate graphical elements. 

It helps you to find out which buttons, links, or widgets do not work, perform a wrong function, or are incorrectly located in the GUI. 

XenoGuard can fill in forms (input masks) integrated into your application. Combined with data-driven testing, it helps you to test validation rules and other background processes.  

Automated Command Line Testing

XenoGuard can operate applications through a command line interface. In this case, it also acts like a human user and types in different commands. In highly technical environments, many applications and systems do not have sophisticated user interfaces, such as Docker or package managers like pip, conda, and Homebrew.   

Besides, you can test different Windows settings or run a Docker container from a command line, thus, extending your tests' scope beyond Windows applications.

Automated REST API Testing

APIs must be tested before they are made available for users. You should ensure that they react properly to the requests sent to them and that they return complete and error-free data. For instance, that an API response returns all fields that it is suggested to return. 

But on top of it, the performance of an API must be put under scrutiny. The performance may depend on how you coded it but also vary due to external factors, such as network load. Some users may send API calls using asynchronous threading with multiple workers and bring your API down with too many simultaneous requests. 

With XenoGuard, you can send API requests, vary their parameters and frequency, and check the response results against a given specification. You can combine it with data-driven testing to cover all testing scenarios.


In the next and last section, we would like to illustrate the technical capacities and advantages of XenoGuard by providing a few examples of its practical implementation.