Every edition, every database

Generated from your code, not guessed by AI.

The tests come from your code and your schema, checked against the real database, not from a language model's best guess.

An AI test guesses the answer. It cannot check it.

A language model writes the text of a test from patterns it has seen, not from your code. It never runs your function, so it has no source of truth for the expected value. It predicts a number that looks right. When the prediction is wrong, the test is wrong, and nothing in the model can tell you which tests those are.

How UnitAutogen generates a test

  • Derived from the branch predicate and the schema, not written as prose
  • Run against the real database, so a pass means the branch ran and the assertion held
  • The same tests, byte for byte, on every run, so diffs are reviewable and nothing flakes
  • A branch it cannot prove is marked with the reason, never turned green

What a language model produces instead

  • Plausible test text that can pass against an empty table or assert the wrong thing
  • Wrong a fraction of the time, and you cannot tell which without the oracle you were generating
  • Different output each run, so you cannot diff or trust the suite
  • Fails quietly, the worst failure mode for a test

The same function, two suites

Take a function that gives a 9 percent discount over 100.

CREATE FUNCTION apply_discount(p_total numeric) RETURNS numeric AS $$
BEGIN
  IF p_total > 100 THEN
    RETURN round(p_total * 0.09, 2);
  END IF;
  RETURN 0;
END $$ LANGUAGE plpgsql;

What a language model writes

-- guessed from the name, never run
SELECT is( apply_discount(150), 15.00,
  'gives 10% off' );
-- wrong. the code uses 9%, so this
-- reports a failure on correct code

SELECT ok( apply_discount(50) >= 0,
  'no negative discount' );
SELECT ok( apply_discount(150) IS NOT NULL,
  'returns a value' );
-- both pass for any number at all,
-- so they prove nothing
  • The one real assertion is a wrong guess, so someone loosens or deletes it
  • What is left is green and proves nothing
  • No branch was measured, the boundary at 100 is untested

What UnitAutogen writes

-- expected value read by running the
-- real function, both arms covered
SELECT is( apply_discount(150.00), 13.50,
  'over 100, the rate the code applies' );
SELECT is( apply_discount(100.00), 0.00,
  'at the boundary, nothing' );
SELECT is( apply_discount(100.01), 9.00,
  'just over the boundary, it applies' );
-- branch coverage 100%, and any test
-- that did not hold on a clean re-run
-- is dropped, never shipped green
  • The expected value is whatever your function actually returns, captured by running it
  • Both sides of total > 100 are driven, boundary included
  • A change that moves that behaviour fails the test before it ships

The expected value is not a claim that your code is correct. It is exactly what your code does today, pinned so a later change cannot move it unnoticed. That is the one thing a guessed number can never be.

How an AI-generated test fails, and why you cannot catch it

The trap is the last one. To find the wrong tests in an AI-generated suite, you need the very oracle you were trying to generate, so every assertion has to be reviewed by hand. Scaling the model changes how often it is wrong, not that it is wrong, and never in a way you can locate. That is why the correctness core here is deterministic. A model still earns its place at the edges, naming a test, summarising a routine, triaging a flagged case, but never deciding whether a pass is real.

What platforms suggest

The platform points you to pgTAP tests that run against the real database.