They say there are things only a person can test... Testo begs to differ

System tests — what are they?

System tests are one of the most complex ways to test your software. System testing means putting software under the exact conditions this software will face when interacting with end users. System tests can help you check that your program is functioning correctly in any possible external factors and surroundings. Just because software works on your side doesn't automatically mean it'll work on the user's side.

Integration with the operating system

  • Works with different OS versions
  • Interaction with drivers and system components
  • Works with various access policies
  • Inter-software communication

  • Compatibility with antiviruses and firewalls
  • Software plugin testing
  • Testing complex software and service pipelines
  • Reliability testing

  • Backup and restore
  • Saving and restoring working state after power failure
  • Functioning with slow network connections
  • Various hardware and networks configurations

  • Testing with insufficient RAM conditions
  • Distributed software system communication
  • Network communications with intermediate middle-boxes
  • Testo Framework features

    Take a look at what kind of test scenarios you could automate with Testo. All the automation scripts are available on Github. You could download run them on your own computer.

    • Example 1
    • Example 2
    • Testing installation and removing a program

      For this example, we created a toy-app named MySuperApp and packed it inside an installer. We want to test that MySuperApp is installed and removed correctly. Additionally, we want to check that the installer successfully writes the necessary keys into the register. We automated all these checks with a Testo Lang script.

      Open this example on Github
    • Testing app integration with the operating system

      For this example, we created a toy-app named MySuperApp that lists all the users registered in the OS and, additionally, can add new users. We want to test that MySuperApp correctly interacts with the OS under various circumstances. We automated all these checks with a Testo Lang script.

      Open this example on Github

    Simple language with wide possibilities

    We created a special language named Testo Lang, which lets you write down test scripts in the most intuitive and convenient way.

    machine my_vm {
      ram: 1024Mb
      iso: "/opt/iso/ubuntu.iso"

    Create virtual machines in a couple of lines

    You can specify attributes such as disk size, number of CPU cores, and many more. Testo will create the virtual machine when running the first test mentioning this machine and will constantly watch for its state relevance.

    test my_first_test {
      my_vm {
        mouse click "Install Ubuntu"
        wait "Welcome"
        press Enter

    Write down your test scripts with simple actions

    A test script consists of your expectations (what you expect to see on the virtual machine screen) and your reactions (what you want to do when the screen event has happened). You could use a wide arsenal of actions: from keyboard control to copying files inside the guest system.

    test base_test {
    test derived_test: base_test {

    Build your tests into a hierarchy

    Create complex tests based on simple ones. When running a child test, Testo automatically brings the virtual test bench into the state it needs to be in order to run the derived test.

    If a test can be run by a human, it can be run by Testo

    Testo allows you to mimic human behavior. Writing scripts down is like documenting the actions of a real person sitting in front of a computer

    • Keyboard
    • Mouse
    • Plug-n-Play
    • Keyboard control

      The Testo Framework gives you great possibilities to control the virtual keyboard: you can automate press-and-holds of any key and key combination. If you need to type a text, you can call the type action, which will press all the necessary keys for you.

      press LeftMeta+R
      type "notepad"
      press Enter
      type "Hello world!"
      press LeftAlt+F4
      press Right
      press Enter
    • Mouse cursor control

      The Testo Framework provides you with actions to control the mouse cursor. You can place the cursor either with coordinates or with an object on the screen. You can also automate actions such as mouse button clicks, holds and others

      mouse rclick "This folder is empty"
      mouse move "New"
      mouse click "Folder".from_top(0)
      mouse click 400 300
      mouse move "New folder"
      mouse hold lbtn
      mouse move 400 300
      mouse move "Desktop"
      mouse release
    • Virtual flash drives and DVD-drive control

      You can easily move your files between virtual machines using virtual flash drives. The Testo Framework automatically creates and optionally writes files to the flash drives before the test run begins. At the end of the test snapshots are created for all the virtual flash drives.

      plug flash my_flash
      unplug flash my_flash
      plug dvd "some_file.iso"
      unplug dvd "some_file.iso"

    We use Artificial Intelligence

    We use Neural Networks to detect a virtual machine screen's contents. A screenshot is all that is needed.

    Maintaining true black-box method

    You don't need to install any additional agents inside virtual machines

    No need for Internet connection

    Neural networks work locally on your machine. You don't need to be connected to the Internet to make them work.

    GPU acceleration support

    You may accelerate the neural networks searching algorithm with a GPU. Your tests will run much faster.

    One-button launch

    Forget about manual set up of virtual test benches — just press one button, sit back and relax, and watch Testo deploy all the required infrastructure for you.

    user$ sudo testo run ~/testo/hello_world.testo
    [ 0%] Preparing the environment for test my_first_test
    [ 0%] Creating virtual machine my_ubuntu
    [ 0%] Taking snapshot initial for virtual machine my_ubuntu
    [ 0%] Running test my_first_test
    [ 0%] Starting virtual machine my_ubuntu
    [ 0%] Taking snapshot my_first_test for virtual machine my_ubuntu
    [100%] Test my_first_test PASSED in 0h:0m:1s
    UP-TO-DATE: 0
    FAILED: 0

    Deploying from scratch

    You don't need to create or set up any virtual machines. The Testo Framework will do it for you.

    Keeping track of a virtual test bench's state

    You could break and modify the bench as you like. When running tests, Testo will restore the required bench state.


    .testo script files contain only text, so they are super-convenient to store in your VCS. Your test scripts and will always match your software version.

    What's next?


    Download and install Testo

    The Testo Framework is available for Windows and Linux-based OSs.


    Read the documentation

    You will find instructions on getting started instructions here. We've also prepared a set of tutorials for your quick and convenient learning of Testo's main features.


    Ask us a question

    Got a problem? We will help solve it.