62 lines
2.0 KiB
Markdown
62 lines
2.0 KiB
Markdown
# QtDesktopPet Internal QA
|
|
|
|
This directory contains development-only quality assurance assets. It is tracked
|
|
by the development repository and excluded from the public GitHub export and
|
|
release packages.
|
|
|
|
## Structure
|
|
|
|
- `tests/`: deterministic C++ tests grouped by production module.
|
|
- `include/`: the lightweight test harness. It does not require `Q_OBJECT`.
|
|
- `fixtures/`: sanitized, versioned test data.
|
|
- `config/`: extensible static-check and performance threshold configuration.
|
|
- `scripts/`: static checks, performance sampling, and report generation.
|
|
- `out/`: local generated output. This directory is ignored by Git.
|
|
|
|
## Core Logic Tests
|
|
|
|
The QA project is intentionally independent from the production CMake project.
|
|
Configure it from this directory when a matching Qt toolchain is available:
|
|
|
|
```powershell
|
|
cmake -S internal/qa -B build/internal-qa `
|
|
-DCMAKE_PREFIX_PATH=D:/Qt/6.5.3/mingw_64
|
|
cmake --build build/internal-qa
|
|
ctest --test-dir build/internal-qa --output-on-failure
|
|
```
|
|
|
|
The test process enables Qt test mode and uses temporary directories for file
|
|
fixtures. It must not read or modify the normal QtDesktopPet user configuration.
|
|
|
|
## Static Checks
|
|
|
|
```powershell
|
|
powershell -NoProfile -ExecutionPolicy Bypass `
|
|
-File internal/qa/scripts/Invoke-StaticChecks.ps1
|
|
```
|
|
|
|
The script returns a non-zero exit code when a required invariant fails. Extend
|
|
`config/static-checks.json` when modules or public-export boundaries change.
|
|
|
|
## Performance
|
|
|
|
Start QtDesktopPet, then sample a named scenario:
|
|
|
|
```powershell
|
|
powershell -NoProfile -ExecutionPolicy Bypass `
|
|
-File internal/qa/scripts/perf_sample.ps1 `
|
|
-Scenario idle-5m -DurationSeconds 300
|
|
```
|
|
|
|
Generate a Markdown summary from the resulting CSV:
|
|
|
|
```powershell
|
|
powershell -NoProfile -ExecutionPolicy Bypass `
|
|
-File internal/qa/scripts/New-PerformanceReport.ps1 `
|
|
-InputPath reports/perf/<sample>.csv `
|
|
-Scenario idle-5m
|
|
```
|
|
|
|
Raw CSV files stay under `reports/perf/` and are not committed. Reviewed,
|
|
sanitized summaries belong in `docs/test-records/`.
|