12 November 2026 Release Notes¶
Open Source Version 5.185.1
Before you upgrade¶
- Reverse proxies that strip a path: If
TG_UI_BASE_URLincludes a path, such ashttps://example.com/testgen, TestGen serves the UI under that path. If your reverse proxy or load balancer strips the path before forwarding requests, forward it unchanged instead, redirect/<path>to/<path>/, and move the UI health check to/<path>/_stcore/health.
Feature highlights¶
Data contracts¶
A data contract is a test suite that keeps its tests in numbered versions and holds a contract document that you import and export in the Open Data Contract Standard (ODCS). Use a contract when the quality rules for a set of tables are an agreement between the teams that produce the data and the teams that rely on it: changes are prepared in a draft, previewed against your data, and frozen as the next version only when they are ready, so the agreement never changes underneath the people who depend on it.
Start a contract from tables in a table group, with tests and a contract document generated from profiling results and the data catalog, or from an ODCS file that another team or tool produced. Share the contract document with producers and consumers to agree on tables, columns, types, owners, and service levels, and compare any two versions rule by rule before you freeze one. Each declared table gets a Schema Conformance test that reports drift from its declared columns and types, and only runs of the active version update the contract's results, Testing Score, and notifications.
For details, see Contracts, Contract Versions, and Contract Documents.
Audit trail¶
TestGen writes a record of sign-ins, access changes, run activity, and configuration and test changes to a dedicated audit.log file, for your log management tools to collect. Actions in the web app, the REST API, the MCP server, and the scheduler are all recorded.
For details, see Collect Audit Records.
Test a build before you promote it¶
A test run started through the REST API or the MCP server can read another schema or differently named tables, such as a staging build, without changing the stored tests. Custom SQL tests can declare variables that a run supplies.
For details, see Test run options.
Test only some records¶
Column tests, row counts, and other aggregate test types accept a Record Subset Condition, so a rule such as "ship date is required when status is SHIPPED" needs no custom SQL.
For details, see Test only some records.
Deprecations¶
Command-line interface¶
The testgen commands for running and reading data quality work will be removed in the next release. They have been deprecated since version 5.92.1.
- Use the API to automate TestGen from CI/CD pipelines, orchestration tools, and your own scripts.
- Use the MCP Server for interactive and AI-assisted work.
The commands that the installers and the Amazon ECS task definitions use to set up and upgrade TestGen remain.
Other fixes and enhancements¶
- The new Valid US/Canada Zip test type checks columns that mix US zip codes and Canadian postal codes.
- Amazon S3 and Azure Blob Storage connections can read public buckets and containers with no credentials.
- Add one note to several selected tests at once on the Test Definitions and Test Results pages.
- Rename a test suite in the Edit Test Suite dialog. Test suite names are unique within a project, and the upgrade renames duplicates by adding a number, such as
Orders (2). - Value Match and Value Match All take a plain comma-separated list and behave the same on every database: numbers compare by value, and text compares exactly. The upgrade converts existing lists. See Value Match.
- TestGen can be served under a path of a shared host, such as
https://example.com/testgen, behind a reverse proxy. See Serve TestGen under a path. - Max Threads defaults to the recommended value for each connection type. The upgrade moves connections set to 4, the earlier default, to their type's default.
- Profile results mark each statistic that was estimated from a sample or computed with an approximate percentile function, and tests that need an exact measure are not generated from such statistics.
- The REST API updates any table group setting, and deletes a table group along with its test suites, runs, monitors, and profiling data.
- The MCP table and column tools return the Data Catalog's descriptions, flags, and tags. New deletion tools show what will be removed and ask for your confirmation before deleting.
- Profiling and testing CSV and JSON files on a Local Files connection is faster, especially for wide files, because each file is read once per run.
- On SQL Server, profiling text columns uses less processor time, and Required, No Placeholder tests run much faster on wide text tables.
- In table and column masks,
%is the only wildcard and_matches a literal underscore on every database, so the default ID masks%_idand%_skno longer match columns such aspaidorvalid. A column named exactlyidis always treated as an ID column. - Aggregate Balance Range and Aggregate Balance Percent apply their tolerances as offsets to the reference value and handle a negative reference, and each test requires at least one tolerance.
- We fixed browsers running the previous version's scripts after an upgrade until a hard refresh.
- We fixed MCP clients that sign in with OAuth losing their session every hour.
- We fixed SQL Server catalog row counts, Volume and Freshness monitors, and profiling failing on tables with more than about 2.1 billion rows, errors on views that use XML methods or indexed views (error 1934) and on dates before 1753, and Value Match tests reading 0 as NULL.
- We fixed errors on large SAP HANA columns, in Google BigQuery referential tests across datasets and test runs that read a missing dataset, and in table masks that contain an underscore on Google BigQuery and SAP HANA.
- We applied general fixes to reduce errors, increase security, and improve our user experience.