Topic · equivalence partitioning

Equivalence partitioning

Gist

Equivalence partitioning splits the input domain into classes that should behave the same. Proof asks Z3, with proof verify-properties specs/system, whether the authored data_constraint partitions cover that domain without overlap. A wiki of valid vs invalid is not that check. GeeksforGeeks still owns the glossary. Jama still authors.

proof verify-properties specs/system

Keep ISTQB notes if you already teach the method. Keep one representative test per class if you already write them. Keep Jama if you author shalls. Proof will not count a green mid-range case as coverage of the empty class.

01 · The empty class

A green port=80 case is not a partition of uint16.

You can pick one happy value and still leave a hole the solver can name.

Wikipedia, GeeksforGeeks, VirtuosoQA, and TestGrid define the same act: divide the input domain into classes that should behave the same, then pick a representative from each. Boundary value analysis sits next to that glossary. This URL owns both heads. Proof does not replace the method. It asks a narrower question: did you write the classes as data_constraint groups that Z3 can prove complete and exclusive, and does a test bind a concrete value to each class?

The motivating miss is mechanical. A URI parser treats port as unsigned 16-bit. The suite has port=80. A wiki page says “valid vs invalid.” The invalid class never got a test. The overlap between “port >= 0” and “port <= 65535” written as two overlapping conditions is invisible to the runner. Review is performed. The audit reports clean. Z3 can still assign port=65536 and show the model has a hole.

The command is deterministic. It does not call a model to invent classes. It does not generate the tests. It refuses a silent pass when the authored partitions overlap, leave a legal value unmatched, or lack a triple-form binding that Z3 can admit.

proof verify-properties specs/system
proof audit --check data_constraints_complete,partition_evidence_complete --verbose

The first command is the completeness and exclusivity proof on the authored groups. The second asks whether each important partition has a passing test with a concrete key=value binding. A green port=80 after a shall that names the uint16 domain is how the 65536 class stayed empty.

02 · The exhibit

Same port. A wiki of two classes, or this record.

port=80 still returns 200. The outside-uint16 class never gained a binding. Click the tabs.

Wiki / mid-range

  • Said valid vs invalid
  • Test port=80, suite green
  • 65536 never bound
Suite closed

This partition

No data_constraint group. No Z3 completeness. No triple-form binding for the empty class.

No record

Wiki / mid-range

Still port=80. Still a green log. Keep the representative. It is one class, not the domain.

Keep the mid-range case

Proof

  • Ask do the groups cover port without overlap
  • Out error until 65536 has a binding Z3 admits
A green 80 is not uint16

Same port. A wiki of two classes, or this record. Click the tabs.

Surface What they do What Proof does What we lose
ISTQB / GeeksforGeeks Teach picking one representative per class. Not a course. Proof checks the authored groups and the bindings. No syllabus. Keep the notes.
Boundary value analysis Pick values on and just outside the edge. Same cluster as this H1. A binding such as port=65536 is the edge case. Not a second URL. No BVA generator.
SQL data constraints PRIMARY KEY, CHECK, UNIQUE on a table. W3Schools owns that SERP. Not this H1. A YAML data_constraint is a partition model, not a column rule. No database engine.
Negative testing Assert a reject on invalid input. Security-class floor on negative testing. A :negative witness is one class. Completeness of the domain is this URL. Not every invalid input. Not ISTQB breadth.
Jama / DOORS Author and store the programme. Jama still authors. Proof holds the partition as a row the audit can re-read. IBM DOORS stays a mention on Proof vs Jama. Not an ALM. Jama still authors.

The teaching graph is still a port with two classes. Author the groups. Let Z3 prove they cover the domain. Bind a test to each class. Source annotations alone do not count. The test must also match a passing case in project.checks.test_results.report_path.

variables:
  - name: uri_port_in_uint16
    type: bool
    data_constraint:
      domain: integer
      condition: "port >= 0 && port <= 65535"
      parameters:
        - name: port
          type: int
          constraint: "0 <= port <= 65535"
// Verifies: SW-REQ-060:uri_port_outside_uint16_range:negative port=65536
proof verify-properties specs/system
proof workflow check --stage verify --only partition_evidence_complete --verbose

If Z3 reports a hole, split or tighten the groups. If it reports overlap, the two booleans can both be true for one legal value. A proved partition is not a proof of the Go. Move a clamp on a helper to a lemma on loop invariant or Z3 / Kind2 when the claim is the function, not the domain.

03 · The honest loss

Proof names the hole. It does not write the classes.

A complete partition model is not a proof of the Go. Jama still authors.

Proof does not implement ISTQB training, pairwise tools, or a combinatorial generator. It does not invent the partitions. It does not inspect production code to see whether the parser actually rejects 65536. The constraint proves the authored model. Prefer a code lemma when the clamp lives in a helper. We have not scored this against GeeksforGeeks examples on a frozen pack. The loss is named, not scored.

data_constraints as a Google query is SQL. That SERP is W3Schools. This URL is the testing method. Do not treat a CHECK constraint as a partition record.

The reject-path H1 stays on negative testing. Property generators stay on property based testing. Decision cells stay on decision tables. Jama still authors.

04 · Nearby questions

What people type next.

What is equivalence partitioning? Same question. Same URL.

What is equivalence class partitioning? Same cluster, longer head. Same command. Not a twin.

What is boundary value analysis? Same cluster. The edge binding is port=65536 on this page. Not a second URL.

Is this pairwise testing? No. Pairwise and combinatorial generators are a different method. Proof does not ship that generator.

Is this negative testing? A reject-path witness is one class. Completeness of the domain is this URL. negative testing.

Are SQL data constraints this page? No. W3Schools still owns CHECK and UNIQUE. A YAML partition is not a column rule.

Does Proof replace Hypothesis? No. Keep the library for shrinking. property based testing.

Is Proof a VectorCAST alternative? No. LDRA owns that cluster. Proof vs LDRA.