SDL Visual Test
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Visual and Interactive Test Automation for SDL 2.0

License

Check the file COPYING.txt for licensing information.

Introduction

The goal of this GSoC project is to automate the testing of testsprite2. testsprite2 takes 26 parameters which have thousands of valid combinations and is used to validate SDL's window, mouse and rendering behaviour. By having a test harness that runs testsprite2 with various command line argument strings and validates the output for each run, we can make testing an easier task for maintainers, contributors and testers. The test harness can be used by a continuous integration system (like buildbot or jenkins) to validate SDL after checkins.

SDL Homepage: http://libsdl.org/

Building

Building on Linux/Cygwin

./autogen.sh; ./configure; make;

Building on Windows

Use the Visual Studio solution under SDL/VisualC/visualtest.

Documentation

Documentation is available via Doxygen. To build the documentation, cd to the SDL/visualtest/docs directory and run doxygen. A good starting point for exploring the documentation is SDL/visualtest/docs/html/index.html

Usage

To see all the options supported by the test harness, just run testharness with no arguments.

At the moment the following options are supported:

Paths can be relative or absolute.

Alternatively, the options can be passed as a config file for convenience:

testharness --config testsprite2_sample.config

For a sample, take a look at the *.config files in this repository.

We can also pass a config file and override certain options as necessary: testharness --config testsprite2_sample.config --num-variations 10

Note: You may find it convenient to copy the SUT executable along with any resources to the test harness directory. Also note that testsprite2 and its resources (icon.bmp) are automatically copied when using the Visual Studio solution.

Usage examples:

Passing a custom arguments string: testharness --sutapp testsprite2 --sutargs "\-\-cyclecolor \-\-blend mod \-\-iterations 2" --action-config xyz.actions

Using the random variator: testharness --sutapp testsprite2 --variator random --num-variations 5 --parameter-config xyz.parameters --action-config xyz.actions

Config Files

Config files are an alternate way to pass parameters to the test harness. We describe the paramters in a config file and pass that to the test harness using the --config option. The config file consists of lines of the form "x=y" where x is an option and y is it's value. For boolean options, we simply give the name of the option to indicate that it is to be passed to the testharness.

The hash '#' character can be used to start a comment from that point to the end of the line.

The SUT Parameters File

To generate variations we need to describe the parameters the will be passed to the SUT. This description is given in a parameters file. Each line of the parameters file (except the blank lines) represents one command line option with five comma separated fields: name, type, values, required, categories

Just like with config files, hash characters can be used to start comments.

Additional Notes

Variators

Variators are the mechanism by which we generate strings of command line arguments to test the SUT with. A variator is quite simply an iterator that iterates through different variations of command line options. There are two variators supported at the moment:

As an example, let's try a simple .parameters file:
--blend, enum, [add mod], false, []
--fullscreen, boolean, [], false, []

The exhaustive variator would generate the following four variations:
--blend add
--blend mod
--blend add --fullscreen
--blend mod --fullscreen

The random variator would simply generate a random variation like the following:
--blend mod

The Actions File

Once the SUT process has been launched, automated testing happens using a mechanism called actions. A list of actions is read from a file and each action is performed on the SUT process sequentially. Each line in the actions file describes an action. The format for an action is hh:mm:ss ACTION_NAME additional parameters. There are five actions supported at the moment:

Just like with config files, hash characters can be used to start comments.

Continuous Integration (CI)

One of the goals of the project was to create a test harness that integrates with CI systems to provide automated visual and interactive testing to SDL.

At the moment the test harness can be run in two modes that are useful for CI:

Look at the launch_harness.sh/launch_harness.cmd for an example scripts that run the test harness for all variations with all parameters and report an error on a crash. The script uses the testsprite2_crashtest config, so remember to copy those files over to the test harness executable directory along with the script.

TODOs

Known Issues

More Information

Author Contact Info:
Apoorv Upreti <apoor.nosp@m.vupr.nosp@m.eti@g.nosp@m.mail.nosp@m..com>

Other useful links: