Last Update: 25 September 2026
This is a maintenance release for 3.1.x. We recommend it for every 3.1.x installation.
It fixes a set of defects that could make ApTest Manager stop responding or lose recent changes after an upgrade to 3.1.x, makes future upgrades safer by locking ApTest Manager against use while an upgrade runs, and tightens how ApTest Manager handles request data in a few long-standing places.
Important: upgrading between 3.1.x releases deleted recent test sessions. Every upgrade from one 3.1.x release to another deleted the test sessions created since the previous upgrade, together with their results. Upgrading to 3.1.4 no longer does this. Before you upgrade, see Sessions created since your last upgrade below.
ApTest Manager 3.1 stores each test session in a new format. The upgrade step that tidies up empty session folders did not recognise that format, so it treated every session created since the previous upgrade as empty and deleted it. Nothing reported the deletion. Sessions migrated from before 3.1 were not affected.
The 3.1.4 upgrade no longer deletes these sessions, and it now reports any session folder it removes. But it cannot bring back sessions that an earlier upgrade deleted:
SESSIONS/ from a backup
taken before that upgrade, then contact support. We will help you bring
the rest of the suite back into line.These issues have been present in ApTest Manager for many releases; they are not new in 3.1. We recommend picking up these fixes, particularly on servers reachable from outside your organisation.
Stricter handling of values passed to system commands. A few pages and scripts (suite export and restore, bulk user creation, and the source-control integration) passed request values to shell commands without escaping them, so a crafted request could run commands as the web server user. They now pass their arguments safely. The installer had the same problem with suite names, including in the steps added for the 3.1 migration; that is also corrected.
The archive download page serves only its own archive. It previously accepted a file path from the request, did not require a login, and deleted the file after sending it, so it could be used to fetch and then remove any file the web server user could read.
Only the web pages' own scripts are served. The web server
configuration let any .pl file in the ApTest Manager directory run for a
web request, including the installation and upgrade scripts. Everything
else is now refused.
Unique temporary upload names under mod_perl. Web server processes could share a random number sequence, so temporary upload names could repeat across processes. Each process now seeds its own.
Creating a test session could hang for up to half an hour, and other users then saw "database is locked" errors. Under some configurations a file lock was not released after the storage switched to SQLite, so the request waited on a lock it held itself.
New folders could disappear from the Tests tree after an upgrade, and folder order could revert to its pre-upgrade state, because rebuilding the folder-order cache discarded the migrated data and read the old, pre-upgrade copy again. The folders and their contents were always on disk.
A failed database connection could discard migrated data. A single failed attempt to open a database removed its files, after which the old pre-upgrade data was imported again.
A full disk could leave test cases, requirements or the configuration file empty or truncated, because they were written in place. They are now written to a temporary file and moved into place only when complete (see the upgrade note below).
After an upgrade run as the super-user, the System Configuration page could be blank, because the installer saved the configuration store after resetting file ownership, which left it owned by root.
The upgrade did not check the SQLite prerequisites on installations that 3.1.1 migrated but never marked as migrated. It now recognises them, shows the migration notice and checks that DBI and DBD::SQLite are installed.
Apache could fail to start when a single optional Perl module was missing. Optional modules are now loaded one at a time, and a missing one is reported instead of stopping the server.
The installer still offered the mod_fcgid mode, which has not been supported since 2012. It is no longer offered, and an installation still configured for it is switched to CGI during the upgrade, with a notice.
UPGRADE.pl reported success even when the upgrade failed. It now exits
with the installer's own status.
SQL mirroring: a full resynchronisation left the session results
empty. Initialising the SQL datastore, running syncSQL -a, and the
first sync after an upgrade all reported success. On SQL Server, though,
they wrote no session results at all. The same run could also write some
session summaries twice and leave the suite information out of the
database. Sessions created afterwards were not mirrored either. All four
problems date from 3.1.1 and are corrected. Results recorded in the normal
way were always mirrored.
updateSets -n (the "show what would change" mode) still changed
data. With -p it deleted sessions whose set no longer existed. On
installations with SQL mirroring, it emptied the mirrored session tables
until the next full run. It also rewrote sets. It now changes nothing.
Deleting a test session stopped part way. On 3.1.x, deleting a session moved its folder to the suite's trash and then failed with an error, so the session stayed in the Run lists and in its set's counts, and opening it showed "Can't find test session". Deleting sessions now works, and the upgrade finishes the deletions left half done (see below).
A session removed from a set could stay listed in that set. Removing a session from a set did not always stick, so a deleted session could still be counted in its set. This is corrected.
The upgrade's progress messages ran together on one line. Counters such
as 54500/171913 were printed one after another without line breaks,
on screen and in install.log. Each now appears on its own line, with its
time and suite.
The upgrade showed nothing while it migrated data to SQLite. The
migration's progress was held back and printed all at once when the step
finished, so a long first migration looked as if the upgrade had stopped.
Progress now appears as the migration runs, and install.log keeps pace
with the screen.
Several examples in the RPC interface documentation did not work as written. They were wrapped across lines with stray backslashes, misspelled command names, or left out the options that enable the fields they asked for.
ApTest Manager now locks itself during an upgrade. While UPGRADE.pl
runs, every ApTest Manager page answers with a notice that an upgrade is in
progress, so nobody can change data half way through. Other sites on the
same web server are unaffected. If the upgrade fails or is cancelled, the
notice stays up until UPGRADE.pl is run again and completes.
Under mod_perl, restart the web server after upgrading, as before. Until you stop Apache, wait a minute and start it again, ApTest Manager answers with a notice that the server must be restarted, rather than running the previous configuration together with the new program files.
This protection applies to upgrades from 3.1.4 onward. For this upgrade,
stop Apache before unpacking the release where you can, and start it again
once UPGRADE.pl has finished.
With SQL mirroring, the upgrade's full resynchronisation can take a long
time. The upgrade resynchronises every mirrored suite in full, and on a
large suite that can take hours. To keep the maintenance window short, run
perl UPGRADE.pl -Q. It defers the resynchronisation and lists the suites
that need it. Afterwards, at a quiet time, resynchronise each of those
suites with:
perl bin/syncSQL -a <suite>
A suite is locked while it is being resynchronised, and its SQL copy is out of date until that has finished. Other suites can be used in the meantime, and ApTest Manager's own data is not affected.
The upgrade finishes session deletions that stopped part way. For every
suite, it looks for sessions that are still listed but whose folder is
already in the suite's trash, removes them from their set and from the
suite, and reports each one. A listed session whose folder is nowhere is
only reported, never removed, so that you can restore it from a backup.
This check is quick, and it also runs with -I.
Upgrading from 3.1.3, you can skip the full suite checks. If an earlier
3.1.x upgrade completed, perl UPGRADE.pl -I skips the full suite and set
checks and the SQL resynchronisation, which on large suites take most of
the upgrade's time. The data migration and the session-deletion check above
still run. If you use SQL mirroring, resynchronise each mirrored suite
afterwards with perl bin/syncSQL -a <suite>, so that the mirror picks up
the session results that earlier 3.1.x releases left out.
Your Apache configuration must allow ApTest Manager's own settings. The
directory ApTest Manager is installed in needs AllowOverride All, which is
what the installer has always printed. The documentation previously gave a
smaller value as the minimum, and that is no longer enough.
Only the web pages' own scripts are served. If you have added your own
.pl scripts to the ApTest Manager directory and call them from a browser,
they are now refused. Please contact support if you rely on this.
Saved files now belong to the account that saved them. Test cases,
requirements and the configuration file are written to a temporary file and
renamed into place, so that a failure part way through a save (a full disk,
for example) can no longer truncate the file it was replacing. A side effect
is that the owner and group of an existing file are only preserved when the
save runs as root: a file owned by one account and saved by another now
belongs to the account that saved it. Its permissions are preserved in every
case, but on a shared installation the change of group can still cost your
web server the group write access it had. Run the tools in bin/ as your web
server user so that ownership stays consistent. Running them as root is not a
substitute: a file created by a tool running as root stays owned by root, and
your web server will not be able to write it afterwards.
Under mod_perl, Apache must use the prefork MPM, and a memory limit needs Linux::Smaps.
memoryLimit in
config.pl) cannot be enforced, and it now says so in data/syslog.txt.cpanm Linux::Smaps). Without it, the Apache module that
enforces the limit mismeasures memory, and on some systems it ends every
Apache process after a single request. That makes every page slow. The
installer and data/syslog.txt now report when Linux::Smaps is missing.This is a critical fix release for every installation that upgraded to 3.1.1 or 3.1.2 with existing data. We recommend upgrading as soon as practical.
This release addresses two further issues in the BerkeleyDB to SQLite migration first introduced in 3.1.1 and partially corrected in 3.1.2, a data-loss defect that could cause newly created folders, files, and other records to silently disappear under the SQLite backend, and a report generation crash. If your installation has a large test suite (roughly a hundred thousand test cases or more) and you saw slow migration times or symptoms matching 3.1.2's release notes even after upgrading to 3.1.2, this release corrects it.
The migration's "done" marker could be lost for the largest databases. 3.1.2 corrected the original defect where this marker was never written, but the fix itself was fragile: it computed the marker's value with a second, separate check of the source file, made only after the entire database had already been copied. That check could fail silently on some systems, with no error reported. The copy would complete correctly and every record would be present, but the one marker that tells ApTest Manager "this database is fully migrated" would not be. The result was the same symptom 3.1.2 was meant to fix — continued reading of the old BerkeleyDB file on every page view — but only on installations where this check happened to fail.
Migration of large suites took hours longer than necessary. Each database was copied one record at a time, with each record individually committed to disk — for a database with millions of records, this meant millions of individual commits. A suite whose largest database held a few million records could take four or more hours to migrate.
The installer's internal version-tracking file was never created, due
to a build error that gave it the wrong filename. This did not affect test
data or the migration itself, but it meant UPGRADE.pl could not tell what
version was previously installed, and always assumed the oldest possible
case.
A newly created test folder, uploaded file, or attached test result could silently fail to appear, even though it was correctly written to disk. Under the SQLite backend, several internal update paths could leave a database transaction open without committing it; if that happened, every change made in that same request was discarded when the connection closed, with no error shown to the user. The folder, file, or attachment existed on disk but never became visible in the UI. A small number of other operations were affected by the same underlying defect, including saving certain account and session settings, and could fail in the same silent way.
Generating some reports could fail with an internal error, depending on exactly which columns a given report template was configured to include. Reports built from a template that did not explicitly list every optional field could crash instead of simply omitting the fields the template did not ask for.
The migration is markedly faster. Records are now committed in batches of a few thousand at a time rather than one at a time. In testing against a production-scale suite (3.5 million records), this reduced migration time for the largest databases by roughly 90%.
The "done" marker is now a fixed value, not a recomputed one. It no longer depends on anything about the source file remaining unchanged after the copy completes, which removes the failure window described above entirely rather than narrowing it.
If you were affected by the lost marker in a prior upgrade, this release will detect and correctly complete the migration for any database still missing it — no manual action is needed.
The internal version-tracking file is now created correctly, restoring
UPGRADE.pl's ability to show release notes relevant to the specific
version you are upgrading from.
Newly created folders, files, attachments, and account/session settings now reliably persist and appear immediately. The transaction-handling defect behind the silent data loss described above has been corrected everywhere it was found, and covered by new regression tests to prevent it from recurring.
Report generation no longer crashes on templates with a partial field list. A report template that omits an optional field now simply leaves that field out of the report, as intended, instead of causing an error.
This is a critical fix release for every installation that upgraded to 3.1.1 with existing data. We recommend upgrading as soon as practical.
The BerkeleyDB to SQLite migration introduced in 3.1.1 completed and reported success, but did not take effect. Affected installations continued to read their old BerkeleyDB files on every page view — receiving none of the performance benefit of the migration while paying the cost of it — and, on some systems, could not save test results at all.
If you upgraded to 3.1.1 and have seen any of the following, this release addresses them:
Installations that were new at 3.1.1, with no pre-existing BerkeleyDB data, are not affected by the migration issues.
The migration did not take effect. Each database was copied into SQLite correctly, but was not marked as migrated, so ApTest Manager continued to use the old BerkeleyDB copy. Every page view re-read the entire original database — on a large suite, hundreds of thousands of records per request.
Cached indexes were never migrated at all. The migration covered only a fixed list of databases and omitted the internal caches, which are the largest files in a mature test suite.
Test results could not be saved. When the upgrade was run as root,
session files were left owned by root, so the web server could not write
to them. Results appeared to save and were silently discarded.
Sessions were not migrated on multi-user installations. Where each user has a private session area, no session data was migrated at all.
Test sets inside nested groups were not migrated. Only the first level of groups was processed, and an unmigrated test set displays as empty rather than reporting an error — so the loss was silent.
Some pages failed outright on installations where the storage files were not writable by the web server, including the login page.
A single malformed character could blank an entire page. One invalid byte in test data — commonly introduced by pasting from a spreadsheet — aborted the whole request instead of being displayed as a substitute character.
Diagnostic logging was left at maximum, producing roughly 160 MB of log per day and slowing every request.
The migration runs again automatically. You do not need to take any special action, and you do not need to re-run the 3.1.1 installer first.
Your data is safe. Nothing is deleted. The original .dbm files are
left in place as a rollback path, and any data recorded since your original
upgrade is preserved — the migration will not overwrite newer information
with the older copy.
Allow time for large installations. The migration that previously appeared to finish quickly now does real work. A suite with several hundred thousand records may take 10–45 minutes. ApTest Manager is unavailable during this time, so schedule accordingly.
Back up first, as with any upgrade: copy your suites/ and data/
directories before you begin.
Run the upgrade as the same user that owns your installation, or as
root. File ownership is now corrected across the whole of suites/
after migration, which is what allows the web server to save results.
Please confirm the following, which together cover the reported symptoms:
If any of these still fail, please contact support with your
data/syslog.txt file.
A standalone repair package is available for installations already running 3.1.1 that need to be corrected in place, without waiting for this release. Contact support and ask for the 3.1.1 remediation package.
The first release of the 3.1 line. There was no 3.1 release; the version numbering starts at 3.1.1.
This is a major infrastructure release that migrates the internal storage engine from BerkeleyDB to SQLite, delivers significant performance improvements across synchronization and upgrade operations, adds new CLI flags for non-interactive and deferred-sync deployments, and improves SQL mirroring reliability. The installer and upgrade tools now provide guided experiences with prerequisite checks and real-time progress reporting.
ApTest Manager now uses SQLite as the default storage backend for all internal databases (test cases, sessions, test sets, requirements, reports, filters, searches, user accounts, and configuration).
Why SQLite?
Network storage stability: BerkeleyDB is unreliable on NFS and CIFS mounts, leading to database corruption and stale lock files. SQLite's WAL (Write-Ahead Logging) mode handles network-attached storage gracefully.
No stale lock file issues: BerkeleyDB leaves orphaned .lockW
files after unclean shutdowns (power loss, killed processes), requiring
manual cleanup. SQLite recovers automatically.
Architecture-independent files: BerkeleyDB .dbm files are tied
to the CPU architecture that created them and cannot be moved between
different platforms. SQLite files are portable across all architectures,
making backups, restores, and server migrations straightforward.
Reduced dependencies: SQLite ships as a single C library bundled with DBD::SQLite. BerkeleyDB requires a specific system library version matched to the Perl binding.
Upgrade behavior:
On first upgrade, all existing BerkeleyDB data is automatically
migrated to SQLite. The original .dbm files are preserved as a
safety net.
Migration time depends on installation size. Large installations (100K+ test cases, 10K+ sessions) may take several minutes.
To remove legacy .dbm files after confirming the migration is
successful, run: perl bin/migrate-to-sqlite.pl --delete-old. Note that the if the legacy .dbm files remain in the system they will not be used nor kept up to date. The real data will be maintained in the .sqlite files going forward.
Opting out:
If you are not ready to migrate, add the following to localconfig.pl
before running the upgrade:
$ATMConfig::useSQLite = 0 ;
This preserves BerkeleyDB behavior. Remove the setting and re-run the upgrade when ready to migrate. Note that BerkeleyDB support is deprecated, and may be removed in a future release.
The exportAll, exportSuite, and archiveSuite tools now produce
portable flat-text archives regardless of whether the source data is
stored in SQLite or BerkeleyDB. Archives created by version 3.1 can
be restored into older versions.
restore.pl correctly handles data from both SQLite-era and
pre-SQLite exports.
Fixed exportSuite.pl to preserve the per-suite SQL mirror
configuration (SQLCONFIG), ATMVERSION, and filter database
(FilterDB) in export archives. Previously these files were deleted
during export, requiring manual SQL mirror reconfiguration after every
restore.
Fixed restore.pl to reset the SQL mirror connection state (ready=0)
after restoring a suite. Previously, a restored suite inherited the
ready=1 state from the export, making the system believe the SQL
mirror was live and synchronized when it was not.
Suite synchronization is approximately 3x faster overall. On a representative database with 19,000 sessions, 102,000 test cases, and 69,000 requirements, total sync time was reduced from over 18 minutes to approximately 6 minutes.
SQL requirement sync is approximately 4x faster through batched insert operations and schema field caching.
SQL test case sync is approximately 2.5x faster through batched operations and elimination of redundant SQL readiness checks during the file walk phase.
Session synchronization now supports parallel processing via a
configurable number of worker processes. Use the --workers flag
with updateSuite.pl and updateSets.pl to control parallelism.
Session refresh operations are substantially faster. The refresh algorithm was rewritten to use a collect-and-rebuild approach instead of incremental deletions, reducing complexity from O(n^2) to O(n). Hash-based lookups replace linear searches for test list membership checks. SQL operations are deferred during refresh and performed as a single bulk sync at the end. On a session with 40,000 tests, refresh time was reduced from approximately 7 minutes to just over 1 minute.
Internal schema field lookups (multiLists, tables) are now cached, eliminating hundreds of thousands of redundant iterations over field definitions during SQL sync operations.
updateSets.pl now skips unnecessary work for sessions that have not
changed during an upgrade pass. Previously, every session was forced to
recalculate test counts and flush to disk regardless of whether
anything had changed. This significantly reduces upgrade time on
installations where most sessions are already up-to-date.
Added --progress flag to updateSuite.pl for real-time progress
reporting during synchronization. Progress is reported for all sync
phases including file walk, test case/requirement processing, SQL
synchronization, and session synchronization.
Added --workers N flag to updateSuite.pl, updateSets.pl,
INSTALL.pl, and UPGRADE.pl to control the number of parallel
worker processes for session synchronization.
All progress messages now include timestamps and use a unified
[HH:MM:SS] (SuiteName) message format across updateSuite.pl,
updateSets.pl, and syncSQL for easier performance diagnosis,
interactive tracking, and log parsing.
restore.pl now accepts --workers N and --progress flags. These
are forwarded to updateSuite.pl and updateSets.pl during the
post-restore rebuild, enabling parallel and progress-reported restores
of large suites.
The migrate-to-sqlite.pl migration tool now supports --progress
for real-time progress output during the BerkeleyDB-to-SQLite
migration. Progress is reported every 100 sessions. This flag is also
automatically forwarded when INSTALL.pl is run with --progress.
SQL batch operations now flush periodically during long-running sync operations to prevent database connection timeouts.
Database connections are verified and automatically reconnected before executing queued SQL batches.
Forked worker processes now use independent database connections instead of shared cached connections, preventing cross-process connection interference.
SQL mirror synchronization for SQL Server (ODBC) now runs in sequential mode. Parallel sync was found to be 5-10x slower than sequential for SQL Server due to table-level lock escalation causing constant deadlock retries. MySQL and MariaDB are unaffected and continue to benefit from parallel sync.
Fixed the SQL mirror "Test Connection" function in the administration UI. After changing any connection setting and clicking Test, the connection test was silently failing without an error message. The connection is now tested correctly, and the settings are saved only if the test succeeds.
Added refreshSet RPC command that allows automation agents to
refresh a single test set by name via the RPC interface. The command
validates that the set exists, is not locked, and is refreshable
before performing the refresh. Example usage:
command=refreshSet&suite=MySuite&set=MySet&rpctoken=TOKENThe refreshSet command returns test count statistics including
the number of tests before and after refresh, and the number of
tests added and removed. When called with returnJSON=1, the
response is a structured JSON object:
{"result":"success","data":{"message":"42 tests in MySet",
"tests_before":40,"tests_after":42,"tests_added":2,
"tests_removed":0}}
Without returnJSON, the response uses the standard text format
for backward compatibility with existing RPC clients.
The refreshSet command supports an optional sessionsToo
parameter (default: 0). When set to 1, all test sessions
associated with the set are also refreshed after the set refresh
completes. Sessions are refreshed in parallel using multiple
worker processes for improved performance on large suites. Locked
sessions are automatically skipped. The response includes a
sessions_refreshed count when this option is enabled.
SQL mirroring operations during RPC refresh are wrapped in transaction safety with automatic rollback on failure.
WARNING: SQLite WAL mode (used by ATM 3.1) requires a native Linux
filesystem. Docker users on macOS or Windows must not use bind mounts
from the host for ATM data directories. Host bind mounts via
VirtioFS (Docker Desktop, OrbStack, Rancher Desktop) are not
compatible with SQLite WAL shared-memory files and will cause database
corruption. Use Docker named volumes instead. See
examples/docker-volumes/ for a reference docker-compose.yml and
guidance on backup/restore with named volumes.
Added pre-installation scripts (examples/linux-package-install/) for
Debian/Ubuntu and RHEL/AlmaLinux/Rocky Linux that install ATM's Perl
module dependencies via the system package manager before running
INSTALL.pl. Using these scripts reduces CPAN build time and avoids
common compilation failures. INSTALL.pl detects the appropriate
script and suggests it when missing modules are found.
Added -y flag to INSTALL.pl for fully non-interactive
installation. When -y is specified, all configuration prompts accept
their defaults automatically (webTop, topDir, mode, admin password,
etc.), the HTTP server user and group are auto-detected from the
system, and CPAN module installs are non-interactive. Useful for
scripted deployments, Docker images, and CI pipelines.
Added -Q flag to INSTALL.pl and UPGRADE.pl to defer SQL mirror
synchronization during upgrade. When -Q is specified, the upgrade
completes normally but SQL tables are marked out-of-sync (ready=0)
rather than rebuilt immediately. Re-sync at a convenient time by
running: perl bin/syncSQL -a <suite>. Also added --defer flag to
syncSQL itself to mark suites out-of-sync without connecting to the
SQL server.
UPGRADE.pl now guides administrators through the upgrade process: it
displays relevant release notes and requires acknowledgement before
proceeding, detects whether the SQLite migration will run for the first
time (verifying prerequisites and warning about migration time), prompts
for an appropriate --workers value based on the number of suites and
available CPUs, and installs Parallel::ForkManager automatically if
it is not present. The -y flag skips all interactive prompts for
automated deployments.
INSTALL.pl now validates that Apache is configured correctly for ATM:
warns if mod_cgi (or mod_cgid) is not enabled, with
distro-specific instructions to enable it; warns if mod_perl2 is
active but Apache is not using the prefork MPM (required by
mod_perl2), with fix instructions for Debian/Ubuntu and RHEL-family
systems.
ATM now gracefully handles missing Parallel::ForkManager by falling
back to sequential session synchronization. Previously, a missing
module caused a fatal startup error. INSTALL.pl and UPGRADE.pl
will install Parallel::ForkManager automatically on new installs;
existing installs that have not installed it will continue to work.
Web requests for a suite that is under maintenance (updateSuite,
updateSets, or syncSQL running) now immediately return a "suite is
locked" message instead of blocking. Previously, blocked web requests
could exhaust the mod_perl worker pool and make the entire application
unresponsive. Unrelated suites remain fully accessible while
maintenance runs.
Fixed a compatibility error with certain OS-packaged versions of
Apache2::SizeLimit that caused every mod_perl request to fail with
Can't locate object method "get_check_interval". A startup-time shim
now handles the missing method.
Fixed a bug where test case UUIDs (atm_id) written during upgrade
were not persisted to disk, causing updateSets.pl to re-process
every test case in every session on every subsequent upgrade. On large
installations (e.g. sessions with 20,000+ test cases), this could
cause updateSets.pl to run for 30 minutes or more unnecessarily.
Added --skip-uuid-update flag to updateSets.pl for cases where
updateSuite.pl has already completed UUID assignment.
Fixed sentinel key (__dbm_imported__) leaking into data iteration
in FilterDB, SearchDB, ReportDB, AgentSet, ATMConfig, CacheDB,
CacheFile, SuiteDB, Results, and Account. This could cause errors
when viewing reports or filters after migration.
Fixed compress() return value not checked in SQLiteFile, which
could silently produce corrupt data on out-of-memory conditions.
Added 100 MB pre-compression size warning in SQLiteFile to catch unexpectedly large records before hitting SQLite blob limits.
Increased the maximum length of the userlist column in SQL mirrored tables from 50 to 255 characters to accommodate longer user lists.
This is a minor bug fix release. Issues addressed in this release include:
In some circumstances a popup window from the report generation page would fail to be created.
When using an ODBC connector if a field was longer than the limit imposed by the schema the data was not correctly truncated.
If a SQL table used lowercase characters in its prefix, initialization of the database could fail with some connectors (e.g., ODBC with MS SQL Server).
This is a minor bug fix release. Issues addressed in this release include:
This is a minor bug fix release. Issues addressed in this release include:
This is a minor enhancement release. Issues addressed in this release include:
Added some performance enhancements for mod_perl to speed up startup and conserve memory by pre-compiling many components.
Added debugging output in the mod_perl handler if the Apache2 modules fail to load.
This is a minor enhancement release. Issues addressed in this release include:
This is a minor bug-fix release. The issue addressed in this release is:
This is minor enhancement release. Issues addressed in this release include:
This is minor enhancement release. Issues addressed in this release include:
This is a minor bug-fix release. Issues addressed in this release include:
Added tlsv1_2 and tlsv1_1 as additional options for LDAP secure connections.
Added a returnJSON option to RPC commands
Added a new getTestResultData command to RPC
This is a minor bug-fix release. Issues addressed in this release include:
Added tlsv1_2 and tlsv1_1 as options for LDAP secure connections.
Added a returnJSON option to RPC commands
Added a new getTestResultData command to RPC
This is a minor bug-fix release. Issues addressed in this release include:
Suppress warnings about Mail::Sender
Fix an issue involving communication between child and parent windows when running tests and reporting.
Improving the performance when creating test sets and sessions and selecting tests or requirements by name instead of by folder.
This is a minor bug-fix release. Issues addressed in this release include:
This is an enhancement release. The following minor features have been added:
New operations in the RPC.mpl interface.
Added option to suppress test case folders names in some reports.
Added example docker files to generate docker instances that support ApTest Manager.
When defining a test set or session and selecting tests from a list, it is now possible to use the order in which the tests were selected as the order of tests in the resulting sessions.
Added example installation scripts for popular LINUX distributions that can assist with getting the correct modules installed.
Added an option to notify ONLY on test case deletion, instead of upon any test case modification.
Added the 'updateOrderCache' script to help update the cache of ordered files in a suite from the command line.
In addition, the following minor issues were addressed:
Tightened up the scanning for libraries in checkSetup.pl
updated jira-rest example to help insulate from errors with JIRA configuration.
If there was an error in a test case ID field, it could cause the generated JS for the folder and test case tree viewer to have a syntax error.
An undefined field referenced when exporting to Excel could cause a RTE [Issue #1892].
checkSetup.pl was getting confused by warnings from perl versions 5.14 and later [Issue #1873].
The runWholeSession module was incorrectly attempting to release the open TestSession object twice, resulting in a spurious message in the system log [Issue #1852].
This is a minor bug-fix release. Issues addressed in this release include:
Upgrading on Windows could run into a problem with dependency ordering when replacing some required Perl modules [Issue #1841].
The Show Accounts page did not display the status of the account disabled field [Issue #1839].
If a requirement was damaged and a test referenced that requirement and the test was in the trash and the trash was emptied, there was the possibility of a run time error.
Restoring the user database or the configuration from a backup made from version 2.28.03 could fail if the data folder permissions were not correct.
This is a minor bug-fix release. Issues addressed in this release include:
On some older servers, a bug in perl 5.10 would cause local versions of modules to be ignored. Added instructions to the INSTALL.pl script for upgrading the core modules [Issue #1818].
On some versions of Internet Explorer, creating sessions or editing session names would fail because of a JavaScript inconsistency [Issue #1820].
This is a minor bug-fix release. Issues addressed in this release include:
The export.pl utility was not detecting situations where the underlying system libraries could not successfully serialize a test session object. Added an option to the exportAll.pl script to select suites to export. This utility has better error recovery. The export.pl script will be removed from future releases [Issue #1788].
The updateSets.pl script would incorrectly open a test session in write mode even when running with the -n "do nothing" option [Issue #1788].
The updateSets.pl script now has an option to only update specific sets in a test suite (-s set1,set2...) to help speed the operation when specific sets / sessions need to be fixed on very large test suites [Issue #1788].
The URI in use and parameters passed to it were not always included in generated error reports [Issue #1790].
If folders within a folder had been specifically arranged, and then one of those folders was removed outside of ApTest Manager's GUI, the system could throw a warning during synchronization of the test suite [Issue #1795].
Very very large test suites / collections of test suites were not backing up correctly and consequently would not restore correctly [Issue #1807].
When configuring a SQL Datastore, if the encoding of the system is set to UTF-8 in config.pl, then use a default charset of utf8 for mysql [Issue #1807].
It was not possible to require that a Test Session name / description was mandatory. This is now a global configuration option [Issue #1817].
This is a minor bug-fix release. Issues addressed in this release include:
Exporting test cases or requirements in raw mode could provide incorrect information about associated requirements (or tests) that would prevent correct re-import of the raw data [Issue #1755].
If a test session had an old format folder name (e.g., 0058 instead of 000058) it was possible for the delete session operation to fail to remove the session from the Suite's cache [Issue #1777].
Added a requirement for a more modern version of IO::Socket::SSL, because the system module Mail::Sender does not seem to specify a specific version even though it requires some methods to be exposed [Issue #1782].
This is a minor bug-fix release. Issues addressed in this release include:
When using Oracle as a SQL datastore, if there were fields that were very long and included UTF-8 characters, they were causing the corresponding Oracle field to overflow [Issue #1699].
The resize grab handle was accidentally removed from the lower right corner of wysiwyg text areas [Issue #1714].
When importing requirements and tests there was no way to update an existing requirement or test and have a history entry added automatically [Issue #1717].
If a test or requirement name was longer than the testNameMax configuration parameter, SQL synchronization could fail because the atm_name field of a test case or requirement would be longer than the defined width [Issue #1719].
Tightened up the ability to inject locally defined 'help' that will be included in the help panel. If there is a folder at the top level named localHelp and in that folder there is a file with the same name as the helpFile associated with a page (e.g., changeAccounts.mpl for the page that allows the administrator to edit accounts) then the fragment will be injected into the help panel BEFORE the standard help but AFTER the generic help indicator [Issue #1720].
When using the 'Import from Another Suite' operation, if an item being imported would result in a file name being too long, the import operation threw a run time error rather than reporting a warning [Issue #1727].
The checkSessions.pl utility would complain about test sets where a test case entry had a well-formed atm_id but was missing its id entry. It should not have [Issue #1735].
When assigning tests to testers, if multiple users made assignments at the same time, it was possible for one user's edits to overwrite another. Now the system will attempt to merge the edits. If the merge is not possible, it will warn the (later) user that there are conflicts and offer to let then override the previous changes or discard their own changes [Issue #1747].
Deleting a test set from the top level set folder could cause the set to be copied into the deleted files tree in such a way that subsequent set deletions would fail [Issue #1749].
This is a patch release. The following issue was addressed:
Saved session filters were mistakenly picking up a user's selected sessions from the checklist, resulting in a conflict between lists when generating reports [Issue #1706].
On systems where auto-refresh of the Report and Run pages is disabled, changing to a different saved filter did not automatically reload the page [Issue #1706].
NOTE: If you have already upgraded to version 2.28.00, you may install this upgrade by using the special -I flag to the UPGRADE.pl script (e.g., perl UPGRADE.pl -I). This will skip the test suite integrity checking, which can result in a MUCH faster upgrade for most users.
This is an enhancement release. The following major features have been added:
Upgraded to the latest release of TinyMCE - the wysiwyg editor.
Updated an example 'jira-update' script. Improves integration with JIRA by adding the ability to incorporate JIRA issue status into a session execution field.
Added a new 'jira-rest.mpl' integration module. This module relies upon the Atlassian REST plugin to interact with JIRA.
You can now create public and private saved filters for the lists of sessions on the Run and Report screens. The system will automatically create a default filter for each user's saved filter settings (if any) when upgrading to this version [Issue #1435].
There is now an option to generate a table that shows the breakdown of per-executed test results for each Requirement included in a Templated Requirements report [Issue #1669].
Added an integration module for the Gemini issue tracking system [Issue #1689].
Added the ability to reference the revision number of a test case or requirement when the modification history table feature is enabled. In order to use this feature you must add a field named "atm_revnum" to your test case / requirement fields. You can then reference this field in all the normal ways [Issue #1691].
Added a "history" flag to Execution Fields. When this flag is set, values for this field will be available in a test case's execution history [Issue #1695].
Some issues from earlier releases were also addressed:
The documentation was unclear about history field references in source control operations. Those references must be in upper case (e.g., %HIST_ATM_MCOMMENTS) [Issue #1677].
If a Test Session was corrupt such that one or more tests in the session had no associated 'id' and no associated 'atm_id' checkSessions.pl would correctly report this as an error, but updateSets.pl would not correct this error. Moreover, attempting to synchronize the session with a SQL server could result in a SQL error because the atm_id field (a key field) was empty [Issue #1680].
Importing files to a Windows Server from IE9 could result in a runtime error when attempting to decode the Byte Order Mark embedded in the file [Issue #1681].
When passwords had been encrypted, and then the global encryption option was disabled, changing a password resulted in the user no longer being able to login [Issue #1688].
The table of problem report counts in the Progress Report could become garbled when there is a default value pattern for the atm_prid execution field in a test suite.
This is a minor bug-fix release. Issues addressed in this release include:
It is now possible to delete a defined LDAP server from the LDAP management page [Issue #1663].
The Export Tests feature allowed the select of the execution history, but that field is not exportable [Issue #1666].
The notes field of JSON formatted results sent to the RPC mechanism were not being correctly processed [Issue #1668].
The RPC method getTestUUID did not handle tests that use outline numbering correctly [Issue #1673].
When reports were exported in CSV format, some fields still contained raw HTML instead of formatted text [Issue #1675].
During import of tests and requirements, you can now specify that the content of textarea fields should be converted to Markup for use in WYSIWYG fields. [Issue #1676].
Changed the legal collection of characters to omit commas. This resolves the issue with bulk set / session refreshing and helps avoid other issues related to commas that get passed in URIs for other bulk operations [Issue #1678].
If a renumber test suite operation were interrupted, the resulting files in the file system could have names that did not match the expected pattern for recovery [Issue #1679].
If there was corruption in the user-defined list of ordered files in a folder, the Ordered.pm library would throw a warning during the UPGRADE.pl process [Issue #1690].
This is a patch release that invalidates the previous release. Issues addressed in the release include:
In addition, an example script has been added that will allow importing results via a CSV file using the RPC mechanism so that it can be run on a remote machine.
This is a minor bug-fix release. Issues addressed in this release include:
Exporting session results as CSV would never include the value for the ID field [Issue #1649].
RPC getTestCaseResult was returning an incorrect result if the test case name or UUID matched test item 0 of the session [Issue #1652].
Placing a parenthesis in a Test Set Group name or a Test Set name could cause it to not display correctly and cause other behavioral problems [Issue #1645].
In some versions of Internet Explorer, a correctly formed size attribute for a history or execution history test case field in the test case field editor would indicate that it the height could not be zero [Issue #1654].
Importing results from a CSV file via the GUI did not correctly update the test suite meta data in all cases. This could result in the progress of the test session not being correctly reported on the main Run Sessions page [Issue #1658].
It was possible for folder names to be displayed incorrectly in the Edit Tests and Edit Requirements views if the names used non-ASCII characters and the encoding was set to UTF-8 [Issue #1659].
Performance of graphing modules was unnecessarily slow when runnning under mod_perl [Issue #1659].
Notification messages were being sent to disabled accounts [Issue #1662].
This is a minor bug-fix release. Issues addressed in this release include:
An earlier fix for an issue with cleaning up user data was not merged into the main tree [Issue #1609].
If there were certain types of cache damage in a test suite, the "Clean up Hidden, Deleted Files" operation could fail to execute completely. [Issue #1626]
It is now possible to require that users have a unique e-mail address. [Issue #1637]
In certain circumstances, it was possible for non-ASCII folder names to be displayed incorrectly in the folder list. [Issue #1646]
Headers in some tables in requirements reports were changed to make it clearer exactly what the data refers to.
Under a very rare circumstance the data manager could attempt to access a datafile that was already closed, resulting in a run time error.
This is a minor bug-fix release. Issues addressed in this release include:
If a test suite had no sub folders, the folder tree loading indicator would continue to 'spin' after the data was loaded. [Issue #1630]
Administrators can now force a user to change their password on their next login [Issue #1624].
This is an enhancement release. The following major features have been added:
ApTest Manager will now automatically track the execution history of each test case. You can display this information in each test when viewing and editing, and can also embed the information in reports. See the Admin Guide for more information on 'atm_runhistory'. [Issue #1333]
The folder tree list will now show the count of the requirements or test cases in the folder and the folders below it. [Issue #1543]
Certain "High Level" test suite operations can now be limited to administrator-class users only. [Issue #1593]
Added integrity checking to checkSessions.pl so it ALSO checks the associated test sets and checks to ensure that there are no extra test sessions defined in the system cache. [Issue #1597]
Added use of jQuery and jsTree for folder tree displays on Tests / Requirements and Test Sets to improve performance when there are many thousands of folders. [Issue #1600]
Requirements reports can now include a summary line that reflects the percentage of requirements in the report that have associated tests. [Issue #1601]
It should be possible to manage an independent collection of session variables outside of the 'main' collection. You can now define a VARIABLES.local file for any test suite and those variables will be integrated with the main collection of variables. [Issue #1617]
When creating a new account and when modifying an existing non-LDAP account, it is possible to require that the user change their password on their next login.
Some issues from earlier releases were also addressed:
If a user chose a non-standard landing page it was possible for the user's test suite selection to not be remembered so that the next time the user accessed the system they would be placed in a different test suite by default. [Issue #1583]
Previewing a test suite profile template that referenced result data would result in a Run Time Error. [Issue #1612]
If a status report has CSV output selected and session variables are included, the report would error off. [Issue #1616]
Multi-select session variables were not being emitted correctly when exporting sessions or when calling the generateVarXML method. [Issue #1618]
When a session variable was a multi-select list, filtering in the run and reporting screens would only work if multiple values were selected in the filter. [Issue #1623]
This is an emergency patch release to fix a regression in 2.26.03:
This is a minor bug-fix release. Issues addressed in this release include:
Submitting results via rpc.mpl failed with a run time error. [Issue #1584]
There were some inefficiencies in user permission updating that could make changing permissions at installations with MANY MANY users and MANY MANY test suites take a long time (and potentially deadlock). [Issue #1585]
Substantial corruption in the user database could exacerbate performance issues. [Issue #1586]
Editing the execution fields or session variables of a test suite profile could result in a run time error. [Issue #1587]
Creating multiple test sessions in the Administer Sets and Sessions interface was ignoring the session variable settings of sets after the first one. [Issue #1589]
When changing assignments via RPC, the assignment meta-data was not updated for the test session. [Issue #1590]
Importing results did not update the session meta data cache when the session results or assignments were updated. [Issue #1591]
If a folder, test case, test set, or requirement had a '#', '?', '+', or other reserved characters in its name certain operations would fail. [Issues #1595, #1599]
This is a minor bug-fix release. Issues addressed in this release include:
If there was a cache inconsistency in the structure of a test set such that the list of sessions was inaccurate, the Delete Set operation could throw a run time error.
The debug logging level of the ATMHandler initialized and using compression messages was set to 1 - changed it to 3 so it does not introduce messages into the logfile that appear to be errors.
Added a 'skip' parameter to checkSetup.pl - if set, then permission checking and test suite integrity checking will be skipped to speed up execution.
A required module was not being included by the import results component. This could result in a run time error.
Included an example Integration Module for redmine. [Issue #1529]
On systems with versions of Perl < 5.8.9 upgrading could fail if there were more than 1000 test sessions in a test suite. [Issue #1551]
If there is cache corruption in the suite database it was possible to get a run time error when on the run and report selection pages. [Issue #1552]
It was possible for the progress meters to show 100% when the session was not actually quite complete. [Issue #1559]
The Select Report page did not show the filter that permitted selecting by session number. [Issue #1560]
The Result Code editor showed an incorrect context-help file. [Issue #1565]
The search/replace functionality in the edit test case area was incorrectly referencing the change history table. [Issue #1568]
The session summary report was unable to expand arbitrary test case fields. [Issue #1568]
The exportSuite.pl script reported an error when completing its export. [Issue #1575]
Test Case and Requirement names should not have permitted quotation marks, ampersands, nor percents. [Issue #1577]
This is a minor bug-fix release. Issues addressed in this release include:
If there were execution fields that were not included in the run template, any data in those fields was removed each time a test run run using that run template, even if the value was marked readonly. [Issue #1474]
A test case report that did not require results would display columns for results and notes when 'step-by-step' mode was used for a test procedure. [Issue #1526]
It was not possible to copy only the access permissions from one test suite to another. You can now do this through the copySuite.pl command line operation and through the "Change Test Suite Access" item within "Manage Test Suite". [Issue #1531]
When a session had been completed, and then it was refreshed in such a way new tests were added, the end date was not cleared. When the session was subsequently completed again it would not reset the end date nor resend notifications. [Issue #1534]
The Progress Report did not include user-selected test case details fields when customized to emit CSV. [Issue #1536]
It is possible to add ApTest Home Menu and Navigation items as a way to extend the system. These extensions were not showing up in the list of available start pages for the system wide default nor for individual user choices. [Issue #1537]
Exporting Session Results did not include session variables. There is now an option to include session variables in the output. [Issue #1538]
On perl 5.8.8 and earlier a bug in the File::Glob module could cause the system to incorrectly calculate the highest numbered Test Session, and thus result in a corrupt '.nextid' file for Test Sessions. [Issue #1542].
If the system somehow had a corrupt '.nextid' file for Test Session Creation, it was possible for the system to create multiple sessions with the same identifier but with different folder names. [Issue #1542]
Multi-edit of test cases was displaying field names instead of field contents. [Issue #1544]
Generating a Test Case report with no results could cause a runtime error about a bad call to generateMarkUp. [Issue #1548]
Exporting to XLS could fail if a menu-style field had more than 255 characters of data and data validation was enabled. [Issue #1549]
IMPORTANT UPGRADE INSTRUCTIONS
Because of a bug in a (much) earlier release of ApTest Manager, it is possible that some old Test Sessions may be missing information that connects the test results to their test cases. When performing this upgrade, the system will check for this corruption and report it to you. If you see reports about this issue while performing an upgrade, you can re-run the UPGRADE.pl script with the '-P' option to automatically prune the data or with the '-I' option to skip integrity checking (and therefore not repair the issue, but complete the upgrade).
This is an enhancement release. The following major features have been added:
To improve performance, switched into 'static source' mode. If you are making any local changes to your source code, see the config.pl file section on 'Development control' for information on how to force those changes to be visible.
It is now possible to enable automatic updating of some screens (Run Sessions, Select Report). There is a system wide control for this, and an individual preference as well. Note that enabling this feature will 1) place a small extra load on the server, and 2) will mean that users on any of these screens who have the preference enabled will remain logged in and using a license as long as one of their auto-refreshing screens is displayed.
Changed the rules for Requirements and Test Case folder and file names to permit a broader collection of characters.
There is now an administrative option to allow dates and times to be displayed using the historical rules (legacy behavior), using an administrator-defined 'locale', or using a user-defined 'locale' falling back to an administrator-defined default.
Export Tests and Requirements now allow arbitrary ordering of fields in the exported data, and remember your field choices and order to make repeating exports easier.
Added a command line tool to copy a test suite (bin/copySuite.pl).
You can now attach files to results in sessions via the RPC interface [Issue #1424].
Changed the Test Set administration interface so that controls for set management are all on the set group display page instead of in a sub-menu [Issue #1445].
Added the ability to renumber tests or requirements within a folder when using autonumber-by-folder mode for naming [Issue #1455].
Added a getSuiteList method to the rpc system [Issue #1468].
Added code to the various import tools that will handle two edge-cases. First, if the input 'CSV' file is tab-separated instead of comma separated, the system will silently permit this. Second, if the input file is in an encoding that does match the system-defined encoding (or UTF-8 if there is no system-defined encoding) then the input file will be automatically converted to the system-defined encoding [Issue #1470].
Some elements of the API documentation were not being published due to the depth of their structure.
If you provide a 'locallogo.png' file in the images directory, your logo will now be used everywhere the default ApTest Manager logo appears.
Increased the maximum number of test sessions supported to 1,000,000 and changed the directory structure so that there are never more than 1000 test sessions per folder to work around a limitation on some Unix file systems [Issue #1475].
Added an option to set a banner that can display on every page if system administrator configures one [Issue #1480].
Added ability to export in Excel format [Issue #1483].
Added ability to import from Excel [Issue #1484].
Added ability to import and export data to/from multiple sessions in a single file [Issue #1485].
Added more session details to the getSessionDetails rpc interface.
This release also addressed a number of reported issues:
When creating multiple sessions it was possible for the default settings from the set[s] to be ignored.
Changed the logic used when creating zip files for backups to work around some memory / disk space problems [Issue #1422].
If there were many many changes to the values for sets, the setSelectors.mpl script could cause the server to throw a URI too long error. Also the advanced search / simple search switch did not work correctly [Issue #1486].
If a different Perl interpreter is selected when running the UPGRADE.pl script from the one originall used, the system will have trouble resolving all the modules. Added a warning to force the administrator to do a reinstall if they are changing perls [Issue #1494].
Test Cases listed in the detail section of requirement reports were listed in an apparently random order, instead of in test suite order [Issue #1513].
Several tools in the 'bin' directory that create temporary files were not creating those files in the ApTest Manager 'tmp' area. Note that this can be overridden via the 'TMPDIR' environment variable if you really want temp files to be elsewhere on the file system [Issue #1517].
Exporting CSV formatted test cases incorrectly included the UUID of associated requirements instead of their display ID. This in turn made it impossible to re-import the test cases with their links to requiements intact [Issue #1520].
This is a minor bug-fix release (unless you use SQL integration - then it is a major bug fix release). Issues addressed in this release include:
Version 2.25 introduced SQL connection pooling. The changes related to this resulted in run time errors when used in conjunction with some versions of some database drivers (notably MySQL reporting that the DBD module does not implement the AutoCommit attribute). The root cause of this problem was that some objects thought a conneciton was still open when it had in fact been closed. This has been corrected [Issue #1465].
Added code in bin/checkSessions.pl to examine test sessions for possible data structure damage as a result of a missing 'atm_id' [Issue #1459].
If a test session had a corrupt entry such that a test had no UUID then it was possible for the ID field of that test to get populaed with the entire collection of UUID to ID mappings [Issue #1459].
When using the importFromCSV script and supplying a field that contains usernames, if a user was defined with any uppercase letters, they would not match [Issue #1462].
When using the importFromCSV script to update an existing requirement that had no associated test cases, the script would error out [Issue #1457].
When using 'simple' search, certain reports would throw a run-time error [Issue #1467].
This is a minor bug-fix release. Issues addressed in this release include:
Added some documentation about how to configure under IIS 7.
Clarified Strawberry Perl requirements for Windows users.
If a field was referenced in a test case and a user was editing that test case, but at the same time the field definition was removed by another user, the saveTestCase.mpl module would throw a run time error [Issue #1441].
There were no examples about how to integrate with Subversion in the configuration file [Issue #1443].
The SQL Session Data tables were incorrectly leaving out some fields [Issue #1454].
This is a bug-fix release. Issues addressed in this release include:
This is a bug-fix release. Issues addressed in this release include:
The code for updating cookies in customizeReport could throw an error if there was a comma in an existing cookie saved in a user session preference.
It was not possible to create a session "unaffiliated" with a test set when using makeSession.pl or when using rpc.mpl.
The INSTALL.pl script was incorrect retrieving PPM files from the version 2.24 PPM repository when installing on Windows platforms under ActivePerl. It now accesses the ApTest repository for version 2.25.
The code for generating dynamic SQL queries was not correctly searching for UUID patterns to define collections of tests. THIS CODE IS STILL EXPERIMENTAL.
There was no way to retrieve the list of test sets and test sessions via RPC (Issue #1436).
If a session were somehow removed and still displayed in the user interface, some operations (e.g., delete session) might throw a run time error. Also, the associated set was not being correctly updated when multiple sessions were deleted (Issue #1439).
This is a bug-fix release. Issues addressed in this release include:
The 'simple search' operation did not show its selection options in the Test Set definition and Test Set management pages [Issue #1430].
In the 'advanced search' mode of Test Set definition and changes the ID field defaulted to 'Select from list' instead of 'Select by Folder & Name' [Issue #1430].
When modifying an existing test set, the ID selection field was being incorrectly set to 'Select from list' when it was actually configured to 'Select by Folder & Name' [Issue #1430].
This is an enhancement release. The following major features have been added:
The 'deleted files' repository for each test suite is now located in a subdirectory called '.x.dir', not '.Deleted_Files.dir'. Directories created within this folder are now numbered starting at 1 (e.g., '1.dir'). This is to help alleviate an issue with long path names on systems that do not support long path names (Windows) [Issue #1252].
Added another permission level that allows users to manage sessions without being able to manage sets [Issue #1296].
There are now administrative options that allow the easy use of HTTP Basic Authentication to identify users [Issue #1364].
You can now import uploaded files from another suite as part of the import from another suite operation [Issue #1369].
You can now do bulk-creation of test sessions against multiple test sets within a folder [Issue #1308].
You can specify the default landing page for users who have not set their own. The 'default' default remains the simple menu of operations. We suggest setting it to the Execute Tests page, as that is the most intuitive dashboard page.
There is now an example issue tracking integration module for Trac.
Re-enabled row higlighting when selecting rows of tables with checkboxes [Issue #1388].
The progress report can now show detail ONLY for tests where the results are the same in all sessions included in the report.
This release also addressed a number of reported issues:
There was a slim possibility that when long running operations were going on, a test case save in the same test suite would result in a run-time error. This risk has been reduced. The user can always press 'back' and attempt the save again should such an error pop-up [Issue #1257].
Some users have reported that when renumbering test cases or requirements if the operation is interrupted tests / requirements seem to disappear. Added logic to the synchronize operation to look for files that are remnants of renumber operations and reconnect them to the tree automatically [Issue #1363].
When exporting tests or requirements in 'raw' csv mode, table field columns were not correctly emitted. The table is now expanded into its columns and each row is emitted as a separate row in the CSV file [Issue #1374].
When editing a test case from the Run Test Case page, the mandatory field handling code was broken in Internet Explorer due to a JavaScript typo [Issue #1376].
When toggling the 'show all' option on the Select Reports page, the option could get 'stuck' and would not be overridden when defining new filters [Issue #1377].
The link to the image for locked folders was incorrect in the Edit tests and Edit Requirements views [Issue #1379].
When generating CSV output for the Status Report, result fields that are marked as excluded were INCLUDED in the counts by mistake [Issue #1381].
In certain situations IE8 would refuse to render a perfectly valid page when Arabic text is embedded with non-Arabic text in a line followed by a line break and then followed by a digit [Issue #1383].
When a Test Set folder was renamed or copied, the description for that folder would get lost or not copied [Issue #1387].
Requirement fields of type checkbox had an automatic default of the first value in the list AND were unable to be multi-select [Issue #1392].
Importing tests or requirements required the use of the translated values of list fields, rather than the descriptions. This had a consequence of preventing the use of time notations like 1d or 0.5h if those were used in the definition of a time field [Issue #1393].
Importing results into a session from a CSV file did not update the cached impression of result counts [Issue #1394].
Allow a set parameter to be passed to runSessions.mpl to control specifically what set (and therefore sessions) are displayed.
Corrected a situation where the SuiteDB data was not being captured in read mode at the start of processing if the Suite object was opened in write mode [Issue #1399].
Optimized loading of execution field definitions during Suite object creation to relieve load on the SuiteDB object [Issue #1399].
Changed the way SQL connections are handled so that each process never has more than a single connection to a SQL store for each test suite to avoid a potential deadlock with some SQL databases [Issue #1399].
In IE7 the list of folder controls did not display correctly when managing a test set folder [Issue #1403].
When an imported results CSV file dod not quote data and had extra white-space around commas, the data was not always parsed correctly [Issue #1404].
If a Test Set used a regular expression to select tests, creating a session would throw a run time error [Issue #1410].
When there were many many requirements in a folder, the popup list of requirements too took long to display [Issue #1415].
When editing a test case or requirement by clicking the 'Edit' button while viewing the item, uploads of attachments would be put in the top level folder instead of the current folder [Issue #1426].
Step-by-step result recording was not being correctly captured in the associated SQL store [Issue #1429].
This is a bug-fix release. Issues addressed in this release include:
When session execution is complete and you click the close window button, but the parent window had already been closed, and you are using Internet Explorer, IE will throw a JavaScript error. [Issue #1367]
When selecting tests via search or creating a test set, if you select by folder AND only a single other field, that single other field was ignored for selection purposes. [Issue #1368]
In modern versions of Firefox and Opera the wysiwyg editor did not correctly insert ApTest Manager fields from the selectable popups. [Issue #1386]
This is an emergency patch release, but also includes some minor bug-fixes. Items in this release include:
This is a minor bug-fix release. Issues addressed in this release include:
There was a potential issue with checking for Suite-level locks that could cause a failure when running under mod_perl.
The checkSetup.pl script now is more agressive about reporting progress while it is running [Issue #1286].
When editing Session Variables, if a variable is of type date and a default value is set, the calendar popup did not close correctly [Issue #1310].
When doing a search on a multi-select field that is in a table, if any table row had more than one value selected, the search would not correctly match one or more of the values [Issue #1341].
When the trash was emptied, the tests or requirements thus removed were still being counted as present in the test suite [Issue #1342].
Added a way to save a test case / requirement and create another new one quickly [Issue #1344].
If there were errors in the structure of any Test Sessions, it was possible for the exportAll.pl script to include 'dbm' files in the zip file. exportAll.pl now attempts to serialize these manually if the automatic process fails [Issue #1346].
The template editor appeared to fail on recent versions of Firefox because they fixed a bug we were counting on [Issue #1348].
Added comments to make it clear that some sourceControl operations are REQUIRED or their corresponding operations will be disabled [Issue #1349].
There were some inefficiencies in test case and requirement searching that caused performance to be MUCH worse than expected when there were a vary large number of test cases [Issue #1353].
If the 'notes' execution field was marked as mandatory, the system did not enforce it [Issue #1355].
In Internet Explorer an empty Test Set folder would throw a JavaScript runtime error [Issue #1356].
In Internet Explorer, when searching test cases, if there were no requirements enabled in the test suite, date fields would throw a JavaScript runtime error [Issue #1358].
This is an emergency patch release, but also includes some minor bug-fixes. Items in this release include:
Added a JIRA client example that uses SOAP to support Unicode better.
An image was omitted from the last release but was referenced by some help pages and by the IE6 integration support code.
Added configuration option to control running multiple tests at a time - defaults to allowing this [Issue 1314].
Added display of the count of tests / requirements in a folder [Issue #1292].
Test case field searches were missing some selection attributes [Issue #1340].
Import tests / requirements into the top level folder was putting the new items into a hidden folder [Issue #1340].
This is a minor bug-fix release. Issues addressed in this release include:
Removed unused images from the images directory to speed cache refreshes.
The ApTest_A test suite profile had a typo in its Run Many template that caused a layout problem.
The 'locked' test session / test set icon was missing from the distribution.
The default sort order on the Test Suite selection page and the Account display page was backwards.
The "LDAP" and "Admin" columns on the Show Accounts page were swapped [Issue 1329].
When updating the colors in templates while upgrading to version 2.24, it was possible for some templates to end up with a bad pattern in them which would result in them being uneditable [Issue 1334].
When a user selected the "Search" button in the Edit Requirements area, there was a javascript error [Issue 1335].
Changed install/upgrade so that test suite profiles get colors updated to 2.24 scheme if use selects that [Issue 1336].
The find/replace page threw a javascript error on IE7 and IE8 in both tests and requirements [Issue 1337].
When editing fields in test suite profiles, incorrect warnings were displayed when fields are deleted or renamed [Issue 1338].
This is an enhancement release. The following major features have been added:
The look and feel has been completely re-done. Note that this has resulted in some incompatibilities with Internet Explorer version 6. We are working hard to address these, and will put out a patch release to support IE6 as soon as possible.
The main datafile interface has been changed from the Perl DB_File module to the Perl BerkeleyDB::Hash module. This change has no effect on data, but it does improve support into more modern versions of Perl on Windows platforms [Issue 1189].
A few Perl modules ApTest Manager relied upon were unavailable in Strawberry Perl 5.12. We have replaced those modules with similar ones that are available [Issue 1189].
ApTest Manager now works with Strawberry Perl 5.12 on Windows platforms, in addition to continuing to support ActivePerl 5.8 for existing users. New Windows deployments should always use Strawberry Perl [Issue 1189].
Users can now specify a default start page.
The rpc mechanism can now be used to commit multiple test results into a session with a single call [Issue 1221].
A number of additional methods were added to expose more test suite details via the rpc mechanism [Issue 1222].
It is possible to use the renameUser.pl script to change a user's LDAP server [Issue 1234].
When defining a SQL connection for a test suite (or globally) you can now specify additional table creation options (e.g., to use a specific database engine in MySQL) [Issue 1254].
When creating an ad hoc test session from the Edit Tests or Edit Requirements area, you can now specify the schedule and session variables for the new session [Issue 1321].
This release also addressed a number of reported issues:
The INSTALL.pl script checks to see if local modifications have been made to any of the provided scripts, but the logic for this was such that it might think changes were made when they had not been.
When selecting multiple checkbox items in a table, if the table had another table embedded within it, not all checkboxes would be selected or cleared when clicking the 'select all' or 'clear all' button [Issue 1261].
The SQL integration support did not accurately take into account the length of 'index' identifiers when determining if the created database and tables would fit within the restrictions of the chosen database engine [Issue 1270].
Import from another Suite did not include the javascript component that enabled selecting test cases from a list [Issue 1273].
Exported archives did not contain the LDAP server configurations [Issue 1276].
If source control is enabled, exporting a test suite can result in a new repository being created [Issue 1279].
Oracle supports large data fields, but the Perl driver for this does not work correctly so initialization could fail [Issue 1282].
When renaming a test case, the automatically generated change history entry did not contain the old name of the test case [Issue 1287].
When a new user is created, an email was not being sent to that user to inform them [Issue 1288].
When a test case execution time field was set to be an automatic timer, and there was a submission error (e.g., a missing result on the execution page, or a missing mandatory field) the form might still end up getting submitted [Issue 1289].
When performing a find/replace on a field that is also a namepart. the cached versions of the test case or requirements names would not get updated [Issue 1293].
If an ApTest Manager field had data that was longer than it should be it was possible for SQL synchronization to fail because the data would not fit in the SQL field [Issue 1299].
The colorPicker for the Result Code editor had been mistakenly removed from the distribution, causing the editor to not display correctly [Issue 1303].
When executing a test case, if the test case was locked, it was still possible to access the edit test case page [Issue 1305].
When using renameUser.pl, data in history tables was not being updated correctly [Issue 1309].
If a field of type uuid (atm_id, req_id) was included in a template, the value of that field might be updated when saving a test case or requirement [Issue 1312].
When using step-by-step testing where there is a single step in a test, and using 'run many' mode, it was possible for a change in the result of the single step to NOT cause the changes for that test case to be recorded [Issue 1313].
The documentation about how to locate ApTest Manager outside of Apache's DocumentRoot was lacking [Issue 1315].
This is a minor bug-fix release. Issues addressed in this release include:
If a the definition of a table field or history table field had a list of field names that ended in a comma, the last field would not be interpreted correctly [Issue 1244].
If a VALUE was provided for am atm_prid Test Case or Requirement field, that VALUE was populated in test cases and requiremnts by default [Issue 1245].
If a user's full name had a comma in it, the Progress Report was splitting the name on that comma and reporting statistics about the user twice in tables about execution results [Issue 1248].
When running importFromCSV with the -n option (do nothing), the program errored because it tried to call the UUID method on a handle that was not defined [Issue 1250].
When importTests.pl is called with a -C or -A option and a test case referenced in the CSV file was not in the test suite, the system was mistakenly including the test case in the Session anyway [Issue 1251].
When test cases or requirements are ordered manually and do NOT use outline or automatic numbering, client-side sorting of the test case or requirement table would sort alphabetically on the ID column rather than sort into the manually defined order [Issue 1256].
When performing a global replace operation on Test Cases or Requirements, change history table information that was entered before previewing results of the replacement would be lost [Issue 1260].
If the option that permits case insensitive user names was enabled, the system mistakenly created new account records for each different username that a user attempted (e.g., user and USER). This then caused some operations like preference setting to not work correctly. NOTE - if you had this option set, you should use the Show Accounts operation to detect duplicate accounts and delete them [Issue 1262].
In the Mantis integration module, the assigned user hash was being presented in an effectively random order, and it included a bogus blank entry (to get a real blank entry, the flag includeNotSet should be true in the call to the menu operation) [Issue 1265].
On some screens that have lists with checkboxes and a 'select all' checkbox at the top, clicking the 'select all' box would not select the last item if the table header had subheadings [Issue 1266].
This is a minor bug-fix release. Issues addressed in this release include:
If someone manually created a directory on the server within the SETS hierarchy of a test suite, and placed one or more test sets within that directory (either manually, or because the folder had started out as a real Test Set group, and then been renamed on the server manually), synchronization of the test suite would fail because the libraries were unable to find the sets [Issue 1237].
An update to the way suites are locked when synchronizing caused exportAll.pl to fail [Issue 1238].
This is a minor bug-fix release. Issues addressed in this release include:
Version 2.23.00 added support for multiple LDAP servers, but the release notes failed to mention this.
When upgrading to 2.23.00 existing LDAP users continued to work fine, but some administrative screens did not correctly show that the users were LDAP-based [Issue 1233].
The Show Accounts and Change Accounts pages did not indicate which LDAP server a user was associated with when there are multiple LDAP servers defined.
This is an enhancement release. The following major features have been added:
The WYSIWYG editors now work in Opera.
When logged in, the test suite name is now a 'clickable' link back to the top level menu of the test suite.
When using management scripts, the suite lock is now set whenever needed.
It is possible to configure ATM so that login name lookups are case insensitive.
Added an option to disable notifications to users when they perform the operation that caused the notification to be sent [Issue 1186].
Added methods to dependsOn.js to make it easier to enable / disable whether a field is mandatory at runtime [Issue 1211].
Added an optional mechanism through which users with Suite Manager level access can change the access level of other users [Issue 1213].
When there is a series of checkboxes, it is now possible to use shift-click to extend your selection [Issue 1216].
There is now an option to include a table with a breakdown of information about values from the 'atm_prid' Execution field in the Progress report [Issue 1223].
When working with Oracle 11g, data tables failed to initialize [Issue 1230].
This release also addressed a number of reported issues:
When a suite object is created, the suiteDB is opened and all of the cached data is loaded into the object. The suiteDB is then released but the handle data was not cleaned up correctly. This could cause random-appearing cache consistency issues because the suiteDB information was not being updated [Issues 1161, 1167, 1201].
When searching requirements, searching in a subfolder would match items in the parent folder as well [Issue 1203].
If a test case or requirement field were not included in their respective editing templates, and the field was not marked 'readonly', any value(s) in that field would be cleared when the test case or requirement was edited and saved [Issue 1204].
When generating a requirements report from the Edit Requirements area, some graphs would not display correctly [Issue 1207].
When graphing data from a history table, only the most recent value should be used [Issue 1207].
When upgrading between releases that change the structure of the user database, it was possible for an error to arise in the SQL synchronization [Issue 1212].
In Requirements, if an atm_prid field was defined, the default value pattern was not being correctly used to create links from the issue names into the associated issue tracking system [Issue 1217].
If a history table definition was damaged such that it referenced a non-existent field, the multi-test and multi-requirement editors would throw a run time error [Issue 1219].
When a templated test case report is being grouped by results, only some result fields were available [Issue 1224].
This is a minor bug-fix release. Issues addressed in this release include:
Added information about failed read and write locks so it will be easier to determine what resource is hard to obtain [Issue 4].
Ensure that the suite cache is updated when a test set's data is changed [Issue 1162].
Added a note that if you are using search and replace on a field in a table, commas must be escaped [Issue 1165].
When doing a find/replace, using modification history tables, having the fields of the modification history table NOT be mandatory, and not providing any history data, the list of previous modification dates and users would be replaced with a single entry reflecting the current change [Issue 1177].
If data fields had commas embedded within them (e.g., if a user's full name had a comma in it) the labels in some graphs could get confused [Issue 1179].
Test cases with names that end in *req were getting incorrectly processed during synchronization. This would cause many side effects, including the name of the test case not showing up when viewing the folder, and some reports running very slowly because the cache of ordered test cases was constantly being re-evaluated [Issue 1181].
Creating a new requirement always marked it as 'locked' [Issue 1183].
The account 'disabled' flag was not being put into the account data table when SQL mirroring was enabled [Issue 1184].
When attempting to view a test case while running that test case, the contents of the test case did not display [Issue 1190].
When importing test results, there was no way to preserve the value of execution fields that are NOT in the CSV file [Issue 1200].
Added a '-I' option to the upgrade and installation scripts to skip test suite integrity testing. Useful when test suite data structures will not change as a result of an upgrade or re-install.
This is a minor bug-fix release. Issues addressed in this release include:
If a test set was corrupt in some way, it was not possible to delete the test set.
When saving a requirement, if the requirement pointed to a test case that was no longer available, the system could throw an error rather than saving the changes.
If a test set file was damaged such that it had no sessions list, the delete set operation could fail.
Under EXTREMELY RARE CIRCUMSTANCES it was possible for a task that was waiting for a 'read lock' to continue even though it had not acquired the lock. This would result in error reports like 'Can't call method "FETCH" on an undefined value'.
When using the special '-X' option to INSTALL.pl (update executables) the ATMHandler, cgi_handler, and .htaccess files were not being updated [Issue 1143].
When running step-by-step tests in run many at a time mode, per-step notes were not being recorded [Issue 1145].
When importing tests or requirements, values for menu fields with embedded whitespace were not being correctly mapped to their equivalent values [Issue 1148].
When refreshing a test session that is not associated with a test set, the refresh would not complete due to a deadlock [Issue 1149].
This is a minor bug-fix release. Issues addressed in this release include:
When using step-by-step results, viewing a session summary, and selecting a test case, the resulting window would not show the results and notes for each step [Issue 1103].
'dependson' fields in session variables were case sensitive [Issue 1126].
If a field was removed or renamed AND a user had saved a multi-edit preference where that field was referenced, the field continued to show up on the multi-edit page [ISSUE 1130, 1133].
When importing tests or requirements from another suite, if the import was many levels deep, sometimes the folder tree in the new suite would not get updated until a synchronization was performed [Issue 1132].
It was not possible to select the popup list of test in the make tests from requirements module. It was also not possible to select the popup list of requirements in the make requirements from tests module [Issue 1134].
When importing tests or requirements from another suite, the saved searches were not working [Issue 1135].
A single select menu requirements field was always defaulting to the first item, regardless of which item was identified as the default in the Requirements Field editor [Issue 1136].
When using the rpc module, if the username parameter passed in was not a real user, the system would throw a run time error instead of just reporting the mistake to the submitter [Issue 1140].
When importing tests or requirements from another suite, if you attempted to popup a list of to select from, the list that was shown was from the CURRENT suite, not the OTHER suite.
During installation on some systems, after any missing Perl modules were built, the installer's current working directory was no longer the ApTest Manager home directory. This could cause various confusing messages and, in some cases, cause installation not to complete.
This is an enhancement release. The following major features have been added:
The 'filter' settings on the Run and Select Report pages have been moved to the top in a hidden region that you toggle open/closed to make filtering more convenient.
You can now save test case and requirement searches and reuse them.
A user with 'suite manager' privileges can now import tests and requirements into one test suite from another.
You can now enable an automatic or manual test execution timer.
On non-Windows systems, if Perl modules are missing during installation, they can now be installed in a local subdirectory or in the main system directories (to help accomodate use in environments where you may not have root access, such as a shared hosting server). We are also now mirroring the Perl CPAN system on a server at ApTest to ensure that required modules are always available.
Fields of type 'file' now have an 'attach' button associated with them so that it is easier to associate files with test cases and requirements.
When test cases or requirements are using the 'plain' name style, you can now create a test case or requirement and not edit it at all.
When selecting multiple items from a folder tree-style list, you can now select a folder and have all the items in that folder and its children selected / deselected.
When executing tests, clicking on the test case name to view the complete test case will now do so in the context of the test session
In the session summary report, you can now personalize the view to include additional execution fields.
There is now a global configuration option that, if set, causes users to be warned if a name they choose for a test case, requirement, or folder would be changed because it uses non-portable characters. This option defaults to off - no prompting.
Under extremely high concurrent user loads, where all users were working on the same test suite, there was a possibility that some operations would time out because resources would not come available in time. There is now more comprehensive access control scheme that gives pending write operations precedence over read operations. This should improve performance in these high load situations, but have no real effect in typical operation.
The previous version introduced a mandatory result of 'incomplete'. Some users objected to this. Now the system allows you to indicate which result, if any, means a step-by-step test is incomplete.
You can now set a system-wide option if you want to permit the inclusion and editing of tables in wysiwyg and wysiwyg2 fields.
Added explicit integration support for FogBugz as an issue tracking system.
The following issues were also addressed:
When importing results into a session, it was possible for a result code to have leading or trailing whitespace. This would cause the result to not match defined results, and therefore be ignored in counts, reporting, etc. [Issue 1086].
When an ID field was numeric, its value (which is the path and the auto-assigned number) was not being put into the SQL store [ISSUE 1087].
Updated the Mantis integration module to work with modern versions of SOAP::Lite. Also added the ability to have dynamic menus of values retrieved from Mantis during initialization.
In the progress report, the last execution time was not being reported for tests that had been run, and was being reported incorrectly for tests that had not yet been run [Issue 1112].
Under some circumstances history table entries could get created without recording the modifying user and modification time.
Test case fields in tables that are of type date and style date and time were not correctly converted into SQL for some SQL stores (notably MS SQL) [ISSUE 1066].
If a user's full name included a comma, it was split into separate parts and treated as 2 names in the Progress Report [Issue 1069].
The wysiwyg2 field style did not work correctly in the find/replace screen [ISSUE 1073].
When a readonly field is in a table, removing or reording rows has no effect on the readonly field [ISSUE 1076].
Modifying a note via the session summary page would reuse the name of the original tester rather than the name of the user updating the note [ISSUE 1079].
Removing a field on which another fields depends would result in a runtime error when trying to build the javascript for handling dependencies [ISSUE 1088].
In some cases using a text field for execution times could result in the system mis-interpreting the meaning of the units on times (e.g., 4d or 3h) [ISSUE 1107].
It was possible to define a table field that refered to itself, resulting in a loop and memory leak [ISSUE 1118].
This is a minor bug-fix release. Issues addressed in this release include:
Some debugging code was left in the Result Code Editor that could result in a popup showing up when saving.
The import results operation could timeout if importing a significant number of results. It now reports progress so that the connection to the browser will stay active.
A new '-l' option to bin/updateSuite.pl will check file name lengths and warn about files that are longer than 255 characters. This is a Windows path name limit and the check is automatically done on Windows, but this option can assist when migrating ApTest Manager from a non-Windows platform to Windows.
When importing results, it was not possible to set the time when the test was executed nor the user who executed the test [Issue 1024].
Report customization permitted the inclusion of per-step execution notes in some report output, but those reports were not actually able to display that information. Also, step-by-step tables had extra columns attached to them when included in reports [Issue 1030].
Under some circumstances the issue tracking and upload file links in the 'run many' page would link to the wrong place [Issue 1034].
When some fields are marked as 'hidden', their labels are still displayed when they are used in a template [Issue 1035].
It was not possible to include test case fields an exported test session [Issue 1036].
If a field with a numeric datatype had garbage data in it, the SQL initialization would fail [Issue 1041].
If a test result report were run on a subset of the tests in a session, the percentages in graphs were calculated based upon the total number of tests in the session rather than the number in the report. This resulted in erroneous data in some circumstances [Issue 1043].
Added processing of 'subprojects' to the Mantis integration module example [Issue 1046].
In some reports, the order of sessions specified from the Select Report page was not preserved when the report was generated [Issue 1048].
The 'hours per day' setting for stafftime was not being used when calculating durations in the Session Summary [Issue 1049].
On some 64bit systems, the encoding of data in the Run Single and Run Many tests pages could be confused [Issue 1050].
Readonly fields in tables would be cleared during a save of a test case [Issue 1054].
It was too easy to reset run data fields while running test cases. The user is now asked to confirm it [Issue 1055].
This is an enhancement release. The following major features have been added:
Changed the way that temporary data is cached so it is automatically cleaned up each time a user terminates their session (by logging out or timing out) [Issue 148].
Added an option to save a test case or requirement and continue editing [Issue 936].
Introduced the ability to set attributes on result codes. Attributes include 'obsolete', 'notify, 'hidden', and 'exclude'. See the Admin Guide for a detailed description [Issue 749] [Issue 978].
Introduced per-step test results via a test case table field flag of 'Add Result' and per-step execution comments via a test case table field flag 'Add Notes'. Also updated the pre-defined test suite profiles 'ApTest_B' 'ApTest_Y' to take advantage of the new flags. When these flags are set on a table, each table row is given a result selector popup and a textare in which comments can be entered when running a test. The real result is calculated based upon the result selections automatically. See the Admin Guide for a detailed description [Issue 30].
Introduced option to hide sets that are locked from the list of available set filters on the Select Report and Run pages [Issue 905].
Added ability to export a test session in CSV format that is either human readable or in a raw format suitable for re-import into ApTest Manager [Issue 950].
Added ability to mark session variables as "graphable" and graph results by session variable in some reports [Issue 974].
Added ability to suppress headers, ignore missing tests, and ignore sessions with no matching tests in the Regression Report [Issue 976].
Added an option to create a zip archive of an individual test suite via the GUI [Issue 981].
Test and Requirement reports now include both a total count and a percentage of reported items for each value in Selector Tables [Issue 986].
Added support for Problem Report IDs and Problem Report Links (atm_prid and atm_prlink) fields in test cases and requirements [Issue 989].
Added support for filtering a coverage report using test case and requirement selectors [Issue 957].
Added ability to specify an email address to which a notification will be sent when the Archive System Data task completes [Issue 991].
Added an example 'timer' script in in the examples directory. This could be used to have the execution time of test cases automatically tracked.
Improved the ability to use the keyboard to navigate among fields when editing test cases and requirements. Also added support for using keyboard to add a row to a table field (via Ctrl-Shift-N).
This release also addresses the following bugs reported since the last release:
When selecting a test suite, from time to time some information was not cached and as a result the selection page could take a very long time to display (or even appear to hang) [Issue 926].
Added a note to the documentation to clarify how idle sessions are handled and timed out [Issue 967].
In some situations the requirement import GUI could throw an error because it could not find its cache file [Issue 983].
When creating a new account, the list of users from which to copy was being restricted based upon the currently selected test suite instead of showing all users [Issue 984].
It was not possible to reference %RESULT_field fields in the bug tracking system URI from the session summary page [Issue 992].
When performing test suite administrative operations, it was possible for the select suite page to throw a run time error. Also, the 'suiteLocked' page should have automatically continued when the suite was available [Issue 993].
When doing bulk test case or requirement operations, if there was no change history table, the modification date and modifying user were not updated [Issue 1007].
When changing selectors in multiple test sets, going to the refresh screen and then selecting cancel takes you back to the change selectors page, but the submit buttons were disabled.
When generating a status report and matching test case names by a string, if a test case was no longer defined in the system but was referenced by a test session, the report would fail to generate with a run time error [Issue 1010].
Under certain circumstances, the Users Report could throw a division by zero error when there was missing planned execution time data [Issue 1013].
On some pages in the run area, the contents of long session variable values were not being displayed correctly in tooltips [Issue 1017].
When checking test suite integrity during an upgrade, the collection of requirements was not being examined to ensure there are no duplicate UUIDs [Issue 1020].
A Users Report could incorrectly count the number of tests when the Schedule Over Time table was reporting by week [Issue 1027].
This is a minor bug-fix release. Issues addressed in this release include:
When importing tests or requirements, it was not possible to use default values for fields that were mapped from the input file but whose contents were blank.
When importing tests or requirements, it was not possible to have multiple rows in the input used in a single test case or requirement.
The datatype of the atm_id field in SQL session data tables was being set to an incorrect value when upgrading from a very old version of ApTest Manager [Issue 964].
The default value of a single-select execution field was always being set to the first item in the list, regardless of what item had an asterisk before it [Issue 965]
The Select Report and Run Sessions pages can limit the number of sessions show. These pages were applying the limit BEFORE sorting the sessions in the user-specified order, resulting in seemingly random sessions being left out of the display [Issue 966].
When using importResults.pl it was not possible to create a new session unless it was derived from a test set. The new '-C' and '-A' options allow the creation or extension of a test session using the test cases in the imported CSV file [Issue 972].
Fixed the spelling of the variable newRepository in the config.pl file [Issue 969].
When a custom report was accessed from the Edit Requirements area, some test sessions were being selected [Issue 973].
There was no way to determine the UUID for a test case or requirement via the RPC mechanism [Issue 975].
When using Postgres as the SQL store, in some circumstances the initial creation of tables would fail [Issue 977].
On certain 64-bit systems, when using utf-8 encoding, the runTestCase page could have utf-8 encoded data double-encoded and thus output as gibberish [Issues 960 & 979].
This is a minor bug-fix release. Issues addressed in this release include:
The atm_owner field could not be made "multi-select" [Issue 882].
When reporting on an individual test result from within a coverage report, the system could use the wrong test case result report template [Issue 932].
Some customers need a way to always display the year on dates, even when the date is in the current year. Added an option for this to the System Configuration settings [Issue 933].
The atm_owner field could not be marked as "mandatory" [Issue 935].
When importing tests and requirements, it was not possible to populate fields with their default values [Issue 938].
It was not possible to mark a value in a staff time field as obsolete [Issue 939].
If there was no PlannedStaffTime field in a test suite, the users report could cause a run time error when attempting to display the new Per Session Assignment times table [Issue 940].
Updated the documentation for the Test Case method newByUUID - it was confusing [Issue 942].
When entering the Report or Run environment from the main index page (after selecting a new test suite) the user's session preferences were not loaded [Issue 949].
When previewing replacements on wysiwyg fields where the input data has no embedded newlines, the preview data could be very wide. Changed this to use a 'div' with a monospace font instead of a 'pre' [Issue 951].
Upgraded to the latest version of tiny_mce (embedded WYSIWYG editor) to improve behavior of pasting from MS Word [Issue 954].
The dependson flag for execution fields did not work correctly if the values were in uppercase [Issue 955].
In certain rare circumstances, a user's browser cache would not be reloaded automatically when first accessing ApTest Manager.
A "remove formatting" button has been added to the WYSIWYG editors to make it easier to reset formatting to the default (this was omitted from the previous release at the last minute, and the release notes were incorrect).
This is an enhancement release. The following major features have been added:
It is now possible to mark Test Case, Requirement, and Execution Fields as "graphable". This is an indication to the system that the information in the field is suitable for use when graphing "Results by Selector" in various reports. By default, all fields that were marked "selectable" before will be marked "graphable" after an upgrade to this version.
When defining report templates, it is now possible to define a default for which fields should be included in the "Results by Selector" tables in the report. If no such default is defined, then all fields marked as "graphable" will be shown.
It is now possible to mark values in various fields as "obsolete". Obsolete values are still defined and will appear wherever they are referenced, but will not be available when working on new content, nor in content where they were not previously referenced.
You can now define custom reports based upon your "Session Filter" settings. Such reports will generate by matching the filters against all sessions, rather than having to choose specific sessions.
Renamed some Test Set and Test Session management options to make their purposes clearer.
Added ability to assign new tests to testers when refreshing a Test Set or Test Session.
When assigning tests to testers via the "assign" page (for either Test Sets or Test Sessions) a table shows how much time is assigned to each tester.
You can now mark an account as being "disabled".
When creating an account, you can copy some or all of the information from another account.
Added a '-r' option to the restore.pl script that permits the interactive renaming of suites during restoration.
The TestSession object now ensures that execution time values are ALWAYS stored as minutes, and that illegal values are rejected. Values using the format described in the documentation are permitted, but translated into minutes before being stored.
The file "frames" in the Requirements and Test Case Management areas now remember your sort settings AND your position on the page after saving changes from child windows (e.g., from Edit Test Case).
Made minor layout changes to the username/test suite bar on each page. Added a tooltip for the role so the user can know their permissions.
Changed the font specifications so there is only one in the stylesheet and it is consistent throughout the product.
Show Accounts administrative page now shows the last time a user accessed the server in addition to the other data.
A "remove formatting" button has been added to the WYSIWYG editors to make it easier to reset formatting to the default.
The following reported issues were also addressed:
Under extremely high concurrent use, the performance of deleting large collections of files / folders could be unacceptably slow.
There were some situations where LDAP authentication could fail [Issue 920].
When using the importFromCSV script, menu field values that had embedded whitespace were not being automatically transformed to use '_' [Issue 925].
In Internet Explorer, the wysiwyg editor would create numbered lists where each item was numbered 0 when displayed in other user agents [Issue 929].
When copying a test case or requirement, pressing enter in the dialog box did not cause the copy to occur in Internet Exporer [Issue 930].
This is a minor bug-fix release. Issues addressed in this release include:
If using an unusual encoding scheme, and while editing a test case or requirement, someone else edits and saves that test case or requirement, and then the first editor chooses to overwrite their changes, non-ASCII characters could be incorrectly encoded in the resulting saved file [Issue 885].
In "run" mode, execution data fields now use the user-defined field label, rather than the default prompt text [Issue 895].
If requirements are stored with an ID style of "plain" searching on requirements could cause a run-time error [Issue 897].
When generating reports on requirements and customizing the report to filter the requirements by ID and/or other fields, there could be a run-time error [Issues 897, 902].
Ensured that mandatory fields can't be made empty using the search- and-replace function [Issue 898].
Added highlighting of search matches in the replace interface [Issue 899].
Ensured custom report settings can't be saved with whitespace-only titles [Issue 901].
When generating a test case report, it was possible for a run time error to occur if filtering the test cases based upon requirements [Issue 902].
Added the ability to mark text and textarea fields of Requirements as selectable [Issue 906].
Renaming test cases and requirements could result in errors in long-running reports, due to a race condition [Issue 907].
When using outline numbering with extremely large collections of tests or requirements, performance for many operations was unacceptable due to an inefficient method of dynamically determining the outline number of each folder and test or requirement [Issue 908].
Renaming a test set could fail to update the set's test sessions with the new set name, which could result in run-time errors for some session operations [Issue 909].
When editing a wysiwyg style field using multi-edit, if only the contents of the wysiwyg field were changed, those changes were not captured [Issue 910].
Fixed an issue with renaming test cases and requirements into the suite root in autonumber-by-folder mode [Issue 911].
The Installation instructions section on Requirements for Windows neglected to describe a required SSL client that brings in the needed libraries.
Identified and fixed a few places where it was possible, although extremely unlikely, that a deadlock could occur when updating cache files.
When determining what calendar year the current day is in, if that day was the day when a time-shift occurred, and that time-shift occurred exactly at mid-night, there could be a run-time error.
This is a critical bug-fix release. Customers who had upgraded to version 2.19.00 should upgrade to this release immediately. Issues addressed in this release include:
The unused-but-referenced file scripts/ajax/sound.js was missing from the distribution and consequently putting errors into the web server access log [Issue 888].
When copying / exporting a suite there was a warning in the log about a missing filehandle when trying to unlock the suite [Issue 889].
When searching by ID and using a string there was an error raised [Issue 890].
Creating a new suite / copying an existing suite could fail with an error about a call to a missing Suite::copy method [Issue 891].
The "replacement value" field for WYSIWYG fields in the search/replace interface was showing a non-functional WYSIWYG editor when it should have been a plain text box [Issue 892].
Under certain circumstances, copying, moving or renaming test cases and importing requirements could produce run-time errors [Issue 893].
Replacing in text fields could fail after the first replacement [Issue 894].
This is an enhancement release. The following major features have been added:
Suite managers can now cleanup deleted but hidden files.
Revamped search / replace functionality.
Added a richer table of contents option to many reports.
Provided a simple web service interface for creating / updating test sessions.
Added the ability to define a template for an issue tracking system URL for use in making problem report IDs "clickable".
Added the ability to automatically make problem report IDs "clickable" when an associated problem report link field is also populated.
Upgraded the WYSIWYG editor to improve its integration with popular web browsers and improve its performance.
Updated the Jira issue tracking system integration module to be more stable and easier to customize.
Added a new reserved "atm_prseverity" field that can be used to track the severity of a problem report
Changed the session management area to be more "hierarchic".
When arranging tests in a set or session, tests you do not want are now marked as "disabled" rather than "deleted", since this was confusing for some users.
Added ability to just create a session / create and manage a session when using the "Run these tests" and "Run associated tests" options.
This releases also addresses the following issues:
Fixed a bug in the file browser where quotes in a test case or requirement name weren't being escaped in the checkbox value [Issue 867].
When a test session was created, the SQL "SD" table was not populated with the information about the test session. [Issue 871]
When importing test cases where the ID field contained "/" into the top level directory, it was possible to end up with hidden, duplicate test cases in the tree. [Issue 875]
If a field was removed from a test suite, and that field was referenced in the customized settings for a report, it was possible to get a run time error when generating the report. [Issue 877]
It was possible for the count of test cases in a test suite to become incorrect in some circumstances. [Issues 880, 886]
It was possible to create test case / requirement names that had characters in the displayID such as <, >, and &. These needed to be escaped to ensure the page displayed correctly. [Issue 883]
This is a minor bug-fix release. Issues addressed in this release include:
Fixed a bug in the display of requirement field selectors for menu fields where the fields were too small.
ApTest Manager now asserts a minimum version for the JSON component of 2.07 to avoid a missing "latin1" method in much earlier versions [Issue 856].
Added a note about requiring libssl on Linux systems.
Removed the "run these tests" option from the bulk operations menu when in the Trash directory.
This is a minor bug-fix release. Issues addressed in this release include:
The buttons related to LDAP operations on the Change Existing Accounts screen did not work as expected in Internet Explorer [Issue 846].
The progress report did not total execution results per test set correctly when ignoring untested tests [Issue 847].
Fixed a run-time error during test and requirement import when importing into a history table that has a non-existent field in it [Issue 848].
There was a potential deadlock situation when the file/folder order cache was cleared during a rename operation and a few other unlikely edge cases [Issue 851].
Fixed an issue when customizing the regression report, where a customization option appeared in the wrong area [Issue 852].
This is an enhancement release. The following major features have been added:
If configured, user account information and authentication can be done via LDAP.
You can now import links between test cases and requirements when importing either test cases or requirements.
You can test the connection between ApTest Manager and your locally configured e-mail server.
You can select which test cases are associated with a requirement from the requirements editor.
You can select and edit multiple test cases or requirements simultaneously.
Changing requirement or test case links when editing a test case or requirement, or when importing, now triggers a "requirement changed" or "test case changed" notification.
You can elect to disable the feature that permits tests to be selected and run directly from the Test Edit and Requirements Edit areas.
Copying folders now also copies their descriptions.
When copying a test suite, you can now elect to also copy the suite access permissions.
This release also addresses the following issues:
The various field editors now work correctly with the Apple Safari web browser (version 3 or later) [Issue 213].
When a requirements report was set to generate a CSV file AND was also set to suppress requirements with no associated test cases, no requirements were included in the report.
When a date field was of style date (as opposed to date and time) the selected date was at the then-current time of day instead of at the beginning or end of the day [issue 721].
When executing test sessions, uploaded files are stored in separate, incrementally-numbered subfolders to prevent existing file uploads from being overwritten during subsequent re-running of the session [Issue 732].
Under rare circumstances a race condition could cause a deadlock when multiple requests were operating on the cache of test case information. This has been resolved [Issue 785].
When submitting a bug from the Session Summary page, the "note" field now only includes the most recent note, in line with submitting from the run pages [Issue 798].
Folder orders could be corrupted when table fields were shown in the test case ordering screen [Issue 799].
Certain cookies weren't being accepted by IE due to timezone display problems [Issue 803].
Fixed an issue with change details when moving multiple test cases or requirements [Issue 804].
Fixed an issue with conflicting options with time tracking fields in progress reports resulting in a run-time error [Issue 805].
Test Case numbering mode changed from autonumbered to autooutlined for ApTest_C profile [Issue 806].
The export.pl and exportAll.pl scripts now also include local.js, local.css, and localconfig.pl [Issue 807].
Templated test case reports now can have execution data selectors when run against sessions [Issue 808].
Session summary test fields do not display test data. [Issue 809]
Namepart fields with backslashes in the content could cause javascript runtime errors when using the file browser [Issue 814].
Notifications of test case assignments now occur when a session is created from a set with default assignments [Issue 817].
Custom report names were not being URI-escaped when being passed to the customize report component, which could result in URI errors [Issue 818].
Fixed some issues with version control integration commands not being called correctly during import operations [Issue 819].
Fixed an issue with file links being broken when the tree is in auto-outline mode [Issue 821].
The cross-link between a test case and a requirements are cleared when the test case or requirement is deleted from the Trash folder [Issue 822].
Fixed an issue where certain characters could cause a JavaScript error in the field editors, resulting in the editor not appearing [Issue 825].
Fixed an issue with previewing changes to test execution templates where session variable references weren't being expanded correctly [Issue 828].
Synchronizing a test suite failed to refresh the cache for test sessions not attached to a test set [Issue 831].
Blank values in execution data menu fields are now suppressed when ApTest Manager displays the associated field selector (as occurs with test case and requirement fields) [Issue 834].
When tests cases used auto-outline mode, in some reports the table and graph of "Results by ID" was sorted incorrectly [Issues 837, 838].
In the field editors, table values weren't being validated properly [Issue 840].
The "cover by" setting for saved coverage report settings wasn't being shown properly in the Customize Report screen [Issue 843].
This is a minor bug-fix release. Issues addressed in this release include:
Changed message shown when a license is expiring to make it clearer how to resolve the problem.
In the frame showing Set Group contents, the value of the ID selector could be incorrectly suppressed in some instances.
Recursive folder locking from the root of the suite didn't work correctly [Issue 778].
WYSIWYG editors were encoding some characters as HTML entities when it didn't need to [Issue 779].
It was possible for a deadlock to occur when showing test cases that cover requirements in the Edit Requirements right hand frame [Issue 780].
The "creator" of suites created by exportSuite.pl is now set to be the creator of the suite being exported [Issue 781].
The content of the notes field was not being correctly escaped when being passed to a bug tracking system from the "run multiple" screen [Issue 784].
There was a warning when compiling TestSession.pm [Issue 788].
The file order cache could get corrupted when clearing the test case order in a folder [Issue 789].
When using HTTP Basic Authentication, logging out would cause the user to automatically re-login.
Added ability to suppress the "Per Test Case User Assignments" table in the Users report.
Fixed an issue where mdate and muser fields were not getting default values on import.
Fixed a problem where the "run this test" option from the session summary screen did not update the session end date if running the test completed the session [Issue 791].
Fixed a problem with alignment of progress bars on some run pages in IE 7 [Issue 794].
Fixed an issue where submitting a note with no associated run data erases current run data settings [Issue 795].
Fixed an issue where "run these tests" didn't properly initialize some session variable values [Issue 796].
Templated reports that were not based upon "results" did not report estimated times.
Fixed an issue where values in radio and checkbox fields were not always treated as being case-insensitive, resulting in duplicate values in some report graphs and tables [Issue 797].
This is a minor bug-fix release. Issues addressed in this release include:
Fixed a JavaScript error in IE when the first text field of a form couldn't receive focus [Issue 765].
Resolved some issues with special character escaping in field defaults [Issue 766].
Fixed an issue with refreshing the parent window when saving tests or requirements opened from a list of search results [Issue 770].
Fixed an issue with selecting test cases by requirement [Issue 771].
Fixed an issue where some field types were being incorrectly mapped to underlying SQL datastore field types [Issue 773].
Fixed an issue where the importResults command-line script wasn't forcing results to lowercase [Issue 775].
Fixed some issues relating to creating a set from a session.
SQL configuration screens now re-display the configuration data form when there is a configuration error.
Resolved a potential deadlock situation in the test and requirements databases.
Altered CSS to make labels for checkboxes and radio buttons consistent, regardless of layout.
Users with execute access can now create anonymous sessions.
Suppressed invalid run selector options when opting to "run these tests".
Prohibit rundata fields with the name "id".
Fixed a run-time error for some users with read-only test access when returning to the edit screen after searching for tests.
The bailOut() method of the Framework library now automatically includes a stack trace with the error message.
Fixed an issue with single-select menus not selecting empty values properly.
When displaying notes with no associated result in test sessions, the full name of the user is shown, rather than the username.
Editing test case report templates now ALWAYS shows the execution field pulldown.
Added checks for working with VERY old versions of MySQL, since the Perl drivers are not completely compatible.
Added code so when creating a new session from the Edit Tests or Edit Requirements pages you can specify the name and description for the session.
This is an enhancement release
Added checkbox and radio button field types to Session Variables and Requirement, Test Case, and Execution Fields.
Made Sessions a link to session display in Administer Sets and Sessions right frame.
Added Customize Report option for Progress Report to only include latest executed result for each test case in report.
Added "% of executed" to results section of summary in Progress Report.
Added Customize Report option for Progress Report for "Results by" calculations include only executed tests.
Added ability to create and run Test Sessions from the Edit Tests and Edit Requirements pages.
Added ability to create a Test Set from a Test Session created from the Edit Requirements/Edit Tests screens
Changed "Search by ID" to Search by any field on the Edit Tests and Edit Requirements screens.
Restructured the user interface of Report customization and Test Set definition to improve usability.
Added ability to pick Test Cases by associated Requirement fields in Test Set definition.
Added ability to pick Requirements and Test Cases from a list in Test Set definition and report customization.
This release also addresses the following issues:
Performance of the test set/session assignment and arrangement interfaces could be poor when faced with very large sets or sessions. Made a number of client-side changes to improve this performance, and also to give visual indication when processing is taking longer than expected [Issue 379].
Fixed results by selectors in progress report so execution fields are included [Issue 734].
The code that checks for long filename problems on Windows during upgrades could fail to report the list of problematic filenames [Issue 750].
Fixed issues with corruption of cached folder order data [Issue 752].
Renaming a folder could cause it to disappear from the folder tree view, requiring a synchonization to make it reappear [Issue 753].
Fixed an issue where the first tests in a folder might not get copied when copying a folder [Issue 755].
Fixed an issue with newlines in text fields causing JavaScript errors in the file browser; also removed newlines from text fields during CSV import [Issue 762].
Some bulk operations on sets within set groups were erroneously being applied to all sets in the group, regardless of the sets that had been selected [Issue 764].
Fixed a problem with SQL integration where uninitialized times were being set to a time before 1970 when the server was east of UTC.
Improved performance of exportAll.pl script when used with a large number of large test suites.
This is a minor bug-fix release. Issues addressed in this release include:
A JavaScript error in IE when opening the run or report pages with no sessions listed [Issue 736].
Fixed issue where copying a suite copied sets and sessions even if those checkboxes weren't checked [Issue 737].
Fixed an issue with session deletion, where old sessions with four- digit session numbers could fail to be deleted [Issue 738].
Fixed issue with the field editors, where an error message could appear when creating table fields [Issue 739].
When importing a CSV file where multiple rows had the same "id" entry, some cache data could become corrupted. Now prevents importing duplicate records [Issue 740].
Certain settings in requirements reports could cause a generated CSV format report to contain no rows [Issue 741].
Performing a bulk move of test cases when in auto-number mode could incorrectly report that there would be a collision with names in the destination folder [Issue 744].
Running multiple tests and uploading a file to a test case that had been renamed after the session had been created could result in a run-time error [Issue 745].
Copying test sessions could result in the copy containing incorrect counts for results [fix for this was mistakenly NOT in 2.16.01].
When copying a suite, copying sessions now requires that sets are copied too.
The message about an "invalid license file" has been improved to help people resolve the problem.
When a test case was renamed/moved, the "id" field in the "SD" table of an associated SQL store was not updated.
When a test case was renamed, the record for the test case was removed from the "TC" table of the associated SQL store.
When managing the SQL store configuration for a test suite, some of the previous settings were not displayed.
The default styling for fields of type "table" was such that content was not vertcally aligned "top". Changed that default style, and added a class of "TYPE_tc_table" so it can be locally restyled easily.
Changed field labels so that they are fully enclosed in a span of class "fieldLabel".
Delayed creation of Perl Warning Handler under mod_perl to help work around a bug in Apache for Windows that would cause Apache to fail to startup sometimes.
Changed how file locks and SQL database connections are released in the face of a catastrophic error to help avoid situations where a deadlock might occur when running under mod_perl.
Added a message so it is clearer when a "Search by ID" matches no test cases / requirements.
Select report page is now sorting the list of Sets in the Set selection box.
This is a minor bug-fix release. Issues addressed in this release include:
Improved performance of the Select Reports and Run pages in the presence of large numbers of sessions [Issue 724].
The UPGRADE script was not passing command line arguments to the underlying INSTALL.pl script [Issue 725].
If some Test Set / Test Session meta data had newlines embedded in it, CSV format reports could become corrupted [Issue 728].
Copying test sessions could result in the copy containing incorrect counts for results.
The checkForUpdates component was incorrectly interpreting messages from the ApTest server.
Fixed a problem in session refresh, where a test entry with no UUID could produce errors.
An error in the ReportCache library could cause errors in some environments.
Removed the non-functioning breadcrumb link which appeared in the navigation bar if you tried to define a set with no name.
Added a workaround for an issue with PPM on Windows when trying to upgrade the DateTime::Locale module.
Fixed an issue with not being able to unlink deleted requirements from test cases.
Fixed an issue with test<->requirement links getting lost when requirements were renamed [Issue 731].
Copyright © 2000-2026 Applied Testing and Technology, Inc. All rights reserved.