Current version - 3.0.0

Testo Interpreter

Testo NN Server

Testo Guest Additions

The interpreter executes test scripts written in Testo Lang. On the one hand, it interacts with the hypervisor in order to create and manage virtual machines. On the other hand, it interacts with Testo NN Server, in order to understand what is happening on the screen of virtual machines.

The server allows you to find certain objects on the virtual machine screen: text, pictures, icons, etc. The server can be used both in conjunction with Testo interpreter, and as an independent component. For the best performance, you will need NVIDIA GTX 1050 or higher graphics card and Nvidia drivers.

Guest Additions unlock new high-level actions in test scripts allowing you to execute bash, cmd and python-scripts inside guest systems. Additionally with guest additions you can easily copy files between the host and virtual machines.

Windows (.msi)

Windows 10

Linux (.deb)

Debian 9+, Ubuntu 18.04+

Linux (.rpm)

CentOS 8.0+

Windows (.msi)

Windows 10

Linux (.deb)

Debian 9+, Ubuntu 18.04+

Linux (.rpm)

CentOS 8.0+

Hyper-V (.iso)

Debian 8+, Ubuntu 14.04+, CentOS 7.0+, Windows 7+

QEMU (.iso)

Debian 8+, Ubuntu 14.04+, CentOS 7.0+, Windows 7+

Release Notes

Version 3.0.0


Testo Framework brand new architecture

There is a new component in Testo Framework: a standalone service called testo-nn-server for processing screenshots and searching text and images on them. Thanks to that innovation, Testo Framework is now much more flexible:

  1. Now you can separate the screenshots processing logic and place it on a different machine. You can build up a more suitable for screenshots processing machine (for example, with a powerful GPU) and a more hypervisor-suitable machine (more RAM and disk space) and them run Testo Framework in the distributed fashion.
  2. One testo-nn-server can manage several machines (instances) working with virtual machines.
  3. You can access testo-nn-server even outside of Testo Framework. You can create your own client application and gain information about objects on screenshots.

See more info here and here.

Please keep in mind that after upgrading Testo to the version 3.0.0 you will have to adjust all JS selectors in your wait, check and mouse click/move actions. Now all JS-selctors must end with a return statement.

Type Autoswitch

Now it's possible to type text with multi-layout letters in type action. See here for more info.


Version 2.5.2



Fixed several regression bugs that appeared in the 2.5.0 release.


Version 2.5.0


Screenshot action

This action allow you to make screenshots from virtual machines' screens on demand

Bridge NICs mode

Now you can configure NICs in your virtual machines into Bridge mode


New way to transfer files between the Host and virtual machines

Text and img detection quality improved

The accuracy of detecting small icons was improved

New format of --report_folder

Now you can run the testo interpreter multiple times with the same --report_folder parameter. Unfortunately, the new report catalog format is not compatible with the old one. --report_logs and --resport_screenshots parameters are deprecated now (--report_folder always has logs and screenshots).


Version 2.4.1


Added experimental support for the Windows 10 operating system and the Hyper-V hypervisor

At the moment, not all the functionality of the Testo Lang is supported for the Hyper-V hypervisor. For example, working with virtual flash drives is not yet available. However, many test scenarios already work quite successfully on the Hyper-V hypervisor. In future releases, we will try to minimize the difference in the implementation of functionality for Hyper-V and other hypervisors.


Version 2.4.0


Macros to generate tests and test benches

There is a new type of macros in Testo-lang: macros with declarations. These macros can encapsulate declarations of virtual entities and tests. See here for more information.

Parameterizing number of pressings in "press" actions

Now it's possible to parameterize the number of pressings in press actions. For more information see here

nocheck optional specifier for "copyto" actions

Now it's possile to disable semantic checks of files existence on the Host in copyto actions. Thanks to this, you can now run tests with copyto actions even if there's no necessary files present of the Host at the moment of running tests. It is assumed that the files will appear on the Host by the time of the actual copying.


Version 2.3.0


Boot menu

You can invoke the boot menu in virtual machines now. You can do it with the combination of actions start; press Esc*30.

USB 3 controllers support

Now by default all the virtual machines support the USB 3.0 contoller. You can switch back to the USB 2 conrtoller with the new qemu_enable_usb3 virtual machine attribute with the false value.

New action (un)plug hostdev usb

With the new (un)plug hostdev usb action you can attach Host-plugged USB devices to virtual machines during tests. The integrity of the plugged USB devices are not guaranteed.


Version 2.2.9


Image detection and improved text recognition

Testo Framework now provides you with the opportunity to detect images on the screen (additionally to detecting text). Image detection can be used in the actions wait, click(lclick, rclick, dclick) and the check expressions.

See more here.

In addition, the accuracy of text recognition has been significantly improved, including large text, italics and bold text.

GeForce RTX 30 Series support

Added support for the latest series of video cards. Please note that the Testo GPU-version now requires a CUDA driver with CUDA version 11.1 support.

Improved performance of guest additions

The copyto and copyfrom actions now work much faster and are suitable for copying very large files. Guest additions use no more than 1MB of RAM for their work. When updating Testo to a new version, do not forget to update the ISO image with guest additions.

Macros with commands

Macros now can consist of commands (additionally to macros with actions). See the macro with commands usage example here.

video virtual machine attribute

Now you can change the settings for the emulated video device in virtual machines with the new video attribute.

Custom virtual machine loaders

Now it is possible to customize the virtual machine boot loader if, for some reason, you're not OK with the default boot loader.

Testo interpreter exit codes

Testo interpreter now has several exit codes. See here for more information.


Version 2.1.0


Flash Commands

A new commands type appeared in Testo-lang - flash commands. Now you can reference flash drives in tests as virtual entities (alongside with virtual machines). The following actions are available for flash drives:

  1. copyto (Copy files from the Host to the flash drive);
  2. copyfrom (Copy files from the flash drive to the Host);
  3. print, abort (Works just like for virtual machines);
  4. Macro calls, if and for clauses (Works just like for virtual machines).

Waiting for the erasing confirmation in testo clean

testo clean command now prints all the virtual entities that the Testo Framework is about to erase before the actual erasing. The actual erasing requires a confirmation. There is also --assume_yes command-line argument available for testo clean mode.

Arbitrary number of --test_spec and --exclude command-line arguments

Now you can specify --test_spec and --exclude command-line arguments multiple times. Test will be scheduled to run according the order in which these aruments apper in the command line.

Printing macro call stack

Now when an error occurs inside a macro call - you get the whole macro call stack printed out for you

Also, numerous bugs were fixed.

Download links

Version 2.0.1


Fixating Testo Lang syntax and backward compatibility guarantees.

Major update reflects fixating the main concepts and syntax constructs in Testo Lang. We have a clear vision for the Testo Lang future and we have a lot of new features planned for 2.x versions. However we are certain that new features won't lead to losing backward compatibility.

And thus we hereby give you our guarantees that starting with 2.0.1 Testo version all the already working tests will work in any future 2.x Testo version. In an unlikely event of backward compatibility-breaking syntax change, Testo will support the old syntax for some time. Additionally, a message will pop up warning of using deprecated syntax.

License file changes

A license file for a GPU-based Testo has a new format. Now the license is binded to a videocard card serial number. To get a license you need to generate a license-request with the testo request_license command.

Redesign of Virtual Flash Drives managing

The Virtual Flash Drive managing is completely re-done. Thus the tests using virtual flash drives reliability increased greatly.

Extended actions parameterization possibilities

Several actions now can take strings as some arguments (instead of the usual literals). In this strings param referencing is available (as in any other strings). Below you can see the complete list of arguments that now may be passed as strings:

  • timeout value in shutdown actions;
  • interval value in press actions;
  • interval value in type actions;
  • timeout value in sleep actions;
  • timeout and interval values in wait actions;
  • timeout and interval values in check expressions;
  • timeout value in mouse actions;
  • name values in plug/unplug flash/link/nic actions;
  • timeout value in exec actions;
  • timeout value in copyto/copyfrom actions.

Now you could, for example, place an plug flash action in a macro with the flash name passed as the macro argument.

Param resolving algorithm changes

When triyng to reference a param which wasn't declared an error will be generated (instead of returning an empty string).

To check whether a param is declared or not a new expression DEFINED is now available in if statements.

Other changes

  • Now RANGE could take integers as aguments (as well as strings).
  • A command cotain exactly one virtual machine, no more.
  • The Windows guest additions installer is now English.

Download links

Version 1.6.3



  • Fixed a bug related to importing manually setup virtual machines when running Testo on Debian OS.

Version 1.6.2


EULA changes

Since the 1.6.2 version CPU-based Testo is free for commercial and non-commercial use. CPU-based Testo now doesn't support the --license command line argument. GPU-based Testo has the same EULA terms as before, the --license command line argument is still required. You can check the whole EULA here.

Debian 9+ support

Now Testo Framework runs on Debian 9+ operating systems.


  • Fixed a bug leading to occasional crashes of the guest addition service in Windows guests.

Version 1.6.1



We are glad to inform you that Testo Framework has reached a new step in its lifecycle. Version 1.6.1 is the first Testo version which was build by the Testo itself. Yes, Testo is a tests automation framework but it doesn't mean you can't automate other tasks with it (for example, building a project or deploying a Virtual Test Bench for debugging puproses). Keep that in mind when doing your routines for a 100-th time.


  • fixed a bug with the unplug dvd action
  • fixed a bug when copying files from a Windows-guest to a Linux-host with a copyfrom action
  • fixed a bug when copying files from a Linux-host to a Windows-guest with a copyto action

Version 1.6.0


Importing manually setup virtual machines

Testo Framework now have the possibility to create virtual machines with a disk imported from an existing virtual machine. Now you can manually setup a virtual machine, configure it to your liking and then import the results into Testo Framework.

For more information see here and here

Multiple disks in a single virtual machine support

Now you can specify several disks inside one virtual machine configuration. See here for more information.

Holding down keyboard keys;

Added the possibility to hold down and release keybard keys. See here for more information.

Selective semantic checks improvement

Numerious bugs were fixed in the selective semantic checks algorithm (first introduced in version 1.5.1).

Version 1.5.1


GPU-accelerated screen contents detection

Testo Framework now have two distributives:

  1. With CPU-driven neural network processing
  2. With GPU-driven neural network processing

Right now can guarantee Testo support for videocards NVIDIA GTX 1050 and higher. Nvidia-provided driver is required.

Adjustment for the files checksumming threshold

With the new command line argument --content_cksum_maxsize you can change the maximum size of files which have checksum calculated based on the contents (not a Last Modify timestamp). Default value is 1 Megabyte.

See here and here for more information.

Selective semantic checks

Semantic analysis is now done only for the tests you want to run (according to the --test_spec and --exclude command line arguments).

Only the virtual machines and flash drives mentioned on these tests are undergone the semantic checks.

Basically it means you don't need to have actual artifacts (iso-images, copyto files and so on) for tests you don't want to run.

cpus attribute in virtual machine declarations

The cpus attribute now doesn't stand for number of virtual CPUs in the virtual machine, but rather for number of Cores. The CPU is always single now.

New keyabord keys

Now press support NumPad keys.

See here for more information.

Version 1.5.0


New possibilities for mouse actions

Added the possibility to place the mouse cursor with much more accuracy:

  • If there are several instances if an expected text on the sceen you can specify which one interests you;
  • You can navigate the cursor inside the text instance;
  • After the cursor positioning inside the text instance you can move it to the right left up or down as much as you need;
  • All the specifiers are also available as methods and functions inside JS-selectors.

See here for more information.

Adjustment for the default values of timeouts and intervals in actions

Added the posibility to change the default values for timeouts and intervals using special (reserved) params.

See here for more information.

interval specificator for type actions

Now you can adjust typing speed in type actions with changing the interval between the key pressings.

See here for more information.

JS-selectors changes

JS-selectors are re-developed and now have new classes and functions. Backward compatibility is lost.

See here for more information.

Guest additions

  • Guest additions now support Windows 8, Windows 8.1 and Windows 10 guests
  • Guest Additions now support x86 guest OSes

Version 1.4.0


Mouse actions

Now you can control the mouse cursor with the mouse actions:

  • Move the cursor to a certain text on the screen
  • Move the cursor to specified coordinates
  • Move the cursor with JS-selectors
  • Additionally you can click, right-click or double-click the mouse
  • Hold down and relesae left anr right mouse buttons

See here for more information.

Default arguments in macros

See here for details.

sleep as a standalone action

Instead of wait timeout <time_interval> you can perform a sleep with the sleep <time_interval> action

interval specificator in several actions

In actions wait and press as well as in expressons check you can specify an interval <time_interval> with which you can adjust screen checking frequency (wait, check) and keys pressing frequency (press).

New for syntax

New syntax gives more flexibility to the for loops. See here for more information

Newlines in one-line strings

It is possible now to add newlines in one-line strings. Newlines must be preceded with the escaped character like this: \n

copyto with cyrillic file names

Now you can use cyrillic file names in copyto and copyfrom actions