SlideShare une entreprise Scribd logo
1  sur  32
#sqlsatParma 
Unit testing su database 
Alessandro Alpi 
@suxstellino 
www.alessandroalpi.net 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Sponsors 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Organizers 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Speaker 
 SQL Server MVP dal 2008 
 Microsoft Certified 
 blogs: 
 [ITA] http://blogs.dotnethell.it/suxstellino 
 [ENG] http://suxstellino.wordpress.com/ 
 Maggiori informazioni su: 
 http://www.alessandroalpi.net 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Agenda 
 Concetti ALM/DLM 
 Concetti su Unit Testing 
 Perché Unit Testing su database 
 Framework per Unit Testing 
 Soluzioni per Unit Testing 
 Conclusioni 
 Q&A 
November 22 #sqlsat355 nd, 2014
Application Lifecycle Management (ALM) rappresenta 
l'unione di attività di gestione di business con attività di 
ingegneria del software, resa possibile dall'utilizzo di 
strumenti che facilitano la gestione delle fasi di: analisi 
dei requisiti, progetto architetturale, sviluppo, testing, 
gestione delle release, del change e del deployment. 
(fonte Wikipedia) 
#sqlsatParma 
Che cosa si intende con ALM? 
November 22 #sqlsat355 nd, 2014
 Rottura delle barriere tra i team (integrazione) 
 Rilascio di software di qualità 
 Rilascio di software in tempi brevi 
 Soddisfazione del cliente 
 Migliore organizzazione del lavoro 
 Monitorizzazione e tracciabilità delle attività 
 Migliore gestione del codice (più «pulito») 
#sqlsatParma 
Perchè ALM? 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Per raggiungere la qualità.. 
 Continuous Integration! 
 SVILUPPO 
 SEND 
 BUILD 
 TEST 
November 22 #sqlsat355 nd, 2014
DLM – Database lifecycle management 
DLM (sottoinsieme di ALM) è un approccio alla 
gestione dello schema del database, dei dati e dei 
metadati. Ma non solo, è l’insieme degli strumenti 
e delle tecnologie che consentono l’organizzazione 
del ciclo di vita di un database, partendo 
dall’analisi, passando per lo sviluppo, il testing ed il 
deploy, per arrivare alla fase di backup e 
persistenza dei dati. 
(fonte TechNet) 
#sqlsatParma 
November 22 #sqlsat355 nd, 2014
In ingegneria del software, per unit testing (testing 
unitario) si intende l'attività di prova e collaudo di 
singole unità software. A seconda del paradigma di 
programmazione, l’unità può essere una singola 
funzione, una singola classe o un singolo metodo. 
Lo scopo fondamentale è l’individuazione precoce 
dei bug (o la prevenzione delle regressioni). 
(fonte Wikipedia) 
#sqlsatParma 
Unit testing 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Unit testing – Perché? 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Unit testing – Perchè? 
 Funzionalità mission-critical di business 
 Sviluppo evolutivo 
 Mock/Fake su database 
 Per capire precocemente alcuni bug 
 Per prevenire regressioni il più possibile 
November 22 #sqlsat355 nd, 2014
 I bug non fixati camuffano altri bug 
 I bug non fixati fanno sembrare la qualità un’opzione 
 Discutere su bug non fixati è una perdita di tempo 
 I bug non fixati aumentano in generale gli sforzi 
#sqlsatParma 
Quindi.. 
«Fix dei bug appena trovati» 
November 22 #sqlsat355 nd, 2014
 I bug non fixati portano metriche non affidabili 
 I bug non fixati distraggono il team 
 I bug non fixati ostacolano la velocità di release 
 I bug non fixati portano stime non accurate 
 Fixare codice familiare è più semplice 
 Fixare un bug oggi costa meno rispetto a farlo 
#sqlsatParma 
Da non dimenticare.. 
domani 
November 22 #sqlsat355 nd, 2014
Unit testing – Cosa facciamo di solito? 
 Alcuni casi di test sono obsoleti poichè i dati cambiano 
 Alcuni test coinvolgono spesso constraint e strutture che 
#sqlsatParma 
 Preleviamo una copia dei dati su cui lavorare di test 
 Test manuale 
 T-SQL – debug per i valori delle variabli 
 PRINT, PRINT, SELECT… 
 Soggettività ed errori umani 
non hanno niente a che vedere con il test stesso 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Unit testing – Cosa dovrei testare? 
 Calcoli in procedure e funzioni 
 Constraint (schema) 
 Casi limite sui dati 
 Comportamenti attesi sui dati 
 Gestione degli errori 
 Sicurezza 
 Standard 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Unit testing – Strumenti 
 Framework 
 tSQLt 
 tSQLUnit 
 SQLCop 
 SS-Unit 
 Tools 
 SQLTest di Red-Gate (tSQLt + SQLCop) 
 Unit test project con Visual Studio 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Unit testing – tSQLt 
 Free framework (open source) 
 T-SQL 
 Necessita di SQLCLR abilitato 
 Comprende le asserzioni più comuni 
 Self-contained 
 Transazioni isolate 
 Versatile 
 Piuttosto simile a xUnit 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Unit testing – strutture tSQLt 
 Built-in 
 schema tsqlt 
 Classi 
 Gruppi di stored procedure (che sono i test) 
 Struttura 
 Assemble (crea oggetti fake e mock) 
 Act (applica logiche) 
 Assert (asserisce, verifica risultati) 
 Convenzioni 
 Nome: test* 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
DEMO 1 
tSQLt and Red-Gate SQL Test 
+ 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Unit testing – Visual Studio 
 Visual Studio Data Tools 
 Unit test projects (creati con template) 
 .Net + T-SQL 
 Supportato anche in VS 2013 
 Test UI Integrata (Test Explorer) 
 UI per definizione test 
 Pre/Post test 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
DEMO 2 
Visual Studio database unit testing projects 
+ 
November 22 #sqlsat355 nd, 2014
tSQLUnit 
#sqlsatParma 
Unit testing – tSQLUnit 
 Free framework (open source) 
 T-SQL 
 Self-contained 
 Transazioni isolate 
 Comprende le asserzioni più comuni 
 Setup dati e ripristino 
 Simile a xUnit 
November 22 #sqlsat355 nd, 2014
tSQLUnit 
#sqlsatParma 
Unit testing – strutture tSQLUnit 
 TestSuites 
 È il nome subito dopo il prefisso ut_ 
 Gruppi di procedure 
 User defined test (prefisso ut_) 
 ut_NomeTestSuite_QuelCheVaFatto 
 Built-in 
 Procedure con prefisso tsu_ 
 Fixtures 
 Procedure con suffisso _setup 
 ut_NomeTestSuite_setup 
 Procedure con suffisso _teardown per 
 ut_NomeTestSuite_teardown 
 Vengono eseguite per ogni Test nella Suite 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
DEMO 3 
tSQLUnit in SQL Server Management Studio 
+ tSQLUnit 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Comparazione – SQL Test 
 Pro 
 Integrazione con SSMS 
 Esecuzione a classi 
 Messaggi e icone (UI) 
 T-SQL 
 Self-contained 
 Supporta tSQLt e SQLCop 
 Contro 
 Ui da migliorare (prodotto giovane) 
 Installa un set di oggetti 
 Necessita di SQLCLR 
 Necessita TRUSTWORTHY ON 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Comparazione – Visual Studio 
 Pro 
 È Visual Studio  
 Supporto futuri del project template 
 UI comoda e potente (dotata di designer) 
 Non vengono installati oggetti aggiuntivi sul database 
 Contro 
 Un progetto aggiuntivo non è troppo confortevole 
 Non è T-SQL (C# o VB.Net) 
 Sta al di fuori di SSMS (è un contro? Dipende!) 
 Diverso per ogni versione passata di Visual Studio 
November 22 #sqlsat355 nd, 2014
tSQLUnit 
#sqlsatParma 
Comparazione – tSQLUnit 
 Pro 
 Solo T-SQL 
 Basato sul ben conosciuto xUnit framework 
 Non necessita di SQLCLR 
 Open source 
 Contro 
 Nessuna UI 
 Installa un set di oggetti sul database 
 Non troppa documentazione (per T-SQL) 
November 22 #sqlsat355 nd, 2014
 Non ci sono motivazioni per non testare un 
database come succede per il codice 
 Esistono tool per testare 
 Esistono tool per creare dati e fake 
 I processi di test migliorano la qualità dei 
rilasci e del software 
#sqlsatParma 
Conclusioni 
November 22 #sqlsat355 nd, 2014
http://www.red-gate.com/products/sql-development/sql-test/ 
http://tsqlt.org/ 
http://sourceforge.net/projects/tsqlunit/ 
http://msdn.microsoft.com/en-us/library/dd172118(v=vs.100).aspx (VS 2010) 
http://blogs.msdn.com/b/ssdt/archive/2012/12/07/getting-started-with-sql-server-database-unit- 
http://msdn.microsoft.com/en-us/library/jj851200(v=vs.103).aspx (VS 2012) 
http://channel9.msdn.com/Events/Visual-Studio/Launch-2013/QE107 (VS 2013) 
http://msdn.microsoft.com/it-it/library/dn383992.aspx (Article on CI) 
http://msdn.microsoft.com/en-us/library/jj907294.aspx (DLM) 
http://en.wikipedia.org/wiki/Unit_testing 
https://www.simple-talk.com/sql/t-sql-programming/getting-started-testing-databases-with-tsqlt/ 
#sqlsatParma 
Risorse 
testing-in-ssdt.aspx (SSDT) 
http://utplsql.sourceforge.net/ (PL-SQL) 
https://github.com/chrisoldwood/SS-Unit 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Q&A 
 Domande? 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
THANKS! 
#sqlsatParma 
#sqlsat355 
November 22 #sqlsat355 nd, 2014

Contenu connexe

En vedette

PASS Virtual Chapter - SQL Server Continuous Deployment
PASS Virtual Chapter - SQL Server Continuous DeploymentPASS Virtual Chapter - SQL Server Continuous Deployment
PASS Virtual Chapter - SQL Server Continuous DeploymentAlessandro Alpi
 
[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control
[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control
[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source controlAlessandro Alpi
 
[ITA] SQL Saturday 257 - Put databases under source control
[ITA] SQL Saturday 257 - Put databases under source control[ITA] SQL Saturday 257 - Put databases under source control
[ITA] SQL Saturday 257 - Put databases under source controlAlessandro Alpi
 
#DOAW16 - DevOps@work Roma 2016 - Databases under source control
#DOAW16 - DevOps@work Roma 2016 - Databases under source control#DOAW16 - DevOps@work Roma 2016 - Databases under source control
#DOAW16 - DevOps@work Roma 2016 - Databases under source controlAlessandro Alpi
 
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...Alessandro Alpi
 
Cwit interview
Cwit interviewCwit interview
Cwit interviewakhtarsaad
 
Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)CastilloAguilera
 
#DOAW16 - DevOps@work Roma 2016 - Testing your databases
#DOAW16 - DevOps@work Roma 2016 - Testing your databases#DOAW16 - DevOps@work Roma 2016 - Testing your databases
#DOAW16 - DevOps@work Roma 2016 - Testing your databasesAlessandro Alpi
 
Quick intro sul Source Control su SQL Server
Quick intro sul Source Control su SQL ServerQuick intro sul Source Control su SQL Server
Quick intro sul Source Control su SQL ServerAlessandro Alpi
 
[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont...
[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont...[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont...
[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont...Alessandro Alpi
 
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
[ITA] SQL Saturday 264 - Put databases in ALM backgroundsAlessandro Alpi
 

En vedette (16)

Lista 5
Lista 5Lista 5
Lista 5
 
PASS Virtual Chapter - SQL Server Continuous Deployment
PASS Virtual Chapter - SQL Server Continuous DeploymentPASS Virtual Chapter - SQL Server Continuous Deployment
PASS Virtual Chapter - SQL Server Continuous Deployment
 
Slide sharing
Slide sharingSlide sharing
Slide sharing
 
Acting In The Digital Age Workshop @UMFF
Acting In The Digital Age Workshop @UMFFActing In The Digital Age Workshop @UMFF
Acting In The Digital Age Workshop @UMFF
 
[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control
[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control
[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control
 
Directing teaching resume 2015
Directing teaching resume 2015Directing teaching resume 2015
Directing teaching resume 2015
 
[ITA] SQL Saturday 257 - Put databases under source control
[ITA] SQL Saturday 257 - Put databases under source control[ITA] SQL Saturday 257 - Put databases under source control
[ITA] SQL Saturday 257 - Put databases under source control
 
#DOAW16 - DevOps@work Roma 2016 - Databases under source control
#DOAW16 - DevOps@work Roma 2016 - Databases under source control#DOAW16 - DevOps@work Roma 2016 - Databases under source control
#DOAW16 - DevOps@work Roma 2016 - Databases under source control
 
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
 
Cwit interview
Cwit interviewCwit interview
Cwit interview
 
Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)
 
#DOAW16 - DevOps@work Roma 2016 - Testing your databases
#DOAW16 - DevOps@work Roma 2016 - Testing your databases#DOAW16 - DevOps@work Roma 2016 - Testing your databases
#DOAW16 - DevOps@work Roma 2016 - Testing your databases
 
Quick intro sul Source Control su SQL Server
Quick intro sul Source Control su SQL ServerQuick intro sul Source Control su SQL Server
Quick intro sul Source Control su SQL Server
 
Gordonas sausio
Gordonas sausioGordonas sausio
Gordonas sausio
 
[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont...
[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont...[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont...
[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont...
 
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
 

Plus de Alessandro Alpi

Mvp4 croatia - Being a dba in a devops world
Mvp4 croatia - Being a dba in a devops worldMvp4 croatia - Being a dba in a devops world
Mvp4 croatia - Being a dba in a devops worldAlessandro Alpi
 
Digital warriors 2020 - Smart?
Digital warriors 2020 - Smart?Digital warriors 2020 - Smart?
Digital warriors 2020 - Smart?Alessandro Alpi
 
Sql Wars - SQL the attack of the Clones and the rebellion of the Containers
Sql Wars - SQL the attack of the Clones and the rebellion of the Containers Sql Wars - SQL the attack of the Clones and the rebellion of the Containers
Sql Wars - SQL the attack of the Clones and the rebellion of the Containers Alessandro Alpi
 
Sql Wars - SQL Clone vs Docker Containers
Sql Wars - SQL Clone vs Docker Containers Sql Wars - SQL Clone vs Docker Containers
Sql Wars - SQL Clone vs Docker Containers Alessandro Alpi
 
Doaw2020 - Dalla produzione alla QA, provisioning su SQL Server
Doaw2020 - Dalla produzione alla QA, provisioning su SQL ServerDoaw2020 - Dalla produzione alla QA, provisioning su SQL Server
Doaw2020 - Dalla produzione alla QA, provisioning su SQL ServerAlessandro Alpi
 
Wpc2019 - Distruggere DevOps, la storia di un vero team
Wpc2019 - Distruggere DevOps, la storia di un vero teamWpc2019 - Distruggere DevOps, la storia di un vero team
Wpc2019 - Distruggere DevOps, la storia di un vero teamAlessandro Alpi
 
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL Server
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL ServerSql start!2019 Migliorare la produttività per lo sviluppo su SQL Server
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL ServerAlessandro Alpi
 
Configuration e change management con Disciplined Agile Framework
Configuration e change management con Disciplined Agile FrameworkConfiguration e change management con Disciplined Agile Framework
Configuration e change management con Disciplined Agile FrameworkAlessandro Alpi
 
Basta poco per distruggere DevOps
Basta poco per distruggere DevOpsBasta poco per distruggere DevOps
Basta poco per distruggere DevOpsAlessandro Alpi
 
Automatizzare il processo di link dei database con redgate source control
Automatizzare il processo di link dei database con redgate source controlAutomatizzare il processo di link dei database con redgate source control
Automatizzare il processo di link dei database con redgate source controlAlessandro Alpi
 
Sql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DB
Sql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DBSql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DB
Sql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DBAlessandro Alpi
 
Sql Saturday a Pordenone - Sql Server journey, da dev a ops
Sql Saturday a Pordenone - Sql Server journey, da dev a opsSql Saturday a Pordenone - Sql Server journey, da dev a ops
Sql Saturday a Pordenone - Sql Server journey, da dev a opsAlessandro Alpi
 
[Ita] Sql Saturday 462 Parma - Sql Server 2016 JSON support
[Ita] Sql Saturday 462 Parma - Sql Server 2016 JSON support[Ita] Sql Saturday 462 Parma - Sql Server 2016 JSON support
[Ita] Sql Saturday 462 Parma - Sql Server 2016 JSON supportAlessandro Alpi
 
[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support
[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support
[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON supportAlessandro Alpi
 

Plus de Alessandro Alpi (14)

Mvp4 croatia - Being a dba in a devops world
Mvp4 croatia - Being a dba in a devops worldMvp4 croatia - Being a dba in a devops world
Mvp4 croatia - Being a dba in a devops world
 
Digital warriors 2020 - Smart?
Digital warriors 2020 - Smart?Digital warriors 2020 - Smart?
Digital warriors 2020 - Smart?
 
Sql Wars - SQL the attack of the Clones and the rebellion of the Containers
Sql Wars - SQL the attack of the Clones and the rebellion of the Containers Sql Wars - SQL the attack of the Clones and the rebellion of the Containers
Sql Wars - SQL the attack of the Clones and the rebellion of the Containers
 
Sql Wars - SQL Clone vs Docker Containers
Sql Wars - SQL Clone vs Docker Containers Sql Wars - SQL Clone vs Docker Containers
Sql Wars - SQL Clone vs Docker Containers
 
Doaw2020 - Dalla produzione alla QA, provisioning su SQL Server
Doaw2020 - Dalla produzione alla QA, provisioning su SQL ServerDoaw2020 - Dalla produzione alla QA, provisioning su SQL Server
Doaw2020 - Dalla produzione alla QA, provisioning su SQL Server
 
Wpc2019 - Distruggere DevOps, la storia di un vero team
Wpc2019 - Distruggere DevOps, la storia di un vero teamWpc2019 - Distruggere DevOps, la storia di un vero team
Wpc2019 - Distruggere DevOps, la storia di un vero team
 
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL Server
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL ServerSql start!2019 Migliorare la produttività per lo sviluppo su SQL Server
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL Server
 
Configuration e change management con Disciplined Agile Framework
Configuration e change management con Disciplined Agile FrameworkConfiguration e change management con Disciplined Agile Framework
Configuration e change management con Disciplined Agile Framework
 
Basta poco per distruggere DevOps
Basta poco per distruggere DevOpsBasta poco per distruggere DevOps
Basta poco per distruggere DevOps
 
Automatizzare il processo di link dei database con redgate source control
Automatizzare il processo di link dei database con redgate source controlAutomatizzare il processo di link dei database con redgate source control
Automatizzare il processo di link dei database con redgate source control
 
Sql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DB
Sql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DBSql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DB
Sql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DB
 
Sql Saturday a Pordenone - Sql Server journey, da dev a ops
Sql Saturday a Pordenone - Sql Server journey, da dev a opsSql Saturday a Pordenone - Sql Server journey, da dev a ops
Sql Saturday a Pordenone - Sql Server journey, da dev a ops
 
[Ita] Sql Saturday 462 Parma - Sql Server 2016 JSON support
[Ita] Sql Saturday 462 Parma - Sql Server 2016 JSON support[Ita] Sql Saturday 462 Parma - Sql Server 2016 JSON support
[Ita] Sql Saturday 462 Parma - Sql Server 2016 JSON support
 
[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support
[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support
[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support
 

[ITA] Sql Saturday 355 in Parma - Test your SQL Server databases

  • 1. #sqlsatParma Unit testing su database Alessandro Alpi @suxstellino www.alessandroalpi.net November 22 #sqlsat355 nd, 2014
  • 2. #sqlsatParma Sponsors November 22 #sqlsat355 nd, 2014
  • 3. #sqlsatParma Organizers November 22 #sqlsat355 nd, 2014
  • 4. #sqlsatParma Speaker  SQL Server MVP dal 2008  Microsoft Certified  blogs:  [ITA] http://blogs.dotnethell.it/suxstellino  [ENG] http://suxstellino.wordpress.com/  Maggiori informazioni su:  http://www.alessandroalpi.net November 22 #sqlsat355 nd, 2014
  • 5. #sqlsatParma Agenda  Concetti ALM/DLM  Concetti su Unit Testing  Perché Unit Testing su database  Framework per Unit Testing  Soluzioni per Unit Testing  Conclusioni  Q&A November 22 #sqlsat355 nd, 2014
  • 6. Application Lifecycle Management (ALM) rappresenta l'unione di attività di gestione di business con attività di ingegneria del software, resa possibile dall'utilizzo di strumenti che facilitano la gestione delle fasi di: analisi dei requisiti, progetto architetturale, sviluppo, testing, gestione delle release, del change e del deployment. (fonte Wikipedia) #sqlsatParma Che cosa si intende con ALM? November 22 #sqlsat355 nd, 2014
  • 7.  Rottura delle barriere tra i team (integrazione)  Rilascio di software di qualità  Rilascio di software in tempi brevi  Soddisfazione del cliente  Migliore organizzazione del lavoro  Monitorizzazione e tracciabilità delle attività  Migliore gestione del codice (più «pulito») #sqlsatParma Perchè ALM? November 22 #sqlsat355 nd, 2014
  • 8. #sqlsatParma Per raggiungere la qualità..  Continuous Integration!  SVILUPPO  SEND  BUILD  TEST November 22 #sqlsat355 nd, 2014
  • 9. DLM – Database lifecycle management DLM (sottoinsieme di ALM) è un approccio alla gestione dello schema del database, dei dati e dei metadati. Ma non solo, è l’insieme degli strumenti e delle tecnologie che consentono l’organizzazione del ciclo di vita di un database, partendo dall’analisi, passando per lo sviluppo, il testing ed il deploy, per arrivare alla fase di backup e persistenza dei dati. (fonte TechNet) #sqlsatParma November 22 #sqlsat355 nd, 2014
  • 10. In ingegneria del software, per unit testing (testing unitario) si intende l'attività di prova e collaudo di singole unità software. A seconda del paradigma di programmazione, l’unità può essere una singola funzione, una singola classe o un singolo metodo. Lo scopo fondamentale è l’individuazione precoce dei bug (o la prevenzione delle regressioni). (fonte Wikipedia) #sqlsatParma Unit testing November 22 #sqlsat355 nd, 2014
  • 11. #sqlsatParma Unit testing – Perché? November 22 #sqlsat355 nd, 2014
  • 12. #sqlsatParma Unit testing – Perchè?  Funzionalità mission-critical di business  Sviluppo evolutivo  Mock/Fake su database  Per capire precocemente alcuni bug  Per prevenire regressioni il più possibile November 22 #sqlsat355 nd, 2014
  • 13.  I bug non fixati camuffano altri bug  I bug non fixati fanno sembrare la qualità un’opzione  Discutere su bug non fixati è una perdita di tempo  I bug non fixati aumentano in generale gli sforzi #sqlsatParma Quindi.. «Fix dei bug appena trovati» November 22 #sqlsat355 nd, 2014
  • 14.  I bug non fixati portano metriche non affidabili  I bug non fixati distraggono il team  I bug non fixati ostacolano la velocità di release  I bug non fixati portano stime non accurate  Fixare codice familiare è più semplice  Fixare un bug oggi costa meno rispetto a farlo #sqlsatParma Da non dimenticare.. domani November 22 #sqlsat355 nd, 2014
  • 15. Unit testing – Cosa facciamo di solito?  Alcuni casi di test sono obsoleti poichè i dati cambiano  Alcuni test coinvolgono spesso constraint e strutture che #sqlsatParma  Preleviamo una copia dei dati su cui lavorare di test  Test manuale  T-SQL – debug per i valori delle variabli  PRINT, PRINT, SELECT…  Soggettività ed errori umani non hanno niente a che vedere con il test stesso November 22 #sqlsat355 nd, 2014
  • 16. #sqlsatParma Unit testing – Cosa dovrei testare?  Calcoli in procedure e funzioni  Constraint (schema)  Casi limite sui dati  Comportamenti attesi sui dati  Gestione degli errori  Sicurezza  Standard November 22 #sqlsat355 nd, 2014
  • 17. #sqlsatParma Unit testing – Strumenti  Framework  tSQLt  tSQLUnit  SQLCop  SS-Unit  Tools  SQLTest di Red-Gate (tSQLt + SQLCop)  Unit test project con Visual Studio November 22 #sqlsat355 nd, 2014
  • 18. #sqlsatParma Unit testing – tSQLt  Free framework (open source)  T-SQL  Necessita di SQLCLR abilitato  Comprende le asserzioni più comuni  Self-contained  Transazioni isolate  Versatile  Piuttosto simile a xUnit November 22 #sqlsat355 nd, 2014
  • 19. #sqlsatParma Unit testing – strutture tSQLt  Built-in  schema tsqlt  Classi  Gruppi di stored procedure (che sono i test)  Struttura  Assemble (crea oggetti fake e mock)  Act (applica logiche)  Assert (asserisce, verifica risultati)  Convenzioni  Nome: test* November 22 #sqlsat355 nd, 2014
  • 20. #sqlsatParma DEMO 1 tSQLt and Red-Gate SQL Test + November 22 #sqlsat355 nd, 2014
  • 21. #sqlsatParma Unit testing – Visual Studio  Visual Studio Data Tools  Unit test projects (creati con template)  .Net + T-SQL  Supportato anche in VS 2013  Test UI Integrata (Test Explorer)  UI per definizione test  Pre/Post test November 22 #sqlsat355 nd, 2014
  • 22. #sqlsatParma DEMO 2 Visual Studio database unit testing projects + November 22 #sqlsat355 nd, 2014
  • 23. tSQLUnit #sqlsatParma Unit testing – tSQLUnit  Free framework (open source)  T-SQL  Self-contained  Transazioni isolate  Comprende le asserzioni più comuni  Setup dati e ripristino  Simile a xUnit November 22 #sqlsat355 nd, 2014
  • 24. tSQLUnit #sqlsatParma Unit testing – strutture tSQLUnit  TestSuites  È il nome subito dopo il prefisso ut_  Gruppi di procedure  User defined test (prefisso ut_)  ut_NomeTestSuite_QuelCheVaFatto  Built-in  Procedure con prefisso tsu_  Fixtures  Procedure con suffisso _setup  ut_NomeTestSuite_setup  Procedure con suffisso _teardown per  ut_NomeTestSuite_teardown  Vengono eseguite per ogni Test nella Suite November 22 #sqlsat355 nd, 2014
  • 25. #sqlsatParma DEMO 3 tSQLUnit in SQL Server Management Studio + tSQLUnit November 22 #sqlsat355 nd, 2014
  • 26. #sqlsatParma Comparazione – SQL Test  Pro  Integrazione con SSMS  Esecuzione a classi  Messaggi e icone (UI)  T-SQL  Self-contained  Supporta tSQLt e SQLCop  Contro  Ui da migliorare (prodotto giovane)  Installa un set di oggetti  Necessita di SQLCLR  Necessita TRUSTWORTHY ON November 22 #sqlsat355 nd, 2014
  • 27. #sqlsatParma Comparazione – Visual Studio  Pro  È Visual Studio   Supporto futuri del project template  UI comoda e potente (dotata di designer)  Non vengono installati oggetti aggiuntivi sul database  Contro  Un progetto aggiuntivo non è troppo confortevole  Non è T-SQL (C# o VB.Net)  Sta al di fuori di SSMS (è un contro? Dipende!)  Diverso per ogni versione passata di Visual Studio November 22 #sqlsat355 nd, 2014
  • 28. tSQLUnit #sqlsatParma Comparazione – tSQLUnit  Pro  Solo T-SQL  Basato sul ben conosciuto xUnit framework  Non necessita di SQLCLR  Open source  Contro  Nessuna UI  Installa un set di oggetti sul database  Non troppa documentazione (per T-SQL) November 22 #sqlsat355 nd, 2014
  • 29.  Non ci sono motivazioni per non testare un database come succede per il codice  Esistono tool per testare  Esistono tool per creare dati e fake  I processi di test migliorano la qualità dei rilasci e del software #sqlsatParma Conclusioni November 22 #sqlsat355 nd, 2014
  • 30. http://www.red-gate.com/products/sql-development/sql-test/ http://tsqlt.org/ http://sourceforge.net/projects/tsqlunit/ http://msdn.microsoft.com/en-us/library/dd172118(v=vs.100).aspx (VS 2010) http://blogs.msdn.com/b/ssdt/archive/2012/12/07/getting-started-with-sql-server-database-unit- http://msdn.microsoft.com/en-us/library/jj851200(v=vs.103).aspx (VS 2012) http://channel9.msdn.com/Events/Visual-Studio/Launch-2013/QE107 (VS 2013) http://msdn.microsoft.com/it-it/library/dn383992.aspx (Article on CI) http://msdn.microsoft.com/en-us/library/jj907294.aspx (DLM) http://en.wikipedia.org/wiki/Unit_testing https://www.simple-talk.com/sql/t-sql-programming/getting-started-testing-databases-with-tsqlt/ #sqlsatParma Risorse testing-in-ssdt.aspx (SSDT) http://utplsql.sourceforge.net/ (PL-SQL) https://github.com/chrisoldwood/SS-Unit November 22 #sqlsat355 nd, 2014
  • 31. #sqlsatParma Q&A  Domande? November 22 #sqlsat355 nd, 2014
  • 32. #sqlsatParma THANKS! #sqlsatParma #sqlsat355 November 22 #sqlsat355 nd, 2014

Notes de l'éditeur

  1. Note that the cost of bugs rises. We know this. The earlier we find issues, the better. We can see from this survey that the cost of bugs rises dramatically as we get closer to the client.
  2. Note that the cost of bugs rises. We know this. The earlier we find issues, the better. We can see from this survey that the cost of bugs rises dramatically as we get closer to the client.