Code Tester for Oracle® 4.1
Release Notes
10/23/2023
These release notes provide information about the Code Tester for Oracle release.
About Code Tester
Code Tester for Oracle is a tool to help you test Oracle® PL/SQL code. We all take pride in our code and want to test it, but we also know that code testing is one of the biggest challenges in the development of software today. These challenges include having to write a large volume of test code, keeping that code synchronized with our application code as it changes, and verifying the results of running our tests. This becomes especially important as organizations around the world migrate their traditional database development to agile and DevOps practices, where continuous delivery and automation are critical to the success of the deployment.
Code Tester for Oracle tackles these challenges by making it easy to define your tests, generate your test code, and run the tests, all within an easy-to-use graphical interface. Code Tester enables you to call these tests as part of an automated build process, as well as perform regression testing in the future.
The bottom line with Code Tester: you don't write test code. You describe your tests, and the tool generates the test code (as a PL/SQL package) that implements your test definition.
Join the Code Tester Community
The Code Tester Community is ready to help you solve the complex problems of unit testing and continuous integration. There you will find videos, white papers, web-based training, expert blogs and podcasts, as well as beta releases, trial downloads and much more.
To join and interact with the Code Tester Community, go to https://forums.toadworld.com/c/code-tester-for-oracle
Two of the most-often used features of the Community are the Forums and the Idea Pond.
- On the Idea Pond page, you can submit your ideas to improve Code Tester and vote for or against other customers' ideas. We encourage all Code Tester users from new to experienced to let us know how we can improve our product.
- On the Forum page, you can ask a question or start a discussion and view all other forums within the community.
The Code Tester blog pages feature a broad range of information, including topics of interest to our industry, as well as instructions from team members on how to use the latest Code Tester features.
The Code Tester web-based training is a perfect accompaniment to your product license. This free training walks you through major product features and explains how to perform frequent tasks.
About this release
Code Tester 4.1 is a minor release, with enhanced features and functionality.
New features and enhancements
Code Tester for Oracle 4.1
This release of Code Tester for Oracle is a minor release and includes resolved issues and minor enhancements. See Resolved issues for more information.
Previous Releases of Code Tester
- Subscription licensing model
- Oracle 21 (tolerant) database platform
- Windows 2019 Server Operating System
- Windows 11 Operating System
- Support for Oracle 18 and Oracle 19 database platforms.
- The supported continuous integration operations are enhanced with test reports.
- You can now save a test run report in a file while running from the command line. Alternatively, you can send the test report to the standard output as well.
- The reports are enhanced with the JSON format output.
- As an initial effort to enhance the private data protection, you will be informed that you might wish to review a support bundle content before sending it to the support team.
- A front end debugging option was added to the CTO tracing functionality.
- You can now disable certain fields when running a test.
- Code Tester now supports connections through a proxy user.
- Support for Oracle Edition Based Redefinition has been improved. The Repository Properties page now includes Editions information, and the Oracle server section in the support bundle includes Editions information.
- The Code evolution user interface has been redesigned to make its use more efficient.
- Input/outcome value changes are now visible and can be edited.
- Test case element values are preserved when data type modifications are updated with the Code Evolution.
- Repository setup was improved to control access and prevent unintentional overwrites. To support this, the following were added:
- A new CTO_ADMIN_ROLE user was added. Only this user can administer a repository through the tasks that are under the Administration folder of the Code Tester installation. The repository wizard verifies that the user has this role before allowing the task to be performed. A new repository can be installed by any user during the installation of Code Tester, but the CTO_ADMIN_ROLE is required to install a repository after installation.
- When connected to a local repository, only this local repository is allowed to be managed. When connected to a shared repository, only that shared repository is allowed to be managed.
- A new repository can now be created without connecting to the database.
- A warning now appears if a user connects to a repository that was re-installed.
- An older version of Code Tester can now connect to a newer repository.
- To enable downgrades of Code Tester in the event that a new installation fails, an option AllowRepositoryDowngrade was added and is set to False by default. False means that an attempt to downgrade the repository will fail and return an error. True means that a downgrade is allowed to proceeded with a warning.
For the most up-to-date list of new features, see the Code Tester for Oracle Release Notes at the Quest Support Portal.
Code Tester for Oracle 4.1
Previous Releases of Code Tester
Connecting to database taking over 15 minutes |
CTO-940 |
Schema named as CUBE keyword is causing errors |
CTO-768 |
Test Code generation failed after adding an outcome to test definition created in v3.2 |
CTO-815 |
128-char object names are unsupported on Oracle Database 12c Release 2 and newer |
CTO-833 |
Reduce database requests at the connection time |
CTO-657 |
Not able to create test case via Program explorer |
CTO-295 |
An error dialog is showing a message about a custom TYPE when editing an existing test case after the Code Tester upgrade |
CTO-290 |
Provide an option to regenerate "equality function" for complicated data types |
CTO-213 |
Running Test on the backend causes Oracle error but GUI running is OK |
CTO-91 |
An error in varchar2 length when using unicode character testing qctod#betwnstr |
CTO-136 |
Export Test Data Groups in Test Data Manager |
CTO-158 |
Improve COUNT templates for outcomes tested ref cursors |
CTO-191 |
Table or view does not exist error when run Test For wns_lst |
CTO-466 |
Validate only few required columns from a table |
CTO-492 |
Code Tester encountered one or more problems attempting to install,upgrade or remove the backend. |
CTO-577 |
Export file contains an excessively huge value |
CTO-582 |
Wrong Parameter in Repository Manager shortcut |
CTO-585 |
Code Evolution error after import |
CTO-621 |
Import errors for very large XML documents |
CTO-690 |
Enhancement: Reduced the number of database calls for displaying test definitions. This enhancement is designed to improve performance. |
CTO-696 |
For the most up-to-date list of resolved issues, see the Code Tester for Oracle Release Notes at the Quest Support Portal.
Best Practices and Limitations
The following is a list of best practices and limitations, including those attributed to third-party products, known to exist at the time of release.
- When testing cursor variables, the outcome of < SYS_REFCURSOR> = < SYS_REFCURSOR> type fails. However, these outcomes can be replaced with < SYS_REFCURSOR> = < QUERY> , where the expected query uses the same SELECT statement as the expected cursor variable as < SYS_REFCURSOR> = < SYS_REFCURSOR> .
- Very large scripts in the customization section of a test can result in poor UI performance.
- Unicode type schemas: Code Tester is not able to connect to Oracle schemas with Unicode symbols in their names.
- CHAR Arguments: Handling of CHAR (fixed length) arguments not correct when the argument is defined as %TYPE against a column.
- Results Viewer: Attributes are not displayed in Results Viewer for "IN argument values". The values of type OBJECT do display.
- The default value for parameters of object type methods are not visible inside Code Tester. You must explicitly type in the default value if you want to test that option.
- Cannot run a test definition when locked by another user: After a test definition is run, its "last run status" is updated. This cannot be done if the test definition has been locked by another user (say, to edit the test definition in some way). So if you try to run a locked test definition, Code Tester will stop you.
- Cannot request default value for IN argument of object type method: In 1.9 and higher, you can now request that Code Tester not pass a value for any IN arguments that have a default value (thereby using the default value instead). This feature is only available for procedures and functions defined in packages or at the schema level. It is not supported for methods of object types.
- If you enter the four letters "null" as the literal value for an input or outcome expected value, Code Tester will record that value as a NULL, rather than a string of four letters. This will happen for any case variation of these four letters, such as "Null" and "NULL". If you need to pass a literal string consisting of these four letters, specify it as an expression and surround the string in single quotes.
-
ALTER SESSION commands in your code could cause errors: If you include statements like those shown below in your programs:
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_SORT=BINARY_CI';
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_COMP=LINGUISTIC';
Then you will get runtime errors when you try to run your test.
-
If your test definitions contains outcomes for expressions or single value queries, then after importing you may get compile errors in your test code the first time you try to run the test. Errors will look like this:
PLS-00103: Encountered the symbol ";"
and the test code will contains lines of code like:
l_fp_value ;
(the datatype of the declaration is missing).
In this case, simply open your test definition in Test Builder and immediately run your test. It should then compile without errors. After doing this, export your test definition and it should work properly after that point.
- If you test the contents of a query that contains unnamed expressions (that is, it is an expression rather than simply a column name and you do not provide a column alias), then that expression may not: contain a single quote, be equal to SYSDATE, or be equal to USER. Examples that will cause problems: SELECT name || 'abc', SELECT SYSDATE, SELECT USER. This is due to idiosyncratic behavior in the Oracle parser.
- When you import a single test definition, Code Tester will warn you if it cannot find the program that this test definition purports to test. When you import a suite, this same warning will not be shown if one or more of the test definitions in the suite reference a program that cannot be found.
- You cannot test a trigger directly. Instead, you will need to create and/or run a procedure that performs the DML operation necessary to fire the trigger. You then create outcomes to verify the changes made by the trigger.
- When you import a suite, it deletes any existing suite with the same name, even if it is actually a different suite owned by a different user.
- When you uninstall a Code Tester repository, public synonyms are dropped, even if those synonyms are not owned by the schema from which you are uninstalling the repository. In this case, you will need to re-create the public synonyms.
- You cannot test the contents of a table or query with column named COLUMN_NAME. It must be renamed via the query's SELECT column alias.
- Query strings of more than 32k are not supported.
- New dataset comparison logic does not work with a query that contains expressions that are not given column aliases.
- When you enter a SELECT statement for a query, that query must not have any leading comments, nor should it start with OPEN FOR. It also should not have a terminating semi-colon. If you include such text, you may see compile errors in the generated test code or your query may be interpreted as a table name.
- Testing contents of tables with non-scalar columns: Code Tester does not perform dataset comparison checks for tables with CLOB columns and other complex datatypes. Instead, Code Tester will automatically ignore any columns of these types that cannot be used in the comparisons.
- When testing the contents of cursor variables with very large numbers of rows, you may receive a "ORA-04030: out of process memory" error. This occurs because Code Tester users nested tables to cache the cursor variable result set. You will need to reduce the number of rows analyzed in your test to avoid this issue.
- Test data values (values in Test Data Groups) cannot have more than 32,512 characters in them. While PL/SQL officially supports variable length strings of up to 32K (32767) characters, when using dynamic SQL the limit is reduced to 32,512. When working with Test Data Groups, Code Tester applies those values using dynamic SQL, thus hitting the lower limit.
- Code Tester performs some basic analysis to determine if you have sufficient tablespace available to install the product. This calculation is not always accurate, however, you may run out of space. The installer will notify you that the installation fails, but it will not report specifically on this error. If you have an install error, please check the qu_install.log file for tablespace errors. If present, you will need to install into a different tablespace or ask your DBA for more space.
- You may not enter sub-second values in your timestamp literal value. Code Tester only supports time specifications down to the nearest second. You can, however, specify sub-seconds using expressions (like TO_TIMESTAMP function, for example).
- When enabling DBMS profiling with customization and then running a test, you may encounter an ORA-03114: not connected to ORACLE message or an ORA-03113: end of file on communication channel error message and find that they have been disconnected from the database. This is an Oracle bug in the profiler logic and occurs inconsistently.