Table of Contents

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.ascxRequest.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 ambiente TEST38. Non c'è evidenza di comportamento osservato in PROD (solo config TEST38). 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 referenzia RequestCenter.vbproj. Il BL delega la persistenza al DAL via l'interfaccia IRequestDAL (TicketInterfaces.vb:39), quindi è mockabile.
  • Test di unità DAL (RequestDAL.vb): richiedono un Oracle reale perché ogni metodo apre cm (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 TEST38 raggiungibile. Connettività verificabile read-only via python-oracledb (thin, no client) verso 192.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(...) invochi IRequestDAL.addRequest con i parametri attesi e propaghi l'idRequest OUT — mockando IRequestDAL. 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 che GESTREQUEST_T2.ADDREQUEST restituisca un NEWREQUESTINDEX > 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

Evidenze

  • Assenza framework di test: grep -rl "xunit|NUnit|Microsoft.VisualStudio.TestTools|MSTest" sui progetti InfocadWeb/WebMachine/RequestCenter*nessun risultato. VERIFIED. Confermato anche da docs/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); BL RequestCenter/Classes/Request.vb:2222 (Create delega al DAL).
  • Transazione iniettabile: RequestCenter/Transaction/Transaction.vb:3; chiamante makeTicket.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 → HintPath Descor.Stock.* / *.Controllers (solo-Windows). VERIFIED
  • Comandi msbuild/dotnet test/Oracle: NON verificati su questo host (macOS, no Oracle Client).