Testing Java applications - Overview
Some basics of creating and recording tests for Java applications, Java control identification via the Interface Viewer, and other concepts.
- By default, TestArchitect Register Server, which is installed with TestArchitect, automatically starts up as a service (daemon) each time you boot your computer. This service is often essential for automated testing, and should generally be available. Ensure the availability of the TestArchitect Register Server service before running your automated tests.
- For both Windows and Linux platforms, the environment variable JAVA_TOOL_OPTIONS is added during the TestArchitect installation process. This variable is used to invoke the TAJavaLoader.jar agent, located at TA_INSTALL_DIR\binclient\agents\java\lib\ext\. (Note: In Windows, JAVA_TOOL_OPTIONS is added as both a User variable and System variable.)
Creating and recording tests for Java applications
TestArchitect’s test editor allows you to manually author tests consisting of action lines, based on the Action-Based Testing methodology. However, TestArchitect also provides you with a powerful tool to automate the process of authoring action-based tests, saving you time and eliminating the risk of accidental coding errors. The Action Recorder does this by monitoring and recording your manual interactions with theJavaapplication. It automatically generates the equivalent action lines and writes them to your test file, inserting whatever checks you specify to verify the responses of the application. (See Using the Action Recorder for further information.)
Auto-generated action lines can subsequently be modified and enhanced by hand in a number of ways to address specific test requirements. For example, you can:
- Add new actions, reorder actions and modify their arguments.
- Remove superfluous recorded actions.
- Insert validity checks to confirm that recorded values are output correctly.
- Combine multiple recorded actions into a single user-defined action. (Refer to Smart creation of new actions for details)
- Create data-driven tests that run multiple test iterations using different sets of data.
Actions supported for Java controls
TestArchitect provides many built-in actions for automating various user interactions on Java applications. When you record a test, TestArchitect records the performed GUI actions using these built-in actions. A full reference guide to these actions may be found in the User Interface actions section of the Automation Guide.
Java control identification
Every user interface control of aJavaapplication has both a class and a set of properties. Property sets vary depending on the class of object involved: a button, for example, will have a different set of properties than a text box or label. Within a given container (window, dialog box, etc.), the combination of a control’s class and some set of property-value pairs is used by TestArchitect to uniquely identify the control.
Generally, only a small subset of a control’s properties are useful for identification. Some properties of a given control may have highly volatile values, and therefore cannot be used for reliable identification. Other properties may be quite constant (e.g., enabled=true), but other controls of the same class might well have the exact same value for that property. Ideally, you need to find property values that are both persistent for a given control and unique. If necessary, a combination of two or more property-value pairs may be used for identification.
The Interface Viewer is a powerful support tool that allows you to view all of a control’s available properties, to capture and save all or parts of an interface definition, and to explore the controls of an application’s interface. The following image depicts the Interface Viewer examining the controls of aJava application.
Native Java properties
TestArchitect defines its own set of properties, named TA properties, which it applies toJava controls. The Interface Viewer displays not only the TA properties of aJava application’s controls, but also exposes all of the controls’ native properties. These are the same properties that are available in the application’s source code and used by the application developers. You may use these native properties to capture controls or automate tests.