Skip to content

Commit 1b78626

Browse files
committed
ad dlinter
1 parent 42477af commit 1b78626

File tree

4 files changed

+214
-34
lines changed

4 files changed

+214
-34
lines changed

.gitignore

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Claude Code configuration directory
2+
.claude/
3+
4+
# Python
5+
__pycache__/
6+
*.py[cod]
7+
*$py.class
8+
*.so
9+
.Python
10+
*.egg-info/
11+
dist/
12+
build/
13+
14+
# Virtual environments
15+
.venv/
16+
venv/
17+
ENV/
18+
env/
19+
20+
# IDEs
21+
.vscode/
22+
.idea/
23+
*.swp
24+
*.swo
25+
*~
26+
27+
# OS
28+
.DS_Store
29+
Thumbs.db
30+
31+
# Logs
32+
*.log

.markdownlint-cli2.yaml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# See https://github.com/DavidAnson/markdownlint#optionsconfig
2+
# and https://github.com/DavidAnson/markdownlint-cli2
3+
4+
config:
5+
# forematter metadata seems to trigger this
6+
single-title: false
7+
8+
# hard tabs are used when pasting go example code into files
9+
no-hard-tabs: false
10+
11+
# we commonly paste bare urls in the middle of paragraphs
12+
no-bare-urls: false
13+
14+
# really, this is a rule?
15+
commands-show-output: false
16+
17+
# Disable line length checks completely (MD013)
18+
line-length: false
19+
MD013: false
20+
21+
# Sometimes we repeat headings, and it's easier to just turn those
22+
# into emphasis
23+
no-emphasis-as-heading: false
24+
25+
# We only publish HTML, so allow all HTML inline.
26+
no-inline-html: false
27+
28+
## Rules we may want to turn on later, but that will require editing
29+
## existing files:
30+
31+
# We tend to use `*` instead of `-` for list bullets but we aren't
32+
# consistent, even within a single file. Ideally we would want
33+
# `style: consistent`
34+
ul-style: false
35+
36+
# We have at least one # document that breaks up a numbered list
37+
# with headings. Ideally we would set `style: one_or_ordered`.
38+
ol-prefix: false
39+
40+
# Vertical whitespace helps the reader, so we should turn these on
41+
# again when someone has time to fix our existing files.
42+
blanks-around-fences: false
43+
blanks-around-headings: false
44+
blanks-around-lists: false
45+
single-trailing-newline: false
46+
no-multiple-blanks: false
47+
48+
# Trailing spaces don't cause any known issues and are often introduced when
49+
# updating text to conform to max line length restrictions.
50+
no-trailing-spaces: false
51+
52+
# Rules present in newer markdownlint versions that fail across almost all
53+
# existing documents
54+
emphasis-style: false
55+
strong-style: false
56+
no-space-in-emphasis: false

.pre-commit-config.yaml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Pre-commit hooks for OpenShift Virtualization test documentation
2+
# See https://pre-commit.com for more information
3+
4+
repos:
5+
# Markdownlint for Markdown file linting
6+
- repo: https://github.com/igorshubovych/markdownlint-cli
7+
rev: v0.39.0
8+
hooks:
9+
- id: markdownlint
10+
name: Lint Markdown files
11+
files: \.md$
12+
13+
- repo: https://github.com/pre-commit/pre-commit-hooks
14+
rev: "v6.0.0"
15+
hooks:
16+
- id: check-merge-conflict
17+
stages: [pre-commit]
18+
- id: trailing-whitespace
19+
stages: [pre-commit]
20+
- id: end-of-file-fixer
21+
stages: [pre-commit]
22+
- id: detect-private-key
23+
- id: mixed-line-ending
24+
25+
- repo: https://github.com/gitleaks/gitleaks
26+
rev: "v8.28.0"
27+
hooks:
28+
- id: gitleaks

README.md

Lines changed: 98 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# openshift-virtualizatio-tests-design-docs
2+
23
This repository is used to manager openshift-virtualization-tests strategy & design docs, such as test plans (STPs) allowing enhanced SIG improvement and collaboration
34

45
# Openshift Virtualization Quality Engineering Artifacts and Software Test Planning (STP) Repository
@@ -14,7 +15,7 @@ This process is mandatory for formal QE sign-off and feature acceptance, as **au
1415
## Glossary
1516

1617
| Term | Definition |
17-
|:--------|:----------------------------------------------------------------------------------------------------------------------|
18+
| :------ | :-------------------------------------------------------------------------------------------------------------------- |
1819
| **STP** | **Software Test Plan**: Provides the overall roadmap for testing, detailing scope, approach, resources, and schedule. |
1920
| **STD** | **Software Test Description**: Provides the specific instructions for executing individual tests. |
2021
| **VEP** | **Virtualization Enhancement Proposal**. |
@@ -23,75 +24,138 @@ This process is mandatory for formal QE sign-off and feature acceptance, as **au
2324
| **FF** | **Feature Freeze** - New features test cases ready & reviewed |
2425
| **BO** | **Blockers Only** - New features tested & regression tests run |
2526
| **CF** | **Code Freeze** - Regression+new tests pass & bug validation is done |
26-
| **GA* | **General Availability** - Feature is available for general use |
27+
| \**GA* | **General Availability** - Feature is available for general use |
2728

2829
## Process Flow: VEP to QE Sign-off
2930

3031
The QE process is initiated upon feature definition, usually correlating with an approved VEP.
3132

32-
1. **Feature Review (Pre-STP)**: The QE owner reviews VEPs (Openshift Virtualization / OCP) and requirements to **understand the value** for RH customers. This stage confirms that requirements are **testable and unambiguous** and that acceptance criteria are clearly defined. Non-functional requirements (NFRs) like Downtime, Connectivity, Performance, Security, Monitoring (metrics/alerts), Portability, and Documentation must be covered.
33-
2. **STP Creation**: The QE owner writes the STP, detailing the scope of testing (functional and non-functional requirements), the overall Test Strategy (including types like Functional, Regression, Upgrade, and Compatibility testing), Test Environment requirements, and Risk Management. The STP must include a clear plan to address risks, including calling out an explicit **list of functionalities that cannot be tested**.
34-
3. **STD Creation**: Once the developer begins actual development, the QE owner writes the STD. STDs must create test cases **with the customer's perspective in mind**. Each step in the test case must be a test and **verify one thing**, and each step must include the expected results.
35-
4. **Tiering and Automation**: QE works with the Development team to define coverage for **Tier 1 and Tier 2 tests**. Automation is crucial, and tests must be running as part of one of the **release checklist jobs**.
36-
5. **Sign-off**: Upon meeting all **Exit Criteria** (high-priority defects resolved, test coverage achieved, test automation merged), the QE owner reviews documentation and formally signs off the feature. Jira tasks are used to **block the epic** until sign-off is complete.
33+
1. **Feature Review (Pre-STP)**: The QE owner reviews VEPs (Openshift Virtualization / OCP) and requirements to **understand the value** for RH customers. This stage confirms that requirements are **testable and unambiguous** and that acceptance criteria are clearly defined. Non-functional requirements (NFRs) like Downtime, Connectivity, Performance, Security, Monitoring (metrics/alerts), Portability, and Documentation must be covered.
34+
2. **STP Creation**: The QE owner writes the STP, detailing the scope of testing (functional and non-functional requirements), the overall Test Strategy (including types like Functional, Regression, Upgrade, and Compatibility testing), Test Environment requirements, and Risk Management. The STP must include a clear plan to address risks, including calling out an explicit **list of functionalities that cannot be tested**.
35+
3. **STD Creation**: Once the developer begins actual development, the QE owner writes the STD. STDs must create test cases **with the customer's perspective in mind**. Each step in the test case must be a test and **verify one thing**, and each step must include the expected results.
36+
4. **Tiering and Automation**: QE works with the Development team to define coverage for **Tier 1 and Tier 2 tests**. Automation is crucial, and tests must be running as part of one of the **release checklist jobs**.
37+
5. **Sign-off**: Upon meeting all **Exit Criteria** (high-priority defects resolved, test coverage achieved, test automation merged), the QE owner reviews documentation and formally signs off the feature. Jira tasks are used to **block the epic** until sign-off is complete.
3738

3839
## Artifacts and Templates
3940

4041
This repository hosts the templates for the core QE deliverable:
4142

4243
**Software Test Plan (STP) Template**: Outlines the scope, approach, resources, and schedule for all testing activities.
43-
* **Entry Criteria**: Requirements/design approved, environment set up, test cases reviewed.
44-
* **Exit Criteria**: All high-priority defects resolved, automation merged, acceptance criteria met.
44+
45+
- **Entry Criteria**: Requirements/design approved, environment set up, test cases reviewed.
46+
- **Exit Criteria**: All high-priority defects resolved, automation merged, acceptance criteria met.
4547

4648
## Responsibilities
4749

4850
### QE Owner
4951

5052
The QE Owner is responsible for the overall quality assurance process for a feature, which includes:
5153

52-
* Writing the STP and STD.
53-
* Reviewing the design and technology to identify potential testing challenges.
54-
* Ensuring the plan addresses non-functional requirements (NFRs).
55-
* Managing risk, including adding an explicit list of untestable aspects to the STP.
56-
* Making sure tests are running as part of one of the **release checklist jobs**.
57-
* Performing the final **Sign off the feature as QE**.
54+
- Writing the STP and STD.
55+
- Reviewing the design and technology to identify potential testing challenges.
56+
- Ensuring the plan addresses non-functional requirements (NFRs).
57+
- Managing risk, including adding an explicit list of untestable aspects to the STP.
58+
- Making sure tests are running as part of one of the **release checklist jobs**.
59+
- Performing the final **Sign off the feature as QE**.
5860

5961
### Stakeholders (SIGs/Approvers)
6062

6163
All relevant stakeholders, including SIG representatives, must be aware of and agree to the test plan.
6264

63-
* Stakeholders must **approve** the STP.
64-
* Stakeholders must be aware of and **agree to take the risk** associated with any explicit list of functionalities that **cannot be tested**.
65-
* SIGs are responsible for coordinating reviews and approvals of VEPs and STPs.
65+
- Stakeholders must **approve** the STP.
66+
- Stakeholders must be aware of and **agree to take the risk** associated with any explicit list of functionalities that **cannot be tested**.
67+
- SIGs are responsible for coordinating reviews and approvals of VEPs and STPs.
6668

6769
## Deadlines and Check-ins
6870

6971
Deadlines are governed by the Openshift Virtualization release cycle, focusing on:
7072

7173
The QE process is governed by Openshift Virtualization and KubeVirt release milestones, focusing on test planning completion and automation delivery.
7274

73-
1. **VEP Planning / Feature Review:**
74-
* At the **beginning of every release cycle**, each SIG prioritizes VEPs and decides which ones are being tracked for the upcoming release. This centralized prioritization focuses community efforts on associated pull requests.
75-
* QE involvement starts immediately with the **feature review**, ensuring the requirements are reviewed. The review includes verifying that requirements are **testable and unambiguous** and that the value of the feature for RH customers is understood.
75+
1. **VEP Planning / Feature Review:**
76+
77+
- At the **beginning of every release cycle**, each SIG prioritizes VEPs and decides which ones are being tracked for the upcoming release. This centralized prioritization focuses community efforts on associated pull requests.
78+
- QE involvement starts immediately with the **feature review**, ensuring the requirements are reviewed. The review includes verifying that requirements are **testable and unambiguous** and that the value of the feature for RH customers is understood.
79+
80+
2. **Enhancement Freeze (EF):**
81+
82+
- The Software Test Plan (STP) must be written, reviewed, and approved by stakeholders. Testing cannot begin until the requirements and design documents are approved and stable, and test cases are reviewed.
83+
84+
3. **Code Freeze (CF):**
85+
86+
- QE sign-off requires that **test automation must be merged for GA**. The Exit Criteria for testing requires that test automation is merged.
87+
- Features that do not land in the release branch prior to CF will need to file for an exception.
88+
89+
> \[!NOTE\] QE sign-off is contingent on automation being merged. Features not landing in the release branch prior to CF will need to file for an exception.
90+
91+
## Development Setup
92+
93+
### Markdown Linting
94+
95+
This repository uses automated linting to maintain consistent Markdown formatting across all documentation.
96+
97+
#### Prerequisites
98+
99+
Install the required tools:
100+
101+
```bash
102+
# Install markdownlint-cli
103+
npm install -g markdownlint-cli
104+
105+
# Install pre-commit (for automated checks)
106+
pip install pre-commit
107+
108+
# Install pre-commit hooks
109+
pre-commit install
110+
```
111+
112+
#### Running Linters
113+
114+
**Manual linting:**
115+
116+
```bash
117+
# Lint all Markdown files
118+
markdownlint '**/*.md'
119+
120+
# Lint specific file
121+
markdownlint stps/stp-template/stp.md
122+
123+
# Auto-fix issues where possible
124+
markdownlint '**/*.md' --fix
125+
```
126+
127+
**Automated linting (via pre-commit):**
128+
129+
Once pre-commit hooks are installed, linting runs automatically on every commit:
130+
131+
```bash
132+
# Run all pre-commit hooks manually
133+
pre-commit run --all-files
134+
135+
# Run only markdownlint
136+
pre-commit run markdownlint --all-files
137+
```
76138

77-
2. **Enhancement Freeze (EF):**
78-
* The Software Test Plan (STP) must be written, reviewed, and approved by stakeholders. Testing cannot begin until the requirements and design documents are approved and stable, and test cases are reviewed.
139+
#### Linting Rules
79140

80-
3. **Code Freeze (CF):**
81-
* QE sign-off requires that **test automation must be merged for GA**. The Exit Criteria for testing requires that test automation is merged.
82-
* Features that do not land in the release branch prior to CF will need to file for an exception.
141+
The repository uses `.markdownlintrc` with the following key settings:
83142

84-
> [!NOTE]
85-
> QE sign-off is contingent on automation being merged. Features not landing in the release branch prior to CF will need to file for an exception.
143+
- **Line length**: Disabled (no line length restrictions)
144+
- **Bare URLs**: Allowed
145+
- **Hard tabs**: Allowed (for code examples)
146+
- **Inline HTML**: Allowed
147+
- **Trailing whitespace**: Allowed
148+
- **Emphasis style**: Flexible
86149

150+
See `.markdownlintrc` for complete configuration.
87151

88152
## **Common Questions**
89153

90154
This section addresses frequently asked questions regarding VEP ownership, approvals, and managing delays, which impact the QE process and feature readiness.
91155

92-
| Question | Answer |
93-
|:------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
94-
| **Do PRs need to be approved by STP approvers?** | No, the approval of Pull Requests (PRs) is the **whole SIG's responsibility** for their code. The approver should be aware of the STP and approve based on its content, and a defined process exists to ensure this occurs. |
95-
| **What to do in case all PRs didn't make it on time?** | The author of the STP needs to **file for an exception**. The outcome will be determined individually by maintainers based on the context of the delay. |
96-
| **How to raise attention for my STP?** | The QE has bi-weekly **recurring meetings**. The STP owner is encouraged to join the meeting and introduce the STP to the community to raise awareness. |
97-
| **What if the feature is relates to more than one SIG?** | While features can relate to **multiple SIGs**, a single SIG must always own it. STP owners should reach out to other SIGs that are relevant for the feature and make sure that they also review the STP. |
156+
| Question | Answer |
157+
| :------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
158+
| **Do PRs need to be approved by STP approvers?** | No, the approval of Pull Requests (PRs) is the **whole SIG's responsibility** for their code. The approver should be aware of the STP and approve based on its content, and a defined process exists to ensure this occurs. |
159+
| **What to do in case all PRs didn't make it on time?** | The author of the STP needs to **file for an exception**. The outcome will be determined individually by maintainers based on the context of the delay. |
160+
| **How to raise attention for my STP?** | The QE has bi-weekly **recurring meetings**. The STP owner is encouraged to join the meeting and introduce the STP to the community to raise awareness. |
161+
| **What if the feature is relates to more than one SIG?** | While features can relate to **multiple SIGs**, a single SIG must always own it. STP owners should reach out to other SIGs that are relevant for the feature and make sure that they also review the STP. |

0 commit comments

Comments
 (0)