This problem impacted the installation of Installation Manager itself as well.

Upon inspecting the problem VM, we found that only this part of the second path in the error existed:

C:\ProgramData\IBM\Installation Manager\adapters\native

Further inspection of the VM determined that the rest of the path could not be created via Windows Explorer because Windows thought that path was locked.

While we were able to create the missing directories from cmd (started with Run as administrator), this didn't help because Installation Manager would delete the 0 directory if it existed and then fail to recreate it due to the lock problem.

At this time, we believe the lock problem is happening by design because the VM provider wants to block installations done manually without using the provider's installation packaging process.

So if you're ever doing an installation with Installation Manager and it consistently fails with an error similar to the above, see if you can manually create the missing folders from Windows Explorer -- if you can't, you will need to resolve that first.

Sometimes, you need to shell share an RTC client with RFT but because of the product versions involved, the underlying Eclipse versions are not compatible. For example, this will happen if you are using RFT 9.1 and need to shell share with an RTC 5.0.2 client.

When the Eclipse versions are incompatible, you won't be able to shell share an RTC client that you can install via Installation Manager with RFT. But you still can achieve shell sharing if you use the RTC client p2 install, which can be downloaded from jazz.net. Please note that the versions you integrate still need to be a supported combination (per the system requirements).

The example below installs the RTC 5.0.2 client into RFT 9.1 using the p2 installation method:

When examining the test log of a service test in RPT with SOA extension you may notice that in the extended properties for the request there's a property that says

"Data to send before security":

Similarly, in the test log of a service test you may notice there's a "Data received after security" extended attribute for the response:

What do these properties refer to?

Data to send before security

Think of this as "Data to send before security algorithms, if any, are applied"

Let's go back to the test for this request. For demonstration purposes I added a Timestamp security algorithm to the Request stack:

In the lower left hand corner we see a pane for Stack Contents

As you can see the Initial Message is the same as the value of the extended property Data to send before security

If I wanted to see what will actually being sent at run time then I would click on the Time Stamp section of the Stack Contents

Let's go back to the test log and find the actual message, security section and all. It's in the Properties but not Extended Properties and you can see it matches the message in the screen shot above in the Test Editor

Data received after security

This is the very similar to Data to send before security but is only seen on the response side.

This is to to configure the security or processing algorithms for incoming responses. Another way of describing this is if the response is encrypted, then the extended property Data received after security is the unencrypted message

Conclusion

Hopefully you've found this useful in understanding these two extended properties and what they actually mean..

When you record HTTP traffic in an IBM Rational Performance Tester test, you get traffic from outside the domain of your application. In version 9.1 of Rational Performance Tester, you can choose which domain you want to include in your test. In this version, you see Select domains before the Rational Performance Tester workbench generates the test that you just recorded.

How to select domains

Example

Record an HTTP test against http://ibm.com/ through Mozilla Firefox. When you finish recording, you'll see the Domains Selection window.

Aside from IBM, you also see Mozilla and Google. Apparently, network traffic is also coming from these domains. If you want to measure response times that you would normally experience when you access ibm.com, you choose all domains. If you want to measure traffic only from specific domains, you clear the corresponding check boxes.

Suppose that you want to know the responses only from the ibm.com server and not traffic from google.com and other non-IBM traffic. In that case, you clear all check boxes except the one that says ibm.

After you run the test, the test log shows only IBM traffic.In this case, IBM United Kingdom because my proxy server’s location is somewhere in England. The parts that you excluded don’t appear in the test log. Review the following two test logs, all domains selected and only ibm.com. The test opens http://ibm.com and closes that page.

Defaults, changes, and the way back

The default is to capture traffic from all domains. Previous versions of Rational Performance Tester capture traffic from all domains.

Possibly, you don’t know yet what domains to exclude from your test run. In that case, you keep the default setting. Afterward, you can disable the domains before you run the test.

Open the test from the Navigator.

Highlight the part of the test that you want to exclude. Then, click Disable.

Press Save.

You can include all domains as the default setting. Select Select all and remember my decision. The next time that you record and generate a test, the Domains Selection doesn’t appear. After you close the browser, you run directly into the test generation.

New versions of ClearQuest and ClearCase are available! The ClearCase and ClearQuest patches have been posted to Fix Central and are now available for download. The associated IM update sites are also available. The 8.0.0.21, 8.0.1.14, and 9.0.0.4 download pages are available below.

We recently had a customer who installed HP Quality Center 12.2 and configured it to work with Rational Integration Tester (RIT). HP QC didn't recognize the custom test type of "GH-Tester".

We couldn't reproduce this issue in our environment so one of our developers created a checklist as a way to verify that the RIT component was installed correctly.

In addition we recently tested with HP Quality Center 12.53 and our test team has a created a checklist specific to HP QC 12.53. It's almost the same as the 12.2/12.5 checklist but with a few tweaks. I'll provide both check lists.

So if you're having issues with HP QC and Rational Integration Tester integration, please go over the appropriate checklist to validate the installation and configuration

The checklist is valid for all versions of RIT.

This check list applies to HP Quality Center 12.2 and HP 12.5

Here are some things to double check and the exhaustive list of database entries that should be found in the project databases.

1. log in to Quality Center Site Admin.

2. Select the domain and then the project and expand the node

3. Locate the ENTITY_SUBTYPES table and select it

Please verify that these records exist:

EST_ID

EST_NAME

EST_ENTITY_TABLE_NAME

custom.run.GH-Tester

GH-Tester

RUN

GH-Tester

GH-Tester

TEST

ustom.test-instance.GH-Tester

GH-Tester

TESTCYCL

4. Locate the ENTITY_SUBTYPE_ATTRIBUTES table and select it

Please verify that these records exist:

ESTA_SUBTYPE_ID

ESTA_ATTRIBUTE_ID

ESTA_ATTRIBUTE_VALUE

custom.run.GH-Tester

hp.qc.run.is-ini-custom

Y

custom.run.GH-Tester

hp.qc.run.clsid

A78DFDE0-8231-FBDC-9FD1-0040CA1B8A87

GH-Tester

hp.qc.test.is-ini-custom

Y

GH-Tester

hp.qc.test.clsid

A78DFDE0-8231-FBDC-9FD1-0040CA1B8A87

custom.test-instance.GH-Tester

hp.qc.test-instance.is-ini-custom

Y

custom.test-instance.GH-Tester

hp.qc.test-instance.clsid

A78DFDE0-8231-FBDC-9FD1-0040CA1B8A87

5. Locate the ENTITY_SUBTYPE_RELATIONS table and select it

Please verify that these records exist:

ESTR_RELATION_NAME

ESTR_SOURCE_SUBTYPE_ID

ESTR_TARGET_SUBTYPE_ID

ESTR_STATUS

ESTR_IS_DEFAULT

testToTestInstanceRelization

GH-Tester

custom.test-instance.GH-Tester

ON

Y

testInstanceToRunRealization

custom.test-instance.GH-Tester

custom.run.GH-Tester

ON

Y

6. On the QC server, open the GH-Tester.ini found in C:\Program Data\HP\ALM\application\20qcbin.war\CustomTestTypes

It should look like this (Please make sure the CLSID matches exactly):

[GH-Tester]
CLSID={A78DFDE0-8231-FBDC-9FD1-0040CA1B8A87}

* Note that this CLSID should also match 3 of the ESTA_ATTRIBUTE_VALUE fields from step 4.

7. Also on the QC server, navigate to the extensions folder (C:\Program Data\HP\ALM\application\20qcbin.war\Extensions) and make sure the following are present:

GH-Tester (folder)
GH-Tester.cab

8. Now open the GH-Tester folder found in step 7 and verify the following files are found:

When doing manual data correlation in Rational Performance Tester (RPT) it's often necessary to inspect the properties a particular reference.

You might want to see or modify it's regular expression, see how many times it's used, etc.

The steps to see all the references in a test is to highlight the top line of the test then right mouse click and choose Data Correlation -> Show References

This brings up the Test References dialog. I like to click on the name tab to sort references by name.

Now let's say I want look more closely at the reference fn_2. Highlight the line in the Test Reference dialog that has fn_2 and do Properties...

Since I want to find out where this is used I click on the Preview tab and it shows me the response where it's extracted

So far so good. A stumbling block in RPT is how do I get from this Preview dialog to the actual reference in the test itself? It would be nice

if there was an option to click on and have a Go to function. But there's not. However we can accomplish the same task using Bookmarks.

So to go to the reference fn_2 in the actual test close the above dialog

Highlight the line with fn_2 in it and click the bookmark icon on the toolbar

At this point you can bookmark other references if you want.

Close the Test References and in RPT select Window -> Show Vjew -> Bookmarks

The bookmark we created will show up on the bottom in a separate pane

Double clicking on the entry for fn_2 will jump to the test where the reference is extracted.

This matches up with the same location in the Preview pane of the references Properties dialog above

This is a neat little trick and can same a lot of time when doing manual correlation in RPT Other things in a test besides references can be bookmarked, but to me this is one of the most productive uses of bookmarks.

RPT playback success depends on the Kerberos configuration in the test and krb5.ini file. As an example, for the User ID kerberostester in the ABC.IBM.COM domain using the Window Domain Controller DC04DV, the test’s Security tab would have:

and the corresponding krb5.ini would be similar to:

[libdefaults]

default_realm = ABC.IBM.COM

default_tkt_enctypes = rc4-hmac des-cbc-md5

default_tgs_enctypes = rc4-hmac des-cbc-md5

udp_preference_limit = 1

[realms]

ABC.IBM.COM = {

kdc = DC04DEV:88

default_domain = abc.ibm.com

}

[domain_realm]

.abc.ibm.com = ABC.IBM.COM

The Client realm should correspond to the Windows domain corresponding to the User ID. For example, given the above values, you should be able to log into your Windows account using the user name “kerberostester@abc.ibm.com”. RPT typically sets the initial value of the Client KDC based on the LOGONSERVER Windows environment variable (i.e. the Windows Domain Controller) of the RPT workbench. To verify this, use the Windows nltest command to get a list of domain controllers for your domain. For example:

nltest /dclist:ABC.IBM.COM

The definitive way to determine the Kerberos configuration is to capture this information with the Wireshark utility when accessing the application manually. See Tech Note #1962202 for more information about using Wireshark. You will need to use Legacy Wireshark so that the UI matches the tech note.

To capture Kerberos data with Wireshark:

Start a Wireshark capture on the RPT system and use it to monitor traffic to and from the standard KDC port, port 88 (use the Filter "tcp.port == 88" in Wireshark).

Access the application manually (through your browser). Log into the application as usual and then log out.

Stop the Wireshark capture.

The Wireshark capture should show traffic exchanged between the RPT system and port 88 on the KDC. In the captured traffic, look for a TGS-REQ message. For example:

Source Src Port Destination Dst Port Protocol Info

10.42.142.151 35618 10.32.155.77 88 KRB5 TGS-REQ

shows that the RPT system at IP address 10.42.142.151 is communicating with a KDC at IP address 10.32.155.77. You could get the name corresponding to the KDC IP address using the command nslookup 10.32.155.77. The details of the TGS-REQ message will also contain the realm and server name:

KDC_REQ_BODY

KDCOPTIONS:

Realm: ABC.IBM.COM

Server Name (Service and Instance): HTTP/nciis.abc.ibm.com

If your Wireshark capture doesn't show traffic to port 88, this could mean that cached credentials were used. The Kerberos ticket tool, kerbtray, can be used to clear cached credentials:

After obtaining and installing the Kerberos ticket tool, kerbtray will appear as an icon in the Windows System Tray. Right-click on the icon and pick "List Tickets" to see the existing cached Kerberos credentials.

Right-click on the kerbtray icon and select "Purge Tickets" to clear the cache.

After purging, do the Wireshark capture again while accessing the application. This time, it should show some traffic to port 88.

Once you obtain the KDC name from the Wireshark capture, please verify that it matches the KDC appearing in the test and in the krb5.ini file. If not, please update the KDC in the test as needed and verify the change takes effect in the krb5.ini file. Also verify that the realm (and server, if applicable) configured in the test matches the realm (and server) in the Wireshark capture.

In some environments, the communication with the KDC may require a 256-bit cipher. In that case, you will need to install the strong (>128-bit) encryption policy files. Instructions on how to do this are in Tech Note #1245273.

If problems continue after verifying your configuration, and if RPT can successfully record your Kerberos application but you are having playback problems, please enable full problem logging in your test and reproduce the problem. To do this:

Open the test in the RPT Test Editor.

Change the Problem determination log level in the test to All.

Run the test.

When the playback of the test finishes, check the CommonBaseEvents00.log for error messages related to Kerberos. The CommonBaseEvents00.log is a text file which will be created in the deployment directory for the playback, for example:
C:\IBM\RPT_workspace\deployment_root\rpt_user\A1E6B6A9FDA8DF90FA6DE33432663832\CommonBaseEvents00.log.

In the CommonBaseEvents00.log, search for the string “Exception” to find errors.

The name specified in the test for the server (Test Variables->Server Connections) is not known to the KDC. This could arise if the KDC knows the server by a different name or if the wrong KDC is specified:

If the messages in the CommonBaseEvents00.log from the above steps are not sufficient to identify the source of the failure, you can get more details by enabling Kerberos debug logging. To do this:

Create a single-user schedule containing the test.

Change the Problem determination log level in the schedule to All.

Assign the User Group in the schedule to run on a location (agent). The location can be on the same computer as the RPT workbench.

Add a general property named RPT_VMARGS for the location and set the value to include these two properties:-Dcom.ibm.security.jgss.debug=all -Dcom.ibm.security.krb5.Krb5Debug=all

Run the schedule. When the playback of the schedule finishes, check the CommonBaseEvents00.log in the location’s deployment directory. The location’s deployment directory will be located on the agent under the ROOTDIR for the location, for example:
C:\IBM\deployment_root\rpt_user\A1E6B6A9FDA8DF90FA6DE33432663832\CommonBaseEvents00.log

In the CommonBaseEvents00.log, you can search for the string “Exception” to find error message and look for the string getKerberosSpnegoTicket to see the values RPT was using when attempting the Kerberos authentication, for example:RPXE0001W getKerberosSpnegoTicket: user=kerberostester@ABC.IBM.COM pw=secret clientRealm=ABC.IBM.COM serverRealm= service=HTTP server=nciis.abc.ibm.com

When you update the Kerberos information in the test and save the change to the test, RPT will prompt you to also update the krb5.ini; please confirm the update. After that, open the krb5.ini file and verify all values are correct. If it appears that old values are still being used for the playback, clean out the deployment_root for the playback in case old files are being mistakenly picked up.

If you need to send data from the playback to Support, please provide the test, schedule, the krb5.ini file used, and test results, exported as Test Assets with Dependencies. Also provide the CommonBaseEvents00.log file (from the playback’s deployment directory) that was created by the playback.

Load generation agent connectivity is a common issue and sometimes confusing, especially when the machine used to run a load agent has multiple IP addresses. Even after a lot of trial and error the agent might not be connected to the workbench and so a schedule can't be launched. In any event, these straightforward steps will ensure the agent is configured correctly the first time.

In my example I will have the Rational Performance Tester (RPT) workbench machine on host name citmx233 and and agent on machine with host name of citmx561

Here we see the RPT workbench machine (citmx233) which acts as the server in the client - server relationship between the RPT workbench and load agent is using port 7080. This means it will listen on port 7080 to accept connections from load agents

2. On the agent machine test that http://citmx233:7080 returns a result in a browser.

This is the expected result. It may not look like much it tells us 3 important pieces of information

a. the RPT workbench can be accessed via the short host name "citmx233"

b. it's listening on port 7080

c. there's no firewall blocking port 7080 between the workbench machine and the agent machine

If this basic test fails then try the fully qualified host name or even the ip address of the RPT workbench machine instead of the short host name.

Make sure the RPT workbench is running.

Make sure you're using the port specified in the settings in step 1.

Port 7080 is the default but it can be configured to use any open port. The port that the RPT workbench listens on has to be the same port the load agent uses.

3. If the test above works, we have two important pieces of information: the host name of the RPT workbench machine (citmx233) and the port (7080)

Edit the majordomo.config file. Use wordpad instead of notepad to preserve formatting of the majordomo.config file

Put in the two values above

The default location of the majordomo.config on Windows is C:\Program Files\IBM\SDP\Majordomo

4. save the file and wait 10 seconds, the default polling interval specified in this same majordomo.config file

5. Go to the RPT workbench machine and click on the agent status icon

6. So far so good. The agent is configured to communicate to the RPT workbench and it shows as being connected to the RPT workbench.

There's a possible glitch however. As it's configured now in majordomo.config, the RPT workbench will use the agent host name of citmx561 to communicate

with the agent.

Most of the time this works. However the agent machine may have multiple IP addresses or the way DNS is set up the short host name of citmx561 may not resolve to the IP address that the agent uses to connect to the RPT workbench.

This is easy to resolve and good to do as a proactive measure.

From the RPT machine simply ping the agent host name and take note of the ip address, example:

Save the file and the change will take effect automatically in 10 seconds with no need to stop and restart the majordomo service.

8. The last tip is when using this agent as a location for a schedule in RPT, use the same host name that was used to ping the agent in step 6 which we used because it appeared as the host name in step 5

These basic steps will prevent or resolve most of the agent connectivity issues between the RPT workbench and load agent and is meant to be a quick guide.

For more advanced agent trouble shooting techniques refer to this White Paper on developerWorks:

This came in as a PMR, the customer wanted to know if there was a report in RPT that would show how many connections were made during the course of a test run.

The answer is "no". There's no report that will show the number of connections made.

However there's two ways to find the number of connections, just not in a report.

Method 1: Examine the kernelio.dat file

The first way is to go to the deployment_root directory that was used when the test or schedule was executed. If the execution was for a schedule or a standalone test it'll be in the workspace directory, example:

Directory of C:\IBM\0000-000-000-Paul\deployment_root\Administrator\A1E6DE5BA71E2660C363E56534336538

When applying rules from a rules file to an RPT test, you might find that some rules do not apply correctly -- the src value is set to ''. This can happen if the substitution name has characters that result in an invalid regular expression.

This is caused because RPT data correlation rules have a special regular expression for linking the value pointed to by either a reference or a substitution by using the reference or substitution name like "%< Reference or Substitution Name>%". For example, consider a scenario where the application has a dynamic key-value pair "myParam=foo". If RPT uses a reference parameter with name "myParam" and sets its regular expression to "myParam=(.*?)", in order to substitute it in all occurrences of the string foo in requests, a regular expression %myParam% can be used for the substitution site. Also note that though RPT uses a portion of the regular expression as the reference or substitution name by default, it can be modified using the rules editor or test editor.

When you create a new manual correlation, the substitution name matches the regular expression value. Thus, if a new manual correlation creates a substitution with a regular expression that includes characters used in regular expression syntax -- like % -- and you keep the default substitution name, when RPT tries to use the pattern %<SUBSTITUTION NAME>%, this name will generate an error because of the invalid regular expression (caused by the un-escaped "%" sign within the substitution name).

You can work around this issue by renaming the substitution name to not include characters that result in invalid regular expressions.

You may encounter a problem while attempting to do a TN3270 recording with RPT on Windows 2012 R2, you will find that the "IBM Personal Communication" item is grayed out, and that the "Select Client Application" dialog displays a message similar to:

Today we released version 9.6.0 of Rational Software Architect Designer and Rational Software Architect Designer for WebSphere Software. Find the download, Release Information, and Fix list information below that you'll need to install or upgrade to this version.

This topic comes up frequently. Sometimes a customer will have a set of existing service tests and the server has been changed to require TLS 1.2 and the service tests no longer work. Or the customer is trying to record a new service test using the General Service Client and can't get a valid response after invoking the request.

The error message reported by RPT will be similar to:

RPWY0002E An exception occurred in com.ibm.rational.test.lt.models.wscore.transport.impl.HttpTransporterImpl
java.lang.NullPointerException
at com.ibm.rational.test.lt.models.wscore.transport.noblck.impl.NonBlockingSSLIO.unwrap(NonBlockingSSLIO.java:175)
at com.ibm.rational.test.lt.models.wscore.transport.noblck.impl.NonBlockingSSLIO.sslLoop(NonBlockingSSLIO.java:328)
at com.ibm.rational.test.lt.models.wscore.transport.noblck.impl.NonBlockingSSLIO.write(NonBlockingSSLIO.java:154)
at com.ibm.rational.test.lt.models.wscore.transport.noblck.impl.NonBlockingIOUtils.writeAll(NonBlockingIOUtils.java:244)
at com.ibm.rational.test.lt.models.wscore.transport.http.impl.HttpRequest.sendSOAPDatas(HttpRequest.java:453)
at com.ibm.rational.test.lt.models.wscore.transport.impl.HttpTransporterImpl.sendInternal(HttpTransporterImpl.java:369)
at com.ibm.rational.test.lt.models.wscore.transport.impl.HttpTransporterImpl.send(HttpTransporterImpl.java:268)
at com.ibm.rational.test.lt.models.wscore.transport.impl.HttpTransporterImpl.send(HttpTransporterImpl.java:255)
at com.ibm.rational.test.lt.models.wscore.transport.impl.SynchronousUtil.send(SynchronousUtil.java:39)
at com.ibm.rational.ttt.common.ui.send.ObservableWSCommunication.sendAndReceive(ObservableWSCommunication.java:109)
at com.ibm.rational.ttt.common.ui.send.SendRequestThread$ObservedThread.run(SendRequestThread.java:256)

The default value used by General Service Client is SSL_TLS. However RPT will not use the property com.ibm.jsse2.overrideDefaultProtocolbut use the property com.ibm.rational.test.lt.soa.ssl.protocols instead

We need to set this property in two separate places so it can be used for recording as well as playback

For recording

Put this in the eclipse.ini

-Dcom.ibm.rational.test.lt.soa.ssl.protocols=TLSv1.2

For playback

Like for recording we need to set the same -Dcom.ibm.rational.test.lt.soa.ssl.protocols=TLSv1.2 for the playback engine of the test. The only way to do this in RPT is

to put the test in a schedule, then configure the schedule to run on a location instead of local computer. Then we add the -Dcom.ibm.rational.test.lt.soa.ssl.protocols=TLSv1.2 as a property of the location.

1. install the RPT Agent, on the same machine as RPT workbench is OK.
2. create a schedule
3. put the test in the schedule
4. on the group of the schedule click "Run this group on the following locations (0) defined)"
5. Do Add...New

6. Create an Agent location using the location that shows up in the Agent Status icon

7. Add a property for this location with the value RPT_VMARGS= -Dcom.ibm.rational.test.lt.soa.ssl.protocols=TLSv1.2

8. run the schedule

The playback should now work. Remember the test will never be able to be run standalone any more if TLS 1.2 is required, it must be run in a schedule using an agent and a RPT_VMARGS set for that agent following the steps above

The ClearCase and ClearQuest patches have been posted to Fix Central and are now available for download. The associated IM update sites are also "live".
The 8.0.0.20, 8.0.1.13, and 9.0.0.3 download pages are available from http://www-01.ibm.com/software/rational/support/ and their URLs are listed below. We

When using the RQM/RFT integration, you may run into a problem running RFT scripts from RQM when using Shared Location, which results in this error:

The script cannot be executed

You have this problem even though the RQM/RFT integration is set up correctly and the RFT script itself works fine.

Symptoms

RFT scripts run from RQM fail with the "The script cannot be executed" error, but the same scripts run from RFT itself work fine.

If you reconfigure the problem script to use Local instead of Shared Location, the script runs fine from RQM.

In the RQM adapter console, the RFT command used by RQM has a UNC or network path in the -datastore switch instead of a local path to a local temporary location.

Cause

This problem happens on machines that are missing a Microsoft VC++ Redistributable required by RFT's RQM adapter, which prevents a DLL file (rftrqmcomm.dll) from loading. The RQM adapter relies on rftrqmcomm.dll to get the temporary location where RQM copied the RFT scripts that were in the shared location. The -datastore switch of the RFT command used by RQM should never have a network path as its value -- if it does, that indicates a problem with the integration or the system hosting the RQM adapter.

How to determine whether you are having this problem

Enable debug logging for the RQM adapter. Then start the RQM adapter, reproduce the problem, and check the RFT command used by RQM -- if the -datastore switch has a network path, you might be having this problem. Proceed to the next step.

With the RQM adapter still running, start Process Explorer and use its Find command to search for rftrqmcomm.dll. If nothing is found, that indicates this DLL was not loaded by the RQM adapter, and that you are having this problem.

(If you cannot run Process Explorer but the test from #1 indicates you may be having this problem, go ahead and follow the steps to resolve the problem.)

Resolving this problem

The RQM adapter requires a new enough version of the 32-bit Microsoft Visual C++ 2005 Redistributable. This can be obtained here. Installing the missing redistributable will resolve this problem.

IBM Rational Functional Tester (RFT) is all about object recognition. If the graphical user interface (GUI) contains objects that Rational Functional Tester recognizes, you can record a sequence of actions. You can replay this sequence afterward.

This post wants to introduce you to object recognition in Rational Functional Tester.

The heart of object recognition in Rational Functional Tester is the object map. The object map is a graphical representation of the objects in your application under test that Rational Functional Tester encounters.

Through Windows hooks, Rational Functional Tester memorizes what actions you played in the GUI. Here, a hook means a mechanism that works between the keyboard or mouse and the GUI object.

Let’s say, when you click an object, information about that object flows from your video chip to the memory of Rational Functional Tester. During recording, Rational Functional Tester stores the information that the hook gathered.

For more information about hooks, see the following document on Microsoft.com.

Objects in a map

When you finished recording, Rational Functional Tester puts the information about the objects into a kind of table. This table shows the objects of your application in a parent-child view. We call this table the object map.

With this object map, you can manipulate the way Rational Functional Tester recognizes the objects in your application under test. In this way, you can fine-tune your script to play back more easily, for example.

Roughly, the object map contains the following information about the objects that you touched during recording: administrative properties, recognition properties.

Administrative properties

Name

The object map displays the name that the developer gave to the object.

Accessible name

The name that you in the application’s graphical interface.

Domain

If you look at the picture, the domain is the first information that the object map reports about an object. In this example, we’re talking about a Java application. Therefore, the domain is Java. If the application runs in a browser, the object map would say HTML. The domain must match with the type of application under test.

Recognition properties

These values are the properties that the recorder collects. These properties make the object unique. Therefore, when you run the script, Rational Functional Tester recognizes the object without ambiguity.

The recorder also assigns a weight. The weight says how important a property is for recognition. If you want, you can change the weight of any recognition property. In this way, you decide yourself what property is important for recognition.

Example:

In the sample application Classics Java, you can see the following properties of the Place Order button.

Name: placeOrderButton2

Domain: Java

Class: javax.Swing.JButton

Unique ID: 1.3kaXiXo9H95:AQpC:Pyg70l9:8WW.

You can also see that the most important properties for recognition are the class name, accessible name, and name.

What to do with the object map

Sharing

In the Rational Functional Tester Script Explorer, you see two kinds of test objects. You see an icon with caption Private Test Object Map. As the name “private” says, these objects belong only to that script that you recorded.

You can also make an object map that you can share with other scripts. With such a shared object map, you can change the object properties in a single place instead of all the private object maps. To create a test object map:

Right-click your project > Add Test Object Map.

When you right-click an object in the object map, you see a set of action that you can apply to the object. The most important are the following items.

Highlight test object

Insert test object

Highlight recognized objects

If Rational Functional Tester recognizes an object properly, you can highlight that object through the object map. Watch the video to see how that looks like.

Insert test object

If your application has an object that you didn’t record, you can still add these objects to the object map. Now, Rational Functional Tester can recognize the object when you run a script where the object does play a role.

Is there a better way? find() method

Sometimes, the object map is not an option. Sometimes manipulations on the object map are too tedious. Sometimes, the object map doesn’t contain an object that you want to play back. Then, the find() method is the way to go.

You can start with the class of RootTestObject. This class gives you access to your application. So to say, RootTestObject opens the objects of your application under test.

Let’s look at the syntax first. I show an example later.

public TestObject[] find(Subitem properties, boolean mappableOnly

For Subitem, you can use the following items.

atProperty
A name or value pair that represents a TestObject property.

atChild
Contains properties that match with the direct child of the parent TestObject.

atDescendant
Contains properties that match with children or objects under the children of the parent TestObject.

The video shows how you can click the button Place Order in the sample application through the find() method. The find method is a different way to a click from a click through recording. In the video, you can watch the following steps.

Open the application under test.

Create an empty script.

Open the empty object map.

Click Insert Objects … to populate the object map.

Drag the object finder, the hand, to the caption bar of the application. This action casts a red rectangle around the entire screen of the application.

Select Include all available objects on this window. Then, click Finish.

Locate the Place Order button in the object map. Then, click Save.

Insert the following code into the script. This code makes the objects available in the application window.

Custom objects ObjectNotFoundException

Rational Functional Tester does not support custom objects.

When something is wrong with the object recognition, you see that the object map either doesn’t list the object and the Test Object Inspector doesn’t see the object. Also, when you see Win.GenericProxy or HTML.Generic.Proxy in the object map, you are dealing with a custom object. When you play back the script, you notice. For example, you get an ObjectNotFoundException.

From my experience, I would first check whether Rational Functional Tester recognizes the objects in the right kind of application. In other words, what domain the object map assigns to the objects. For example, the object map must say HTML for objects in a web browser.

If the domain is the right domain, you can see whether you can highlight the object through the object map. See the video in this post.

What to do with objects not in the object map

With the find method, you can also try to discover an object that Rational Functional Tester recognizes but doesn’t put in the object map. You can see these objects through the Test Object Inspector.

If you set the Test Object Inspector in the Options menu to not hiding objects that are not mapped. If you want to find objects that are absent in the object map, use the mappableOnly parameter. Now, you say that the Boolean value is false.

What’s next

Object recognition is an important condition for Rational Functional Tester to work. A central role in the object recognition is the object map. You can manipulate the object map or use the find method.

I hope that I explained how the object map works and what you can do to improve object recognition.

If you’d like to share your experiences with object recognition in Rational Functional Tester, leave a comment here or follow me on Twitter.

I'm excited to share a couple more changes with you regarding the Rational Twitter handle and YouTube channel, respectively. These changes will provide you with powerful support content for IBM Cloud Technical Support.

Starting on Monday, November, 14, 2016 our Twitter account/handle @rationalsupport will begin tweeting content from @IBM_CTS. We will leave @rationalsupport up with a pointer to @IBM_CTS for a bit so that you can follow the new handle.

The second change we'll make on November 14th is to begin posting new support videos on the IBMSupportTV channel (https://www.youtube.com/user/WebSphereEducation). Currently, we have 131 videos out on the Rational YouTube channel and those will continue to be available on that channel until they are all migrated to the IBM SupportTV channel. For this change, you will need to subscribe to the IBMSupportTV YouTube channel to continue to receive updates.

@IBM_CTS (Cloud Technical Support) is who we are and our support social channels will reflect that, in the robust content we will continue to provide. We're excited for these changes! Please let us know if you have questions by commenting on this blog or reaching out to us on any of our channels. We look forward to continue serving you up the most relevant technical content to make you successful.

useful particularly it's split string function. It's easy to use, just paste the text to be split, the character to split on, and press the Split button

Conclusion

The above tools are the ones I just happened to find a while back and used them. They work so I continue to use them. For each of these tools you can find other sites that do the same functions.

By using these online tools almost any POST content or response data can be decoded and formatted to make it easy to read which means easy to work with when doing data correlation in RPT.

Sometimes a combination of these tools needed to be used in order to format the text, example it has to be URL decoded first then formatted. With the three basic tools above I found that almost any text I come across when working the RPT can be formatted into a human readable format.

I find them valuable and a great time saver when doing manual data correlation.

If you haven't seen the 60 minutes segment where Watson is highlighted, you should really check it out. I have posted the link below. Do you remember when IBM Watson competed on Jeopardy back in 2011? Watson proved that it was able to process large amounts of data to find the correct answer. Today, Watson is partnering with Universities and Hospitals to try to make a positive impact on the medical field.

Why is artificial intelligence such a hot topic? Well, some would argue that it has the potential to change the narrative for many industries. For example, it has the potential to be essential in helping to diagnose diseases and help doctors make more informed decisions. To be more specific, Watson can read million books per second. This is extremely powerful and can deliver important information faster than a human can.

If you have best practices or experienced implementation insights, you have the opportunity to share your industry story. Click the link below to submit your abstract proposal to be a speaker. If your abstract is selected, you will be eligible to receive a full conference pass (value $2,295). In today's world, this type of crowdsourcing can be beneficial to organizations to learn how peers are succeeding in these ever-changing times.

Here are a few capabilities in this new version:
1. Integration with IBM z/OS Connect
2. Support for Channels and Containers in CICS Distributed Program Link
3. Improvements in message schema handling to improve project portability

Good news! The ClearCase and ClearQuest patches have been posted to Fix Central and are now available for download. The associated Installation Manager update sites are also "live".
The 8.0.0.19, 8.0.1.12, and 9.0.0.2 download pages are available from http://www-01.ibm.com/software/rational/support/ and their URLs are listed below.