Database Testing
Source → target

Migrate the data. Prove it arrived intact.

Catch missing rows and wrong values before anyone relies on the new system.

01 · Business logic to SQL

From a sentence to a query.

Give TesterEye the business logic and it writes the SQL in your database's own dialect, along with the assumptions it made.

Business logic

Combine each customer with their orders. Full name is first name and last name with a space. Only include orders after 1 January 2024, and convert totals from cents to dollars.

Generated queryReady to review
SELECT c.id AS customer_id,
       c.first_name || ' ' || c.last_name AS full_name,
       o.id AS order_id,
       o.total_cents / 100.0 AS total
FROM legacy.customers c
JOIN legacy.orders o ON o.customer_id = c.id
WHERE o.created_at >= '2024-01-01';
  • Yours to editReview and change the query before it runs. Execution is read-only.
  • Any dialectConvert a query for another database, such as SQL Server and T-SQL.
  • Asks when unsureIf the rule is ambiguous, you get a question instead of a guess.
02 · Source to target

Source and target, compared field by field.

Pick every table the comparison reads, set the validations, and get a report you can act on.

Source result vs crm.customer_orders1 mismatch
order_idfull_nametotal · sourcetotal · targetResult
1042Asha Rao129.50129.50Match
1043Daniel Kim48.0048.00Match
1044Maria Lopez310.2531.03Mismatch
1045Wei Chen76.4076.40Match
  • Both sides at onceSource and target queries run together, each on its own connection.
  • Joins across tablesLoad several source tables together and compare the joined result.
  • Profiled dataRow counts, columns with nulls and mixed-type columns, before you trust it.
03 · Files and mappings

Data in files? The same checks.

Upload a source file and its source-to-target mapping. TesterEye writes the transformation logic, builds the target and validates it.

File validationValidated
customers_export.xlsx
customers_target.json
  • Rows compared2,340 of 2,340
  • Fields validatedid, email, plan, renewal_date
  • DifferencesNone found
  • Every column tracedSee where each target column came from, straight from the mapping.
  • Conflicts flaggedWhen the query and the mapping disagree, it says so.
  • Take the target with youDownload the built target as a CSV.
How it works

Four steps, start to finish.

  1. 01ConnectLink the source and the target.
  2. 02SelectChoose the tables to validate.
  3. 03DescribeWrite the rule the way you would say it.
  4. 04ValidateRun the checks and read the result.
Step 01 of 04
Explore TesterEye

The rest of the platform.