Skip to main content
Classification tree and combination table used to design embedded unit test cases in Razorcat's Classification Tree Editor for TESSY, available in India from GSAS Micro Systems

Test Case Design with the Classification Tree Method: Deriving Unit Tests You Can Defend in an Audit

GSAS Engineering · · 10 min read

The Classification Tree Method is a systematic technique for deriving test cases from a functional specification: identify the test-relevant aspects as classifications, partition each into equivalence classes, then combine leaf classes in a combination table. Razorcat implements it in the Classification Tree Editor, available integrated into TESSY or as a standalone Windows installation.

Where Do Your Test Cases Actually Come From?

Ask a team how it arrived at a given set of unit test cases and you get one of two answers. The good answer traces each test case to a requirement and to a stated reason for choosing that input. The common answer is some version of “the engineer who wrote the module knew what to try.”

The second answer fails an audit, not because the tests are bad but because no argument is attached to them. The Classification Tree Method (CTM) replaces that missing argument with a visible one. Razorcat, the Berlin developer of TESSY, describes the objective of the CTM as transforming “a (functional) definition of a problem systematically into a set of error-sensitive, low redundancy set of test case specifications.” Per Razorcat, the method stems from the former software research laboratory of Daimler in Berlin.

The Method in Three Moves

Razorcat’s Classification Tree Editor page reduces the CTM to two steps: identify the test-relevant aspects (classifications) and their values (classes), then combine classes from all classifications into test cases. It helps to separate partitioning from combining, so treat it as three moves.

1. Identify the classifications

A classification is an aspect you expect to influence the behaviour of the test object. Per Razorcat’s manual, an aspect is relevant “if the user wants to use different values for this aspect during testing.” Aspects come from the functional specification, not the source code, which keeps CTM a black-box technique.

2. Partition each classification into classes

Values of each aspect are grouped into equivalence classes. Razorcat’s manual states the rule plainly: values are equivalent for the test if, when one value from a class causes a test to fail and reveal an error, “every other value out of this class will also cause the same test to fail and will reveal the same error.” The ISTQB Certified Tester Foundation Level syllabus states the same principle, adding that partitions “must not overlap and must be non-empty sets.”

The manual imposes two obligations that are easy to skip and expensive to skip:

  • Completeness: every possible value of a test-relevant aspect must be assigned to a class.
  • Uniqueness: a value must be assigned to a single class, not to several.

Classes can be partitioned again. Per Razorcat, repeated partitioning reduces complexity, because each class is then considered in isolation, and it documents the stages of reasoning, which “serves understandability and traceability of the result.” Boundary values enter here: boundary value analysis is the opposite idea to equivalence partitioning, and CTM expresses both by carving out a class holding one extreme value.

3. Combine classes in the combination table

Leaf classes form the head of a combination table. Each row is one test case, defined by marking which leaf classes supply its values. Per Razorcat, exactly one class of each classification is considered per test case, and the combined classes must be logically compatible.

The discipline lies in what you do not do. Combining every class with every other is not the intention of the method, Razorcat’s manual says: that “could be done automatically by a tool” and produces loss of overview and excessive effort. The objective is “a minimal, non-redundant but sufficient set of test cases.”

A Worked Example: An Ice Warning Indicator

Razorcat’s manual works a small automotive example that shows the reasoning well. The specification: a dashboard ice warning depends on an outside temperature sensor reporting from -60 °C to +80 °C. Above 3 °C the warning shall be off; at lower temperatures it shall be on.

Move 1. One input, so one base classification: sensor temperature, which Razorcat notes is obviously the only test-relevant aspect here.

Move 2, first cut. Ask whether invalid values are possible before splitting on the threshold. Razorcat’s manual points at the physical failure modes: a short circuit or a cable interruption produces a value outside the sensor’s range. So the first partition is valid versus invalid, and invalid splits into too low and too high.

Move 2, the trap. It is tempting, Razorcat writes, to form two classes from the valid temperatures: -60 °C to 3 °C where the warning is on, 3 °C to 80 °C where it is off. GSAS note: apply Razorcat’s own uniqueness rule to that partition and 3 °C sits in both classes, because the specification says the warning is off above 3 °C and on at lower temperatures, and never says what happens at exactly 3 °C. Razorcat makes the general point elsewhere in the manual, in a separate worked example: finding an omission or contradiction in the functional specification during test case design is a valuable result, and “it is generally more likely to detect a problem in the functional specification if the test case specification is systematic.”

Move 2, repeated partitioning. Razorcat then splits the warning-on class by sign of temperature, since one arbitrary value per class is otherwise enough and a tester could satisfy it with 2 °C forever.

Move 3. Marking leaf classes in the combination table yields a test case specification.

The table below is GSAS’s own combination table, extending Razorcat’s ice-warning example with boundary classes. Razorcat’s published partitioning for this example yields at least four test cases; the eight below add the boundaries and the threshold row.

#Leaf class markedValue usedExpected result
1invalid, too lowbelow the sensor minimuminvalid-value handling per specification
2valid, warning on, minimum boundary-60 °Cwarning on
3valid, warning on, negativea normal sub-zero valuewarning on
4valid, warning on, below threshold2 °Cwarning on
5valid, boundary at the threshold3 °Cspecification gap, resolve before coding
6valid, warning off, just above threshold4 °Cwarning off
7valid, warning off, maximum boundary80 °Cwarning off
8invalid, too highabove the sensor maximuminvalid-value handling per specification

Source for the specification and the partitioning approach: Razorcat, TESSY 5.1 User Manual, section 3.2. Test case selection is ours.

Eight test cases from one input variable, each with a written reason. Row 5 pays for the exercise.

Razorcat also gives two bounds. In the manual’s larger is_value_in_range example the minimum criterion (each leaf class used once) is 7, the maximum criterion (all permitted combinations) is 105, and the worked specification lists 14 test cases against 15 leaf classes, matching Razorcat’s rule of thumb that leaf class count sets the order of magnitude.

CTM Versus Ad-Hoc Test Invention

Ad-hoc test inventionClassification Tree Method
Source of test casesEngineer’s judgement, undocumentedFunctional specification, decomposed into classifications and classes
Completeness argumentNone available on requestEvery value of every aspect belongs to exactly one class, by construction
Redundancy controlDuplicates accumulate silentlyTargets a minimal, non-redundant but sufficient set, per Razorcat
Sizing evidence”It felt like enough”Minimum criterion, maximum criterion, leaf-class rule of thumb
Effect on the specificationAmbiguities survive into the codeAmbiguities surface during design, as with the 3 °C row above
What an assessor inspectsA list of inputsA tree, a combination table, and the derivation linking them

Where This Meets the Standards

The obligation to test. Razorcat’s manual summarises the IEC 61508 position: Part 3 requires module testing to show the module performs its intended function and does not perform unintended functions, with results documented. Per the manual, functional and black-box testing is highly recommended from SIL 1 upward, and dynamic analysis and testing is recommended at SIL 1 and highly recommended at SIL 2 and above. CTM is a black-box, specification-based technique, the family those tables point to. See our IEC 61508 page.

The automotive table. ISO 26262-6:2018, Table 8, “Methods for deriving test cases for software unit testing”, has four rows: 1a analysis of requirements, 1b generation and analysis of equivalence classes, 1c analysis of boundary values, and 1d error guessing. CTM is a worked instance of row 1b, and because it carries boundary classes inside the same tree it produces row 1c evidence in the same artefact. Razorcat certifies TESSY’s core workflow to ISO 26262-08:2018, and the test cases that workflow executes are the ones the tree produces. Our ISO 26262 page sets out the full table and the ASIL ratings.

The status of the tool. Razorcat states that TESSY’s core workflow, and its release and test process, have been certified according to ISO 26262-08:2018 and IEC 61508-3:2010, with re-certification of TESSY 4.1 by TÜV SÜD Rail GmbH extending scope to EN 50128 and IEC 62304, and that TESSY was classified a T2 offline tool under EN 50128:2011. A separately purchasable Tool Qualification Pack is the baseline for qualifying TESSY as a verification tool according to DO-178B/C.

One boundary deserves precision: Razorcat states directly that the Classification Tree Editor, which covers test preparation, is not part of that certified core workflow. CTM is applied by a human being, as Razorcat says, and its output is a design rationale, not a computed result. Use CTM for the argument and TESSY’s certified workflow for the evidence.

How Razorcat Implements CTM in the Classification Tree Editor

The CTE is Razorcat’s graphical realisation of the method, integrated into TESSY or standalone on Windows 7/8/10/11 (64-bit). Per Razorcat, the CTE requires a valid licence, and a TESSY licence includes the permission to run it; an evaluation licence can be requested online after installing and starting CTE. Razorcat versions the standalone CTE separately from TESSY, at 4.3 with its own user manual at the time of writing. Per Razorcat, the editor has a tree area for the root, compositions, classifications and classes; a Test Table for marking classes into test cases, test sequences and test steps; and a palette that also defines AND, OR, XOR and NEGATION dependencies, which is how you rule out combinations the problem forbids.

Two Razorcat implementation details matter most in embedded work. First, TESSY can generate an initial tree from the test object interface and the interface dictionary, always containing Inputs and Outputs subtrees, with nodes for parameters, globals, return value and the parameters and return values of called functions; with “Update generated tree based on interface changes” enabled, it spots interface elements not attached to any CTE node and offers to merge a new tree into the existing one. Razorcat adds that a generated tree always needs review and adjustment by a tester. Second, test data assigned to a tree node is applied automatically when that class is marked, and CTE values are read-only in the Test Data Editor, which keeps the tree the single source of the design. Special values including *min*, *max*, *min+1* and *max-1* are available, exactly the notation boundary value work needs.

Specifications export to XML, XLSX, TXT, SVG, PNG and JPG, so the derivation travels into a review pack or safety case appendix. The rest of the TESSY workflow then takes over: requirements imported via ReqIF from DOORS, Jama Connect and Visure, or from Polarion via a plug-in; then coverage measurement, which per Razorcat covers statement (C0), branch (C1), decision, MC/DC, multiple condition, entry point, function and call pair coverage, as our MC/DC coverage guide explains.

Razorcat’s public product documentation is currently the TESSY 5.1 manual, so if your programme is scoping a later release, ask GSAS to confirm the applicable feature scope and availability.

Sources

  • Razorcat Development GmbH, TESSY 5.1 User Manual, sections 3.1 and 3.2 (CTM, equivalence partitioning, ice warning and is_value_in_range examples, minimum and maximum criteria), preface (certification scope, core workflow, Tool Qualification Pack), section 6.8 (CTE tree generation, Test Table, dependencies, special values).
  • Razorcat, CTE product page: the two steps of the method, export formats, standalone availability.
  • Razorcat, CTE downloads page: CTE 4.3, system requirements, and the licence statement that a TESSY licence includes the permission to run the CTE.
  • Razorcat, TESSY product page: CTE integration, requirements import, coverage measurements.
  • ISTQB, Certified Tester Foundation Level Syllabus v4.0, section 4.2.1, Equivalence Partitioning.
  • ISO 26262-6:2018 Table 8, as set out on our ISO 26262 page.

CTE and TESSY in India, the UAE and Sri Lanka

GSAS Micro Systems is the authorized Razorcat engineering partner for India, the UAE and Sri Lanka, covering TESSY and the standalone Classification Tree Editor with licensing, INR invoicing and the part no licence covers: sitting with your team while the first trees are drawn against real requirements, so classifications reflect your specification and not your source code. Our engineers support automotive, aerospace, medical and industrial programmes from Bengaluru, Hyderabad, Chennai, Pune, Mumbai and Delhi NCR. If your team is preparing for a safety assessment and wants test cases that survive the question “why these?”, request a quote or a guided evaluation.

Interested in Razorcat tools?

Talk to our application engineers for personalized tool recommendations.

Frequently asked questions

What is the Classification Tree Method?
It is a systematic technique for deriving test cases from a functional specification. Per Razorcat, the developer of TESSY and the Classification Tree Editor, the method has two steps: identify the test-relevant aspects (classifications) and their corresponding values (classes), then combine classes from all classifications into test cases. Razorcat describes the objective as transforming a functional definition of a problem systematically into a set of error-sensitive, low redundancy test case specifications, and notes the method stems from the former software research laboratory of Daimler in Berlin.
How is CTM different from plain equivalence partitioning and boundary value analysis?
CTM contains both rather than competing with them. Classes are formed by equivalence partitioning, and per Razorcat's TESSY manual the idea behind boundary value analysis is the opposite of equivalence partitioning, since one treats values as interchangeable and the other insists on special values inside a set. CTM expresses both by carving out a class holding a single extreme value. What CTM adds is the structure around them: a tree that documents repeated partitioning and a combination table that records which classes each test case draws from.
How many test cases should a classification tree produce?
Razorcat's TESSY manual gives two calculated bounds and a rule of thumb. The minimum criterion is the number of test cases needed for each leaf class to appear at least once. The maximum criterion is the number resulting from all permitted combinations of leaf classes. In the manual's is_value_in_range example the minimum criterion is 7 and the maximum criterion is 105, and the worked specification lists 14 test cases against 15 leaf classes, matching Razorcat's rule of thumb that the leaf class count gives the order of magnitude.
Does TESSY include the Classification Tree Editor?
Yes. Per Razorcat, the CTE is integrated in TESSY, which makes it easy to set the values needed in the TESSY test process directly within the CTE, and a standalone installation for Windows 7/8/10/11 (64-bit) is also available. Per Razorcat, the CTE requires a valid licence to enable the software, and a TESSY licence includes the permission to run the CTE; an evaluation licence can be requested online after installing and starting CTE.
Is the Classification Tree Editor covered by TESSY's safety certification?
No, and Razorcat says so directly: the Classification Tree Editor, which covers test preparation activities, is not part of the certified core workflow of TESSY. Per Razorcat, the certified core workflow runs from editing of test data through test execution, evaluation of test results and report generation, certified according to ISO 26262-08:2018 and IEC 61508-3:2010, with re-certification of TESSY 4.1 by TUEV SUED Rail GmbH extending scope to EN 50128 and IEC 62304.
Where can teams in India buy TESSY and the Classification Tree Editor?
From GSAS Micro Systems, the authorized Razorcat engineering partner for India, the UAE and Sri Lanka, covering TESSY and the standalone Classification Tree Editor with licensing, INR invoicing and local engineering support from Bengaluru, Hyderabad, Chennai, Pune, Mumbai and Delhi NCR. Razorcat's public product documentation currently covers TESSY 5.1, so ask GSAS to confirm the feature scope and release availability that applies to your programme.

Stay in the Loop

Get monthly compliance updates, product insights, and engineering best practices delivered to your inbox.

Related Articles

Fault injection and robustness testing for safety-related embedded C and C++ software, explained for Indian engineering teams by GSAS Micro Systems, the authorized Razorcat engineering partner
Compliance & Safety Razorcat Automotive & Mobility

Fault Injection and Robustness Testing for Embedded Software: What ISO 26262, IEC 61508 and DO-178C Actually Ask For

Every safety-related unit contains code that correct inputs never execute: range checks, error returns, timeouts, recovery paths. The functional safety standards require that code to be verified, and they are explicit about how. ISO 26262-6 lists fault injection test as a method for both software unit verification and software integration verification; IEC 61508-3 recommends defensive programming from SIL 2 upward and then concedes, in a footnote, that defensive code is exactly what stops teams reaching 100 percent structural coverage. This guide separates robustness testing from fault injection, maps each to the clause that asks for it, and shows how Razorcat implements automated fault injection in TESSY without leaving instrumentation in production code.

1 Aug 2026 · 11 min read
Buyer-side evaluation framework for embedded unit testing tools, covering compiler and debugger fit, on-target execution, coverage levels and qualification evidence, from GSAS Micro Systems in India
Compliance & Safety Razorcat Automotive & Mobility

How to Evaluate a Unit Testing Tool for Embedded Software: A Buyer's Framework for Indian Teams

Unit test tool evaluations rarely fail on features. They fail because the tool cannot drive the compiler and debugger the project is already committed to, or because the evidence it produces sits outside the scope of the certificate the assessor asks for. This is a buyer-side framework: six questions, what a credible answer looks like in vendor documentation, and a four-week pilot that measures the answers instead of accepting them.

1 Aug 2026 · 10 min read
Structural code coverage criteria compared for safety-critical embedded software testing, explained by GSAS Micro Systems, the authorized Razorcat engineering partner in India
Compliance & Safety Razorcat Automotive & Mobility

Is 100% Code Coverage Enough? Statement, Branch, MC/DC and MCC, and What Each One Proves

No. A coverage percentage records which code your tests executed, not whether your tests would notice if that code were wrong. This guide defines statement, branch, decision, condition/decision, MC/DC and multiple condition coverage precisely, sets out what 100% of each does and does not prove, shows what ISO 26262, IEC 61508 and DO-178 ask for alongside coverage, and explains the three things to add: requirements traceability, fault-based testing and robustness cases.

1 Aug 2026 · 9 min read