Testing (guida per sviluppatori — seed)
Stato del testing nello stack Infocad e come aggiungere un test, con il verticale RequestCenter / Service Desk come esempio. Pagina seed (spec §21): riflette lo stato misurato del repository, senza dichiarare coperture non misurate.
Confidence complessiva: VERIFIED (assenza di framework di test) · SUPPORTED (identità e natura degli harness manuali). Comandi
msbuild/dotnet/Oracle marcati NON verificati su questo host (macOS, no Oracle Client — regole di programma §8).
Stato attuale: nessun test automatico (VERIFIED)
Non esiste alcuna suite di test automatici né configurazione CI nei due
repository. La ricerca di framework di test (xUnit / NUnit / MSTest /
Microsoft.VisualStudio.TestTools) nei progetti del verticale RequestCenter non produce
risultati. VERIFIED
Warning
TD-004 — l'assenza di rete di sicurezza automatica significa che ogni modifica
(incluso il refactoring e la migrazione net8 *XNET) va validata manualmente.
Vedi Qualità e test.
Questa pagina non dichiara alcuna percentuale/copertura di test per RequestCenter: non è misurabile perché non esistono test.
Harness manuali presenti (SUPPORTED)
Non sono suite: sono programmi di prova, spesso con codice commentato e senza asserzioni.
| Harness | Percorso | Natura |
|---|---|---|
InfocadTester |
InfocadServer/InfocadTester/ (Start.vb) |
Client TCP verso il tier servizi (com.ClientConnect("TCP", "IPCServer")); il grosso del codice di prova è commentato. SUPPORTED |
IntegrationTester / TestUnits |
InfocadWeb/InfocadIntegration/InfocadIntegration/{IntegrationTester,TestUnits} |
Harness di integrazione manuale. SUPPORTED |
Nessuno dei due copre il path web di RequestCenter (makeTicket.ascx → Request.Create):
InfocadTester esercita il backend via TCP/Remoting, non l'app Web Forms. SUPPORTED
Cosa è testato / non testato per RequestCenter
- Automatizzato: nulla (nessun test).
VERIFIED - Validazione manuale osservata: la creazione ticket è validata a mano tramite l'UI
(
makeTicket.ascx) e/o gli endpoint WCF, su ambienteTEST38. Non c'è evidenza di comportamento osservato in PROD (solo configTEST38).SUPPORTED - Validazioni funzionali presenti nel codice (non sono test, ma controlli runtime):
DoValidation()/ValidateUpload(...)lato UI (makeTicket.ascx.vb:84-85),CheckParentStateChange/CheckSiblingStateChange(:83). Sono solo-UI: gli entry-point condivisi BL/WCF non le rieseguono → rischio TD-006 (vedi TS-004).SUPPORTED
Come aggiungere un test
Non esistendo un progetto di test, andrebbe creato (scelta del framework a cura del team; non prescritta qui). Linee guida basate sull'architettura reale del verticale:
1. Dove collocarlo
- Test di unità BL su
Descor.RequestCenter.Ticket.Request(Request.vb): nuovo progetto di test che referenziaRequestCenter.vbproj. Il BL delega la persistenza al DAL via l'interfacciaIRequestDAL(TicketInterfaces.vb:39), quindi è mockabile. - Test di unità DAL (
RequestDAL.vb): richiedono un Oracle reale perché ogni metodo aprecm(GlobalDataManager) ed esegue package Oracle (GESTREQUEST*) — non c'è astrazione SQL da intercettare senza DB.INFERRED
2. Cosa mockare vs cosa richiede Oracle reale
| Livello | Dipendenza | Strategia |
|---|---|---|
BL (Request.Create, SetWorkflowInterface, …) |
IRequestDAL |
Mock dell'interfaccia (TicketInterfaces.vb:39) → test senza DB. INFERRED |
| BL | GlobalDataManager / Transaction |
La transazione è iniettata dal chiamante (New RequestCenter.Transaction) → sostituibile in test. SUPPORTED |
DAL (RequestDAL) |
cm.ExecuteNonQuery("PKG.PROC", …) + package Oracle |
Oracle reale (REQUESTCENTER_TEST38), nessun mock realistico. INFERRED |
| Config | Settings.GetConnectionManager legge HttpContext/OperationContext |
Richiede contesto o override; attenzione al ramo WCF (Settings.vb:262+). SUPPORTED |
3. Requisiti d'ambiente
- Test BL puri (mock
IRequestDAL): eseguibili anche cross-platform sui target net8 se le dipendenze chiudono — ma il verticale RequestCenter non chiude headless (RequestCenterXNET→ assembly 4.8 solo-Windows). Realisticamente: Windows + VS/msbuild.VERIFIED - Test DAL/integrazione: Windows + Oracle Client + backend
TEST38raggiungibile. Connettività verificabile read-only viapython-oracledb(thin, no client) verso192.168.0.100:1521/dev.SUPPORTED - Comandi
msbuild/dotnet test: NON verificati su questo host.
4. Un caso minimo suggerito (esempio, non implementato)
- BL, senza DB: verificare che
Request.Create(...)invochiIRequestDAL.addRequestcon i parametri attesi e propaghi l'idRequestOUT — mockandoIRequestDAL.INFERRED - Integrazione, con Oracle
TEST38: eseguire il path FLOW-REQ-001 in transazione e fare rollback a fine test (mai commit su dati condivisi); asserire cheGESTREQUEST_T2.ADDREQUESTrestituisca unNEWREQUESTINDEX> 0. Solo su schema di test, mai PROD.INFERRED
Raccomandazioni (per il team, non prescrittive)
Prioritizzare test sugli entry-point condivisi (BL/WCF) dove oggi le validazioni sono
solo-UI (TD-006, TS-004); introdurre smoke test sul
deploy e su ConnectionsService (riscrittura connection string). SUPPORTED
(vedi Qualità e test).
Riferimenti incrociati
- Qualità e test (quadro d'insieme): 12-quality-and-testing
- Troubleshooting: indice · TS-004
- Flusso pilota: FLOW-REQ-001
- Debug (guida gemella): Debugging
- Reference di codice: Ticket.Request · IRequestDAL · RequestDAL
Evidenze
- Assenza framework di test:
grep -rl "xunit|NUnit|Microsoft.VisualStudio.TestTools|MSTest"sui progettiInfocadWeb/WebMachine/RequestCenter*→ nessun risultato.VERIFIED. Confermato anche dadocs/12-quality-and-testing/index.md(TASK-TEST-001: 0 framework, 0 CI). - Harness TCP:
InfocadServer/InfocadTester/Start.vb(com.ClientConnect("TCP", "IPCServer"); blocchi di prova commentati). - Harness integrazione:
InfocadWeb/InfocadIntegration/InfocadIntegration/IntegrationTester,.../TestUnits(directory presenti). - Mockabilità BL: interfaccia
InfocadWeb/WebMachine/RequestCenter/Interfaces/TicketInterfaces.vb:39(IRequestDAL); BLRequestCenter/Classes/Request.vb:2222(Createdelega al DAL). - Transazione iniettabile:
RequestCenter/Transaction/Transaction.vb:3; chiamantemakeTicket.ascx.vb:88(New RequestCenter.Transaction). - Dipendenza DAL da Oracle reale:
RequestCenter.DAL.OracleODP/RequestDAL.vb:5075-5079(cm.Open+cm.ExecuteNonQuery("GESTREQUEST_T2.ADDREQUEST", …)). - Config manager e ramo WCF:
RequestCenter/Configuration/Settings.vb:242,262+. - Chiusura dipendenze net8 non-headless:
RequestCenterXNET→ HintPathDescor.Stock.*/*.Controllers(solo-Windows).VERIFIED - Comandi
msbuild/dotnet test/Oracle: NON verificati su questo host (macOS, no Oracle Client).