mirror of
https://github.com/garrytan/gstack.git
synced 2026-05-06 21:46:40 +02:00
f06c38d975
- testing.md (always-on): coverage gaps, flaky patterns, security enforcement - maintainability.md (always-on): dead code, DRY, stale comments - security.md (conditional): OWASP deep analysis, auth bypass, injection - performance.md (conditional): N+1 queries, bundle impact, complexity - data-migration.md (conditional): reversibility, lock duration, backfill - api-contract.md (conditional): breaking changes, versioning, error format - red-team.md (conditional): adversarial analysis, cross-cutting concerns All use standard header with JSON output schema and NO FINDINGS fallback.
46 lines
2.1 KiB
Markdown
46 lines
2.1 KiB
Markdown
# Testing Specialist Review Checklist
|
|
|
|
Scope: Always-on (every review)
|
|
Output: JSON objects, one finding per line. Schema:
|
|
{"severity":"CRITICAL|INFORMATIONAL","confidence":N,"path":"file","line":N,"category":"testing","summary":"...","fix":"...","fingerprint":"path:line:testing","specialist":"testing"}
|
|
If no findings: output `NO FINDINGS` and nothing else.
|
|
|
|
---
|
|
|
|
## Categories
|
|
|
|
### Missing Negative-Path Tests
|
|
- New code paths that handle errors, rejections, or invalid input with NO corresponding test
|
|
- Guard clauses and early returns that are untested
|
|
- Error branches in try/catch, rescue, or error boundaries with no failure-path test
|
|
- Permission/auth checks that are asserted in code but never tested for the "denied" case
|
|
|
|
### Missing Edge-Case Coverage
|
|
- Boundary values: zero, negative, max-int, empty string, empty array, nil/null/undefined
|
|
- Single-element collections (off-by-one on loops)
|
|
- Unicode and special characters in user-facing inputs
|
|
- Concurrent access patterns with no race-condition test
|
|
|
|
### Test Isolation Violations
|
|
- Tests sharing mutable state (class variables, global singletons, DB records not cleaned up)
|
|
- Order-dependent tests (pass in sequence, fail when randomized)
|
|
- Tests that depend on system clock, timezone, or locale
|
|
- Tests that make real network calls instead of using stubs/mocks
|
|
|
|
### Flaky Test Patterns
|
|
- Timing-dependent assertions (sleep, setTimeout, waitFor with tight timeouts)
|
|
- Assertions on ordering of unordered results (hash keys, Set iteration, async resolution order)
|
|
- Tests that depend on external services (APIs, databases) without fallback
|
|
- Randomized test data without seed control
|
|
|
|
### Security Enforcement Tests Missing
|
|
- Auth/authz checks in controllers with no test for the "unauthorized" case
|
|
- Rate limiting logic with no test proving it actually blocks
|
|
- Input sanitization with no test for malicious input
|
|
- CSRF/CORS configuration with no integration test
|
|
|
|
### Coverage Gaps
|
|
- New public methods/functions with zero test coverage
|
|
- Changed methods where existing tests only cover the old behavior, not the new branch
|
|
- Utility functions called from multiple places but tested only indirectly
|