7. Test Targets

Test targets represent entities that QMTest uses to run tests. See Section 8, “Targets” for an overview of how QMTest uses targets.

7.1. Target Specification

Each target specification includes the following:

  1. The name of the target. This is a name identifying the target, such as the host name of the computer which will run the tests. Target names should be unique in a single target file.

  2. The target class. Similar to a test class, a target class is a Python class which implements a type of target. As with test classes, a target class is identified by its name, which includes the module name and the class name.

    For example, thread_target.ThreadTarget is the name of a target class, provided by QMTest, which runs tests in multiple threads on the local computer.

    QMTest includes several target class implementations. See Section 7.2, “Target Classes” for details.

  3. A target group name. The test implementor may choose the syntax of target group names in a test implementation. Target groups may be used to encode information about target attributes, such as architecture and operating system, and capabilities.

  4. Optionally, a target specification may include additional properties. Properties are named and have string values. Some target classes may use property information to control their configuration. For instance, a target class which executes tests on a remote computer would extract the network address of the remote computer from a target property.

7.2. Target Classes

QMTest includes these target class implementations.

7.2.1. SerialTarget

The serial_target.SerialTarget target class runs tests one after the other on the machine running QMTest. If you use a SerialTarget, you should not also use any other targets, including another SerialTarget at the same time.

7.2.2. ThreadTarget

The thread_target.ThreadTarget target class runs tests in one or more threads on the machine running QMTest. The ThreadTarget can be used to run multiple tests at once.

ThreadTarget uses the following properties:

  • The concurrency specifies the number of threads to use. Larger numbers of threads will allow QMTest to run more tests in parallel. You can experiment with this value to find the setting that allows QMTest to run tests most quickly.

7.2.3. ProcessTarget

The process_target.ProcessTarget target class run tests in one more processes on the machine running QMTest. This target class is not available on Windows. Like ThreadTarget, ProcessTarget can be used to run multiple tests simultaneously.

In general, you should use ThreadTarget instead of ProcessTarget to maximize QMTest performance. However, on machines that do not have threads, ProcessTarget provides an alternative way of running tests in parallel.

ProcessTarget uses the following properties:

  • The concurrency specifies the number of processes to use. Larger numbers of processes will allow QMTest to run more tests in parallel. You can experiment with this value to find the setting that allows QMTest to run tests most quickly.

  • QMTest uses the path given by the qmtest property to create additional QMTest instances. By default, the path /usr/local/bin/qmtest is used.

7.2.4. RemoteShellTarget

The rsh_target.RSHTarget target class runs tests on a remote computer via a remote shell invocation (rsh, ssh, or similar). This target uses a remote shell to invoke a program similar to the qmtest command on the remote computer. This remote program accepts test commands and responds with results from running these tests.

To use RSHTarget, the remote computer must have QMTest installed and must contain an identical copy of the test database. QMTest does not transfer entire tests over the remote shell connection; instead, it relies on the remote test database for loading tests.

In addition, the remote shell program must be configured to allow a remote login without additional intervention (such as typing a password). If you use rsh, you can use an .rhosts file to set this up. If you use ssh, you can use an SSH public key and the ssh-agent program for this. See the corresponding manual pages for details.

RSHTarget uses all of the properties given above for ProcessTarget. In addition, RSHTarget uses the following properties:

  • The remote_shell property specifies the path to the remote shell program. The default value is ssh. The remote shell program must accept the same command-line syntax as rsh.

  • The host property specifies the remote host name. If omitted, the target name is used.

  • The database_path property specifies the path to the test database on the remote computer. The test database must be identical to the local test database. If omitted, the local test database path is used.

  • The arguments property specifies additional command-line arguments for the remote shell program. The value of this property is split at space characters, and the arguments are added to the command line before the name of the remote host.

    For example, if you are using the ssh remote shell program and wish to log in to the remote computer using a different user account, specify the -l username option using the arguments property.