Files
gh-openshift-eng-ai-helpers…/commands/expand-test-case.md
2025-11-30 08:46:13 +08:00

80 lines
4.0 KiB
Markdown

---
description: Expand basic test ideas or existing oc commands into comprehensive test scenarios with edge cases in oc CLI or Ginkgo format
argument-hint: [test-idea-or-file-or-commands] [format]
---
## Name
openshift:expand-test-case
## Synopsis
```
/openshift:expand-test-case [test-idea-or-file-or-commands] [format]
```
## Description
The `expand-test-case` command transforms basic test ideas or existing oc commands into comprehensive test scenarios. It accepts three types of input:
1. **Test idea**: Simple description of what to test (e.g., "verify pod deployment")
2. **File path**: Path to existing test file to expand (e.g., `/path/to/test.sh` or `/path/to/test.go`)
3. **oc commands**: Direct oc CLI commands to analyze and expand (e.g., `oc create pod nginx`)
The command expands the input to cover positive flows, negative scenarios, edge cases, and boundary conditions, helping QE engineers ensure thorough test coverage.
Supports two output formats:
- **oc CLI**: Shell scripts with oc commands for manual or automated execution
- **Ginkgo**: Go test code using Ginkgo/Gomega framework for E2E tests
## Implementation
The command analyzes the input and generates comprehensive scenarios:
1. **Parse Input**: Determine if input is a test idea, file path, or oc commands
- If file path: Read and analyze existing test code
- If oc commands: Parse commands to understand what's being tested
- If test idea: Understand the core feature or behavior
2. **Identify Test Dimensions**: Determine coverage aspects (functionality, security, performance, edge cases)
3. **Generate Positive Tests**: Happy path scenarios where everything works
4. **Generate Negative Tests**: Error handling, invalid inputs, permission issues
5. **Add Edge Cases**: Boundary values, race conditions, resource limits
6. **Define Validation**: Clear success criteria and assertions
7. **Format Output**: Generate in requested format (oc CLI or Ginkgo) - **MUST follow the standards in "Test Coverage Guidelines" section below**
**CRITICAL**: All generated test scenarios MUST adhere to the coverage dimensions, best practices, and standards defined in the **"Test Coverage Guidelines"** section below. Use the referenced examples and patterns from OpenShift origin repository.
## Test Coverage Guidelines
The command generates comprehensive test scenarios following industry best practices:
**Test Coverage Dimensions:**
- **Positive Tests**: Valid inputs and expected workflows
- **Negative Tests**: Invalid inputs, permission errors, missing dependencies
- **Edge Cases**: Boundary values (0, max values, empty inputs, special characters)
- **Security Tests**: RBAC validation, security context enforcement, privilege escalation
- **Resource Tests**: Low memory, disk pressure, network issues, rate limiting
- **Concurrency**: Multiple operations happening simultaneously
- **Failure Recovery**: Restart behavior, cleanup on failure
**References:**
- OpenShift Test Examples: https://github.com/openshift/origin/tree/master/test/extended
- Ginkgo BDD Framework: https://onsi.github.io/ginkgo/
- Test Pattern Catalog: https://github.com/openshift/origin/blob/master/test/extended/README.md
- oc CLI Reference: https://docs.openshift.com/container-platform/latest/cli_reference/openshift_cli/developer-cli-commands.html
**Best Practices Applied:**
- Use stable, descriptive test names (no dynamic IDs or timestamps)
- Ensure proper resource cleanup (prevent resource leaks)
- Include meaningful assertions with clear failure messages
- Isolate tests (each test creates its own resources)
- Add appropriate timeouts to prevent hanging tests
- Follow Ginkgo patterns: Describe/Context/It hierarchy
- Use framework helpers: e2epod, e2enode, e2enamespace
## Arguments
- **$1** (test-idea-or-file-or-commands): One of:
- **Test idea**: Description of what to test
- **File path**: Path to existing test file
- **oc commands**: Set of oc CLI commands to analyze and expand
- **$2** (format): Output format - "oc CLI" or "Ginkgo" (optional, will prompt if not provided)