STD: ICCT Rule (Final CT/CLS Determination)
Version: v1.0.0 Status: Draft SRS Source:
docusaurus/docs/srs/rules/rule-icct.mdRule Name: ICCT Domain: RULES-ICCT
Overview
This document specifies tests for the ICCT rule using decision tables and test vectors. The rule determines Final CT and Final CLS values based on manual user inputs, falling back to preferred result provider values when manual inputs are not specified.
Rule Characteristics:
- Pure business logic (no UI)
- Simple condition matching (2 boolean inputs)
- Provider lookup for CLS matching
- Null CT handling for Negative CLS
Test Method: TM-API (per Test Plan Section 3.3 - Rules use automated API tests)
Verification Approach: Rule verification is performed using data-driven test vectors. Each row in a decision table represents a complete verification scenario with defined inputs and expected outputs. This format enables exhaustive condition coverage while remaining concise and auditable.
Coverage Summary
| REQ ID | Title | Conditions | Test Vectors | Coverage | Gaps |
|---|---|---|---|---|---|
| REQ-RULES-ICCT-001 | Final CT/CLS Determination | 4 | 8 | 100% | None |
Totals: 1 REQ, 4 Conditions, 8 Test Vectors, 100% Coverage
Automation Status: Automated
REQ-RULES-ICCT-001: Final CT/CLS Determination
Input Variables
| Variable | Type | Valid Values | Description |
|---|---|---|---|
has_manual_ct_provider | bool | true, false | Whether user specified a manual CT provider |
manual_ct_provider.ct | float? | null, numeric | CT value from manual provider (when specified) |
has_manual_cls | bool | true, false | Whether user specified a manual CLS |
manual_cls | string? | null, Positive, Negative, Amb, ... | User-specified CLS value |
preferred_provider.ct | float | numeric | CT from preferred result provider |
preferred_provider.cls | string | Positive, Negative, Amb, ... | CLS from preferred result provider |
matching_provider.ct | float? | null, numeric | CT from provider whose CLS matches manual CLS |
Output Variables
| Variable | Type | Description |
|---|---|---|
final_ct | float? | Resolved CT value (null for Negative CLS) |
final_cls | string | Resolved CLS value |
Decision Table: Primary Truth Table
This table covers the three documented input combinations from the SRS truth table.
| TV | has_manual_ct_provider | has_manual_cls | final_ct | final_cls | Covers |
|---|---|---|---|---|---|
| TV-001-001 | false | false | preferred_provider.ct | preferred_provider.cls | AC: No manual inputs - default case |
| TV-001-002 | true | false | manual_ct_provider.ct | preferred_provider.cls | AC: Manual CT provider only |
| TV-001-003 | false | true | matching_provider.ct | manual_cls | AC: Manual CLS only - matching provider lookup |
Decision Table: Negative CLS Handling
This table covers the special case where manual CLS is specified as Negative.
| TV | has_manual_ct_provider | has_manual_cls | manual_cls | final_ct | final_cls | Covers |
|---|---|---|---|---|---|---|
| TV-001-004 | false | true | Negative | null | Negative | AC: Negative CLS sets CT to null |
| TV-001-005 | false | true | Positive | matching_provider.ct | Positive | AC: Non-negative CLS uses matching provider CT |
Decision Table: Matching Provider Resolution
This table verifies the matching provider lookup behavior when manual CLS is specified.
| TV | manual_cls | providers_available | provider_with_matching_cls | final_ct | Covers |
|---|---|---|---|---|---|
| TV-001-006 | Positive | [P1(cls=Neg, ct=20), P2(cls=Pos, ct=25)] | P2 | 25 | AC: Correct provider selected by CLS match |
| TV-001-007 | Amb | [P1(cls=Pos, ct=20), P2(cls=Amb, ct=30)] | P2 | 30 | AC: Ambiguous CLS matching |
Decision Table: Boundary and Edge Cases
| TV | Scenario | has_manual_ct | has_manual_cls | Input State | Expected Behavior | Covers |
|---|---|---|---|---|---|---|
| TV-001-008 | Preferred provider values | false | false | pref.ct=25.5, pref.cls=Positive | final_ct=25.5, final_cls=Positive | AC: Exact value preservation |
Traceability to SRS Acceptance Criteria
| AC Reference | Description | Test Vectors |
|---|---|---|
| No Manual Inputs (Default Case) | Final CT/CLS from preferred provider | TV-001-001, TV-001-008 |
| Manual CT Provider Only | CT from manual provider, CLS from preferred | TV-001-002 |
| Manual CLS Only | CLS from manual, CT from matching provider | TV-001-003, TV-001-006, TV-001-007 |
| Negative CLS Handling | CT set to null for Negative CLS | TV-001-004 |
| Non-Negative CLS | CT from matching provider | TV-001-005 |
Traceability to Existing Tests
| Requirement | Jira Tests | Status |
|---|---|---|
| REQ-RULES-ICCT-001 | BT-3861 | Existing |
Gap Analysis
Identified Gaps
| Gap | Requirement | Description | Priority | Owner |
|---|---|---|---|---|
| - | - | No gaps identified | - | - |
All acceptance criteria from REQ-RULES-ICCT-001 are covered by test vectors TV-001-001 through TV-001-008. The existing Jira test BT-3861 provides baseline coverage.
Notes
-
Unspecified Combination: The SRS notes that the fourth combination (both Manual CT Provider AND Manual CLS specified) is not defined in requirements. This combination is intentionally excluded from test vectors as it represents an unspecified state.
-
Provider Lookup Assumption: Test vectors assume a provider with matching CLS always exists when manual CLS is specified. Error handling for missing matching provider is not specified in the SRS.