Salta al contenuto principale

Domain Knowledge Base - Testing & QA

Come funziona il dominio, prima di scrivere una riga di codice? Scegli un documento dall'albero a sinistra: ogni pagina spiega una parte del modello.

Regole di Business - Testing & QA

Questo documento elenca le regole di business fondamentali del dominio Testing & QA, identificate con codice univoco BR-NNN. Ogni regola è technology-independent e descrive un vincolo invariante sul processo di verifica della qualità del software.

---

BR-001 - Ogni TestCase ha un oracolo verificabile

Codice: BR-001 Nome: Un TestCase definisce un esito atteso non ambiguo Descrizione: Ogni caso di test ha un oracolo di test esplicito (l'esito atteso) e asserzioni che lo verificano, tipicamente in struttura Arrange-Act-Assert. Un test senza asserzioni significative o senza esito atteso non verifica nulla. Motivazione: Garantire che un test fallisca quando il comportamento è errato e passi quando è corretto. Priorità: ALTA Attori: QA Engineer, Test Automation Engineer Tracciabilità: glossary "Oracolo di Test", "Asserzione", "Arrange-Act-Assert (AAA)"; BC-01.

---

BR-002 - La suite rispetta la piramide dei test

Codice: BR-002 Nome: La distribuzione dei test segue la piramide (molti unit, pochi E2E) Descrizione: Una TestSuite privilegia un'ampia base di test unitari veloci, un livello intermedio di test di integrazione e una punta ridotta di test end-to-end. L'inversione della piramide (molti E2E lenti) è un anti-pattern da evitare. Motivazione: Massimizzare velocità e affidabilità del feedback minimizzando i test fragili. Priorità: ALTA Attori: QA Engineer, Test Automation Engineer Tracciabilità: glossary "Piramide dei Test", "Test Unitario", "Test End-to-End (E2E)".

---

BR-003 - I test instabili sono corretti o isolati

Codice: BR-003 Nome: Un Test Instabile (Flaky) non resta nella suite di gate Descrizione: Un test che passa e fallisce in modo non deterministico erode la fiducia nella suite. Va corretto (rimuovendo la fonte di non determinismo) o temporaneamente isolato e tracciato, mai ignorato silenziosamente. Motivazione: Preservare la fiducia nei risultati e la capacità del gate di bloccare regressioni reali. Priorità: ALTA Attori: Test Automation Engineer, QA Engineer Violazione: una suite con flaky non isolati non è affidabile come release gate. Tracciabilità: glossary "Test Instabile (Flaky)"; events/domain-events.md evento RegressioneRilevata.

---

BR-004 - Ogni difetto è registrato come BugReport tracciabile

Codice: BR-004 Nome: Un Difetto (Bug) rilevato genera un BugReport riproducibile Descrizione: Ogni difetto è registrato con passi di riproduzione, comportamento atteso e osservato, severità e ambiente. Un bug non riproducibile è triagiato per ottenere informazioni, non chiuso silenziosamente. Motivazione: Rendere ogni difetto gestibile, prioritizzabile e verificabile alla chiusura. Priorità: ALTA Attori: QA Engineer, Developer Tracciabilità: glossary "Difetto (Bug)"; state-machines/bug-report-lifecycle.md; BR-007.

---

BR-005 - Il codice modificato è coperto da test di regressione

Codice: BR-005 Nome: Una correzione include un test di regressione che cattura il difetto Descrizione: Quando un BugReport è risolto, un RegressioneTest che fallisce prima del fix e passa dopo è aggiunto alla suite. Questo impedisce il ritorno dello stesso difetto. Motivazione: Prevenire la regressione dei difetti già corretti. Priorità: ALTA Attori: Developer, Test Automation Engineer Tracciabilità: glossary "Test di Regressione"; state-machines/bug-report-lifecycle.md stato verified; BR-004.

---

BR-006 - La copertura è significativa, non solo numerica

Codice: BR-006 Nome: Il CoverageReport misura comportamento testato, non solo righe eseguite Descrizione: La copertura è uno strumento, non un obiettivo: una soglia funge da guardrail ma una copertura alta con asserzioni deboli non protegge. Si privilegiano casi limite, partizioni di equivalenza e scenari negativi. Motivazione: Evitare la falsa sicurezza di una copertura elevata ma vuota. Priorità: MEDIA Attori: QA Engineer, Developer Tracciabilità: glossary "Code Coverage", "Analisi dei Valori Limite", "Partizionamento di Equivalenza", "Test Negativo".

---

BR-007 - Una release passa solo con il gate di qualità verde

Codice: BR-007 Nome: Una release richiede una TestSuite verde e nessun bug bloccante aperto Descrizione: Il ReleaseGate è superato solo quando la suite è green, la copertura rispetta la soglia e non esistono BugReport di severità bloccante aperti. Un gate fallito blocca il rilascio. Motivazione: Garantire che solo software verificato raggiunga la produzione. Priorità: ALTA Attori: Release Manager, QA Engineer Violazione: rilascio bloccato finché il gate non è verde. Tracciabilità: glossary "Smoke Test", "Quality Assurance (QA)"; events/domain-events.md evento ReleaseGatePassato.

---

BR-008 - I test sono indipendenti e ripetibili

Codice: BR-008 Nome: Ogni TestCase è isolato e non dipende dall'ordine di esecuzione Descrizione: I test non condividono stato mutabile né dipendono dall'esito di altri test. Ognuno predispone (Fixture) e ripulisce il proprio contesto, così da essere eseguibile in isolamento e in parallelo con esito deterministico. Motivazione: Garantire risultati ripetibili e parallelizzabili, prevenire flakiness da accoppiamento. Priorità: ALTA Attori: Test Automation Engineer, QA Engineer Tracciabilità: glossary "Fixture", "Test Fixture", "System Under Test (SUT)"; BR-003.