Quest® Code Tester for Oracle

Version 1.8.6

Release Notes

November 2009


Contents

Welcome to Quest Code Tester for Oracle

New for_Release_1.8.6

New for Release 1.8.5

New for Release 1.8.4

New for Release 1.8.3

New for Release 1.8.2

Resolved Issues

Known Issues

System Requirements

Global Operations

Getting Started

For More Information


Welcome to Quest Code Tester for Oracle

Quest Code Tester for Oracle is a tool to help you test Oracle code, written in the PL/SQL language. Code testing is generally acknowledged to be one of the biggest challenges and disappointments in the world of software. We all know we should test our code. More than that, we all want to test our code, but there are many challenges to implementing a strong regression test of our code. These challenges include having to write a large volume of test code, keeping that test code in synch with our application code as it changes, verifying the results of running our tests, and more.

Quest 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. The bottom line with Quest Code Tester: you don't write test code. You describe your tests, and the tool then generates the test code (as a PL/SQL package) that implements your test definition.


New for Release 1.8.6

Bug fixes for this release This release of Quest Code Tester for Oracle includes a number of bug fixes.

Back to Top

New for Release 1.8.5

Bug fixes for this release This release of Quest Code Tester for Oracle includes bug fixes to the licensing module.

New for Release 1.8.4

New Licensing Module This release of Quest Code Tester for Oracle contains a new licensing module.
In-place validation of custom code Code Tester now allows you to perform in-place validation of customization code. You no longer have to generate the test code in order to see compilation errors in your custom code.
Support Bundle contains additional information The Support Bundle trace file now includes the contents of the Code Tester error tables (qu_err_instance and qu_err_context),
as well any compilation errors in my_codetester and repository packages.
Additional validations in Test Builder 1. The variables names for the "from program" and "expected result" data in an outcome cannot be the same.
2. All inputs in a test case must have unique variable names.
3. A query cannot contain a CURSOR expression.
Override the datatypes or columns in a query Users can override the datatypes for columns in a query to ensure that the correct types are used. This is critical when you are selecting columns of NVARCHAR2 type, due to a bug in Oracle's DBMS_SQL.DESCRIBE_COLUMNS procedure. See the FAQ for instructions in the online help file on how to do this overriding.
Viewing suites test definitions You can now see and run suites as long as that suite contains at least one test definition that you have the authority to execute. You will not be able to execute test definitions in the suite that you do not have authority to execute.
 
Warning for CREATE TYPE privileges The user is now warned inside Test Builder if they lack the CREATE TYPE privilege needed to do the requested dataset comparison.
 
Referencing PL/SQL variables within queries in outcomes You can now reference PL/SQL variables within queries in outcomes, and you do not have to request "Ignore warnings" or mark the query as an expression.
Silent Installation You can now use the command line for silent installation.

New for Release 1.8.3

New Export/Import Architecture

 

Code Tester now writes export files as an XML document. It will import both the legacy ".QUT" export files as well as the new .XML formatted files. Merging is only support for XML exports.  

 

Expanded Set of "Hooks"

 

Code Tester now offers a greatly expanded set of hooks via the my_codetester package to customize the behavior of Code Tester at key points like before and after import, before and after running a test, etc.

 

Reports for Suites

 

All reports defined for individual test definitions are now available for suites as well.

View All Test Definitions in Test Dashboard

 

You can now change the schema selector to "All Schemas" so that you can see the list of all test definitions to which you have access (run and/or edit) at once, without changing the selected schema.

Use Windows Name to Track Changes to Test Definition

 

You can use the my_codetester package to specify to Code Tester that the "created by" and  "changed by"  audit columns on test definition tables be populated with the name of the Windows user, rather than the Oracle schema name returned by the USER function.

Test Package Formatting on Demand

 

Code Tester will no longer automatically format the generated test code (this will improve overall performance of generation). You will now need to explicit request a format and recompile in the Test Code tab of Test Editor.

Improved Support for Wider Set of Datatypes

 

Code Tester will now allow you to create test definitions properly for all kinds of timestamps and intervals. You can also create a test definition for an object type, though you will still need to write the actual test logic yourself.


New for Release 1.8.2

Greatly Expanded Set of Built-in Reports

 

This release of Code Tester offers a wealth of new reports and  fixes some bugs and improves content in existing reports. New reports include: code coverage analysis that rolls up to a subprogram and the entire package; test coverage reports that show how many of your programs has tests defined on them; code not executed (inverse of code coverage); incomplete test definitions; out of date test definitions.

Specify the Authid setting for the test package You can compile a PL/SQL package with AUTHID DEFINER (the package executes with the privileges of the definer or owner of the package) or AUTHID CURRENT_USER (the package executes with the privileges of the invoker or caller of the package). Prior to 1.8.2, Code Tester always created the test package with the same AUTHID setting as the program being tested. Now, you can specify a particular AUTHID setting for an individual test definition or as a Quest Code Tester-wide preference. This is useful when you have set up a separate schema to own all test code, which will be called from the application code schema.
Change Schema and Program Names in Test Editor Prior to Oracle 1.8.2, you were not allowed to change the names of the schemas and programs being tested or of the test package generated. You had to change these values by editing the underlying table directly. Now, you can make the changes directly in the Test Editor.
Specify Override Schema Name for Test Package By default, your test package will be compiled into the schema specified by the test definition properties (which you can change in Test Editor). If you want that test package to be compiled into a different schema, such as a centralized schema for all test code, you can provide an override schema name that will be applied to all schemas.
View Source Code in Test Builder You can now view the source code you are defining tests in the Test Builder.
Use Positional Notation to Call Tested Program By default, Code Tester uses named notation (formal => actual) to call your program from within the test package. For some package overloading, named notation actually results in ambiguity. If this occurs with your package, you can specify that you do not want named notation and instead positional notation will be used.
Expanded Options for Export and Import

 

Both the export and import windows now offer additional flexibility, including: enable/disable exporting of results and source code; specification of the schema name for both the tested program and the generated test package; importing of multiple test definitions.
Specify Code Coverage Data Gathering in Test Editor Prior to Quest Code Tester 1.8.2, you had to include code in a customization section to enable the gathering of PL/SQL profiler data (used to generate code coverage reports). Now, you can specify this data gathering from within Test Editor at any one of three levels: test definition as a whole (all unit tests), a specific unit test (all test cases within that unit) and a specific test case.
 

Specify Commit and Rollback Activity

 

Prior to Quest Code Tester 1.8.2, you could modify the default transaction activity (a rollback before each test case) only by adding code to a customization section. Now you can specify both rollback and commit activity, before and/or after test case.
Check for Equality/inequality of Booleans You can perform a direct check between two Booleans for equality and inequality. Previously, you could only specify that a Boolean changed by the program was TRUE, FALSE or NULL.

 


Resolved Issues

The following provides a list of issues fixed.

CR Description

67459

Unable to generate test code after import - table specification on import is being set improperly to "SCHEMA.TABLE" instead of "SCHEMA"."TABLE".

67460

Incorrect variable name is used for function return value.

67461

VALUE_ERROR exception raised when trying to generate a record EQ function for a collection.

 

Back to Top


Known Issues

The following known issues existed at the time of this release:

Issue Description
Generate Outcomes incorrectly saves NULL values If you use the Generate Outcomes wizard and a calculated value is NULL, it will by default be displayed as a string "{null}", and
this will be saved into the outcome as the expected value. You will need to manually change this string to a real NULL value before
running your test to get a correct result.
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.
Test definitions with expressions or single value queries may fail to run first time 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.

Formatting of test code now done on demand

In previous versions of Code Tester, the generated test package code was automatically formatted. For large tests, this step added too much time to the generation process. Now, the code will only be formatted if you open Test Editor, click on the Test Code tab and press the "Format and Compile" button.
Specification of table name in outcome may not contain a comment When you specify the name of the table for a table outcome (for example: "Is a table empty?" or "Is this table equal to another table?"), you may not include any kind of comment next to the table name. Examples of invalid specifications of tables: EMPLOYEES /* employee table */ or EMPLOYEES – employees table.
Constraints on queries with unnamed expressions 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.
Suite import does not  notify user of missing programs 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.
Problems with non-printing characters Use of some non-printing characters, such as CHR(3) and CHR(4), in expressions and results can cause failures in the export/import process.
Merging of Test Definitions Merging using the pre-1.8.3 technique of adding code to the .QUT export file will no longer work. Merging is only supported for XML export files.
Random number generation fails on Oracle9i You will be unable to define test cases that rely on random number generation in Oracle9i. Limited support by Oracle for table function execution in SQL queries causes errors.
Cannot directly test a query You cannot test a query directly. Instead, you will need to create a procedure that is, in essence, a "dummy" driver. Create a test definition for that procedure, then define an outcome for that query.
Cannot directly test a trigger 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.
Importing a suite 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.
Uninstalling a Code Tester Repository 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.
Using a column named COLUMN_NAME 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.
Generate Outcomes hides errors If your program raises an exception while using Generate Outcomes, that exception will not be shown to the user and no outcomes will be calculated/displayed.
Incorrectly interpreting the T/option Prior versions of Code Tester incorrectly interpreted names in the /T option of command line execution as the names of tested programs, rather than the names of the test packages. Now, /T must list the name(s) of the test package(s). In other words, instead of /T=MYPKG, you would now write /T=Q##MYPKG.
32K Query Strings Query strings of more than 32k are not supported.
Dataset Comparison Logic Containing Expressions New dataset comparison logic does not work with a query that contains expressions that are not given column aliases.
Unicode Support Code Tester should work correctly when the database server character set is defined as multi-byte, the client is defined as single-byte, and all characters used to name database objects use a subset of the single byte character set in use on the client. Extensive testing has not been performed on this configuration.
Entering SELECT Statements 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.
Unable to directly test object type methods To test the method of an object type, you will have to create a wrapper for that program as a schema-level procedure or function, or within a package. You can then build a test definition for that wrapper program
Testing contents of tables with non-scalar columns Quest 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.
Testing the Contents of Cursor Variables 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 Quest 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 consisting of very large strings 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, Quest Code Tester applies those values using dynamic SQL, thus hitting the lower limit.
"Records Equal" function field names When you are comparing record contents to a query, the column names in the query must match those of the record field names. Then the automatically generated records-equal function will compile and work properly.
Tablespace Availability for Installation Quest 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.
Creating test definition by two different users You can encounter a blocked Quest Code Tester session by doing the following: user A starts up Test Builder for program XYZ, to create a new test definition for this program. User B then tries to open Test Builder for the same program. User B will be blocked until user A completes their work. Then user B will receive an error, because the test definition already exists (by this time).
Import test definition to different schema When you export a test definition, you can specify that you want the export owner set to the owner to which the test will be imported. This step will remove most but not necessarily all of the schema names in the test definition. Some may still be prefixed on packaged types, such as collection types and record types. This will cause compile errors on the test code. Solution: go into your test definition and change/remove those schema names, or edit the export file directly.
Specifying times for TIMESTAMP You may not enter sub-second values in your timestamp value. Quest Code Tester only supports time specifications down to the nearest second.
Not connecting to ORACLE message When adding customization logic to turns on DBMS profiling and 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.
Object type inputs If your IN argument is an object type, you cannot specify an input value directly. Instead you must write the assignment to set up that input value via initialization code (at the input or test case levels).

System Requirements

Before installing Quest Code Tester for Oracle, ensure your system meets the following minimum hardware and software requirements:

Platform 1.0 GHz x86 compatible CPU
Memory 512 MB of RAM recommended
Hard Disk Space 40 MB of disk space for installation
Operating System Microsoft®Windows® 2000, 2003, XP Professional, Vista, and Windows 7

 

Note: Windows 7 can be used with the Oracle 11GR2 client and will be certified by Oracle in Q2CY2010.

Database/Client Versions

Database Server: Oracle 9i Database Release 2 (9.2.0.6 or above), Oracle Database 10g, Oracle Express Edition, and Oracle Database 11g Release

Database Client: Oracle SQL Net 9, 10 and 11, plus Instant Client. For Oracle 64bit servers, 32bit client is required.

Required Database Privileges
The schema in which you install Quest Code Tester must have these privileges:

CREATE PROCEDURE

CREATE SEQUENCE

CREATE SESSION

CREATE SYNONYM

CREATE TABLE

CREATE TRIGGER

CREATE VIEW

CREATE TYPE

Note 1: Quest Code Tester will create a schema with the necessary privileges as part of the installation process, when the create new user and install into new user schema option is selected on Step 2 of the Repository Wizard.

Note 2: We recommend that you install Quest Code Tester into its own schema, and create public synonyms so that all developers will be able to use Quest Code Tester and share their test definitions. This will also help you keep application code distinct from the Quest Code Tester code base. To do this, your schema must also have CREATE and DROP PUBLIC SYNONYM privileges.


Global Operations

This section contains information about installing and operating this product in non-English configurations, such as those needed by customers outside of North America. This section does not replace the materials about supported platforms and configurations found elsewhere in the product documentation.

This release supports any single-byte character set. Double-byte or multi-byte character sets are not supported. In this release, all product components should be configured to use the same or compatible character encodings and should be installed to use the same locale and regional options. This release is targeted to support operations in the following regions: North America, Western Europe and Latin America, Central and Eastern Europe.


Getting Started

Contents of the Release Package

The Quest Code Tester for Oracle release package contains the following items:

  1. Quest Code Tester for Oracle version 1.8.6.
  2. Quest Code Tester for Oracle Installation and Administration Guide
  3. Product Documentation, including:

    a. Online Help

    b. Release notes


For More Information

Contacting Quest Software:

Email info@quest.com
Mail Quest Software, Inc.
World Headquarters
5 Polaris Way
Aliso Viejo, CA 92656
USA
Web

http://www.quest.com

Refer to our Web site for regional and international office information.

Contact Quest Support:

Quest Support is available to customers who have a trial version of a Quest product or who have purchased a commercial version and have a valid maintenance contract.
Quest Support provides around the clock coverage with SupportLink, our web self-service. Visit SupportLink at http://support.quest.com.

From SupportLink, you can do the following:

View the Global Support Guide for a detailed explanation of support programs, online services, contact information, and policy and procedures.
The guide is available at: http://support.quest.com/pdfs/Global Support Guide.pdf.

 


This document contains proprietary information protected by copyright. The software described in this guide is furnished under a software license or nondisclosure agreement. This software may be used or copied only in accordance with the terms of the applicable agreement. No part of this guide may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying and recording for any purpose other than the purchaser’s personal use without the written permission of Quest Software, Inc.

 

© 2009 Quest Software, Inc. ALL RIGHTS RESERVED.

 

Quest, Quest Software, the Quest Software logo, Aelita, AppAssure, Benchmark Factory, Big Brother, DataFactory, DeployDirector, ERDisk, Fastlane, Final, Foglight, Funnel Web, I/Watch, Imceda, InLook, IntelliProfile, Internet Weather Report, InTrust, IT Dad, JClass, Jint, JProbe, Knowledge Xpert, LeccoTech, LiteSpeed, LiveReorg, Matrix Insight, Matrix.Net, MIQ, NBSpool, NetBase, Npulse, PerformaSure, PL/Vision, Quest Central, RAPS, SharePlex, Sitraka, SmartAlarm, Speed Change Manager, Speed Coefficient, Spotlight, SQL Firewall, SQL Impact, SQL LiteSpeed, SQL Navigator, SQLab, SQLGuardian, SQLProtector, SQL Watch, Stat, Stat!, StealthCollect, Tag and Follow, Toad, T.O.A.D., Vintela, Virtual DBA, Xaffire, and XRT are trademarks and registered trademarks of Quest Software, Inc in the United States of America and other countries. Other trademarks and registered trademarks used in this guide are property of their respective owners.

If you have any questions regarding your potential use of this material, contact:

Quest Software World Headquarters
LEGAL Dept
5 Polaris Way
Aliso Viejo, CA 92656
Email: legal@quest.com

Disclaimer

The information in this document is provided in connection with Quest products. No license, express or implied, by estoppel or otherwise, to any intellectual property right is granted by this document or in connection with the sale of Quest products. EXCEPT AS SET FORTH IN QUEST'S TERMS AND CONDITIONS AS SPECIFIED IN THE LICENSE AGREEMENT FOR THIS PRODUCT, QUEST ASSUMES NO LIABILITY WHATSOEVER AND DISCLAIMS ANY EXPRESS, IMPLIED OR STATUTORY WARRANTY RELATING TO ITS PRODUCTS INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL QUEST BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE, SPECIAL OR INCIDENTAL DAMAGES (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION OR LOSS OF INFORMATION) ARISING OUT OF THE USE OR INABILITY TO USE THIS DOCUMENT, EVEN IF QUEST HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Quest makes no representations or warranties with respect to the accuracy or completeness of the contents of this document and reserves the right to make changes to specifications and product descriptions at any time without notice. Quest does not make any commitment to update the information contained in this document.