Tsqlt

Automatizzare il test di una soluzione SQL Server con tSQLt, Docker e GitHub Actions!

Sergio Govoni

Nell’articolo precedente, il terzo di questa serie, abbiamo descritto come scrivere ed eseguire manualmente una unit di test per un trigger! In questo articolo verrà descritto come automatizzare il test di uno o più oggetti SQL Server utilizzando tSQLt, Docker e GitHub Actions!

Tecnologie e framework utilizzati

Le potenzialità del framework tSQLt sono state descritte nell’articolo “Il framework tSQLt e l’esecuzione di un test”:

https://www.ugiss.org/2020/11/07/unit-testing-il-framework-tsqlt-e-lesecuzione-di-un-test/

Docker è uno dei più diffusi sistemi per l’esecuzione di applicazioni in ambienti isolabili, minimali e facilmente distribuibili chiamati container. SQL Server 2017, e le successive versioni, possono essere eseguite in un container Docker, un tipico scenario di utilizzo di container è proprio quello che riguarda l’automazione dei test.

Unit testing: Come scrivere la tua prima unit test!

Sergio Govoni

Nell’articolo precedente, il secondo di questa serie, abbiamo descritto come installare il framework tSQLt, il tool SQL Test di Red-Gate e come avviene l’esecuzione di una unit di test. Ora è giunto il momento di scrivere il nostro primo test! Useremo gli strumenti che abbiamo descritto in precedenza!

Specifiche e requisiti

Scriveremo la nostra prima unit di test per verificare i requisiti di un trigger che ci è stato commissionato dall’Azienda inventata Adventure Works LTD il cui database è disponibile per il download su questo repository di GitHub. Il database AdventureWorks2017 contiene la tabella Product riferita allo schema Production. La tabella Product rappresenta l’anagrafica dei prodotti gestiti e commercializzati dall’Azienda che vi ha commissionato un trigger per impedire l’inserimento di nuovi prodotti aventi come “scorta di sicurezza” valori minori di 10. L’Azienda desidera quindi avere sempre una scorta di magazzino pari a 10 unità. La scorta di sicurezza è un dato molto importante per le procedure automatiche di riordino dei materiali, che ne tengono conto per l’emissione degli ordini a fornitore o degli ordini di produzione. Per semplificare l’esempio, il trigger risponderà soltanto all’evento OnInsert, per i comandi INSERT.

Unit testing: Il framework tSQLt e l'esecuzione di un test!

Sergio Govoni

Nell’articolo precedente, il primo di questa serie, abbiamo descritto che cosa è lo Unit Test e perché è importante prevederlo anche durante lo sviluppo di soluzioni database con T-SQL. In questo secondo articolo descriveremo come installare il framework tSQLt e faremo una breve introduzione a SQL Test, il tool di Red-Gate che semplifica la gestione e l’esecuzione dei test in SQL Server. Descriveremo infine come avviene l’esecuzione di un test case.

Unit testing: Cos'è e perché è importante farlo anche per il codice T-SQL!

Sergio Govoni

Questo articolo è il primo di una serie di post in cui tratteremo l’importante tema dello unit testing applicato allo sviluppo di soluzioni database in T-SQL per SQL Server. Let’s start!

Cos’è lo Unit Test?

Lo unit test è un livello di test del software che ha lo scopo di testare una porzione di codice discreta. La parola “unit” si riferisce alla più piccola porzione di codice che è possibile testare separatamente, una funzione o una procedura autonoma che può essere testata in modo isolato. Nello sviluppo di soluzioni database, la “unit” è tipicamente una stored procedure (un trigger) oppure una function. Quando eseguiamo lo unit test di una stored procedura o di una function il test dovrebbe essere focalizzato esclusivamente sul codice che stiamo testando e non su come la procedura interagisce con le alte, è molto importante quindi definire da subito il “System Under Test” (SUT) e isolarlo in modo che non venga influenzato dal comportamento di altre procedure richiamate all’interno di quella che si desidera testare.