Helix ALM Integration

Helix ALM, formerly known as TestTrack TCM, is a test management tool from Perforce.

Squish tests can be executed from within Helix ALM by a script agent called squishTcmAgent. It processes a .squishtcm description file that contains all the information necessary to run a Squish test.

Obtaining the Helix ALM Plugin

The plugin is supplied as a .zip file.

Note: This add-on must be bought separately. Contact sales@froglogic.com for details.

Installing the Helix ALM Plugin

The zip file contains the plugin compiled for Linux and for Windows. For Linux, use the file which ends with .tar.gz. For Windows, use the file which ends with .zip.

To install the plugin, extract the respective .tar.gz or .zip archive and copy the squishTcmAgent executable and the defaultTestCaseResolver executable into the Helix ALM's script agent directory. The default directory is ScriptAgents and in the Helix ALM installation directory.

Configuring the Helix ALM Plugin

To run Squish tests within Helix ALM, associate the .squishtcm file with the Squish script agent. In Helix ALM, select Tools > LocalOptions to open the Local Options dialog.


In the Local Options dialog, click the View File item in the list shown on the left to open the View File Settings dialog. Use this dialog to associate the .squishtcm file extension with the squishTcmAgent executable.


The path to the executable may be different from the one shown in the screenshot, so adapt the path as necessary depending on where you installed Helix ALM.

The .squishtcm Description File

The .squishtcm file describes the Squish test that should be executed. The file is formatted as plain text with one key/value item per line. Two key/value pairs must be specified:

testCaseName of the test casetestCase = "tst_adding"
configFileName of the used configuration fileconfigFile = "master_win32"

For maximum flexibility, the test case folder which is needed to run a Squish test is provided by a program called testCaseResolver. The default testCaseResolver which is shipped with the plugin (defaultTestCaseResolver) echoes the value assigned to the testCase key of the .squishtcm file. Thus, to use the default testCaseResolver, the absolute path to the test case folder has to be assigned to the testCase key.

Alternatively, write a custom testCaseResolver program. When executed, the program is passed the value which has been used for the testCase key of the .squishtcm file, as its sole command line argument. The plugin expects testCaseResolver to respond by outputting the absolute test case path to stdout. The path to testCaseResolver must be specified in the configuration file.

The plugin uses the environment variable SQUISH_TCM_CONFIGDIR to search for the configuration file which is named inside the .squishtcm file for the configFile key.

The Configuration File

The configuration file describes the general settings which are used to execute a Squish test case.

squishDirPath to the Squish root directoryyessquishDir = "C:\\Squish"
testCaseResolverPathAbsolute path to the testCaseResolver responsible for providing the absolute path of the test case folder to the plugin on stdoutyestestCaseResolverPath = "C:\\HelixALM\\ScriptAgents\\defaultTestCaseResolver.exe"


testCaseResolverPath = "C:\\Python27\\python.exe"

testCaseResolverScriptAbsolute path to a script which is executed by the testCaseResolver which is specified by the testCaseResolverPath key. This key is only required if testCaseResolver requires a script as argument. For example, if Python is specified at testCaseResolverPath, the Python script to be executed must be specified by using this key.yes / notestCaseResolverScript = "C:\\myTestCaseResolver.py"
wrapperThe wrapper Squish needs to useyeswrapper = "Qt"
autThis can be omitted if the test case uses the ApplicationContext startApplication(autName) function to start the AUT; otherwise the AUT must be specifiednoaut = "addressbook"
cwdThis can be omitted if the default behavior of using the current working directory is acceptable. Otherwise, see the --cwd option in Executing a Test Case (Advanced) for alternativesnocwd = "@server"
hostThis can be omitted if the squishserver should be started locally; otherwise set this to the IP Address or host name of the remote PC where squishserver is runningnohost = ""
portThis can be omitted if the default behavior of using any random free port is acceptable; otherwise specify a portnoport = "4711"
objectMapPathThe absolute path to the object map which is used by the test casenoobjectMapPath = "C:\\Squish\\examples\\qt4\\suite_addressbook_py\\objects.map"
preExecutableThe absolute path to an executable which will be executed at the beginning of a test case. The current working directory where the result and log files are stored is passed as argument.nopreExecutable = "C:\\preTask.exe"
postExecutableThe absolute path to an executable which will be executed at the end of a test case. The current working directory where the result and log files are stored is passed as first argument and the test run ID is passed as second argument.nopostExecutable = "C:\\postTask.bat"
pythonExecutableAbsolute path to a Python interpreter. This is only required if the Squish package specified by the squishDir key is not shipped with a Python interpreter. Python 2.4, 2.5, 2.6 or 2.7 is required.yes / nopythonExecutable = "C:\\Python27\\python.exe"

As the table shows, the paths to the Squish directory and to the testCaseResolver program are required, as is the wrapper to use, while the other key/value pairs are—or can be—optional.

Note that if Windows-style paths are used each backslash must be escaped and the paths quoted; however, on all platforms, forward slashes can be used instead and these do not require escaping. (Paths that contain spaces must be quoted though.)

Example: How to Run a Squish Test Case

This example shows how to setup the configuration and .squishtcm files to run a Squish test in Helix ALM. It uses the test case tst_adding from the test suite suite_py of a Squish for Qt package. Squish is assumed to be installed at C:\Squish, the test suite is located inside the Squish folder at C:\Squish\examples\qt4\addressbook\suite_py.

We decide to not use the default testCaseResolver as we don't want to specify the absolute path to the test case folder inside the .squishtcm file. If we would use the absolute path, every time the location of the test case folder changes we would have to touch the .squishtcm file attached to the Helix ALM test. This can happen for example if the test should be executed on another host.

For this example, we'll create a Python script at C:\myTestCaseResolver.py and use it as testCaseResolver. The Python script is quite simple, it just prepends the absolute path to the test suite to the test case name and prints this path to stdout:

import sys
testCaseName = sys.argv[1]
print "C:\\Squish\\examples\\qt4\\addressbook\\suite_py\\" + testCaseName

The next step is to create the configuration file. The configuration file can have any file extension or none. For the example, we'll create the configuration file at C:\master_win32 with no file extension:


To specify where Squish is installed, we set the value of the squishDir key. As we want to use a Python script as testCaseResolver, we specify the script by setting the value of the testCaseResolverScript key. Further, as the plugin needs to know how to run a Python script, we need to specify a Python interpreter too by setting the value of the testCaseResolverPath key. Fortunately, the default Squish packages for Windows are shipped with a Python interpreter inside the Squish subfolder C:\Squish\python so we can use that one. Finally, we need to specify the wrapper and the absolute path to the object map as the test case tst_adding uses symbolic names which are stored inside the object map.

After the configuration file has been created, we need the .squishtcm file which will be attached to the Helix ALM test later. For the example, we'll create the .squishtcm file at C:\test_a.squishtcm. The content consists of two lines:


The first line specifies the test case we want to execute. As we're using our Python script as testCaseResolver, which prepends the absolute path to the test suite, we can just enter the name of the test case. The second line specifies the configuration file we want to use. Here we have to enter only the file name of the configuration file, not its absolute path. The path the plugin will search for configuration files will be configured by using the environment variable SQUISH_TCM_CONFIGDIR. The reason for this is similiar to why we're not putting an absolute path into the .squishtcm file. If the test case should be executed on a different host that installed Squish e.g. at S:\tools\squish, we only have to create a separate configuration file for this host and adapt the Squish installation path of the squishDir key there. Again, the .squishtcm file which resides inside Helix ALM does not have to be touched for this.

Before starting Helix ALM, we need to set up the environment variable SQUISH_TCM_CONFIGDIR to tell the plugin where to search for configuration files. To do this we can either set up the environment variable inside Windows or create a batch file which does this for us. Let's create a batch file at C:\helixalm.bat:

"C:\Program Files\Perforce\HelixALM\TestTrack Client.exe"

which assumes that Helix ALM is installed at C:\Program Files\Perforce\HelixALM.

After the custom testCaseResolver, configuration, and .squishtcm files have been created and Helix ALM is started by using the batch file C:\helixalm.bat, create a test case in Helix ALM and switch to the test case's Files tab:


The Edit Helix ALM Test Case view

Now click the Select Scripts button to choose the C:\test_a.squishtcm description file:


The Select Scripts dialog

Close the Select Scripts dialog by clicking the OK button, and apply the changes by clicking the Apply button. To run the Squish test, select the recently added script in the Files tab and click the Run Script button. This runs the test and opens the {Script File Status} dialog.


The Script File Status dialog

After the test has finished, the results file can be shown by clicking the Script File Status dialog's View Results button:


Squish Tests Results in Helix ALM

The results shown are only stored temporarily. As soon as the Script File Status dialog's OK button is clicked, the results are deleted. This happens because Helix ALM associates executed tests with test runs, which have to be generated for the test case.

The temporary results are written to the ScheduledScripts directory in the Helix ALM installation path. The directory contains the following files after running a Squish test:

test_a.squishtcmA copy of the Squish description file.
test_a.trjobAn interface file for synchronizing Helix ALM and the squishTcmAgent.
report.htmlThe test results in HTML format.
report.xmlThe test results in XML format.
squishTcmAgent.logThe squishTcmAgent program's log file.
server.logThe squishserver's log file.
runner.logThe squishrunner's log file.