SlideShare a Scribd company logo
1 of 35
Template designed by
Continuous Integration
su SQL Server
Alessandro Alpi
Alessandro.alpi@engageitservices.it
alessandro.alpi@engageitservices.it
Alessandro Alpi
MVP SQL Server dal 2008
DBA | Team leader
@suxstellino
[eng] http://suxstellino.wordpress.com
[ita] http://blogs.dotnethell.it/suxstellino
chi sono
Continuous Integration?!
Source Control
Build
Unit Testing
Conclusioni
Q&A
agenda
È una pratica che consiste nell’allineamento
frequente (più volte al giorno) degli ambienti di
lavoro di sviluppo verso l’ambiente condiviso. Si
applica in contesti in cui lo sviluppo avviene tramite
un sistema vi versioning (version control system).
(fonte Wikipedia)
Che cosa si intende con Continuous Integration?
Continuous Integration, workflow..
Immagine: www.simple-talk.com
Sviluppo
Commit/Checkin
Trigger della Build
Build del database
Creazione del package
Test sul database
Check-in frequenti durante la giornata
Merge dei cambiamenti per ogni check-in
Evitare la «rottura» delle build
Comunicare l’eventuale «rottura» a tutto il team (evitare get)
Fare check-in solo se la build è «riparata»
Notificare quando è possibile fare una get da source control
Continuous Integration, best practices
Poter fare get/commit dei cambiamenti come per il codice
Le build costruiscono una sandbox su cui eseguire i test
Commit frequenti sulla linea principale come per il codice
Rendere atomici database e applicazione
Sfruttare strumenti condivisi (Visual Studio, Team Explorer)
Continuous Integration e database
Annulla la problematica «sul mio pc funziona» 
Consente l’automazione dei processi
Migliora la qualità del codice (proprio per i processi frequenti)
Rende subito disponibile il sorgente/db ad un nuovo dev
Non dimentica nessuna linea di sviluppo
Separa il deploy dallo sviluppo
Aumenta la visibilità del «prodotto»
Vantaggi della Continuous Integration
Serve un..
..Source Control Manager
Gestore delle versioni
cambiamenti del nostro codice (ddl, programmabilità)
cambiamenti di altri elementi (snippet, strumenti dev)
cambiamenti sui dati «statici»
Entità condivisa in sviluppo (e team management)
Dotato di interfaccia (anche grafica)
Può sembrare scomodo su database
Source control manager
Come potremmo semplicemente gestire le fix?
Come creare velocemente più ambienti di sviluppo?
Come utilizzare versioni differenti dello stesso DB?
Come sincronizzare il DB nel team (se non centralizzato)?
Ma senza un Source Control Manager?
Il database è codice (programmabilità, ddl, grant, ecc.)
Le tabelle di «dominio» sono come tanti enum (dati statici)
I puntamenti ai linked server sono configurazioni (app.config)
Le server login sono configurazioni di ambiente
Grande differenza: Il database persiste i dati utente.
DB vs. Codice
Visual Studio Database Projects
Red-Gate Source Control
ApexSQL Source Control
…
Management studio non basta!
Unitamente al Team Explorer (per chi usa Visual Studio)
Strumenti
Indipendentemente dal tool che si usa Team Explorer consente:
Migliore gestione dei changeset
Migliore associazione dei changeset ai task
Miglior controllo sulle fasi di commit e di review
Gestione centralizzata delle policy di checkin
Single point per la gestione del team project
Il Team Explorer
demo
Management Studio
+ Red Gate SQL Source Control
con Visual Studio Online
E ora scriviamo qualche test..
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)
Unit testing
Unit testing, perché?
Testare funzionalità mission-critical di business
Sviluppo evolutivo
Per capire precocemente alcuni bug
Supporto di alert automatici
Per prevenire regressioni il più possibile
Avere copertura di test
Scrivere in maniera «testabile» i nostri metodi
Unit testing, perché?
«Fix dei bug non appena trovati»
I bug non fixati camuffano potenzialmente 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
Unit testing, perché?
Calcoli in procedure e funzioni
Constraint (schema)
Casi limite e comportamenti attesi sui dati
Sicurezza
Standard
Cosa testare?
Framework
tSQLt
tSQLUnit (consigliato per SQL Server 2000)
SQLCop (per gli standard e le metriche)
Tools
SQLTest di Red-Gate (tSQLt + SQLCop)
Unit test project con Visual Studio
Strumenti per il test
Free framework (open source)
T-SQL
Necessita di SQLCLR abilitato
Comprende le asserzioni più comuni
Self-contained con transazioni isolate
Versatile
Piuttosto simile a xUnit
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*
tSQLt – com’è fatto?
demo
tSQLt con SQL Test
su Management Studio
Automatizziamo il tutto!
Build codice = compilazione automatica dopo check-in
Build database:
Parte al check-in dei changeset
Crea un package (nuget in questo caso)
Crea un database per i test
Valida gli oggetti creati
Build (cenni)
Red Gate SQL CI + plugin TFS + Script SC (DLM Automation Suite)
1) Al check-in su source control fa partire la build
1) Crea automaticamente un database per i test
1) Crea un package nuget
2) Esegue i test
3) Allinea il package su db di QA/Staging
4) Pubblica il package su un nuget feed
Automazione
demo
CI all’opera
Capire quale source control è il migliore per noi:
già utilizzato in passato?
servizio oppure on-premises?
costi?
Capire quale strumento per gestire il source control del database:
curva di apprendimento dell’IDE usato
costi
comodità (dati statici, filtri, team management)
Conclusioni
Per il testing:
Esistono tool per testare
Esiste la possibilità di isolare
È semplice creare un database nuovo su cui testare
Miglioriamo la qualità del nostro software
Preveniamo le regressioni
Conclusioni
Quindi..
Perché non usare un source control?!
Perché non testare?!

Automatizzare = Meno spreco di tempo + qualità
Immagine: www.simple-talk.com
Sviluppo
Commit/Checkin
Trigger della Build
Build del database
Test sul database
Creazione del package
Grazie a tutti per la partecipazione!
Riceverete il link per il download a slide e demo via email nei
prossimi giorni
Per contattarmi
alessandro.alpi@engageitservices.it
Grazie
Source control resources
https://msdn.microsoft.com/it-it/library/dn894015.aspx (Article on Source Control)
http://www.red-gate.com/products/sql-development/sql-source-control/
http://apexsql.com/sql_tools_source_control.aspx
http://suxstellino.wordpress.com/tag/alm/
http://blogs.dotnethell.it/suxstellino/Category_2927.aspx
Unit testing resources
http://www.red-gate.com/products/sql-development/sql-test/
http://tsqlt.org/
http://sourceforge.net/projects/tsqlunit/
https://msdn.microsoft.com/it-it/library/mt169842 (Article on Unit Testing)
http://en.wikipedia.org/wiki/Unit_testing
https://www.simple-talk.com/sql/t-sql-programming/getting-started-testing-databases-with-tsqlt/
https://github.com/chrisoldwood/SS-Unit
CI resources
http://msdn.microsoft.com/it-it/library/dn383992.aspx (Article on CI)
http://www.red-gate.com/products/dlm/dlm-automation-suite/
http://www.red-gate.com/products/dlm/dlm-automation-suite/sql-ci
http://www.red-gate.com/products/dlm/dlm-automation-suite/sql-release
http://documentation.red-gate.com/display/DAS/DLM+Automation+Suite
Risorse

More Related Content

What's hot

Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoAndrea Dottor
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuerySandro Marcon
 
Architetttura Della Soluzione
Architetttura Della SoluzioneArchitetttura Della Soluzione
Architetttura Della SoluzioneLuca Milan
 
Async: scalabilità e responsiveness senza pari! @ CDays
Async: scalabilità e responsiveness senza pari! @ CDaysAsync: scalabilità e responsiveness senza pari! @ CDays
Async: scalabilità e responsiveness senza pari! @ CDaysMatteo Baglini
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftMassimo Bonanni
 
Async/Await: make it simple!!
Async/Await: make it simple!!Async/Await: make it simple!!
Async/Await: make it simple!!Massimo Bonanni
 
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...Codemotion
 
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!DotNetCampus
 
Web Api – The HTTP Way
Web Api – The HTTP WayWeb Api – The HTTP Way
Web Api – The HTTP WayLuca Milan
 
ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%DomusDotNet
 
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#DotNetCampus
 
ASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroAndrea Dottor
 
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...Andrea Balducci
 
Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021Michele Aponte
 
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote ItalyMarco Parenzan
 
Managed Extensibility Framework (MEF)
Managed Extensibility Framework (MEF)Managed Extensibility Framework (MEF)
Managed Extensibility Framework (MEF)Manuel Scapolan
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web AppsAndrea Dottor
 
ASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiAndrea Dottor
 

What's hot (20)

Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppo
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuery
 
Architetttura Della Soluzione
Architetttura Della SoluzioneArchitetttura Della Soluzione
Architetttura Della Soluzione
 
Async: scalabilità e responsiveness senza pari! @ CDays
Async: scalabilità e responsiveness senza pari! @ CDaysAsync: scalabilità e responsiveness senza pari! @ CDays
Async: scalabilità e responsiveness senza pari! @ CDays
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie Microsoft
 
Async/Await: make it simple!!
Async/Await: make it simple!!Async/Await: make it simple!!
Async/Await: make it simple!!
 
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
 
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
 
Web Api – The HTTP Way
Web Api – The HTTP WayWeb Api – The HTTP Way
Web Api – The HTTP Way
 
ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%
 
Akka.net & Actor Model
Akka.net & Actor ModelAkka.net & Actor Model
Akka.net & Actor Model
 
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
 
jQuery
jQueryjQuery
jQuery
 
ASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuro
 
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
 
Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021
 
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
 
Managed Extensibility Framework (MEF)
Managed Extensibility Framework (MEF)Managed Extensibility Framework (MEF)
Managed Extensibility Framework (MEF)
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
 
ASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivati
 

Viewers also liked

SVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDSVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDDotNetCampus
 
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZUREFROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZUREDotNetCampus
 
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...DotNetCampus
 
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!DotNetCampus
 
COSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICECOSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICEDotNetCampus
 
70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#DotNetCampus
 
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATAPREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATADotNetCampus
 
SHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEWSHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEWDotNetCampus
 
SVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURE
SVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURESVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURE
SVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZUREDotNetCampus
 
Introduzione ai Microservices
Introduzione ai MicroservicesIntroduzione ai Microservices
Introduzione ai MicroservicesDaniele Mondello
 
MICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOTMICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOTDotNetCampus
 
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONSDotNetCampus
 
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEDotNetCampus
 

Viewers also liked (13)

SVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDSVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BAND
 
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZUREFROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
 
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
 
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
 
COSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICECOSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICE
 
70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#
 
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATAPREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
 
SHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEWSHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEW
 
SVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURE
SVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURESVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURE
SVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURE
 
Introduzione ai Microservices
Introduzione ai MicroservicesIntroduzione ai Microservices
Introduzione ai Microservices
 
MICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOTMICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOT
 
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
 
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
 

Similar to CONTINUOUS INTEGRATION CON SQL SERVER

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
 
PASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationAlessandro Alpi
 
Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Gian Maria Ricci
 
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
 
Database under source control
Database under source controlDatabase under source control
Database under source controlKlab
 
Il buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceIl buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceAndrea Dottor
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS BuildGian Maria Ricci
 
Database project alla riscossa
Database project alla riscossaDatabase project alla riscossa
Database project alla riscossaGian Maria Ricci
 
Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineDavide Benvegnù
 
Qualità del Software
Qualità del SoftwareQualità del Software
Qualità del SoftwareYeser Rema
 
PASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerPASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerAlessandro 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
 
Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsIgor Antonacci
 
Software Testing & Test Driven Development
Software Testing & Test Driven DevelopmentSoftware Testing & Test Driven Development
Software Testing & Test Driven DevelopmentSergio Santoro
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsGiorgio Di Nardo
 

Similar to CONTINUOUS INTEGRATION CON SQL SERVER (20)

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...
 
PASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous Integration
 
Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Database Project in Visual Studio 2010
Database Project in Visual Studio 2010
 
Software Testing e TDD
Software Testing e TDDSoftware Testing e TDD
Software Testing e TDD
 
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
 
Database under source control
Database under source controlDatabase under source control
Database under source control
 
Il buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceIl buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita felice
 
Testing
TestingTesting
Testing
 
Build Automation Tips
Build Automation TipsBuild Automation Tips
Build Automation Tips
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS Build
 
Database project alla riscossa
Database project alla riscossaDatabase project alla riscossa
Database project alla riscossa
 
Tfs Basic - Quick Intro
Tfs Basic - Quick IntroTfs Basic - Quick Intro
Tfs Basic - Quick Intro
 
Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio Online
 
Qualità del Software
Qualità del SoftwareQualità del Software
Qualità del Software
 
PASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerPASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL Server
 
Continuos Integration
Continuos IntegrationContinuos Integration
Continuos Integration
 
[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
 
Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devops
 
Software Testing & Test Driven Development
Software Testing & Test Driven DevelopmentSoftware Testing & Test Driven Development
Software Testing & Test Driven Development
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.js
 

More from DotNetCampus

TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015DotNetCampus
 
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDIDESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDIDotNetCampus
 
WINDOWS PHONE APPS IN C++
WINDOWS PHONE APPS IN C++WINDOWS PHONE APPS IN C++
WINDOWS PHONE APPS IN C++DotNetCampus
 
AZURE NOTIFICATION HUB
AZURE NOTIFICATION HUBAZURE NOTIFICATION HUB
AZURE NOTIFICATION HUBDotNetCampus
 
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMSSFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMSDotNetCampus
 
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOTUNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOTDotNetCampus
 
SFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APP
SFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APPSFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APP
SFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APPDotNetCampus
 
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!DotNetCampus
 
AZURE WEBSITE DEEPDIVE
AZURE WEBSITE DEEPDIVEAZURE WEBSITE DEEPDIVE
AZURE WEBSITE DEEPDIVEDotNetCampus
 
INTERNET OF THINGS & AZURE
INTERNET OF THINGS & AZUREINTERNET OF THINGS & AZURE
INTERNET OF THINGS & AZUREDotNetCampus
 
JAVASCRIPT TASK AUTOMATION
JAVASCRIPT TASK AUTOMATIONJAVASCRIPT TASK AUTOMATION
JAVASCRIPT TASK AUTOMATIONDotNetCampus
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDDotNetCampus
 
Programmazione asincrona in java script
Programmazione asincrona in java scriptProgrammazione asincrona in java script
Programmazione asincrona in java scriptDotNetCampus
 
Windows iot barone
Windows iot baroneWindows iot barone
Windows iot baroneDotNetCampus
 

More from DotNetCampus (16)

TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015
 
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDIDESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
 
WINDOWS PHONE APPS IN C++
WINDOWS PHONE APPS IN C++WINDOWS PHONE APPS IN C++
WINDOWS PHONE APPS IN C++
 
AZURE NOTIFICATION HUB
AZURE NOTIFICATION HUBAZURE NOTIFICATION HUB
AZURE NOTIFICATION HUB
 
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMSSFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
 
INTRO TO XAMARIN
INTRO TO XAMARININTRO TO XAMARIN
INTRO TO XAMARIN
 
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOTUNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
 
SFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APP
SFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APPSFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APP
SFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APP
 
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
 
AZURE WEBSITE DEEPDIVE
AZURE WEBSITE DEEPDIVEAZURE WEBSITE DEEPDIVE
AZURE WEBSITE DEEPDIVE
 
INTERNET OF THINGS & AZURE
INTERNET OF THINGS & AZUREINTERNET OF THINGS & AZURE
INTERNET OF THINGS & AZURE
 
JAVASCRIPT TASK AUTOMATION
JAVASCRIPT TASK AUTOMATIONJAVASCRIPT TASK AUTOMATION
JAVASCRIPT TASK AUTOMATION
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
 
Programmazione asincrona in java script
Programmazione asincrona in java scriptProgrammazione asincrona in java script
Programmazione asincrona in java script
 
Windows iot barone
Windows iot baroneWindows iot barone
Windows iot barone
 
Unity3 d uitools
Unity3 d uitoolsUnity3 d uitools
Unity3 d uitools
 

Recently uploaded

Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxlorenzodemidio01
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaSalvatore Cianciabella
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxlorenzodemidio01
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoyanmeng831
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxlorenzodemidio01
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxlorenzodemidio01
 
Confronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptConfronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptcarlottagalassi
 

Recently uploaded (7)

Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 
Confronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptConfronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.ppt
 

CONTINUOUS INTEGRATION CON SQL SERVER

  • 1. Template designed by Continuous Integration su SQL Server Alessandro Alpi Alessandro.alpi@engageitservices.it alessandro.alpi@engageitservices.it
  • 2. Alessandro Alpi MVP SQL Server dal 2008 DBA | Team leader @suxstellino [eng] http://suxstellino.wordpress.com [ita] http://blogs.dotnethell.it/suxstellino chi sono
  • 3. Continuous Integration?! Source Control Build Unit Testing Conclusioni Q&A agenda
  • 4. È una pratica che consiste nell’allineamento frequente (più volte al giorno) degli ambienti di lavoro di sviluppo verso l’ambiente condiviso. Si applica in contesti in cui lo sviluppo avviene tramite un sistema vi versioning (version control system). (fonte Wikipedia) Che cosa si intende con Continuous Integration?
  • 5. Continuous Integration, workflow.. Immagine: www.simple-talk.com Sviluppo Commit/Checkin Trigger della Build Build del database Creazione del package Test sul database
  • 6. Check-in frequenti durante la giornata Merge dei cambiamenti per ogni check-in Evitare la «rottura» delle build Comunicare l’eventuale «rottura» a tutto il team (evitare get) Fare check-in solo se la build è «riparata» Notificare quando è possibile fare una get da source control Continuous Integration, best practices
  • 7. Poter fare get/commit dei cambiamenti come per il codice Le build costruiscono una sandbox su cui eseguire i test Commit frequenti sulla linea principale come per il codice Rendere atomici database e applicazione Sfruttare strumenti condivisi (Visual Studio, Team Explorer) Continuous Integration e database
  • 8. Annulla la problematica «sul mio pc funziona»  Consente l’automazione dei processi Migliora la qualità del codice (proprio per i processi frequenti) Rende subito disponibile il sorgente/db ad un nuovo dev Non dimentica nessuna linea di sviluppo Separa il deploy dallo sviluppo Aumenta la visibilità del «prodotto» Vantaggi della Continuous Integration
  • 10. Gestore delle versioni cambiamenti del nostro codice (ddl, programmabilità) cambiamenti di altri elementi (snippet, strumenti dev) cambiamenti sui dati «statici» Entità condivisa in sviluppo (e team management) Dotato di interfaccia (anche grafica) Può sembrare scomodo su database Source control manager
  • 11. Come potremmo semplicemente gestire le fix? Come creare velocemente più ambienti di sviluppo? Come utilizzare versioni differenti dello stesso DB? Come sincronizzare il DB nel team (se non centralizzato)? Ma senza un Source Control Manager?
  • 12. Il database è codice (programmabilità, ddl, grant, ecc.) Le tabelle di «dominio» sono come tanti enum (dati statici) I puntamenti ai linked server sono configurazioni (app.config) Le server login sono configurazioni di ambiente Grande differenza: Il database persiste i dati utente. DB vs. Codice
  • 13. Visual Studio Database Projects Red-Gate Source Control ApexSQL Source Control … Management studio non basta! Unitamente al Team Explorer (per chi usa Visual Studio) Strumenti
  • 14. Indipendentemente dal tool che si usa Team Explorer consente: Migliore gestione dei changeset Migliore associazione dei changeset ai task Miglior controllo sulle fasi di commit e di review Gestione centralizzata delle policy di checkin Single point per la gestione del team project Il Team Explorer
  • 15. demo Management Studio + Red Gate SQL Source Control con Visual Studio Online
  • 16. E ora scriviamo qualche test..
  • 17. 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) Unit testing
  • 19. Testare funzionalità mission-critical di business Sviluppo evolutivo Per capire precocemente alcuni bug Supporto di alert automatici Per prevenire regressioni il più possibile Avere copertura di test Scrivere in maniera «testabile» i nostri metodi Unit testing, perché?
  • 20. «Fix dei bug non appena trovati» I bug non fixati camuffano potenzialmente 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 Unit testing, perché?
  • 21. Calcoli in procedure e funzioni Constraint (schema) Casi limite e comportamenti attesi sui dati Sicurezza Standard Cosa testare?
  • 22. Framework tSQLt tSQLUnit (consigliato per SQL Server 2000) SQLCop (per gli standard e le metriche) Tools SQLTest di Red-Gate (tSQLt + SQLCop) Unit test project con Visual Studio Strumenti per il test
  • 23. Free framework (open source) T-SQL Necessita di SQLCLR abilitato Comprende le asserzioni più comuni Self-contained con transazioni isolate Versatile Piuttosto simile a xUnit tSQLt
  • 24. 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* tSQLt – com’è fatto?
  • 25. demo tSQLt con SQL Test su Management Studio
  • 27. Build codice = compilazione automatica dopo check-in Build database: Parte al check-in dei changeset Crea un package (nuget in questo caso) Crea un database per i test Valida gli oggetti creati Build (cenni)
  • 28. Red Gate SQL CI + plugin TFS + Script SC (DLM Automation Suite) 1) Al check-in su source control fa partire la build 1) Crea automaticamente un database per i test 1) Crea un package nuget 2) Esegue i test 3) Allinea il package su db di QA/Staging 4) Pubblica il package su un nuget feed Automazione
  • 30. Capire quale source control è il migliore per noi: già utilizzato in passato? servizio oppure on-premises? costi? Capire quale strumento per gestire il source control del database: curva di apprendimento dell’IDE usato costi comodità (dati statici, filtri, team management) Conclusioni
  • 31. Per il testing: Esistono tool per testare Esiste la possibilità di isolare È semplice creare un database nuovo su cui testare Miglioriamo la qualità del nostro software Preveniamo le regressioni Conclusioni
  • 32. Quindi.. Perché non usare un source control?! Perché non testare?! 
  • 33. Automatizzare = Meno spreco di tempo + qualità Immagine: www.simple-talk.com Sviluppo Commit/Checkin Trigger della Build Build del database Test sul database Creazione del package
  • 34. Grazie a tutti per la partecipazione! Riceverete il link per il download a slide e demo via email nei prossimi giorni Per contattarmi alessandro.alpi@engageitservices.it Grazie
  • 35. Source control resources https://msdn.microsoft.com/it-it/library/dn894015.aspx (Article on Source Control) http://www.red-gate.com/products/sql-development/sql-source-control/ http://apexsql.com/sql_tools_source_control.aspx http://suxstellino.wordpress.com/tag/alm/ http://blogs.dotnethell.it/suxstellino/Category_2927.aspx Unit testing resources http://www.red-gate.com/products/sql-development/sql-test/ http://tsqlt.org/ http://sourceforge.net/projects/tsqlunit/ https://msdn.microsoft.com/it-it/library/mt169842 (Article on Unit Testing) http://en.wikipedia.org/wiki/Unit_testing https://www.simple-talk.com/sql/t-sql-programming/getting-started-testing-databases-with-tsqlt/ https://github.com/chrisoldwood/SS-Unit CI resources http://msdn.microsoft.com/it-it/library/dn383992.aspx (Article on CI) http://www.red-gate.com/products/dlm/dlm-automation-suite/ http://www.red-gate.com/products/dlm/dlm-automation-suite/sql-ci http://www.red-gate.com/products/dlm/dlm-automation-suite/sql-release http://documentation.red-gate.com/display/DAS/DLM+Automation+Suite Risorse