<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-5401578554988570599</id><updated>2009-10-12T20:24:34.555-07:00</updated><title type='text'>Software Testing Tools and Techniques</title><subtitle type='html'>Automated testing with WinRunner, LoadRunner &amp; Rational Robot</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://test-techtools.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default?start-index=26&amp;max-results=25'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>81</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-5916032570309084875</id><published>2007-11-18T23:31:00.000-08:00</published><updated>2007-11-18T23:38:54.198-08:00</updated><title type='text'>Testing Practices</title><content type='html'>One should make testing a practice so that the deliverable quality is ensured after running succesful tests and removing the bugs.&lt;br /&gt;&lt;br /&gt;According to Martin Fowler, "Whenever you are tempted to type something into a print statement or a debugger expression, write it as a test instead." At first you will find that you have to create a new fixtures all the time, and testing will seem to slow you down a little. Soon, however, you will begin reusing your library of fixtures and new tests will usually be as simple as adding a method to an existing TestCase subclass.&lt;br /&gt;You can always write more tests. However, you will quickly find that only a fraction of the tests you can imagine are actually useful. What you want is to write tests that fail even though you think they should work, or tests that succeed even though you think they should fail. Another way to think of it is in cost/benefit terms. You want to write tests that will pay you back with information.&lt;br /&gt;&lt;br /&gt;Here are a couple of the times that you will receive a reasonable return on your testing investment:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#33cc00;"&gt;&lt;strong&gt;During Development:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;When you need to add new functionality to the system, write the tests first. Then, you will be done developing when the test runs.&lt;br /&gt;&lt;span style="color:#33cc00;"&gt;&lt;strong&gt;During Debugging:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;When someone discovers a defect in your code, first write a test that will succeed if the code is working. Then debug until the test succeeds.&lt;br /&gt;One word of caution about your tests. Once you get them running, make sure they stay running. There is a huge difference between having your suite running and having it broken. Ideally, you would run every test in your suite every time you change a method. Practically, your suite will soon grow too large to run all the time. Try to optimize your setup code so you can run all the tests. Or, at the very least, create special suites that contain all the tests that might possibly be affected by your current development. Then, run the suite every time you compile. And make sure you run every test at least once a day: overnight, during lunch, during one of those long meetings.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-5916032570309084875?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/5916032570309084875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/5916032570309084875'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/11/testing-practices.html' title='Testing Practices'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-5502484073841280739</id><published>2007-09-30T23:26:00.000-07:00</published><updated>2007-10-01T02:00:38.879-07:00</updated><title type='text'>Web Test tools</title><content type='html'>Thousands of software testing tools and technologies are available in the todays market, thus helps organizations to make their software systems more reliable, enhanced and efficient.&lt;br /&gt;Some important load and performance test tools with respect to the web applications are listed in this article. Their core features are also included to get familiar with their capabilities.&lt;br /&gt;&lt;br /&gt;Load and performance test tools&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;Curl-Loader:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;This tool is an open source tool written in ‘C’. It is useful to test the load and behavior of large number of Ftp/Ftps and Http/Https clients, each with its own source IP-address. Curl-Loader uses the real c-written client protocol stacks like HTTP and FTP stacks of libcurl and TSL/SSL of openssl. Activities for each virtual client is logged, all the logged data includes the following information: resolving, connection establishment, sending of requests, receiving responses, headers and data received/sent, errors from network, TLS/SSL and application (HTTP, FTP) level events and errors.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;OpNet LoadScaler:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;It is a load test tool presented by OpNet Technologies. It performed some useful functions like Create tests without programming; generate loads against web applications, and other services including Web Services, FTP, and Email. Record end-user browser activity in the OPNET TestCreatorTM authoring environment to automatically generate test scripts in industry-standard JavaScript. Modify, extend and debug tests with the included JavaScript editor. Alternatively, drag and drop icons onto the test script tree. No knowledge of a scripting language is required to customize test scripts.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;Stress Tester:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;It is a load and performance testing tool for web applications. Advanced user journey modeling, scalable load, system resources monitors and results analysis. No scripting required. Suitable for any Web, JMS, IP or SQL Application. OS independent.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;Proxy Sniffer:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;It is a stress and load testing tool having some nice features.&lt;br /&gt;. HTTP/S Web Session Recorder that can be used with any web browser.&lt;br /&gt;. Recordings can then be used to automatically create optimized Java-based load test programs.&lt;br /&gt;. Automatic protection from "false positive" results by examining actual web page content.&lt;br /&gt;. Detailed Error Analysis using saved error snapshots and real-time statistics.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;Testing master:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Testing master is a strong load testing tool which has the following characteristics.&lt;br /&gt;. IP spoofing&lt;br /&gt;. Multiple simultaneous test cases&lt;br /&gt;. Website testing features for sites with dynamic content and secure HTTPS pages&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;NeoLoad:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;It is a web load testing tool with user friendly graphical interface and can design complex cases to handle real world applications. It has the following list of features:&lt;br /&gt;. Data replacement&lt;br /&gt;. Data extraction and SOAP support&lt;br /&gt;. System monitoring (Windows, Linux, IIS, Apache, Web Logic, Web sphere...)&lt;br /&gt;. SSL recording&lt;br /&gt;. PDF/HTML/Word reporting&lt;br /&gt;. IP spoofing&lt;br /&gt;. It is multi platform and can run on Windows, Linux, and Solaris&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;QTest:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;This tool is used for web load testing, it has the following characteristics&lt;br /&gt;. Cookies are managed natively&lt;br /&gt;. Shorten the script modeling stage&lt;br /&gt;. HTML and XML parser&lt;br /&gt;. Option of developing custom monitors using supplied APIs&lt;br /&gt;. Allowing display and retrieval of any element from a HTML page or an XML flux in test scripts&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;LoadDriver:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;A very strong testing tool equipped with some modern day technologies. It has the following capabilities:&lt;br /&gt;. Rather than simulating the browsers tt directly drives multiple instances of MSIE&lt;br /&gt;. It supports browser side scripts along with HTTP 1.0/1.1, HTTPS, cookies, cache, and Windows authentication&lt;br /&gt;. Data can be taken from text files or custom ODBC data source and passed to the tests, for individual userID, password, page to start, think times, data to enter, links to click, cache, initial cache state&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;Site Tester1:&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;It is a load testing tool which require JDK1.2 or higher to run. Its functions includes HTTP1.0/1.1 compatible requests, POST/GET methods, cookies, running in multi-threaded or single-threaded mode, definition of requests, jobs, procedures and tests, keeps and reads XML formatted files for test definitions and test logs, generates various reports in HTML format&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#33cc00;"&gt;&lt;strong&gt;Microsoft WCAT load test tool:&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;A very efficient tool from Microsoft Corporation which is responsible for the load testing of Internet Information services (IIS) servers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;WebPerformance Load Tester:&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;It is a load tester having some attractive features listed below:&lt;br /&gt;. It supports all browsers and web servers.&lt;br /&gt;. Records and allows viewing of exact bytes flowing between browser and server&lt;br /&gt;. No scripting required.&lt;br /&gt;. Modem simulation allows each virtual user to be bandwidth limited.&lt;br /&gt;. It can automatically handle variations in session-specific items such as cookies, usernames, passwords, IP addresses, and any other parameter to simulate multiple virtual users&lt;br /&gt;. It can be used on Windows, Linux, UNIX and Solaris platforms.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-5502484073841280739?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/5502484073841280739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/5502484073841280739'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/09/web-test-tools.html' title='Web Test tools'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-9177481727321473393</id><published>2007-07-25T03:35:00.000-07:00</published><updated>2007-09-11T22:03:04.318-07:00</updated><title type='text'>Selecting an Object Order Preference</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Robot uses a variety of object recognition methods in order to uniquely identify objects in the application-under-test that are acted on during recording sessions. For example, Robot can identify a check box in the application-under-test by its object name, associated label or text string, index value, or ID value.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;These recognition methods are saved as arguments in script commands so that Robot can correctly identify the same objects during playback. &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Robot has two predefined preferences for the recognition method order for each standard object type. While recording an action on an object, Robot tries each method within the selected preference in sequence until it finds a method that uniquely identifies the object.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;The following table describes the two predefined preferences.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Trebuchet MS;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;table id="table1" cellspacing="4" cellpadding="2" width="100%" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;b&gt;Object Order Preference&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;b&gt;Recognition Method Order&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;&lt;span style="font-family:trebuchet ms;"&gt;Comments&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&amp;lt;Default&amp;gt;&lt;/span&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Object Name Label and/or Text Index ID&lt;/span&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Index comes before ID. In some environments, such as PowerBuilder and Visual Basic, the ID changes each time the developer creates an executable file and is therefore not a good recognition method.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;span style="font-family:trebuchet ms;"&gt;C++ Recognition Order&lt;/span&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Object Name Label and/or Text ID&lt;/span&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Index ID comes before index. In some environments, suchas C++, the ID does not usually change and is therefore a good recognition method.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;The &lt;default&gt;object order preference is the initial setting. If you plan to test C++ applications, change the preference to C++ Recognition Order.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#009900;"&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Settings in the Object Recognition Order tab of the GUI Record Options dialog box do not affect HTML recording. When recording against HTML, Robot always uses HTMLID, if available, and then name, text, and index recognition and ignores any settings in the Object Recognition Order tab.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;To change the object order preference:&lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Open the GUI Record Options dialog box.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Click the &lt;strong&gt;Object Recognition Order&lt;/strong&gt; tab.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Select a preference in the &lt;strong&gt;Object order preference&lt;/strong&gt; list.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Click OK or change other options.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;color:#009900;"&gt;Note&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;The object order preference is specific to each user. For example, you can record with C++ preferences while another user is recording with &lt;default&gt;preferences at the same time.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-9177481727321473393?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/9177481727321473393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/9177481727321473393'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/07/selecting-object-order-preference.html' title='Selecting an Object Order Preference'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-5149004849744241701</id><published>2007-07-25T00:41:00.000-07:00</published><updated>2007-07-25T02:21:38.580-07:00</updated><title type='text'>Setting GUI Recording Options</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;GUI recording options provide instructions to Robot about how to record and generate GUI scripts. You can set these options either before you begin recording or early in the recording process.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;To set the GUI recording options:&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Open the GUI Record Options dialog box by doing one of the following:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Before you start recording, click Tools &gt; GUI Record Options.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Start recording by clicking the Record GUI Script button on the toolbar. In the Record GUI dialog box, click Options.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Set the options on each tab.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Click OK.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;color:#009900;"&gt;Naming Scripts Automatically&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Robot can assist you in assigning names to scripts with its script autonaming feature. Autonaming inserts your specified characters into the &lt;strong&gt;Name&lt;/strong&gt; box of a new script and appends a consecutive number to the prefix.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;This is a useful feature if you are recording a series of related scripts and want to identify their relationship through the prefix in their names. For example, if you are testing the menus in a Visual Basic application, you might want to have every script name start with VBMenu.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;To turn on script autonaming:&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Open the GUI Record Options dialog box.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;In the &lt;strong&gt;General&lt;/strong&gt; tab, type a prefix in the &lt;strong&gt;Prefix&lt;/strong&gt; box. Clear the box if you do not want a prefix. If the box is cleared, you need to type a name each time you record a new script.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Click &lt;strong&gt;OK&lt;/strong&gt; or change other options.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;The next time you record a new script, the prefix and a number appear in the &lt;strong&gt;Name&lt;/strong&gt; box of the Record GUI dialog box.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;For example the autonaming prefix is Test. When you record a new script, Test7 appears in the &lt;strong&gt;Name&lt;/strong&gt; box because six other scripts begin with Test.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;If you change the script autonaming prefix by clicking Options in the Record GUI dialog box, changing the prefix, and then clicking OK, the name in the Name box changes immediately.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;color:#009900;"&gt;Controlling How Robot Responds to Unknown Objects&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;During recording, Robot recognizes all standard Windows GUI objects that you click, such as check boxes and list boxes. Each of these objects is associated with one of a fixed list of object types. The association of an object with an object type is generally based on the class name of the window associated with the object.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Robot also recognizes many custom objects defined by IDEs that Robot supports, such as Visual Basic, Oracle Forms, Java, and HTML. For example, if you click a Visual Basic check box, Robot recognizes it as a standard Windows check box. This mapping is based on the object’s Visual Basic assigned class name of ThunderCheckBox.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;These built-in object mappings are delivered with Robot and are available to all users no matter which project they are using. During recording, you might click an object that Robot does not recognize. In this case, Robot’s behavior is controlled by a recording option that you set. You can have Robot do either of the following:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Open the Define Object dialog box, so that you can map the object to a known object type.&lt;br /&gt;Mapping an object to an object type permanently associates the class name of the object’s window with that object type, so that other objects of that type are recognized.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Automatically map unknown objects encountered while recording with the Generic object type. This permanently associates the class name of the unknown object’s window with the Generic object type.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;This is a useful setting if you are testing an application that was written in an IDE for which Robot does not have special support and which therefore might contain many unknown objects. When an object is mapped to the Generic object type, Robot can test a basic set of its properties, but it cannot test the special properties associated with a specific object type. Robot also records the object’s x,y coordinates instead of using the more reliable object recognition methods to&lt;br /&gt;identify the object.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;These custom object mappings are stored in the project that was active when the mappings were created.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;To control how Robot behaves when it encounters an unknown object during recording:&lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Open the GUI Record Options dialog box.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;In the General tab, do one of the following:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Select Define unknown objects as type "Generic" to have Robot automatically associate unknown objects encountered while recording with the Generic object type.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Clear Define unknown objects as type "Generic" to have Robot suspend recording and open the Define Object dialog box if it encounters an unknown object during recording. Use this dialog box to associate the object with an object type.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Click OK or change other options.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;ol&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-5149004849744241701?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/5149004849744241701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/5149004849744241701'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/07/setting-gui-recording-options.html' title='Setting GUI Recording Options'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-544296242713442600</id><published>2007-07-12T00:05:00.000-07:00</published><updated>2007-07-12T00:11:26.592-07:00</updated><title type='text'>Enabling IDE Applications for Testing</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Robot provides specialized support for testing the objects in applications that are created in many integrated development environments (IDEs).&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;To successfully test the objects in Oracle Forms, HTML, Java, C++, Delphi, and Visual Basic 4.0 applications, you need to enable the applications as follows before you start recording your scripts:&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Oracle Forms &lt;/span&gt;&lt;/strong&gt;– Install the Rational Test Enabler for Oracle Forms. Run the Enabler to have it add the Rational Test Object Testing Library and three triggers to the .fmb files of the application.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;HTML &lt;/span&gt;&lt;/strong&gt;– While recording or editing a script, use the Start Browser toolbar button to start Internet Explorer or Netscape Navigator from Robot. This loads the Rational ActiveX Test Control, which lets Robot recognize Web-based objects.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Java&lt;/span&gt;&lt;/strong&gt; – Run the Java Enabler to have it scan your hard drive for Java environments such as Web browsers and Sun JDK installations that Robot supports. The Java Enabler only enables those environments that are currently installed.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;C/C++&lt;/span&gt;&lt;/strong&gt; – To test the properties and data of ActiveX controls in your applications, install the Rational ActiveX Test Control. This is a small, nonintrusive custom control that acts as a gateway between Robot and your application. It has no impact on the behavior or performance of your application and is not visible at runtime. Manually add the ActiveX Test Control to each OLE container (Window) in your application.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Visual Basic 4.0&lt;/span&gt;&lt;/strong&gt; – Install the Rational Test Enabler for Visual Basic. Attach the Enabler to Visual Basic as an add-in. Have the Enabler add the Rational ActiveX Test Control to every form in the application. This is a small, nonintrusive custom control that acts as a gateway between Robot and your application.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Delphi&lt;/span&gt;&lt;/strong&gt; – Install the Rational Object Testing Library for Delphi and the Rational Test Delphi Enabler. Run the Enabler, and then recompile your project to make it Delphi testable.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;You can install the Enablers and the ActiveX Test Control from the Rational Software Setup wizard.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-544296242713442600?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/544296242713442600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/544296242713442600'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/07/enabling-ide-applications-for-testing.html' title='Enabling IDE Applications for Testing'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-3392337172349022819</id><published>2007-06-28T23:51:00.000-07:00</published><updated>2007-06-29T00:11:30.713-07:00</updated><title type='text'>Recording GUI Scripts in Rational Robot</title><content type='html'>&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;color:#009900;"&gt;The Recording Process&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;When you record a GUI script, Robot records:&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Your actions as you use the application-under-test. These user actions include keystrokes and mouse clicks that help you navigate through the application.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Verification points that you insert to capture and save information about specific objects. A verification point is a point in a script that you create to confirm the state of an object across builds. During recording, the verification point captures object information and stores it as the baseline. During playback, the verification point recaptures the object information and compares it to the baseline.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;The recorded GUI script establishes the baseline of expected behavior for the application-under-test. When new builds of the application become available, you can play back the script to test the builds against the established baseline in a fraction of the time that it would take to perform the testing manually.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;color:#009900;"&gt;The Recording Workflow&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Typically, when you record a GUI script, your goal is to:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Record actions that an actual user might perform (for example, clicking a menu command or selecting a check box).&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Create verification points to confirm the state of objects across builds of the application-under-test (for example, the properties of an object or the text in an entry field).&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;color:#009900;"&gt;Before You Begin Recording&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;You should plan to use Robot at the earliest stages of the application development and testing process. If any Windows GUI objects such as menus and dialog boxes exist within the initial builds of your application, you can use Robot to record the corresponding verification points.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Consider the following guidelines before you begin recording:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Establish predictable start and end states for your scripts.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Set up your test environment.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Create modular scripts.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Create Shared Projects with UNC.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;These guidelines are described in more detail in the following sections.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#009900;"&gt;&lt;strong&gt;Establishing Predictable Start and End States for Scripts&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;By starting and ending the recording at a common point, scripts can be played back in any order, with no script being dependent on where another script ends. For example, you can start and end each script at the Windows desktop or at the main window of the application-under-test.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;color:#009900;"&gt;Setting Up Your Test Environment&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Any windows that are open, active, or displayed when you begin recording should be open, active, or displayed when you stop recording. This applies to all applications, including Windows Explorer, e-mail, and so on.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Robot can record the sizes and positions of all open windows when you start recording, based on the recording options settings. During playback, Robot attempts to restore windows to their recorded states and inserts a warning in the log if it cannot find a recorded window.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;In general, close any unnecessary applications before you start to record. For stress testing, however, you may want to deliberately increase the load on the test environment by having many applications open.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;color:#009900;"&gt;Creating Modular Scripts&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Rather than defining a long sequence of actions in one GUI script, you should define scripts that are short and modular. Keep your scripts focused on a specific area of testing — for example, on one dialog box or on a related set of recurring actions.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;When you need more comprehensive testing, modular scripts can easily be called from or copied into other scripts. They can also be grouped into shell scripts, which are top-level, ordered groups of scripts.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;The benefits of modular scripts are:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;They can be called, copied, or combined into shell scripts.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;They can be easily modified or rerecorded if the developers make intentional changes to the application-under-test.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;They are easier to debug.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;color:#009900;"&gt;Creating Modular Scripts with UNC&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;When projects containing GUI or Manual scripts are to be shared, create the project in a shared directory using the Uniform Naming Convention (UNC). UNC paths are required for GUI test scripts and Manual test scripts that are run on Agent computers.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-3392337172349022819?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/3392337172349022819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/3392337172349022819'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/06/recording-gui-scripts-in-rational-robot.html' title='Recording GUI Scripts in Rational Robot'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-7780025916086683794</id><published>2007-06-19T22:25:00.000-07:00</published><updated>2007-06-19T22:53:00.795-07:00</updated><title type='text'>Hosting Robot/Applications on a Terminal Server</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Robot supports the following Terminal Server environments:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Citrix MetaFrame (WIN2K)/Citrix MetaFrame client&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Microsoft Terminal Server (WIN2K)/Microsoft Terminal Server client&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Windows 2000 Server&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Windows Terminal Server (Windows NT4)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;The server hosts both the application under test and Robot. Robot runs on the client as a terminal server session. Rational Robot supports GUI script recording and playback on the server or from the client. The TestManager Log Viewer edition can be run from the server or from the client.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Trebuchet MS;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;color:#33cc00;"&gt;Starting Robot and Its Components&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:Trebuchet MS;color:#33cc00;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Before you start using Robot, you need to have:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Rational Robot installed.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;A Rational project.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#33cc00;"&gt;Logging On&lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;When you log onto Robot or one of its components, you provide your user ID and password, which are assigned by your administrator. You also specify the project to log onto.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br&gt;To log on:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;From Start &gt; Programs &gt; Rational product name, start Rational Robot or one of its components to open the Rational Login dialog box.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5078016203387562578" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" height="185" alt="" src="http://3.bp.blogspot.com/_-ti5lmkcQ1I/Rni81R6X6lI/AAAAAAAAAJM/mCufLZh2Hoc/s320/img06.jpg" width="400" border="0" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;color:#33cc00;"&gt;Opening Other Rational Products and Components&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Once you are logged onto a Robot component, you can start other products and components from either:&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5078016933532002914" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" height="421" alt="" src="http://1.bp.blogspot.com/_-ti5lmkcQ1I/Rni9fx6X6mI/AAAAAAAAAJU/KEm5mXQdzX8/s320/img07.jpg" width="400" border="0" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;Some components also start automatically when you perform certain functions in another component.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-7780025916086683794?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/7780025916086683794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/7780025916086683794'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/06/hosting-robotapplications-on-terminal.html' title='Hosting Robot/Applications on a Terminal Server'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-ti5lmkcQ1I/Rni81R6X6lI/AAAAAAAAAJM/mCufLZh2Hoc/s72-c/img06.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-3151167526599458095</id><published>2007-06-13T23:01:00.000-07:00</published><updated>2007-06-14T00:12:40.562-07:00</updated><title type='text'>Testing Applications with Rational TestFactory</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Rational TestFactory is a component-based testing tool that automatically generates TestFactory scripts according to the application’s navigational structure.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;TestFactory is integrated with Robot and its components to provide a full array of tools for team testing under Windows NT 4.0, Windows XP, Windows 2000, and Windows 98.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;With TestFactory, you can:&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Automatically create and maintain a detailed map of the application-under-test.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Automatically generate both scripts that provide extensive product coverage and scripts that encounter defects, without recording.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Track executed and unexecuted source code and report its detailed findings.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Shorten the product testing cycle by minimizing the time invested in writing navigation code.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Play back Robot scripts in TestFactory to see extended code coverage information and to create regression suites; play back TestFactory scripts in Robot to debug them.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;color:#33cc00;"&gt;Managing Defects with Rational ClearQuest&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Rational ClearQuest is a change-request management tool that tracks and manages defects and change requests throughout the development process. With ClearQuest, you can manage every type of change activity associated with software development, including enhancement requests, defect reports, and documentation modifications.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;With Robot and ClearQuest, you can:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Submit defects directly from the TestManager log or SiteCheck.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Modify and track defects and change requests.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Analyze project progress by running queries, charts, and reports.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;color:#33cc00;"&gt;Collecting Diagnostic Information During Playback&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Use the Rational diagnostic tools to perform runtime error checking, profile application performance, and analyze code coverage during playback of a Robot script.&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color:#33cc00;"&gt;Rational Purify&lt;/span&gt; is a comprehensive C/C++ runtime error checking tool that automatically pinpoints runtime errors and memory leaks in all components of an application, including third-party libraries, ensuring that code is reliable.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color:#33cc00;"&gt;Rational Quantify&lt;/span&gt; is an advanced performance profiler that provides application performance analysis, enabling developers to quickly find, prioritize, and eliminate performance bottlenecks within an application.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color:#33cc00;"&gt;Rational PureCoverage&lt;/span&gt; is a customizable code coverage analysis tool that provides detailed application analysis and ensures that all code has been exercised, preventing untested code from reaching the end user.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;color:#33cc00;"&gt;Performance Testing with Rational TestManager&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Rational TestManager is a sophisticated tool for automating performance tests on client/server systems. A client/server system includes client applications accessing a database or application server, and browsers accessing a Web server.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Performance testing uses Rational Robot and Rational TestManager. Use Robot to record client/server conversations and store them in scripts. Use TestManager to schedule and play back the scripts. During playback, TestManager can emulate hundreds, even thousands, of users placing heavy loads and stress on your database and Web servers.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Doing performance testing with TestManager, you can:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Find out if your system-under-test performs adequately.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Monitor and analyze the response times that users actually experience under different usage scenarios.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Test the capacity, performance, and stability of your server under real-world user loads.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Discover your server’s break point and how to move beyond it.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#33cc00;"&gt;&lt;strong&gt;Managing Requirements with Rational RequisitePro&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Rational RequisitePro is a requirements management tool that helps project teams control the development process. RequisitePro organizes your requirements by linking Microsoft Word to a requirements repository and providing traceability and change management throughout the project lifecycle.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Using RequisitePro, you can:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Customize the requirements database and manage multiple requirement types.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Prioritize, sort, and assign requirements.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Control feature creep and ensure software quality.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Track what changes have been made, by whom, when, and why.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Integrate with other tools, including Rose, ClearCase, Rational Unified Process., and SoDA.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-3151167526599458095?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/3151167526599458095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/3151167526599458095'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/06/testing-applications-with-rational.html' title='Testing Applications with Rational TestFactory'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-6596124053638155854</id><published>2007-06-13T22:49:00.000-07:00</published><updated>2007-06-13T23:00:16.835-07:00</updated><title type='text'>Using Robot with Other Rational Products</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Rational Robot is integrated with many other Rational products and components, including TestManager, TestFactory, ClearQuest, Purify, Quantify, PureCoverage, and RequisitePro. The products and components are available based on what you have installed.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#33cc00;"&gt;&lt;strong&gt;&lt;br /&gt;Planning and Managing Tests in TestManager&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;color:#33cc00;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Rational TestManager is the one place to manage all testing activities – planning, design, implementation, execution, and analysis. TestManager ties testing with the rest of the development effort, joining your testing assets and tools to provide a single point from which to understand the exact state of your project.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Test Manager supports five testing activities:&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color:#33cc00;"&gt;Plan Test.&lt;/span&gt; The activity of test planning is primarily answering the question, "What do I have to test?" When you complete your test planning, the result is a test plan that defines what to test. In TestManager, a test plan can contain test cases. The test cases can be organized based on test case folders.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color:#33cc00;"&gt;Design Test.&lt;/span&gt; The activity of test designing is primarily answering the question, "How am I going to do a test?" When you complete your test designing, you end up with a test design that helps you understand how you are going to perform the test case. In TestManager, you can design your test cases by indicating the actual steps that need to occur in that test. You also specify the preconditions, postconditions, and acceptance criteria.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color:#33cc00;"&gt;Implement Test.&lt;/span&gt; The activity of implementing your tests is primarily creating reusable scripts. In TestManager, you can implement your tests by creating manual scripts. You can also implement automated tests by using Rational Robot. You can extend TestManager through APIs so that you can access your own implementation tools from TestManager. Because of this extensibility, you can implement your tests by building scripts in whatever tools are appropriate in your situation and organization.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color:#33cc00;"&gt;Execute Tests.&lt;/span&gt; The activity of executing your tests is primarily running your scripts to make sure that the system functions correctly. In TestManager, you can run any of the following: (1) an individual script, which runs a single implementation; (2) one or more test cases, which run the implementations of the test cases; (3) a suite, which runs test cases and their implementations across multiple computers and users.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color:#33cc00;"&gt;Evaluate Tests.&lt;/span&gt; The activity of evaluating tests is determining the quality of the system-under-test. In TestManager, you can evaluate tests by examining the results of test execution in the test log, and by running various reports. &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Planning and managing tests is only one part of Rational TestManager. You also use TestManager to view the logs created by Robot.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-6596124053638155854?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/6596124053638155854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/6596124053638155854'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/06/using-robot-with-other-rational.html' title='Using Robot with Other Rational Products'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-5464618140697868203</id><published>2007-06-13T22:19:00.000-07:00</published><updated>2007-06-13T22:46:41.949-07:00</updated><title type='text'>Managing Intranet and Web Sites with SiteCheck and Robot</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;You use Rational SiteCheck to test the structural integrity of your intranet or World Wide Web site. SiteCheck is designed to help you view, track, and maintain your rapidly changing site.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Use SiteCheck to:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;Visualize the structure of your Web site&lt;/span&gt; &lt;/strong&gt;and display the relationship between each page and the rest of the site.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;Identify and analyze Web pages with active content,&lt;/span&gt;&lt;/strong&gt; such as forms, Java, JavaScript, ActiveX, and Visual Basic Script (VBScript).&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;Filter information&lt;/span&gt; &lt;/strong&gt;so that you can inspect specific file types and defects, including broken links.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;Examine and edit the source code&lt;/span&gt; &lt;/strong&gt;for any Web page, with color-coded text.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;Update and repair files&lt;/span&gt;&lt;/strong&gt; using the integrated editor, or configure your favorite HTML editor to perform modifications to HTML files.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;Perform comprehensive testing of secure Web sites.&lt;/span&gt;&lt;/strong&gt; SiteCheck provides Secure Socket Layer (SSL) support, proxy server configuration, and support for multiple password realms.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Robot has two verification points for use with Web sites:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Use the Web Site Scan verification point to check the content of your Web site with every revision and ensure that changes have not resulted in defects.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Use the Web Site Compare verification point to capture a baseline of your Web site and compare it to the Web site at another point in time.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;The following figures show the types of defects you can scan for using a Web Site verification point and the list of defects displayed in SiteCheck.&lt;/span&gt;&lt;/p&gt;&lt;a href="http://4.bp.blogspot.com/_-ti5lmkcQ1I/RnDSwh6X6jI/AAAAAAAAAI8/G0ZBFoI6SpE/s1600-h/img04.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5075788511225309746" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 400px; CURSOR: hand; HEIGHT: 250px" height="250" alt="" src="http://4.bp.blogspot.com/_-ti5lmkcQ1I/RnDSwh6X6jI/AAAAAAAAAI8/G0ZBFoI6SpE/s320/img04.jpg" width="400" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5075790611464317506" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: left" height="249" alt="" src="http://1.bp.blogspot.com/_-ti5lmkcQ1I/RnDUqx6X6kI/AAAAAAAAAJE/fVL3YzsQBQE/s320/img05.jpg" width="400" border="0" /&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-5464618140697868203?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/5464618140697868203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/5464618140697868203'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/06/managing-intranet-and-web-sites-with.html' title='Managing Intranet and Web Sites with SiteCheck and Robot'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-ti5lmkcQ1I/RnDSwh6X6jI/AAAAAAAAAI8/G0ZBFoI6SpE/s72-c/img04.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-3441570710260984573</id><published>2007-06-11T02:33:00.000-07:00</published><updated>2007-06-11T03:13:47.580-07:00</updated><title type='text'>Creating Datapools</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;A datapool is a source of variable test data that scripts can draw from during playback.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;If a script sends data to a server during playback, consider using a datapool as the source of the data. By accessing a datapool, a script transaction that is executed multiple times during playback can send realistic data and even unique data to the server each time. If you do not use a datapool, the same data (the exact data you recorded) is sent each time the transaction is executed.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Trebuchet MS;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;TestManager is shipped with many commonly used data types, such as cities, states, names, and telephone area codes. In addition, TestManager lets you create your own data types.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Trebuchet MS;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;When creating a datapool, you specify the kinds of data (called data types) that the script will send — for example, customer names, addresses, and unique order numbers or product names. When you finish defining the datapool, TestManager automatically generates the number of rows of data that you specify.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Trebuchet MS;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:trebuchet ms;color:#33cc00;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;Analyzing Results in the Log and Comparators&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#333333;"&gt;&lt;br&gt;You use TestManager to view the logs that are created when you run scripts and schedules.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#333333;"&gt;&lt;br&gt;Use the log to:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;&lt;br&gt;View the results of running a script,&lt;/span&gt;&lt;/strong&gt; including verification point failures, procedural failures, aborts, and any additional playback information. Reviewing the results in the log reveals whether each script and verification point passed or failed.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#333333;"&gt;&lt;br&gt;Use the Comparators &lt;/span&gt;&lt;span style="color:#333333;"&gt;to:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#333333;"&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;&lt;br&gt;Analyze the results of verification points&lt;/span&gt;&lt;/strong&gt; to determine why a script may have failed. Robot includes four Comparators:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="color:#333333;"&gt;- Object Properties Comparator&lt;br /&gt;– Text Comparator&lt;br /&gt;– Grid Comparator&lt;br /&gt;– Image Comparator&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#333333;"&gt;&lt;br&gt;When you select the line that contains the failed Object Properties verification point and click View &gt; Verification Point, the Object Properties Comparator opens, as shown in the following figure. In the Comparator, the Baseline column shows the original recording, and the Actual column shows the playback that failed. Compare the two files to determine whether the difference is an intentional change in the application or a defect.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;color:#333333;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#333333;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#333333;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#333333;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#333333;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-3441570710260984573?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/3441570710260984573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/3441570710260984573'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/06/creating-datapools.html' title='Creating Datapools'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-1715562523207585605</id><published>2007-06-06T00:50:00.000-07:00</published><updated>2007-06-06T01:30:21.235-07:00</updated><title type='text'>Developing Tests in Robot</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;You use Robot to develop two kinds of scripts: GUI scripts for functional testing and sessions for performance testing.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;Use Robot to:&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color:#009900;"&gt;Perform full functional testing.&lt;/span&gt; Record and play back scripts that navigate through your application and test the state of objects through verification points.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color:#009900;"&gt;Perform full performance testing.&lt;/span&gt; Use Rational Robot and Rational. TestManager together to record and play back sessions that help you determine whether a multiclient system is performing within user-defined standards under varying loads.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color:#009900;"&gt;Create and edit scripts using the SQABasic and VU scripting environments. &lt;/span&gt;The Robot editor provides color-coded commands with keyword Help for powerful integrated programming during script development. (VU scripting is used with sessions in performance testing.)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color:#009900;"&gt;Test applications developed with IDEs&lt;/span&gt; such as Java, HTML, Visual Basic, Oracle Forms, Delphi, and PowerBuilder. You can test objects even if they are not visible in the application’s interface.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color:#009900;"&gt;Collect diagnostic information about an application during script playback. &lt;/span&gt;Robot is integrated with Rational Purify, Rational Quantify, and Rational PureCoverage. You can play back scripts under a diagnostic tool and see the results in the log.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;The Object-Oriented Recording technology in Robot lets you generate scripts by simply running and using the application-under-test. Robot uses Object-Oriented Recording to identify objects by their internal object names, not by screen coordinates. If objects change locations or their text changes, Robot still finds them on playback.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;The following figure shows the main Robot window after you have recorded a script.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;img id="BLOGGER_PHOTO_ID_5072862088013539858" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" height="223" alt="" src="http://1.bp.blogspot.com/_-ti5lmkcQ1I/RmZtMR6X6hI/AAAAAAAAAIs/hngDLTD7hg8/s320/img02.jpg" width="400" border="0" /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;The Object Testing technology in Robot lets you test any object in the application-under-test, including the object’s properties and data. You can test standard Windows objects and IDE-specific objects, whether they are visible in the interface or hidden.&lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;In functional testing, Robot provides many types of verification points for testing the state of the objects in your application. For example, you use the Object Properties verification point to capture the properties of an object during recording, and to compare these properties during playback.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;The following figure shows the Object Properties Verification Point dialog box.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5072863999273986594" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" height="189" alt="" src="http://2.bp.blogspot.com/_-ti5lmkcQ1I/RmZu7h6X6iI/AAAAAAAAAI0/ClOOA517Ei0/s320/img03.jpg" width="400" border="0" /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-1715562523207585605?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/1715562523207585605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/1715562523207585605'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/06/developing-tests-in-robot.html' title='Developing Tests in Robot'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-ti5lmkcQ1I/RmZtMR6X6hI/AAAAAAAAAIs/hngDLTD7hg8/s72-c/img02.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-7135233194151746136</id><published>2007-06-06T00:18:00.000-07:00</published><updated>2007-06-06T00:57:15.429-07:00</updated><title type='text'>Introduction to Rational Robot</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;What Is Rational Robot?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Rational Robot is a complete set of components for automating the testing of Microsoft Windows client/server and Internet applications running under Windows NT 4.0, Windows XP, Windows 2000, and Windows 98.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;The main component of Robot lets you start recording tests in as few as two mouse clicks. After recording, Robot plays back the tests in a fraction of the time it would take to repeat the actions manually.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Other components of Robot are:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color:#009900;"&gt;Rational Administrator&lt;/span&gt; – Use to create and manage Rational projects, which store your testing information.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color:#009900;"&gt;Rational TestManager Log&lt;/span&gt; – Use to review and analyze test results.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color:#009900;"&gt;Object Properties, Text, Grid, and Image Comparators&lt;/span&gt; – Use to view and analyze the results of verification point playback.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color:#009900;"&gt;Rational SiteCheck &lt;/span&gt;– Use to manage Internet and intranet Web sites.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;color:#009900;"&gt;Managing Rational Projects with the Administrator&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;You use the Rational. Administrator to create and manage projects.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Rational projects store application testing information, such as scripts, verification points, queries, and defects. Each project consists of a database and several directories of files. All Rational Test components on your computer update and retrieve data from the same active project.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Projects help you organize your testing information and resources for easy tracking. Projects are created in the Rational Administrator, usually by someone with administrator privileges.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Use the Administrator to:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Create a project under configuration management.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Create a project outside of configuration management.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Connect to a project.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;See projects that are not on your machine (register a project).&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Delete a project.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Create and manage users and groups for a Rational Test datastore.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Create and manage projects containing Rational RequisitePro. projects and Rational Rose. models.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Manage security privileges for the entire Rational project.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Create a test datastore using SQL Anywhere. &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Convert an existing Microsoft Access test datastore to a SQL Anywhere test datastore.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;p align="justify"&gt;The following figure shows the main Rational Administrator window after you have created some projects:&lt;/p&gt;&lt;p align="justify"&gt;&lt;img id="BLOGGER_PHOTO_ID_5072853631222933986" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_-ti5lmkcQ1I/RmZlgB6X6eI/AAAAAAAAAIU/jKGpXI30DpQ/s320/img01.jpg" border="0" /&gt; &lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Summary&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;When you create a test datastore, the Rational Administrator uses Microsoft Access for the default database engine. However, if more than one user will access the test datastore simultaneously, use Sybase SQL Anywhere for the database engine. To create a test datastore using SQL Anywhere software, click Advanced Database Setup in the Create Test Datastore dialog box. See the Rational Administrator online Help for more information.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;You must install Sybase SQL Anywhere software and create a SQL Anywhere database server before you create a new SQL Anywhere test datastore or convert an existing Microsoft Access test datastore to a SQL Anywhere test datastore.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt; &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;p align="justify"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-7135233194151746136?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/7135233194151746136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/7135233194151746136'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/06/introduction-to-rational-robot.html' title='Introduction to Rational Robot'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-ti5lmkcQ1I/RmZlgB6X6eI/AAAAAAAAAIU/jKGpXI30DpQ/s72-c/img01.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-4107840908766202068</id><published>2007-05-09T00:39:00.000-07:00</published><updated>2007-05-09T00:45:05.815-07:00</updated><title type='text'>SilkTest and WinRunner Feature Descriptions Continued...</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Scripting Language&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Both tools provide proprietary, interpreted, scripting languages. Each language provide the usual flow control constructs, arithmetic and logical operators, and a variety of built-in libraryfunctions to perform such activities as string manipulation, [limited] regular expression support,standard input and output, etc. But that is where the similarity ends:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• SilkTest provides a strongly typed, object-oriented programming language called 4Test.Variables and constants may be one of 19 built-in data types, along with a user definedrecord data type. 4Test supports single- and multi-dimensional dynamic arrays and lists,which can be initialized statically or dynamically. Exception handling is built into thelanguage [via the do… except statement].&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• WinRunner provides a non-typed, C-like procedural programming language called TSL.Variables and constants are either numbers or strings [conversion between these two typesoccurs dynamically, depending on usage]. There is no user defined data type such as a recordor a data structure. TSL supports sparsely populated associative single- and [pseudo] multidimensionarrays, which can be initialized statically or dynamically—element access isalways done using string references—foobar[“1”] and foobar[1] access the sameelement [as the second access is implicitly converted to an associative string indexreference]. Exception handling is not built into the language.The only way to truly understand and appreciate the differences between these two programmingenvironments is to use and experiment with both of them.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Exception Handling&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Both tools provide the ability to handle unexpected events and errors, referred to as exceptions,but implement this feature differently:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• SilkTest’s exception handling is built into the 4Test language—using the do… exceptconstruct you can handle the exception locally, instead of [implicitly] using SilkTest’sdefault built-in exception handler [which terminates the currently running test and logs anerror]. If an exception is raised within the do block of the statement control is thenimmediately passed to the except block of code. A variety of built-in functions[LogError(), LogWarning, ExceptNum(), ExceptLog(), etc.] and 4Test statements[raise, reraise, etc.] aid in the processing of trapped exceptions within the except blockof code.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• WinRunner’s exception handling is built around&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt; (1) defining an exception based on the typeof exception (Popup, TSL, or object) and relevant characteristics about the exeception (mostoften its error number); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(2) writing an exception hander, and &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(3) enabling and disabling thatexception handler at appropriate point(s) in the code. These tasks can be achieved by handcoding or through the use of the Exception Handling visual recorder.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Test Results Analysis&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• SilkTest’s test results file resolves around the test run. For example if you run 3 testcases[via a test suite or SilkOrganizer] all of the information for that test run will be stored in asingle results file. There is a viewer to analyze the results of the last test run or X previous tothe last run. Errors captured in the results file contain a full stack trace to the failing line ofcode, which can be brought up in the editor by double-clicking on any line in that stack trace.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• WinRunner’s test results file revolves around each testcase. For example if you run 3testcases [by hand or via a batch test or TestDirector] 3 test results files are created, each in asubdirectory under its associated testcase. There is a viewer to analyze the results of a test’slast run or if results have not been deleted, a previous run. Double clicking on events in thelog often expands that entry’s information, sometimes bringing up specialized viewers [forexample when that event is some type of checkpoint or some type of failure].&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt; Managing the Testing Process&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• SilkTest has a built-in facility, SilkOrganizer, for creating a testplan and then linking thetestplan to testcases. SilkOrganizer can also be used to track the automation process andcontrol the execution of selected groups of testcases. One or more user defined attributes[such as “Test Category”, “Author”, “Module”, etc.] are assigned to each testcase and thenlater used in testplan queries to select a group of tests for execution. There is also a modestcapability to add manual test placeholders in the testplan, and then manually add pass/failstatus to the results of a full test run. SilkTest also supports a test suite, which is a filecontaining calls to one or more test scripts or other test suites.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• WinRunner integrates with a separate program called TestDirector [at a substantialadditional cost], for visually creating a test project and then linking WinRunner testcases intothat project. TestDirector is a database repository based application that provides a variety oftools to analyze and manipulate the various database tables and test results stored in therepository for the project. A bug reporting and tracking tool is included with TestDirector aswell [and this bug tracking tool supports a browser based client].Using a visual recorder, testcases are added to one or more test sets [such as “TestCategory”, “Author”, “Module”, etc.] for execution as a group. There is a robust capabilityfor authoring manual test cases [i.e. describing of each test step and its expected results],interactively executing each manual test, and then saving the pass/fail status for each teststep in the repository. TestDirector also allows test sets to be scheduled for execution at atime and date in the future, as well as executing tests remotely on other machines [this lastcapability requires the Enterprise version of TestDirector].TestDirector is also capable of interfacing with and executing LoadRunner test scripts aswell as other 3rd party test scripts [but this later capability requires custom programming viaTestDirector APIs]. Additionally TestDirector provides API’s to allow WinRunner as well asother 3rd party test tools [and programming environments] to interface with a TestDirectordatabase.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;External Files&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;When the tool’s source code files are managed with a code control tool such as PVCS or VisualSourceSafe, it is useful to understand what external side files are created:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• SilkTest implicitly creates *.*o bytecode-like executables after interpreting the source codecontained in testcases and include files [but it unlikely that most people will want to sourcecode control these files]. No side files are created in the course of using its recorders.SilkTest does though create an explicit *.bmp files for storing the expected and actualcaptured bitmap images when performing a bitmap verification.• WinRunner implicitly creates many side files using a variety of extensions [*.eve, *.hdr,*.asc, *.ckl, *.chk, and a few others] in a variety of implicitly created subdirectories[/db, /exp, /chklist, /resX] under the testcase in the course of using its visual recordersas well as storing pass/fail results at runtime.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Debugging&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Both tools support a visual debugger with the typical capabilities of breakpoints, single step, runto, step into, set out of, etc.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-4107840908766202068?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/4107840908766202068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/4107840908766202068'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/05/silktest-and-winrunner-feature_3530.html' title='SilkTest and WinRunner Feature Descriptions Continued...'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-8558507546653721129</id><published>2007-05-09T00:24:00.000-07:00</published><updated>2007-05-09T00:39:44.693-07:00</updated><title type='text'>SilkTest And WinRunner Feature Description Continued....</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Object Hierarchy&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• SilkTest supports a true object-oriented hierarchy of parent-child-grandchild-etc.relationships between windows and objects within windows. In this model an object such asa menu is the child of its enclosing window and a parent to its menu item objects.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• WinRunner, with some rare exceptions [often nested tables on web pages], has a flat objecthierarchy where child objects exist in parent windows. Note that web page frames are treatedas windows, and not child objects of the enclosing window on web pages that are constructedusing frames.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Object Recognition&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Both of these tools use a lookup table mechanism to isolate the variable name used to referencean object in a test script from the description used by the operating system to access that object atruntime:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• SilkTest normally places an application’s GUI declarations in a test frame file. There isgenerally one GUI declaration for each window and each object in a window. A GUI declaration consists of an object identifier—the variable used in a test script—and its class and object tag definition used by the operating system to access that object at runtime.SilkTest provides the following capabilities to define an object tag: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(1) a string, which caninclude wildcards; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(2) an array reference which resolves to a string which can includewildcards; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(3) a function or method call that returns a string, which can include wildcards,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(4) an object class and class relative index number; and &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(5) multiple tags [multi-tags] eachoptionally conditioned with&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(6) an OS/GUI/browser specifier [a qualification label].&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• WinRunner normally places an application’s logical name/physical descriptor definitions in a GUI Map file. There is generally one logical name/physical descriptor definition for eachwindow and each object in a window. The logical name is used to reference the object in atest script, while the physical descriptor is used by the operating system to access that objectat runtime.WinRunner provides the following capabilities to define a physical descriptor: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(1) a variablenumber of comma delimited strings which can include wildcards, where each stringidentifies one property of the object. [While there is only a single method of defining a physical descriptor, this definition can include a wide range and variable number ofobligatory, optional, and selector properties on an object by object basis].The notion behind this lookup table mechanism is to permit changes to an object tag [SilkTest]or a physical descriptor [WinRunner] definition without the need to change the associatedidentifier [SilkTest] or logical name [WinRunner] used in the testcase.In general the object tag [SilkTest] or physical descriptor [WinRunner] resolve to one or moreproperty definitions which uniquely identify the object in the context of its enclosing parentwindow at runtime.It is also possible with both tools to dynamically construct and use object tags [SilkTest] orphysical descriptors [WinRunner] at runtime to reference objects in test scripts.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Object Verification&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Both tools provide a variety of built-in library functions permitting a user to hand code simple verification of a single object property [i.e. is/is not focused, is/is not enabled, has/does not have an expected text value, etc.]. Complex multiple properties in a single object and multiple object verifications are supported using visual recorders:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• SilkTest provides a Verify Window recorder which allows any combination of objects and object properties in the currently displayed window to be selected and captured. Using this tool results in the creation, within the testcase, of a VerifyProperties() method call against the captured window.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• WinRunner provides several GUI Checkpoint recorders to validate &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(1) a single object property, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(2) multiple properties in a single object, and&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(3) multiple properties of multiple objects in a window. The single property recorder places a verification statement directly inthe test code while the multiple property recorders create unique checklist [*.ckl] files inthe /chklists subdirectory [which describe the objects and properties to capture], as wellas an associated expected results [*.chk] file in the /exp subdirectory [which contains theexpected value of each object and property defined in the checklist file].Both tools offer advanced features to define new verification properties [using mapping techniques and/or built-in functions and/or external DLL functions] and/or to customize howexisting properties are captured for standard objects.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Custom Objects&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Note: The description of this feature, more than any other in this report, is limited in its scope and coverage. An entire white paper could be dedicated to exploring and describing how each ofthese tools deal with custom objects. Therefore dedicate several days to evaluating how eachof these tools accommodate custom objects in your specific applications.To deal with a custom object [i.e. an object that does not map to standard class] both toolssupport the use of class mapping [i.e. mapping a custom class to a standard class with like functionality], along with a variety of X:Y pixel coordinate clicking techniques [some screen absolute, some object relative] to deal with bitmap objects, as well as the ability to use external DLL functions to assist in object identification and verification. Beyond these shared capabilitieseach tool has the following unique custom object capabilities:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• SilkTest has a feature to overlay a logical grid of X rows by Y columns on a graphic that has evenly spaced “hot spots”[this grid definition is then used to define logical GUI declarationsfor each hot spot]. These X:Y row/column coordinates are resolution independent [i.e. thelogical reference says “give me 4th column thing in the 2nd row”, where that grid expands orcontracts depending on screen resolution].&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• WinRunner has a built-in text recognition engine which works with most standard fonts.This capability can often be used to extract visible text from custom objects, position thecursor over a custom object, etc. This engine can also be taught non-standard font typeswhich is does understand out of the box.Both tools offer support for testing non-graphical controls through the advanced use of customDLLs [developed by the user], or the Extension Kit [SilkTest, which may have to be purchased atan addition cost] and the Mercury API Function Library [WinRunner].&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Internationalization (Language Localization)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• SilkTest supports the single-byte IBM extended ASCII character set, and its TechnicalSupport has also indicated “that Segue has no commitment for unicode”. The user guidechapter titled “Supporting Internationalized Applications” shows a straightforward techniquefor supporting X number of [single-byte IBM extended ASCII character set] languages in asingle test frame of GUI declarations.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• WinRunner provides no documentation on how to use the product to test language localizedapplications. Technical Support has indicated that &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(1) “WinRunner supports multi-bytecharacter sets for language localized testing…”,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(2) “there is currently no commitment forthe unicode character set…”, and &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(3) “it is possible to convert a US English GUI Map toanother language using a [user developed] phrase dictionary and various gui_* built-infunctions”.Check into the aspects of this feature very carefully if it is important to your testing effort.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Database Interfaces&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Both tools provide a variety of built-in functions to perform Structure Query Language (SQL)queries to control, alter, and extract information from any database which supports the OpenDatabase Connectivity (ODBC) interface.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Database Verification&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Both tools provide a variety of built-in functions to make SQL queries to extract informationfrom an ODBC compliant database and save it to a variable [or if you wish, an external file].Verification at this level is done with hand coding.WinRunner also provides a visual recorder to create a Database Checkpoint used to validate theselected contents of an ODBC compliant database within a testcase. This recorder creates sidefiles similar to GUI Checkpoints and has a built-in interface to &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(1) the Microsoft Query application [which can be installed as part of Microsoft Office], and &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(2) to the Data Junctionapplication [which may have to be purchased at an addition cost], to assist in constructing andsaving complex database queries.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Data Driven Testing&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Both tools support the notion of data-driven tests, but implement this feature differently:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• SilkTest’s implementation is built around an array of user defined records. A record is adata structure defining an arbitrary number of data items which are populated with valueswhen the array is initialized [statically or at runtime]. Non-programmers can think of anarray of records as a memory resident spreadsheet of X number of rows which contain Ynumber columns where each row/column intersection contains a data item.The test code, as well as the array itself, must be hand coded. It is also possible to populatethe array each time the test is run by extracting the array’s data values from an ODBC compliant database, using a series of built-in SQL function calls. The test then iteratesthrough the array such that each iteration of the test uses the data items from the next recordin the array to drive the test or provide expected data values.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• WinRunner’s implementation is built around an Excel compatible spreadsheet file of Xnumber of rows which contain Y number of columns where each row/column intersectioncontains a data item. This spreadsheet is referred to as a Data Table.The test code, as well as the Data Table itself, can be created with hand coding or the use ofthe DataDriver visual recorder. It is also possible to populate a Data Table file each time thetest is run by extracting the table’s data values from an ODBC compliant database using aWinRunner wizard interfaced to the Microsoft Query application.. The test then iteratesthrough the Data Table such that each iteration of the test uses the data items from the nextrow in the table to drive the test or provide expected data values.Both tools also support the capability to pass data values into a testcase for a more modestapproach to data driving a test.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Restoring an Application’s Initial State&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• SilkTest provides a built-in recovery system which restores the application to a stable state,referred to as the basestate, when the test or application under test fails ungracefully. Thedefault basestate is defined to be: (1) the application under test is running; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(2) the applicationis not minimized; and &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(3) only the application’s main window is open and active. There aremany built-in functions and features which allow the test engineer to modify, extend, andcustomize the recovery system to meet the needs of each application under test.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• WinRunner does not provide a built-in recovery system. You need to code routines to returnthe application under test to its basestate—and dismiss all orphaned dialogs—when a testfails ungracefully.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-8558507546653721129?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/8558507546653721129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/8558507546653721129'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/05/silktest-and-winrunner-feature_09.html' title='SilkTest And WinRunner Feature Description Continued....'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-9125601832157129425</id><published>2007-05-08T23:35:00.000-07:00</published><updated>2007-05-09T00:24:01.301-07:00</updated><title type='text'>Silktest And WinRunner Feature Descriptions</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;strong&gt;FEATURE DESCRIPTIONS&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;For the sake of consistency alphabetical ordering was selected to describe SilkTest features first,followed by WinRunner features in each of the following sections.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt; Startup Initialization and Configuration&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• SilkTest derives its initial startup configuration settings from its partner.ini file. Thisthough is not important because SilkTest can be reconfigured at any point in the session byeither changing any setting in the Options menu or loading an Option Set.An Option Set file (*.opt) permits customized configuration settings to be established foreach test project. The project specific Option Set is then be loaded [either interactively, orunder program control] prior to the execution of the project’s testcases.The Options menu or an Option Set can also be used to load an include file (*.inc)containing the project’s GUI Declarations along with any number of other include files containing library functions, methods, and variables sharedby all testcases.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• WinRunner derives its initial startup configuration from a wrun.ini file of settings.During startup the user is normally polled [this can be disabled] for the type of addins theywant to use during the session .The default wrun.ini file is used when starting WinRunner directly, while project specificinitializations can be established by creating desktop shortcuts which reference a projectspecific wrun.ini file. The use of customized wrun.ini files is important because once WinRunner is started with a selected set of addins you must terminate WinRunner and restart it to use a different set of addins.The startup implementation supports the notion of a startup test which can be executedduring WinRunner initialization. This allows project-specific compiled modules [memoryresident libraries] and GUI Maps to be loaded. The functions and variables contained in these modules can then be used by all tests that are run during that WinRunner session.Both tools allow most of the configuration setup established in these files to be over-ridden withruntime code in library functions or the test scripts.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Test Termination&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• SilkTest tests terminate on exceptions which are not explicitly trapped in the testcase. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;For example if a window fails to appear during the setup phase of testing [i.e. the phase drivingthe application to a verification point], a test would terminate on the first object or windowtimeout exception that is thrown after the errant window fails to appear.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• WinRunner tests run to termination [in unattended Batch mode] unless an explicit action is taken to terminate the test early. Therefore tests which ignore this termination model will continue running for long periods of time after a fatal error is encountered. For example if awindow fails to appear during the setup phase of testing, subsequent context sensitive statements [i.e. clicking on a button, performing a menu pick, etc.] will fail—but this failure occurs after a multi-second object/window “is not present” timeout expires for each missingwindow and object. [When executing tests in non-Batch mode, that is in Debug, Verify, orUpdate modes, WinRunner normally presents an interactive dialog box when implicit errorssuch as missing objects and windows are encountered].&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Addins and ExtensionsOut of the box, under Windows, both tools can interrogate and work with objects and windowscreated with the standard Microsoft Foundation Class (MFC) library. Objects and windows created using a non-MFC technology [or non-standard class naming conventions] are treated ascustom objects. But objects and windows created for web applications [i.e. applications which run in a browser],Java applications, Visual Basic applications, and PowerBuilder applications are dealt with in aspecial manner:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• SilkTest enables support for these technologies using optional extensions. Selectedextensions are enabled/disabled in the current Option Set [or the configuration established bythe default partner.ini option settings].&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• WinRunner enables support for these technologies using optional addins. Selected addins are enabled/disabled using either the Addin Manager at WinRunner startup, or by editing the appropriate wrun.ini file prior to startup.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Note that (1) some combinations of addins [WinRunner] and extensions [SilkTest] are mutuallyexclusive, (2) some of these addins/extensions may no longer be supported in the newest releasesof the tool, (3) some of these addins/extensions may only support the last one or two releases ofthe technology [for example version 5 and 6 of Visual Basic] and (4) some of these addins andextensions may have to be purchased at an addition cost.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Visual Recorders&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;SilkTest provides visual recorders and wizards for the following activities:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• Creating a test frame with GUI declarations for a full application and adding/deleting selective objects and windows in and existing GUI declarations frame file.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• Capturing user actions with the application into a test case, using either context sensitive[object relative] or analog [X:Y screen coordinate relative] recording techniques.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• Inspecting identifiers, locations and physical tags of windows and objects.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• Checking window and object bitmaps [or parts thereof].&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• Creating a verification statement [validating one or more object properties].WinRunner provides visual recorders and wizards for the following activities:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• Creating an entire GUI Map for a full application and adding/deleting selective objects andwindows in an existing GUI Map. It is also possible to implicitly create GUI Map entries bycapturing user actions [using the recorder described next].&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• Capturing user actions with the application into a test case, using either context sensitive[object relative] or analog [X:Y screen coordinate relative] recording techniques.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• Inspecting logical names, locations and physical descriptions of windows and objects.• Checking window and object bitmaps [or parts thereof].&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• Creating a GUI checkpoint [validating one or more object properties].&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• Creating a database checkpoint [validating information in a database].&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• Creating a database query [extracting information from a database].&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• Locating at runtime a missing object referenced in a testcase [and then adding that object tothe GUI Map].&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• Teaching WinRunner to recognize a virtual object [a bitmap graphic with functionality].&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• Creating Data Tables [used to drive a test from data stored in an Excel-like spreadsheet].• Checking text on a non-text object [using a built-in character recognition capability].&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• Creating a synchronization point in a testcase.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;• Defining an exception handler.Some of these recorders and wizards do not work completely for either tool against allapplications, under all conditions. For example neither tool’s recorder to create a full GUI Map[WinRunner] or test frame [SilkTest] works against large applications, or any web application.Evaluate the recorders and wizards of interest carefully against your applications if these utilitiesare important to your automated testing efforts.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-9125601832157129425?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/9125601832157129425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/9125601832157129425'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/05/silktest-and-winrunner-feature.html' title='Silktest And WinRunner Feature Descriptions'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-2739033854246293653</id><published>2007-05-04T02:12:00.000-07:00</published><updated>2007-05-04T02:16:54.463-07:00</updated><title type='text'>Selecting the best defect tracking system</title><content type='html'>The following is a general comparison overview of Bug tracking tools. It is focused particularly on the technical aspect. The aim is to help you to select the best tracking system that meets your requirement. Click on the link for a more detailed comparison between Bugzero, Bugzilla, and Gnats.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;System Architecture: &lt;/strong&gt;&lt;br /&gt;Many old bug or defect tracking systems are client server based. You need install the server, and each user need install the client software. If external users were involved, it could be problematic because of issues like firewall etc. Also, it is not always feasible to install client software.&lt;br /&gt;Newer systems are more likely web browser based and no client software need to be installed (except a browser). A web-based bug tracking system is especially attractive if your users are located in different locations and are connected through the internet.&lt;br /&gt;For a web-based bug or defect tracking system, make sure it supports the browsers your users are using. Be aware that many systems support only IE.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Server Operating System:&lt;/strong&gt;&lt;br /&gt;Most commercial bug tracking systems are Windows based. In such a case, it is likely that it requires an NT/2000/XP server and a SQL Server database. Note that, a Windows XP Professional may not be sufficient, instead, a server may be required.&lt;br /&gt;Most free bug or defect tracking systems are Linux/Unix based, and may not work as well on Windows. It may also require more technical skills to install and setup the system.&lt;br /&gt;When people say their system is cross-platform, you need make sure they meant the server. Only a very few bug tracking systems are really cross-platform (with the same code base). Some vendors claim to support multiple OS, but they have completely independent versions for each OS and that results in higher costs for the vendor and therefore higher price for the end users.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Backend Database:&lt;br /&gt;&lt;/strong&gt;Most bug or defect tracking systems require a backend database, but a few are file based. In the latter case, make sure it scales well. If someone tells you that a file based system is better than a database, think twice.&lt;br /&gt;For Windows based systems, database selection may be limited to only Access and SQL Server. On the other hand, some free systems may lock you into just one database, notably MySQL. Only a very few bug tracking systems are really cross database systems.&lt;br /&gt;Be aware of any bug tracking software that uses non-standard proprietary databases. They cannot be better than the public, commonly used database systems.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Language Support:&lt;/strong&gt;&lt;br /&gt;Many bug tracking systems do not support localization, particually, Asian langauges. Note that, it involves the web interface, the data, and the email notification.&lt;br /&gt;If you do need localization, you should find a system that can do that easily.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Web Server:&lt;br /&gt;&lt;/strong&gt;For Windows based bug tracking systems, most likely it requires IIS as the web server.&lt;br /&gt;For Java-based bug tracking systems, a Servlet or J2EE server is most likely required. There are many high quality servers you can download for free.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Programming Language:&lt;/strong&gt;&lt;br /&gt;Most of the bug tracking systems are written in either c/c++, or perl/php, or Java.&lt;br /&gt;Depending on your IT environment and skill set, the programming language may be relevant in selecting your system. For example, if you are developing Java software, it may make sense to use a Java based bug tracking system.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Version Control Integration:&lt;/strong&gt;&lt;br /&gt;Some bug tracking systems have the capability of integrating with source control systems such as CVS, Source Safe, etc.&lt;br /&gt;Be aware of the limitations, and make sure it does the things you want.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Installation and Configuration:&lt;/strong&gt;&lt;br /&gt;A bug tracking system is not a desktop application and it rarely works out-of-the-box. It is not uncommon to spend a few hours to setup such a system, and then more time to customize it.&lt;br /&gt;However, if you need only a lightweight bug tracking system, a heavy, complex, can-do-everything system is certainly a over kill and it may do more harm than good.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Maintenance and Support:&lt;/strong&gt;&lt;br /&gt;A bug tracking tool is not a super complex software system, but from time to time you may need technical support. As you certainly know, in most cases, the error messages from these systems are always cryptic, and you won't be able to solve the problem on your own.&lt;br /&gt;How is the error handled in a tool is far more important than you might think. You as the administrator may want select a tool that you feel comfortable to work with.&lt;br /&gt;When support is needed, it is always urgent to you, but not necessary to the vendor. Before you purchase the software, you should ask what is the response time for support.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Features:&lt;/strong&gt;&lt;br /&gt;Simple is the key here. The system must be simple that people like to use it, but not so complex that people avoid to use it. You might not want to deploy a tool that requires serious end user training. It is really not the initial training, rather the on-going support needed from your end users that you should be concerned with.&lt;br /&gt;Yet it should be flexible and configurable enough to satisfy your business needs. If you select a tool that cannot do whatever you intend it to do, then what is the use of it?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Cost of Ownship:&lt;/strong&gt;&lt;br /&gt;The initial cost of a bug tracking system varies from free to tens of thousands of dollars. But be aware that this is not the same as the total cost of the ownership. Some free systems charge a hefty consulting fee for support and you may end up paying much more than you planned.&lt;br /&gt;You should select a bug tracking system based on your needs, not just the price. If you know what you are doing and do not need commercial support, go for a free one if it meets your requirement.&lt;br /&gt;However, if you unfortunately selected a bad one, you better get out of it as soon as possible, because the longer you keep it, the more moeny and time you will have to spend on it.&lt;br /&gt;In any case, spending many days to setup a free system or even weeks or months to create an in-house system makes no business and economic sense, because if you consider the time spent, you are actually paying much more than just buying one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-2739033854246293653?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/2739033854246293653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/2739033854246293653'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/05/selecting-best-defect-tracking-system.html' title='Selecting the best defect tracking system'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-4816922204253732450</id><published>2007-05-04T02:02:00.000-07:00</published><updated>2007-05-04T02:12:38.529-07:00</updated><title type='text'>WinRunner Tips</title><content type='html'>&lt;strong&gt;WinRunner Fundamentals&lt;br /&gt;&lt;/strong&gt;The 5 major areas to know for WinRunner are listed below with SOME of the subtopics called out for each of the major topics: &lt;br /&gt;1) GUI Map&lt;br /&gt;- Learning objects&lt;br /&gt;- Mapping custom objects to standard objects&lt;br /&gt;2) Record/Playback&lt;br /&gt;- Record modes: Context Sensitive and Analog&lt;br /&gt;- Playback modes: (Batch), Verify, Update, Debug&lt;br /&gt;3) Synchronization&lt;br /&gt;- Using wait parameter of functions&lt;br /&gt;- Wait window/object info&lt;br /&gt;- Wait Bitmap&lt;br /&gt;- Hard wait()&lt;br /&gt;4) Verification/Checkpoints&lt;br /&gt;- window/object GUI checkpoints&lt;br /&gt;- Bitmap checkpoints&lt;br /&gt;- Text checkpoints (requires TLS)&lt;br /&gt;5) TLS (Test Script Language)&lt;br /&gt;- To enhance scripts (flow control, parameterization, data driven test, user defined functions,...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Calling Scripts and Expected Results&lt;/strong&gt;&lt;br /&gt;When running in non-batch mode, WinRunner will always look in the calling scripts \exp directory for the checks. When running in batch mode, WinRunner will look in the called script's \exp directory.&lt;br /&gt;There is a limitation, though. WinRunner will only look in the called script's \exp directory one call level deep. For example, in bacth mode: script1:&lt;br /&gt;gui_check(...); #will look in script1\exp&lt;br /&gt;call "script2" ();&lt;br /&gt;script2:&lt;br /&gt;gui_check(...); #will look in script2\exp&lt;br /&gt;call "script3" ();&lt;br /&gt;script3:&lt;br /&gt;gui_check(...); #will look in script2\exp (and cause an error)&lt;br /&gt;In non bacth mode:&lt;br /&gt;script1:&lt;br /&gt;gui_check(...); #will look in script1\exp&lt;br /&gt;call "script2" ();&lt;br /&gt;script2:&lt;br /&gt;gui_check(...); #will look in script1\exp (and cause an error)&lt;br /&gt;call "script3" ();&lt;br /&gt;script3:&lt;br /&gt;gui_check(...); #will look in script1\exp (and cause an error)&lt;br /&gt;&lt;a name="RunMode"&gt;&lt;br /&gt;&lt;strong&gt;Run Modes&lt;br /&gt;&lt;/strong&gt;Batch mode will write results to the individual called test.&lt;br /&gt;Interactive (non-batch) mode writes to the main test. &lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Data Types&lt;/strong&gt;&lt;br /&gt;TSL supports two data types: numbers and strings, and you do not have to declare them. Look at the on-line help topic for some things to be aware of:&lt;br /&gt;"TSL Language", "Variables and Constants", "Type (of variable or constant)"&lt;br /&gt;Generally, you shouldn't see any problems with comparisons.&lt;br /&gt;However, if you perform arithmetic operations you might see some unexpected behavior (again check out the on-line help mentioned above). var="3abc4";rc=var + 2; # rc will be 5 :-)&lt;br /&gt;&lt;a name="Debugging"&gt;&lt;br /&gt;&lt;strong&gt;Debugging&lt;/strong&gt;&lt;br /&gt;When using pause(x); for debugging, wrap the variable with brackets to easily see if "invisible" characters are stored in the variable (i.e., \n, \t, space, or Null) pause("[" &amp; x &amp;amp; "]");&lt;br /&gt;Use the debugging features of WinRunner to watch variables. "invisible" characters will show themselves (i.e., \n, \t, space) Examples:&lt;br /&gt;Variable&lt;br /&gt;pause(x);&lt;br /&gt;pause("[" &amp; x &amp;amp; "]");&lt;br /&gt;x="a1";&lt;br /&gt;a1&lt;br /&gt;[a1]&lt;br /&gt;x="a1 ";&lt;br /&gt;a1&lt;br /&gt;[a1 ]&lt;br /&gt;x="a1\t";&lt;br /&gt;a1&lt;br /&gt;[a1    ]&lt;br /&gt;x="a1\n";&lt;br /&gt;a1&lt;br /&gt;[a1]&lt;br /&gt;x="";&lt;br /&gt;&lt;br /&gt;[]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Block Comments&lt;br /&gt;&lt;/strong&gt;To temporarily comment out a block of code use:     if (TRUE)     {     ... block of code to be commented out!!     }&lt;br /&gt;&lt;a name="DataDrivenTest"&gt;&lt;br /&gt;&lt;strong&gt;Data Driven Test ddt_* functions vs getline/split&lt;/strong&gt;&lt;br /&gt;These bothfunctions do almost the same thing. There are some agruably good benefits to using ddt_* , but most of them are focused on the data management. In general you can always keep the data in Excel and perform a Save As to convert the file to a delimited text file.&lt;br /&gt;One major difference is in the performance of playing back a script that has a huge data file. The ddt_* functions currently can not compare to the much faster getline/split method.&lt;br /&gt;But here is an area to consider: READABILITY I personally do not like scripts with too many nested function calls (which the parameterize value method does) because it may reduce the readability for people with out a programming background. Example:&lt;br /&gt;edit_set("FirstName", ddt_val(table, "FirstName"));&lt;br /&gt;edit_set("LastName", ddt_val(table, "LastName"));&lt;br /&gt;So what I typically do is, declare my own variables at the beginning of the script, assign the values to them, and use the variable names in the rest of the script. It doesn't matter if I'm using the getline/split or ddt_val functions. This also is very useful when I may need to change the value of a variable, because they are all initialized at the top of the script (whenever possible). Example with ddt_* functions in a script:&lt;br /&gt;FIRSTNAME=ddt_val(table, "FirstName");&lt;br /&gt;LASTNAME=ddt_val(table, "LastName");&lt;br /&gt;...&lt;br /&gt;edit_set("FirstName", FIRSTNAME);&lt;br /&gt;edit_set("LastName", LASTNAME);&lt;br /&gt;And most of the time I have a driving test which calls another test and passes an array of data to be used to update a form. Example with ddt_* functions before calling another&lt;br /&gt;script:&lt;br /&gt;# Driver script will have&lt;br /&gt;...&lt;br /&gt;MyPersonArray [ ] =&lt;br /&gt;{&lt;br /&gt;"FIRSTNAME" = ddt_val(table, "FirstName");&lt;br /&gt;"LASTNAME" = ddt_val(table, "LastName");&lt;br /&gt;}&lt;br /&gt;call AddPerson(MyPersonArray)&lt;br /&gt;...&lt;br /&gt;# Called script will have&lt;br /&gt;edit_set("FirstName", Person["FIRSTNAME"]);&lt;br /&gt;edit_set("LastName", Person["LASTNAME"]);&lt;br /&gt;So as you can see, there are many ways to do the same thing. What people must keep in mind is the skill level of the people that may inherit the scripts after they are created. And a consistent method should be used throughout the project.&lt;/a&gt;&lt;br /&gt;&lt;a name="StringVsNumber"&gt;&lt;br /&gt;&lt;strong&gt;String Vs Number Comparison&lt;/strong&gt; &lt;/a&gt;&lt;br /&gt;String Vs Number comparisons are not a good thing to do.&lt;br /&gt;Try this sample to see why:&lt;br /&gt;c1=47.88 * 6;&lt;br /&gt;c2="287.28";&lt;br /&gt;#Prints a decimal value while suppressing non-significant zeros&lt;br /&gt;#and converts the float to a string.&lt;br /&gt;c3 = sprintf ("%g", c1);&lt;br /&gt;&lt;br /&gt;pause ("c1 = [" &amp; c1 &amp;amp; "]\nc2 = [" &amp; c2 &amp;amp; "]\nc3 = [" &amp; c3 &amp;amp; "]\n" &amp; "c1 - c2 =&lt;br /&gt;[" &amp;amp; c1 - c2 &amp; "]\nc1 - c3 = [" &amp;amp; c1 - c3 &amp; "]\nc2 - c3 = [" &amp;amp; c2 - c3 &amp; "]");&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-4816922204253732450?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/4816922204253732450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/4816922204253732450'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/05/winrunner-tips.html' title='WinRunner Tips'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-7557305043748720086</id><published>2007-03-15T02:46:00.000-07:00</published><updated>2007-03-15T02:50:33.278-07:00</updated><title type='text'>Text Checkpoint Tips</title><content type='html'>• Before you create a script that reads text, determine where the text is located. If&lt;br /&gt;the text is part of a standard GUI object, use a GUI checkpoint or TSL function&lt;br /&gt;such as edit_get_text or button_get_info. If the text is part of a non-standard&lt;br /&gt;GUI object, use the Create &gt; Get Text &gt; From Object/Window command. If the&lt;br /&gt;text is part of a bitmap, use the Create &gt; Get Text &gt; From Screen Area&lt;br /&gt;command.&lt;br /&gt;• When WinRunner reads text from the application, the text appears in the script&lt;br /&gt;as a comment (a comment is preceded by #). If the comment #no text was&lt;br /&gt;found appears in the script, WinRunner does not recognize your application font.&lt;br /&gt;Use the Font Expert to teach WinRunner this font.&lt;br /&gt;• TSL includes additional functions that enable you to work with text such as&lt;br /&gt;win_find_text, obj_find_text, and compare_text. For more information, refer&lt;br /&gt;to the "Checking Text" chapter in your WinRunner User’s Guide.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-7557305043748720086?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/7557305043748720086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/7557305043748720086'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/03/text-checkpoint-tips.html' title='Text Checkpoint Tips'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-2161668784921620657</id><published>2007-03-15T02:36:00.000-07:00</published><updated>2007-03-15T02:46:40.371-07:00</updated><title type='text'>Running the Test on a New Version</title><content type='html'>Once the test script is debugged, you can run it on a new version of the Flight&lt;br /&gt;Reservation application.&lt;br /&gt;&lt;strong&gt;1 Open version 1B of the Flight Reservation application.&lt;br /&gt;&lt;/strong&gt;Choose Programs &gt; WinRunner &gt; Sample Applications &gt; Flight 1B on the&lt;br /&gt;Start menu. In the Login window, type your name and the password mercury,&lt;br /&gt;and click OK. Reposition the Flight Reservation application and WinRunner so&lt;br /&gt;that they are both clearly visible on your desktop.&lt;br /&gt;&lt;strong&gt;2 In WinRunner, select Verify mode from the Run Mode list on the Standard&lt;br /&gt;toolbar.&lt;/strong&gt;&lt;br /&gt;Verify mode will stay in effect until you select a different mode.&lt;br /&gt;&lt;strong&gt;3 Choose Run from Top.&lt;br /&gt;&lt;/strong&gt;Choose Run &gt; Run from Top, or click the Run from Top button. The Run Test&lt;br /&gt;dialog box opens. Accept the default test run name "res1." Make sure that the&lt;br /&gt;Display Test Results at End of Run check box is selected.&lt;br /&gt;&lt;strong&gt;4 Run the test.&lt;/strong&gt;&lt;br /&gt;Click OK in the Run Test dialog box. The test run begins.&lt;br /&gt;&lt;strong&gt;5 Review the test results.&lt;br /&gt;&lt;/strong&gt;The test fails because the graph was not updated after WinRunner placed an&lt;br /&gt;order for one ticket. WinRunner read the total number of orders from the graph&lt;br /&gt;and concluded that the text is incorrect.&lt;br /&gt;&lt;strong&gt;6 Close the Test Results window.&lt;/strong&gt;&lt;br /&gt;Choose File &gt; Exit.&lt;br /&gt;&lt;strong&gt;7 Close the lesson9 test.&lt;br /&gt;&lt;/strong&gt;Choose File &gt; Close.&lt;br /&gt;&lt;strong&gt;8 Close version 1B of the Flight Reservation application.&lt;br /&gt;&lt;/strong&gt;Choose File &gt; Exit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-2161668784921620657?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/2161668784921620657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/2161668784921620657'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/03/running-test-on-new-version_15.html' title='Running the Test on a New Version'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-4946984444017683402</id><published>2007-03-15T02:33:00.000-07:00</published><updated>2007-03-15T02:36:32.030-07:00</updated><title type='text'>Verifying Text</title><content type='html'>In this exercise you add an if/else statement to the test script in order to determine&lt;br /&gt;whether the total was updated in the graph after you placed an order.&lt;br /&gt;&lt;strong&gt;1 In the first obj_get_text statement in the lesson9 test script, change the&lt;br /&gt;text variable to first_total.&lt;br /&gt;2 In the second obj_get_text statement in the test script, change the text&lt;br /&gt;variable to new_total.&lt;br /&gt;3 Place the cursor below the last line of the script.&lt;br /&gt;4 Add the following statements to the test script exactly as they appear&lt;br /&gt;below.&lt;br /&gt;&lt;/strong&gt;if (new_total == first_total + 1)&lt;br /&gt;tl_step ("graph total", 0, "Total is correct.");&lt;br /&gt;else&lt;br /&gt;tl_step ("graph total", 1, "Total is incorrect.");&lt;br /&gt;In plain English, these statements mean "If new_total equals first_total plus 1,&lt;br /&gt;report that the total is correct, otherwise (else) report that the total is incorrect."&lt;br /&gt;&lt;strong&gt;5 Add a comment to describe what this section of the script will do.&lt;br /&gt;&lt;/strong&gt;Place the cursor above the if statement you added in the previous step. Choose&lt;br /&gt;Edit &gt; Comment. After the # sign, type: check that graph total increments by&lt;br /&gt;one.&lt;br /&gt;&lt;strong&gt;6 Save the test.&lt;/strong&gt;&lt;br /&gt;Choose File &gt; Save or click the Save button.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Debugging the Test Script&lt;br /&gt;&lt;/strong&gt;You should now run the test in Debug mode in order to check for errors in syntax&lt;br /&gt;and logic. If any error messages appear, look over the test script and try to fix the&lt;br /&gt;problem.&lt;br /&gt;&lt;strong&gt;1 Select Debug mode from the Run Mode list on the Standard toolbar.&lt;br /&gt;&lt;/strong&gt;Debug mode will stay in effect until you select a different mode.&lt;br /&gt;&lt;strong&gt;2 Run the test.&lt;/strong&gt;&lt;br /&gt;Choose Run &gt; Run from Top or click the Run from Top button. If you prefer to&lt;br /&gt;run the test line by line, use the Step button.&lt;br /&gt;&lt;strong&gt;3 Review the test results in the WinRunner Test Results window.&lt;br /&gt;&lt;/strong&gt;Choose Tools &gt; Test Results or click the Test Results button. The WinRunner&lt;br /&gt;Test Results window displays the results of the Debug test run.&lt;br /&gt;If the tl_step event failed, a problem exists in the test script. Examine the script&lt;br /&gt;and try to fix the problem.&lt;br /&gt;&lt;strong&gt;4 Close the Test Results window.&lt;/strong&gt;&lt;br /&gt;Choose File &gt; Exit in the WinRunner Test Results window.&lt;br /&gt;&lt;strong&gt;5 Exit the Flight Reservation application.&lt;br /&gt;&lt;/strong&gt;Choose File &gt; Exit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-4946984444017683402?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/4946984444017683402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/4946984444017683402'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/03/verifying-text.html' title='Verifying Text'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-3285795444010281121</id><published>2007-03-15T02:29:00.000-07:00</published><updated>2007-03-15T02:33:15.025-07:00</updated><title type='text'>Teaching Fonts to WinRunner</title><content type='html'>In the following exercise you will teach WinRunner the font used by the Flights&lt;br /&gt;Reservation application.&lt;br /&gt;Note that you only need to perform this exercise now if WinRunner did not&lt;br /&gt;recognize text in the previous exercise. In general, you only need to teach fonts&lt;br /&gt;to WinRunner if it does not automatically recognize the fonts in the application you&lt;br /&gt;are testing.&lt;br /&gt;To teach a font to WinRunner you:&lt;br /&gt;• learn the set of characters (font) used by your application&lt;br /&gt;• create a font group, a collection of fonts grouped together for specific testing&lt;br /&gt;purposes&lt;br /&gt;• activate the font group by adding the setvar TSL function to a test script&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Learning Fonts&lt;/strong&gt;&lt;br /&gt;You use the WinRunner Fonts Expert to learn the fonts used by your application.&lt;br /&gt;&lt;strong&gt;1 Start WinRunner and open a new test.&lt;br /&gt;&lt;/strong&gt;If WinRunner is not already open, choose Programs &gt; WinRunner &gt;&lt;br /&gt;WinRunner on the Start menu. If the Welcome window is open, click the New&lt;br /&gt;Test button. Otherwise, choose File &gt; New. A new test window opens.&lt;br /&gt;&lt;strong&gt;2 Open the Fonts Expert.&lt;br /&gt;&lt;/strong&gt;In WinRunner, choose Tools &gt; Fonts Expert. The Font Expert window opens.&lt;br /&gt;&lt;strong&gt;3 Open the Learn Font window.&lt;/strong&gt;&lt;br /&gt;In the Fonts Expert, choose Font &gt; Learn. The Learn Fonts window opens.&lt;br /&gt;&lt;strong&gt;4 Name the font in the Flight Reservation flights.&lt;br /&gt;&lt;/strong&gt;In the Font Name box, type flights.&lt;br /&gt;&lt;strong&gt;5 Describe the properties of the flights font.&lt;/strong&gt;&lt;br /&gt;Click the Select Font button to open the Font dialog box. The Flight Reservation&lt;br /&gt;font is MS Sans Serif, Bold, 8 points. Select these properties in the window and&lt;br /&gt;click OK.&lt;br /&gt;&lt;strong&gt;6 Learn the flights font.&lt;br /&gt;&lt;/strong&gt;In the Learn Font window, click the Learn Font button. When the learn process&lt;br /&gt;is completed, the Existing Characters box displays the characters learned and&lt;br /&gt;the Properties box displays the font’s properties.&lt;br /&gt;&lt;strong&gt;7 Close the Learn Fonts window.&lt;br /&gt;&lt;/strong&gt;Click Close.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Creating a Font Group&lt;br /&gt;&lt;/strong&gt;After WinRunner learns a font, you must assign it to a font group. A font group can&lt;br /&gt;contain one or more fonts. In this exercise you will create a font group which&lt;br /&gt;contains only the flights font.&lt;br /&gt;&lt;strong&gt;1 Open the Font Groups window.&lt;/strong&gt;&lt;br /&gt;In the Fonts Expert, choose Font &gt; Groups.&lt;br /&gt;&lt;strong&gt;2 Create a Font Group called flt_res and assign the flights font to it.&lt;br /&gt;&lt;/strong&gt;Type the name flt_res into the Group Name field. Select "flights" in the Fonts in&lt;br /&gt;Library box. Click the New button.&lt;br /&gt;&lt;strong&gt;3 Close the Font Groups window and the Fonts Expert.&lt;/strong&gt;&lt;br /&gt;Click Close.&lt;br /&gt;&lt;strong&gt;4 Close the Fonts Expert.&lt;br /&gt;&lt;/strong&gt;Choose Font &gt; Exit.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Activating a Font Group&lt;br /&gt;&lt;/strong&gt;The final step before you can read text is to activate the font group. You do this in&lt;br /&gt;the General Options dialog box.&lt;br /&gt;&lt;strong&gt;1 Open a blank test window in WinRunner.&lt;/strong&gt;&lt;br /&gt;If a blank test window is not currently open, choose File &gt; New.&lt;br /&gt;&lt;strong&gt;2 Activate the flt_res font group and the Image Text Recognition mechanism.&lt;br /&gt;&lt;/strong&gt;Choose Settings &gt; General Options. In the General Options dialog box, click&lt;br /&gt;the Text Recognition tab. Select the Use Image Text Recognition Mechanism&lt;br /&gt;check box. In the Font Group box, type flt_res, and click OK.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-3285795444010281121?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/3285795444010281121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/3285795444010281121'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/03/teaching-fonts-to-winrunner.html' title='Teaching Fonts to WinRunner'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-8439905076513713969</id><published>2007-03-13T00:16:00.000-07:00</published><updated>2007-03-13T00:34:31.091-07:00</updated><title type='text'>Reading Text from an Application</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_-ti5lmkcQ1I/RfZTKTDYfhI/AAAAAAAAAIE/RugLwcYLjYQ/s1600-h/1.gif"&gt;&lt;/a&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;In this exercise you will record the process of opening the graph in the Flight Reservation application to read the total number of tickets sold, creating a new order, and opening the graph again. In the next exercise you will add programming elements to the test script that verify the text in the graph.&lt;br /&gt;Note that in order for WinRunner to read text on computers with certain display drivers, including ATI, you must learn the fonts in the Flight Reservation application before you can perform this exercise. If WinRunner fails to read text in the exercise below, stop the exercise, follow the instructions in "Teaching Fonts to WinRunner" in the next section, and then repeat this exercise from the beginning.&lt;br /&gt;&lt;strong&gt;1 Start WinRunner and open a new test.&lt;br /&gt;&lt;/strong&gt;If WinRunner is not already open, choose Programs &gt; WinRunner &gt; WinRunner on the Start menu. If the Welcome window is open, click the New Test button. Otherwise, choose File &gt; New. A new test window opens.&lt;br /&gt;&lt;strong&gt;2 Open the Flight Reservation application and log in.&lt;br /&gt;&lt;/strong&gt;Choose Programs &gt; WinRunner &gt; Sample Applications &gt; Flight 1A on the Start menu. In the Login window, type your name and the password mercury, and click OK. Reposition the Flight Reservation application and WinRunner so that they are both clearly visible on your desktop.&lt;/div&gt;&lt;div&gt;&lt;strong&gt;3 Start recording in Context Sensitive mode.&lt;br /&gt;&lt;/strong&gt;Choose Create &gt; Record—Context Sensitive or click the Record button.&lt;br /&gt;&lt;strong&gt;4 Open the graph.&lt;br /&gt;&lt;/strong&gt;In the Flight Reservation application, choose Analysis &gt; Graphs.&lt;br /&gt;&lt;strong&gt;5 Read the total from the graph.&lt;br /&gt;&lt;/strong&gt;In WinRunner, choose Create &gt; Get Text &gt; From Screen Area, or click the Get Text From Screen Area button on the User toolbar.&lt;br /&gt;Use the crosshairs pointer and the left mouse button to drag a rectangle around the total. Click the right mouse button to finish the operation.&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5041306031588146642" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_-ti5lmkcQ1I/RfZRIDDYfdI/AAAAAAAAAHk/Fhpy8xC75Es/s320/1.gif" border="0" /&gt; &lt;div&gt;WinRunner inserts an obj_get_text statement into the test script. The text appears in the script as a comment.&lt;/div&gt;&lt;div&gt;&lt;strong&gt;6 Close the graph.&lt;br /&gt;7 Create a new order.&lt;br /&gt;&lt;/strong&gt;Choose File &gt; New Order in the Flight Reservation application.&lt;/div&gt;&lt;div&gt;&lt;strong&gt;8 Enter flight and passenger information.&lt;/strong&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5041307264243760610" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_-ti5lmkcQ1I/RfZSPzDYfeI/AAAAAAAAAHs/hEnAuXwU-TY/s320/1.gif" border="0" /&gt; &lt;div&gt;&lt;strong&gt;9 Insert the order into the database.&lt;br /&gt;&lt;/strong&gt;Click the Insert Order button. When the insertion is complete, the message "Insert Done" appears in the status bar:&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5041307612136111602" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_-ti5lmkcQ1I/RfZSkDDYffI/AAAAAAAAAH0/2r8gfV-8DHA/s320/1.gif" border="0" /&gt; &lt;div&gt;&lt;strong&gt;10 Synchronize the test so that it waits for the "Insert Done" message to appear in the status bar.&lt;br /&gt;&lt;/strong&gt;In WinRunner, choose the Create &gt; Synchronization Point &gt; For Object/Window Bitmap command or click the Synchronization Point For Object/Window Bitmap button on the User toolbar.&lt;br /&gt;Use the pointer to click the "Insert Done" message.&lt;br /&gt;&lt;strong&gt;11 Open the graph again.&lt;br /&gt;&lt;/strong&gt;Choose Analysis &gt; Graphs.&lt;br /&gt;&lt;strong&gt;12 Read the total from the graph.&lt;/strong&gt;&lt;br /&gt;Choose Create &gt; Get Text &gt; From Screen Area, or click the Get Text From Screen Area button on the User toolbar.&lt;/div&gt;&lt;div&gt;Use the crosshairs pointer and the left mouse button to drag a rectangle around the total.&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5041307878424083970" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_-ti5lmkcQ1I/RfZSzjDYfgI/AAAAAAAAAH8/Y5LJu16sI4A/s320/1.gif" border="0" /&gt; &lt;div&gt;Click the right mouse button to finish the operation. WinRunner inserts an obj_get_text statement into the test script.&lt;br /&gt;&lt;strong&gt;13 Close the graph.&lt;br /&gt;14 Stop recording.&lt;/strong&gt;&lt;br /&gt;Choose Create &gt; Stop Recording or click the Stop button.&lt;/div&gt;&lt;div&gt;&lt;strong&gt;15 Save the test.&lt;br /&gt;&lt;/strong&gt;Choose File &gt; Save or click the Save button. Name the test lesson9 and click Save.&lt;br /&gt;&lt;strong&gt;16 If you are working in the Global GUI Map File mode, save the new objects to the GUI map.&lt;br /&gt;&lt;/strong&gt;Choose Tools &gt; GUI Map Editor. Choose View &gt; GUI Files. Choose File &gt; Save. Click Yes or OK to add the new object or new window to your GUI map.&lt;br /&gt;Choose File &gt; Exit to close the GUI Map Editor. &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5041308269266107922" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_-ti5lmkcQ1I/RfZTKTDYfhI/AAAAAAAAAIE/RugLwcYLjYQ/s320/1.gif" border="0" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-8439905076513713969?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/8439905076513713969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/8439905076513713969'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/03/reading-text-from-application.html' title='Reading Text from an Application'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-ti5lmkcQ1I/RfZRIDDYfdI/AAAAAAAAAHk/Fhpy8xC75Es/s72-c/1.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-7876789432212947567</id><published>2007-03-13T00:12:00.000-07:00</published><updated>2007-03-13T00:15:51.577-07:00</updated><title type='text'>How Do You Read Text from an Application?</title><content type='html'>You can read text from any bitmap image or GUI object by adding text checkpoints to a test script. A text checkpoint reads the text from the application. You then add programming elements to the test script, which verify that the text is correct.&lt;br /&gt;For example, you can use a text checkpoint to:&lt;br /&gt;• verify a range of values&lt;br /&gt;• calculate values&lt;br /&gt;• perform certain operations only if specified text is read from the screen&lt;br /&gt;To create a text checkpoint, you indicate the area, object, or window that contains the text you want to read.&lt;br /&gt;WinRunner inserts a win_get_text or obj_get_text statement into the test script and assigns the text to a variable. To verify the text you add programming elements to the script.&lt;br /&gt;Note that when you want to read text from a standard GUI object (such as an edit field, a list, or a menu), you should use a GUI checkpoint, which does not require programming. Use a text checkpoint only when you want to read text from a bitmap image or a non-standard GUI object.&lt;br /&gt;In the following exercises you create a test that:&lt;br /&gt;. opens a graph and reads the total number of tickets sold&lt;br /&gt;. creates a new order for the purchase of one ticket&lt;br /&gt;. opens the graph again and checks that the total number of tickets sold was updated&lt;br /&gt;. reports whether the number is correct or incorrect&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-7876789432212947567?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/7876789432212947567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/7876789432212947567'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/03/how-do-you-read-text-from-application.html' title='How Do You Read Text from an Application?'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry><entry><id>tag:blogger.com,1999:blog-5401578554988570599.post-882692985933838682</id><published>2007-03-13T00:10:00.000-07:00</published><updated>2007-03-13T00:11:38.346-07:00</updated><title type='text'>Reading Text</title><content type='html'>&lt;strong&gt;Reading Text&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This lesson:&lt;br /&gt;• describes how you can read text from bitmaps and non-standard GUI objects&lt;br /&gt;• shows you how to teach WinRunner the fonts used by an application&lt;br /&gt;• lets you create a test which reads and verifies text&lt;br /&gt;• lets you run the test and analyze the results&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5401578554988570599-882692985933838682?l=test-techtools.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/882692985933838682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5401578554988570599/posts/default/882692985933838682'/><link rel='alternate' type='text/html' href='http://test-techtools.blogspot.com/2007/03/reading-text.html' title='Reading Text'/><author><name>Jack Rial</name><uri>http://www.blogger.com/profile/10335163916901068680</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02796587169055135597'/></author></entry></feed>