Capisco che ci sono molte domande in questo sito che ruotano attorno allo stesso concetto, ma non ho potuto ottenere una risposta precisa per il mio caso.
Problema
Sto gestendo un sistema ERP, con codice base in entrambi:
- VB.NET/ASP Moduli per la parte dell'interfaccia utente del sistema
- Stored procedure TSQL su SQL Server, gestione della logica aziendale.
Quindi, sia le tabelle di database che le stored procedure di database accoppiano strettamente dati e business logic
Abbiamo cercato di individuare un modo per automatizzare i test unitari per aiutarci a rilevare regressione e altri potenziali bug. Ma il problema con il nostro setup è la presenza del database come componente principale della logica di business del nostro sistema; I database conservano gli stati, cioè non possiamo eseguire qualcosa come xUnità con classi indipendenti. poiché ogni test modifica lo stato del nostro sistema, modificando uno dei record delle tabelle dati, delle tabelle di ricerca o delle tabelle di controllo.
Vincoli
Non ci aspettiamo di spostare la nostra logica nella porzione VB del nostro codice ( Per ragioni politiche )
Si noti che il database di simulazione non risolverà il nostro problema, perché la logica aziendale viene eseguita su stored procedure, ovvero in base alla progettazione basata sullo stato dei dati
Domanda
Quali sono le nostre opzioni?
- c'è un modo per implementare test automatici di integrazione / unità?
- Siamo bloccati nel test manuale?
- Dovremmo posizionare il nostro ambiente in una farm di macchine virtuali con la stessa linea di base ed eseguire test indipendenti su macchine diverse?
Purtroppo non sono riuscito a trovare alcuna documentazione relativa alle migliori pratiche per i sistemi basati su TDD e Stored Procedures.