Davide
beh vediamo Mmh.sì sì sì sì sì no questa è una domanda fantastica c'è un mio collega a drew che si occupa proprio di questo perché se vuoi secondo me questo rientra un po nel discorso CI-CD e DevOps per database, perché fondamentamente l'idea è che tu hai una query può essere in una storia e procedura, vista o anche una query ad hoc che tu vuoi eseguire come faccio a essere sicuro che questa query A è corretta ora B rimanga corretta nel tempo perché magari devo fare qualche modifica, la complessità dei database è che magari cambiano i dati e quindi una query che magari era corretta ieri se il database non è stato disegnato particolarmente bene o i dati sono diciamo particolari potrebbe essere che all'improvviso tu smetti di avere quello che ti aspetti di avere come risultato o anche dal punto di vista delle performance, perché magari un altro test che tipicamente dovessi dovrebbe fare è io ho questa query, questa query deve essere eseguita in 50 millisecondi no matter what se ho 10 righe o 10 milioni.Quindi ci sono diversi aspetti di questo.Sicuramente il tema è più complesso secondo me che nel campo dello sviluppo, perché appunto c'è differenza che i dati potenzialmente possono cambiare e a quel punto cambiano anche i risultati dei test.e quindi ci sono delle suite non sono particolarmente esperto per quanto riguarda postgres e database non max ma ad esempio per SQL ci sono alcune suite fatte apposta ad esempio T-SQLT in generale non mi fanno impazzire perché secondo me io quello che faccio è semplicemente usare suite usate per il mondo del codice tipo AnyUnit, XUnit, via dicendo e fondamentamente mi costruisco i test in maniera tale che eseguono a query e testo risultato o le performance sono quelle che mi aspetto e introducendo nei test se vuoi un po' di noise perché devo prima collegarmi al database quindi devo scrivere il codice che si collega al database poi consuma il risultato quindi non è un unit test puro però la cosa che più si avvicina e per me è più semplice testarlo usando strumenti come XUnit e NuNit e via dicendo che strumenti che sono puramente scritti in T-SQL perché quello secondo me lo trovo un po' limitante ma detto questo diciamo la desiderio c'è noi ad esempio abbiamo dei tool che ti permettono di prendere il database, metterlo in un progetto quindi estrarre tutte le informazioni database, le schema, le tabelle, tutto Averli in un progetto che è il nostro, lo chiamo, DACFX, la liberia che fa questa cosa, e che tu puoi fare il deploy in un container e far andare lì tutti i test, magari anche generando dati sintetici per verificare che la tua query faccia esattamente quello che tu ti aspetti che faccia.E' una disciplina che, siccome tutti dovrebbero seguire, soprattutto su un database complesso, secondo me pochissimi fanno, purtroppo, perché? Perché è complesso.È molto complesso testare il database perché ad esempio, banalmente, magari puoi testarlo solo su dati sintetici e quindi devi installarti database, popolarlo, fare il deploy dello schema, popolarlo, eseguire i test.è una parte un po' noiosa che non molti fanno, purtroppo, ma sarebbe da fare e gli strumenti ci sono.Non sono così sofisticati come appunto quelli dello sviluppo dove puoi fare addirittura code coverage, testing e via dicendo, ci sono e secondo me sono, ad oggi sono anche abbastanza facili da usare, sicuramente più facili che in passato perché ho degli esempi in cui io posso lavorare completamente offline, quindi diciamo che lavoro sul mio container offline, faccio le mie modifiche faccio lo snapshot di questo database usando DuckFX Library, faccio il deploy su Git, a questo punto una GitHub Action che prende il mio package di cui ho fatto il deploy, istanzia un database SQL, fa il deploy del database, popola con dati di test, fa l'execution dei test e se tutto va bene allora fa il merge della query o del modifichio ho fatto col database finale.Ora qua è esattamente dove nasce il problema.è molto difficile fare l'emerge di una PR in un database vero, perché ci sono i dati dentro.Quindi se io voglio cambiare una colonna, voglio aggiungere una tabella e magari metterci dei dati, voglio cambiare la struttura database, ecco lì è dove c'è veramente la...Esatto, esatto, esatto.Perché finché si tratta di cambiare una speed instance, riprosiglio probabilmente...