QA Partner Extension Kit

Lucent Technologies


This paper describes my efforts getting QA Partner (QAP) automated test scripts to recognize Rogue Wave zApp custom objects using the QA Partner Extension Kit. The applications under test were developed using the client-server model and written in C++ for Windows 95.


QA Partner: A Brief History

QA Partner, a graphical user interface (GUI) test tool, was developed by Laurence Kepple, founder, president and chief executive of Segue Software, Inc., Newton Centre, Massachusetts. Keeple was also the developer of the Softbridge, Inc. ATF automated test tool. QA Partner (versions 1.0 thru 4.0) was later renamed SilkTest® in 1996 and included Web testing support. Segue Software was acquired by Borland in 2006. Then, in 2009, Borland was acquired by Micro Focus where SilkTest sales and support now reside. SilkTest 2010 introduced Microsoft Visual Basic as the scripting language although SilkTest Classic 4Test Outline Editor Mode is still supported.

Extension Kit

The Extension Kit is an optional component of the QualityWorks family of automated test tools. The Extension Kit allows system testers to code new 4Test Agent functions in C. This paper describes the new Agent functions that were developed to allow QA Partner test scripts access to custom objects implemented in Actiview applications using the Rogue Wave zApp Interface Pack Class Library. In particular, the Actiview extension functions provide access to the zTable and zStatusLine objects. The zTable object appears on the screen as a grid or spreadsheet. The zStatusLine is typically displayed as a partitioned display-only text area at the bottom of a window, which is used to display messages to the user.

Solution Approach

Simply stated, the zTable and zStatusLine objects are basically invisible to QA Partner. Therefore, test scripts are not able to invoke any methods on these objects (with the only possible exception of Click using bitmap coordinates). On the other hand, all member functions can be freely invoked on these objects internally within the application under test. My approach was to code an implant or extension, which then becomes a part of the production application code. As a result, the implant now has equal access to these custom objects on par with the application code. This implant or extension has been implemented as standard C functions. The Segue documentation refers to this type of extension as an internal extension.

Implementation Process

Since the QA Partner Extension Kit functions would be built along with the application under test, it was necessary to develop a way to test these extension functions prior to handing them over to development for inclusion in the general application builds. So, I modified a Rogue Wave tutorial application that contained the custom objects necessary to test the extension. By using this test application, I was able to drive the extension on an application built without having to install the entire Actiview build environment. In addition to the code for the extension functions themselves, extension code must also be included in the application’s main window source (.cpp) file. This code registers the extension functions with the QA Partner 4Test Agent. The Assist.dll file enables this communication between the Agent and the extension functions. During application startup, the extension calls the QAP_Initialize function, which verifies the availability of the Agent and returns a Boolean value. If the Agent is not running, then the extension code that registers the extension functions will not execute.

The production version of the QAP Extension required a modification from the test version. The test version utilized two global variables for pointers to the zTable and zStatusLine objects. For the production version, development provided a method call that the QAPFUNCs could invoke to acquire the pointer values.

QAP C Functions

The following QA Partner C functions were developed so that the 4Test scripts could access the zTable and zStatusLine objects:

  • zTab_ReturnColLabels
  • zTab_SelectTableRow
  • zTab_ReturnTableRow
  • zTab_ReturnStatusLine

 Test Application Source Code

QA Partner Extension code is highlighted in blocks within the following application code.

4Test Source Code





Leave a Reply

Your email address will not be published. Required fields are marked *