 |
Release notes
This document lists changes to QF-Test since version 3.0.
Development and Production Versions
Currently there are two versions of QF-Test available. The development version always
includes the latest features. On a production branch, new versions are released mainly to
fix bugs. Only very few new features are added there and these are typically small. Both
versions are tested equally well. The production version is more stable insofar as it
undergoes fewer and less significant changes and its larger user-base has had more time to
find bugs.
Please see Upgrades for further
information.
Full Releases and Patches
Even with the conservative approach of separate development and production versions there
remains a certain conflict on interests. On one hand, bug-fixes should become available as
early as possible. However, most problems affect a minority only and the rest usually
prefer collective updates at longer intervals. To accommodate both there are typically two
kinds of releases on a production branch:
 |
Full maintenance releases like version 3.0.1 are released about every 6-10 weeks
with a complete collection of changes accumulated during that period. In case of severe
bugs a full maintenance version will be released as soon as the bug is fixed.
Maintenance releases are announced publicly on the newsletter and the website.
|
 |
At irregular intervals, patch versions like 3.0.0-p1 are released to provide the latest
changes to those who need them. These are announced on the QF-Test mailing list only (more
about the QF-Test mailing list).
|
During development of new features or bug-fixes it is often necessary to solicit feedback
from users. To that end, experimental patches are sometimes released to individual
customers or, if of general interest, via the mailing list.
A patch is a very small set of changes relative to a given QF-Test version. It is provided
in the form of a ZIP archive which is extracted over an existing QF-Test installation.
There is only one ZIP file for all operating systems and installing a patch causes far
less overhead than upgrading to a new QF-Test release.
A patch is always a temporary solution. The next full maintenance release will include all
working fixes from patches since the last release and thus supersede previous patches.
We always run a full set of tests against official patches. However, due to the shorter
release cycles patches cannot be quite as well tested as full releases. If you encounter
problems after installing a patch, you can usually disable the patch by removing the file
.../qftest/qftest-x.y.z/qflib/patch.jar. Please report all problems with
patches to qftest-bug@qfs.de or to the mailing
list.
Version 3.1.4 - February 9, 2010
New features:
 |
It is no longer necessary to instrument standard JDKs or JREs, though it doesn't
hurt to keep existing instrumentation.
|
 |
Support was added for the latest Eclipse/SWT version 3.6.
|
 |
QF-Test now supports Firefox 3.6.
|
 |
The new part II 'Best Practices' in the manual describes recommended procedures based on
lessons learned from several customer projects and user feedback that will hopefully
help you to find the best strategy for using QF-Test in your own projects.
|
 |
Reports have been restructured and further extended. 'Check' nodes now have an
optional 'Name' attribute for their representation in the report. Besides, the
performance of report creation has been drastically improved and its memory impact
reduced.
|
 |
The tree display in run-logs now shows expanded values instead of variables. This can be
toggled via the »View« menu.
|
 |
Compactification for run-logs is now more efficient and special placeholder log entries
show where nodes were removed during compactification.
|
 |
Support for the Eclipse Graphical Editing Framework (GEF) is now included by default and
works correctly with multiple concurrent GEF editors.
|
 |
The new procedure qfs.web.input.fileUpload in the standard library
qfs.qft handles INPUT:FILE nodes for the various
browser variants.
|
 |
TestLink integration has been simplified.
|
 |
For Swing and SWT tables and multi-column trees it is now possible to check a whole row
at once.
|
 |
ExtraFeatureResolvers can now also be used for SWT and Swing.
|
 |
The standard library qfs.qft now includes wrapper procedures for the autowin
module in the package qfs.autowin. These can be used to check for the
existence of a window and to close it on Windows systems.
|
 |
The runid of the current test-run now is now available via ${qftest:runid}.
|
 |
Special variables or properties of type group:name can now be used for
'Characteristic variables'.
|
 |
For nodes like 'Test-step' or 'Test-set' with several tabs for variable bindings the
number of bound variables is now displayed in the tab which makes it much easier to
locate those bindings.
|
Bugs fixed:
 |
Several causes for IE crashes were fixed.
|
 |
Wait for absence now works correctly for invisible nodes.
|
 |
QF-Test doesn't get blocked as easily when the SUT generates a lot of output and the
JTextArea for the shared terminal cannot keep up.
|
 |
The internal variable stack of QF-Test could get messed up in some special cases.
|
 |
The procedure builder now correctly handles '_' characters in package or class names.
|
Version 3.1.3 - December 1, 2009
New features:
 |
The new 'Test-step' node can be used to provide further structure and document tests
below 'Test-cases'. 'Test-steps' are listed individually in the report unless deactivated
with -report.teststeps. Similar effects can be achieved by marking
arbitrary nodes with the doctag @teststep, optionally followed by a name for the step.
|
 |
The report now also can list checks (off by default) and warnings (excluding component
recognition warnings, on by default) integrated into the test-step listing and also
shows icons for nodes. The respective settings can be changed via
-report.checks, -report.warnings and
-report.nodeicons in batch mode or the respective options in the dialog for
interactive report creation.
|
 |
In the workbench view there is now a context menu for the test-suite tabs.
|
 |
All 'Comment' attributes can now be edited in an external editor similar to scripts.
|
 |
There are new toolbar buttons in the run-log window for navigating to the next/previous
error or warning.
|
 |
The incremental search feature now has more intelligent scrolling for hits and also
allows scrolling the component being searched via the [Up],
[Down], [Page up] and [Page down] keys.
|
 |
'Dependencies' can now optionally be resolved in a namespace which allows having
different sets of dependencies for different parts of a test so that the dependencies
don't interfere with each other. See the 'Dependency namespace' attribute
for details.
|
Bugs fixed:
 |
Due to the JIDE libraries used, the new workbench view does not work with JDK 1.4.
It now gets deactivated automatically when starting QF-Test with a 1.4 JDK.
|
 |
Several exceptions caused by the new workbench view and the multi result dialogs were
fixed.
|
 |
Text checks for SWT Group widgets were missing.
|
 |
Fixed automatic scrolling of web pages for image checks and replay of hard events.
|
 |
The popup sub-menu for setting and removing marks was sometimes empty.
|
Patch 3.1.2-p1 - October 20, 2009
Bugs fixed:
 |
In the new workbench view QF-Test could lose track about which suites are currently loaded,
causing a suite to get loaded more than once, leading to confusing behavior and
sometimes an exception.
|
 |
The new mechanism for on-the-fly SWT instrumentation only handled one SWT plugin, so
that in case of a multi-platform Eclipse based application with several SWT plugins the
correct plugin for the current platform could remain uninstrumented.
|
 |
Calling stopRun could cause the shared run-context in the QF-Test daemon to
become unusable.
|
Version 3.1.2 - October 15, 2009
New features:
 |
Support was added for the latest Eclipse/SWT version 3.5.1.
|
 |
We have started work on special support for several AJAX web toolkits,
including Ext GWT, Ext JS, GWT, qooxdoo and RAP. Instead of deeply nested hierarchies of
<DIV> nodes QF-Test now operates in terms of the actual rich
interface of buttons, labels, trees etc. For information on how to activate this feature
in its current state, please get in touch with QFS.
|
 |
QF-Test now comes with support for interacting with the open source test management tool
TestLink.
|
 |
By default QF-Test now starts with a "Workbench View" where all open test-suites are
arranged as tabs in a single window. This feature is work in progress. In case it causes
problems or if you prefer the old style, you can switch back to multiple windows via the
»View« menu.
|
 |
The new function »Analyze references« in the context menu of a
node can be used to statically validate the correctness of a test-suite by verifying the
existence of the target nodes of 'Procedure calls', 'Test calls',
'Dependency references' and references to 'Components'.
|
 |
Operations that search for or result in changes to multiple nodes now bring up a mass
result dialog listing the affected nodes. You can either navigate to specific nodes
directly from that dialog or use it to set marks on some or all of the resulting nodes.
|
 |
Nodes in a test-suite can now be marked with markers in four different colors for
easier reference and quick navigation. Marks can be set either individually via the
menu »Edit«-»Marks« or the
context menu, or from a mass result dialog.
|
 |
All text fields, terminals etc. in QF-Test's user interface can now be searched locally by
pressing [Ctrl-F] when the field owns the keyboard
focus.
|
 |
The new Component Method Spy retrieves and displays fields and methods of Swing or SWT
components as well as the Javascript properties of a DOM node in the web client.
|
 |
After recording a new sequence and transforming it into a 'Procedure' you can select
»Parameterize node« from its context menu to tell QF-Test to
automatically extract parameters for it from the contained nodes.
|
 |
The Eclipse/SWT instrumentation performed by the 'Procedure'
qfs.qft#qfs.swt.instrument.setup now operates on-the-fly, building a new
plugin from an existing plugin and the QF-Test specific add-ons. Thus it is now possible to
instrument custom SWT plugins or plugins for unofficial Eclipse versions for which QF-Test
doesn't provide an exactly matching instrumented plugin.
|
 |
Event nodes can now be transformed into a 'Wait for component to appear' node.
|
 |
The keyboard shortcut for the 'Redo' operation was changed from [Ctrl-R] to [Ctrl-Y]. Over the last years the
latter has become a de facto standard.
|
 |
The warning about nested 'Test-case' execution can now be suppressed via the option
"Log warning for nested test-cases".
|
 |
Where scrolling a web page is required to perform a hard event or an image check, QF-Test
now tries to scroll a web page itself via Javascript calls instead of relying on the
browser's internal mechanism which often completely messes up the display.
|
 |
Component recognition based on geometry can now be suppressed by setting the coordinate
and size attributes of a 'Component' to '-'.
|
 |
It is now possible to specify just the 'Class count' or
'Class index' of a 'Component' node and ignore the other.
|
Bugs fixed:
 |
Using the replace dialog to replace a regular expression with an empty string caused an
exception.
|
 |
The function to make 'Procedure calls' or 'Dependency references' relative did not
work reliably.
|
 |
When moving several 'Procedures', the automatic correction of 'Procedure calls' could
fail in some special cases.
|
 |
Procedure recording now works correctly for custom classes with a special ClassLoader.
|
 |
When creating reports, warnings can be suppressed entirely by specifying
-report.warnings=false for batch mode or deactivating the respective option
in the dialog for interactive report generation.
|
 |
Recording a click on an editable SWT table cell could cause the cell editor to get
activated in the wrong table row.
|
 |
'Fetch index' nodes were not implemented for SWT.
|
 |
Removing or marking unused components, importing and other complex component operations
could fail if the test-suite contained a 'Data table' node with no columns or
empty table cells.
|
Add-on for Eclipse/SWT 3.5.1 - September 30, 2009
New features:
 |
This add-on adds support for Eclipse/SWT 3.5.1 "Galileo".
|
Version 3.1.1 - July 28, 2009
Incompatible changes:
 |
The changes to the check system described below are fully backwards compatible. However,
once a test-suite has been saved with QF-Test version 3.1.1 it cannot be run correctly with
an older QF-Test version except for QF-Test version 3.0.3 which has explicit bidirectional
compatibility support for this feature. Once you introduce QF-Test version 3.1.1 you can
safely continue to work with QF-Test 3.0.3, but you should not use older versions like
3.1.0 or 3.0.2.
|
New features:
 |
The transition to the new check mechanism is now complete. Custom Checkers
are now fully documented and can be created for all
check data types. All 'Check' nodes now have a 'Check type identifier' attribute and the old
'Check editable', 'Check enabled' and 'Check selected' nodes were replaced with
'Boolean check' nodes with a matching 'Check type identifier'.
|
 |
It is now possible to bookmark test-suites, run-logs and individual nodes in a
test-suite so they are directly accessible via the new sub-menu »File«-»Bookmarks«.
|
 |
The new ClassNameResolver - though also useful for SWT and Swing
applications - is an important milestone for AJAX web testing. With its help and the new
pseudo class hierarchy for DOM nodes a deeply nested hierarchy of
DIV nodes can be turned into a concise component hierarchy
with expressive class names that vastly improve component recognition.
|
 |
'Procedures' can now automatically be parameterized via the sub-menu »Parameterize node« in the popup menu for the 'Procedure' node. This feature is
work in progress and will need more fine-tuning so we hope for your feedback.
|
 |
When creating testdoc documentation it is now possible to follow 'Test call' nodes
and include the target 'Test-case', 'Test-set' or test-suite into the generated
documentation by activating the respective option in the dialog for interactive use or
via the command line argument -testdoc.followcalls in batch mode.
|
 |
Several more variants for converting and (un)packing nodes were added.
|
Bugs fixed:
 |
Several problems with split run-logs were fixed. Log entries could get lost in compact
logs, when the split run-log was not saved as a zip file or when split run-logs were
disabled but the attribute 'Name for separate run-log' was defined.
|
 |
DaemonTestRunListeners did not work correctly in asynchronous mode.
|
 |
When creating a report, screenshots for failed 'Check image' nodes were always
saved regardless of whether the failed check actually represented an error or was just a
part of a conditional construct.
|
 |
Use of the new Java regular expressions in QF-Test's replace dialog was not correct so that
some replacements based on regexps were not possible.
|
 |
When determining uniqueness of "id" attributes for use as names, QF-Test was too strict so
that in some cases potential names were not assigned.
|
 |
Instrumenting an OpenJDK directory now works.
|
 |
Waiting for a new document did not handle the window name attribute correctly.
|
 |
Waiting for a download to finish always waited for the full timeout.
|
 |
In very rare cases replaying text input could crash an SWT application on Linux.
|
 |
Option settings from rc.setOption() in the SUT were reset whenever options
were changed in the option dialog.
|
 |
Event replay for SWT MenuItems with Gtk 2.4 on RedHat Enterprise Linux 4
was not reliable.
|
 |
The ktable and gef Jython modules for the
respective SWT components were not correctly updated for the new
ItemResolver and Checker mechanisms.
|
 |
QF-Test now properly discerns the most modal SWT Shell in case multiple modal
Shells are opened simultaneously.
|
Patch 3.1.0-p1 - June 25, 2009
New features:
 |
The primary cause for this patch release is its support for Eclipse 3.5 "Galileo".
|
Version 3.1.0 - May 19, 2009
Incompatible changes:
 |
QF-Test now uses standard Java regular expressions by default which are much more powerful
than the old GNU regexp package. One major difference is that '{' and '}' are special
characters for Java regexps and may need to be escaped with a '\'. If necessary, you can
switch back to the old GNU regexps via the option "Use old-style GNU regexps (from
before QF-Test version 3.1)".
|
 |
In contrast to Mozilla, Internet Explorer reports a local navigation to an anchor on the
current page as a normal navigation event, so up to now a 'Wait for document to load' node was
recorded which failed when replaying the same test on Mozilla. QF-Test now treats this
situation uniformly by ignoring the extra navigation from IE so no 'Wait for document to load' node
is recorded with either browser. Consequently, old 'Wait for document to load' nodes for local
navigation will now fail and need to be removed from your tests.
|
New features:
 |
QF-Test's embedded browser for web testing now supports Java applets with
JDK 1.6.0_10 and up, so QF-Test can now test the interaction of a web application with its
embedded Java applet.
|
 |
Many of QF-Test's options, specifically those with an impact on test execution, can now be
changed at run-time via the new run-context method rc.setOption.
|
 |
When moving 'Procedure', 'Dependency' or 'Test-case' nodes, all references to these nodes
can now be updated automatically. Similar updates are now performed when changing the
name of such nodes or 'Component' IDs via the replace dialog. As an additional
feature the new special Variable group ${id:...} and the run-context method
rc.id can be used to mark arbitrary text as the definition of a component
id that will be updated whenever the referenced component changes.
|
 |
'Procedure calls' from one 'Procedure' to another 'Procedure' in the same 'Package'
hierarchy can now use a relative procedure name. Also, 'Procedures' and 'Packages' can
now be made local to their test-suite by prefixing the name with an '_'.
|
 |
The selection dialog for a 'Procedure', 'Dependency' or 'Test-case' node now also shows
the comment of the selected node. Also, it is now possible to select multiple nodes in
order to insert multiple calls at once.
|
 |
A 'Procedure call' to a specific 'Procedure' can now be created by copying the
'Procedure' node and pasting it to a place where insertion of the 'Procedure' is not
allowed, which is basically everywhere a 'Procedure call' is allowed except for the
'Extras' node. Dragging and dropping a 'Procedure' with the same effect is
also supported.
|
 |
It is now possible to interact directly with the Javascript engine of the browser and
execute arbitrary scripts via the methods DomNode.toJs,
DomNode.evalJs and DocumentNode.evalJs.
|
 |
When an error or exception occurs, the run-log now contains a stacktrace node, showing
all nodes on the execution stack including their variable bindings, similar to the
variables view in the debugger window.
|
 |
There is a new API for various kinds of resolvers and checkers, including an
ItemResolver interface for implementing your own sub-items of custom
components and a Checker interface for custom checks that can be captured
and replayed just like QF-Test's standard checks.
|
 |
The new TestRunListener API can be used to monitor a test-run from a
script. Its variant DaemonTestRunListener supports the same remotely via
QF-Test's daemon API.
|
 |
Support for Eclipse/SWT now includes the latest Eclipse milestone 3.5M7.
|
 |
The run-context method rc.callProcedure now also works from an
'SUT script' in a web application.
|
 |
Execution of a 'Test-case' or 'Test-set' can now be aborted or skipped via the run-context
methods rc.skipTestCase, rc.skipTestSet,
rc.stopTestCase and rc.stopTestSet, e.g. to prevent wasted
time and irrelevant error messages in case a dependency cannot be resolved.
|
 |
The name of the currently executing 'Test-case' is now available via the special
variables ${qftest:testcase.name}, ${qftest:testcase.qname} and
${qftest:testcase.reportname}.
|
 |
Via the new methods setProperty and getProperty in the class
Node from QF-Test's pseudo DOM API for web applications, arbitrary data can be
associated with DOM nodes without affecting the web application.
|
 |
The new command line argument -ping for qftest -batch
-calldaemon can be used to check whether a QF-Test daemon is up and running.
|
Bugs fixed:
 |
For SUTs running on Mac OS X QF-Test disables use of the screen menu bar to allow proper
capture/replay of menu actions.
|
 |
Activating an engine license in the option dialog now works as expected.
|
 |
When recording procedures, a new root 'Package' is always created instead of merging the
procedures into a possibly existing 'Package' named "procbuilder".
|
Version 3.0.3 - July 28, 2009
New features:
 |
Handling of 'Check' nodes is reverse-compatible with changes in QF-Test version
3.1.1 in which checks underwent a major overhaul. QF-Test version 3.0.3 can load, execute
and save test-suites created with version 3.1.1 without losing information.
|
Bugs fixed:
 |
Several problems with split run-logs were fixed. Log entries could get lost in compact
logs, when the split run-log was not saved as a zip file or when split run-logs were
disabled but the attribute 'Name for separate run-log' was defined.
|
 |
When determining uniqueness of "id" attributes for use as names, QF-Test was too strict so
that in some cases potential names were not assigned.
|
 |
JDK instrumentation now also works for an OpenJDK directory.
|
 |
Waiting for a new document did not handle the
'Name of the browser window' attribute correctly.
|
 |
Waiting for a download to finish always consumed the full timeout.
|
 |
Activating an engine license in the option dialog now works as expected.
|
 |
In very rare cases replaying text input could crash an SWT application on Linux.
|
 |
For SUTs running on Mac OS X QF-Test disables use of the screen menu bar to allow proper
capture/replay of menu actions.
|
Patch 3.0.2-p2 - June 25, 2009
New features:
 |
The primary cause for this patch release is its support for Eclipse 3.5 "Galileo".
|
Bugs fixed:
 |
Event replay for SWT MenuItems with Gtk 2.4 on RedHat Enterprise Linux 4
was not reliable.
|
 |
QF-Test now properly discerns the most modal SWT Shell in case multiple modal
Shells are opened simultaneously.
|
Patch 3.0.2-p1 - April 14, 2009
Bugs fixed:
 |
In QF-Test version 3.0.2 hard TAB characters in Jython or Groovy scripts were replaced with
blanks when showing the script, immediately causing the respective node to become
modified. This change has been taken back.
|
 |
With JDK 1.6 some of QF-Test's dialogs were not displayed with the correct size.
|
Version 3.0.2 - March 27, 2009
New features:
 |
Support was added for Eclipse/SWT versions 3.5M6 and 3.4.2.
|
 |
The method callProcedure was added to the class
DaemonRunContext of QF-Test's daemon API. This method and the existing method
runTest now also support direct passing of parameters to this call.
|
Bugs fixed:
 |
'Wait for document to load' nodes for web clients did not work reliably in case of multiple
browser windows.
|
 |
Checking the enabled/disabled state of components is now also implemented
for web clients.
|
 |
Capture and replay of MOVED and SIZED events is now also supported for
browser windows of web clients.
|
 |
QF-Test now performs regular explicit garbage collections to prevent running out of memory
in the PermGen Space, a special Java memory region that causes trouble for a lot of Java
applications. For the SUT these extra garbage collections can be turned off via the
option 'Automatically perform garbage collection in the SUT'.
|
 |
Disposal and recreation of an SWT Display is now handled correctly.
|
 |
Custom SWT Widgets implemented as an anonymous local class
were not treated correctly, possibly leading to a
ComponentNotFoundException.
|
 |
For checks with a very long timeout deadlock detection is now adjusted accordingly.
|
 |
The demonstration test-suite for integration with the Imbus TestBench was updated to the
latest TestBench version and now handles split run-logs correctly.
|
Version 3.0.1 - January 23, 2009
New features:
 |
The Jython and Groovy run context rc now provides the convenience methods
getBool, getInt, getNum and
getString for simplifying lookup of typed variable values in scripts.
|
 |
It is now possible to specify proxy settings for a web SUT directly in the quickstart
wizard or via the procedure qfs.web.browser.settings.setProxy in the
standard library test-suite qfs.qft.
|
 |
An entry for Swing JInternalFrame components has been added to the template
file for automatic procedure creation.
|
Bugs fixed:
 |
Web-testing with Mozilla on Linux no longer requires using a 1.4 JDK.
|
 |
Using the "Update component" feature for web pages with deeply nested tables could lead
to duplicate component IDs.
|
 |
Left-to-right binding in 'Data table' and other data nodes has been fixed.
|
 |
SQL statements in 'Database' nodes did not work with Oracle databases, due
to an automatically appended ';' character. This has been fixed. If your database engine
requires that SQL statements are terminated with a ';' you have to specify it yourself.
|
 |
The procedure qfs.swt.instrument.setup now always picks the SWT plugin with
an exact version match for instrumentation, if available. This is important for SWT 3.4,
where versions 3.4.0 and 3.4.1 are mutually incompatible.
|
 |
When recording procedures, a '$' character displayed in one of the fields of the SUT
could lead to an exception.
|
 |
Groovy class loading and script parsing in the SUT should now be faster, in some cases -
specifically applets - drastically.
|
 |
A caught exception in the 'Finally' node of a 'Try' node could mess
up the state of an exception caught earlier in a 'Catch' node.
|
 |
The demo test-suite swt_addressbook.qft was still based on SWT 3.1, support
for which is no longer distributed with QF-Test. The suite is now based on SWT 3.4.
|
Version 3.0.0 - December 5, 2008
Major new features:
 |
Cross-platform and cross-browser web testing with web2.0/AJAX support.
|
 |
Integration with HP/Mercury Quality Center and Imbus TestBench.
|
 |
Groovy as a second scripting language.
|
 |
New Jython version 2.2.1.
|
 |
Improved Jython and Groovy script editor with syntax-highlighting.
|
 |
Automated creation of basic procedures.
|
 |
Extended and unified functionality for 'Check...' and 'Wait...' nodes.
|
 |
Direct support for negated checks.
|
 |
Split run-logs enable long-running tests without memory problems.
|
 |
64-bit support for SWT on Windows and Linux.
|
 |
Extensions and an external driver for the daemon API.
|
 |
New concept: "Expected failure" for 'Test-case' nodes.
|
 |
Directing and documenting manual tests.
|
 |
Extended undo support.
|
 |
Immediate vs. lazy variable bindings.
|
 |
Image API for creating and saving screenshots.
|
 |
Crypting of text input for password fields.
|
 |
Recursive sorting and transformation of nodes.
|
 |
Revised search with highlighting of results.
|
 |
Extensions to the standard library test-suite qfs.qft.
|
 |
New tutorial chapters for advanced features.
|
|