aiwg
Version:
Deployment tool and support utility for AI context. Copies agents, skills, commands, rules, and behaviors into the paths each AI platform reads (Claude Code, Codex, Copilot, Cursor, Warp, OpenClaw, and 6 more) so one source of truth works across 10 platfo
114 lines • 3.58 kB
TypeScript
/**
* TestCaseGenerator - Generate test cases from use case scenarios
*
* Transforms parsed use case scenarios into structured test case specifications
* following TC-XXX format with test steps, expected results, and data requirements.
*
* @module src/testing/generators/test-case-generator
* @implements @.aiwg/requirements/use-cases/UC-009-generate-test-artifacts.md
* @architecture @.aiwg/architecture/software-architecture-doc.md - Section 5.3 TestGenerator
* @nfr @.aiwg/requirements/nfr-modules/performance.md - NFR-TEST-01 (<10min for 100 reqs)
* @tests @test/unit/testing/test-case-generator.test.ts
* @depends @src/testing/generators/use-case-parser.ts
* @agent @agentic/code/frameworks/sdlc-complete/agents/test-engineer.md
*/
import { UseCaseDocument } from './use-case-parser.js';
export interface TestStep {
number: number;
action: string;
expectedResult: string;
testData?: string;
}
export interface TestCase {
id: string;
name: string;
description: string;
priority: 'critical' | 'high' | 'medium' | 'low';
type: 'positive' | 'negative' | 'boundary' | 'error';
level: 'unit' | 'integration' | 'e2e';
preconditions: string[];
steps: TestStep[];
postconditions: string[];
testData: TestDataRequirement[];
traceability: {
useCaseId: string;
scenarioId: string;
nfrs: string[];
};
tags: string[];
estimatedDuration?: number;
}
export interface TestDataRequirement {
name: string;
type: string;
constraints: string[];
examples: string[];
}
export interface TestSuite {
id: string;
name: string;
description: string;
useCaseId: string;
testCases: TestCase[];
coverage: {
mainScenario: boolean;
extensionsCovered: number;
exceptionsCovered: number;
total: number;
};
generatedAt: string;
}
export interface GenerationOptions {
includeNegativeTests?: boolean;
includeBoundaryTests?: boolean;
includeErrorTests?: boolean;
testLevels?: Array<'unit' | 'integration' | 'e2e'>;
maxTestsPerScenario?: number;
generateDataRequirements?: boolean;
}
export interface GenerationResult {
success: boolean;
suite?: TestSuite;
errors: string[];
warnings: string[];
stats: {
totalTestCases: number;
positiveTests: number;
negativeTests: number;
boundaryTests: number;
errorTests: number;
generationTimeMs: number;
};
}
export declare class TestCaseGenerator {
private options;
private testCounter;
constructor(options?: GenerationOptions);
/**
* Generate test suite from a use case document
*
* @param document - Parsed use case document
* @returns Generation result with test suite
*/
generate(document: UseCaseDocument): GenerationResult;
/**
* Generate test cases from multiple use case documents
*
* @param documents - Array of parsed use case documents
* @returns Map of use case ID to generation result
*/
generateBatch(documents: UseCaseDocument[]): Map<string, GenerationResult>;
private generateScenarioTests;
private createPositiveTest;
private createErrorTest;
private generateNegativeTests;
private generateBoundaryTests;
private nextTestId;
private determineTestLevel;
private actionToTestAction;
private inferExpectedResult;
private inferTestData;
private extractDataRequirements;
private estimateDuration;
}
//# sourceMappingURL=test-case-generator.d.ts.map