feat(aidd-dev/test): enforce test effectiveness and test-double discipline
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 82/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- markdown
- Ambito
- documentation
Direzione di ricerca
Leggi prima plugins/aidd-dev/skills/06-test/actions/01-test.md, quindi confronta il relativo contratto con plugins/aidd-dev/skills/06-test/SKILL.md e con le linee guida sul testing citate in cli/aidd_docs/memory/testing.md. Aggiorna l’action e lo skill padre solo quando necessario, in modo che i test generati richiedano un comportamento osservabile, double giustificati e una verifica esplicita dell’efficacia rispetto alle regressioni, mantenendo le convenzioni del progetto; verifica ogni criterio di accettazione senza aggiungere dipendenze.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
aidd-dev:06-test asks the agent to identify untested behavior, generate tests, iterate until they pass, and review them against quality criteria. The current contract says to test functional behavior rather than implementation details, but it does not explicitly define a minimum discipline for test doubles or how to check that a generated test protects the intended behavior.
An agent can therefore produce a technically green but low-value test: configure a mock to return a value, call the SUT, assert that same value, and optionally assert that the mock was called. The test passes while exercising little or none of the behavior it is meant to protect. The relevant question is not only whether the test passes, but whether it would fail if the intended behavior or regression were broken.
This is not a request to ban mocks. It is a request to make observable behavior and test effectiveness explicit in the generic skill.
Scope
- Update
plugins/aidd-dev/skills/06-test/actions/01-test.mdand, only if needed for consistency, the parentSKILL.md. - Define framework-independent quality criteria for generated tests: assert observable behavior, never replace the behavior under test with a double, use doubles at justified seams or boundaries, prefer real domain/pure objects when practical, and justify interaction mocks when the interaction itself is the behavior under test.
- Require an explicit effectiveness check before considering a generated test complete: would the test fail if the intended behavior/regression were broken?
- Reject tautological mock-return/assert arrangements that provide no meaningful regression protection.
- Preserve existing project testing conventions as authoritative.
Acceptance criteria
-
06-testrequires assertions against observable behavior rather than implementation details or only a collaboration graph. - The behavior under test is not itself replaced by a mock or other test double.
- Test doubles are introduced only at justified boundaries/seams, or when the interaction itself is the behavior being verified.
- Generated tests avoid tautological mock-return/assert patterns that provide no meaningful regression protection.
- Before considering a generated test complete, the skill explicitly evaluates whether breaking the intended behavior would cause the test to fail.
- Existing project testing commands, frameworks, and conventions remain authoritative.
- No mocking, coverage, or mutation-testing dependency is installed merely to satisfy this contract.
- Focused structural checks or documentation tests, if required by the repository, verify the new contract without turning it into a language-specific testing guide.
Prior art in this repo
plugins/aidd-dev/skills/06-test/SKILL.md#L22-L26already requires functional behavior and rejects coupling to implementation details.plugins/aidd-dev/skills/06-test/actions/01-test.md#L13-L19already asks the agent to review passing tests against quality criteria, but those criteria are not yet explicit about test doubles or regression protection.cli/aidd_docs/memory/testing.md#L7-L10distinguishes unit, integration, and E2E layers.cli/aidd_docs/memory/testing.md#L17-L21already states:Doubles from tests/helpers/ports/. Substitute at the seam; never mock functional behaviour.- #907 reserves
06-testfor project-owned automated tests, classifies test layers, and reports critical behavior left uncovered. This issue is complementary: it defines what makes an individual generated test meaningful enough to be considered complete. - #45 and #53 provide historical prior art around testing practices,
no-mocks-without-reason, and avoiding fragile or implementation-coupled tests.
Out of scope
- Banning mocks, stubs, fakes, spies, or other test doubles in general.
- Choosing one testing framework, mocking library, coverage threshold, or mutation-testing tool for all projects.
- Making mutation testing mandatory; an existing project configuration may be used according to its conventions, but no new dependency is required here.
- Reworking
test-journeyor browser acceptance QA, which are covered by the #907/#919 workstream. - Replacing the scope of #907: test-layer classification, coverage discovery, and reporting critical uncovered behavior remain there.
- Lingua principale
- TypeScript
- Stelle
- 481
- Fork
- 45
- Merge medio
- 19h 7m
- PR unite (30g)
- 60
Preparare l'ambiente
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di ai-driven-dev/framework
-
fix(aidd-context): the memory README links 404 on WindowsForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
ai-driven-dev/framework#986 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
ai-driven-dev/framework#940 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
refactor(aidd-orchestrator): the check zone says when to stop, and reviews its axes in one roundAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
ai-driven-dev/framework#887 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
ai-driven-dev/framework#873 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
ai-driven-dev/framework#467 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di ai-driven-dev/framework
Issue simili
-
check:passed streams:add
Difficoltà 1/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 2 giorni
-
beta technical-medium ui
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
walletbeat/walletbeat#1625 ·
I maintainer di solito rispondono entro 1 giorno
-
Good First Issue hacktoberfest
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
hiero-ledger/hiero-sdk-js#4489 ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug] The clients language filter cannot select the rows the page labels as unknownForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
apache/rocketmq-dashboard#6103 ·
I maintainer di solito rispondono entro 4 giorni
-
Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
payloadcms/payload#18652 ·
I maintainer di solito rispondono entro 1 giorno