Pillole di TFS/VSTS: pubblicazione risultati test in una build

Dall’introduzione del Visual Studio Test Runner, estendibile con plugin, non si ha più la difficoltà di eseguire Unit Test differenti da MSTest durante una build. Tradizionalmente le difficoltà incontrate erano due

-) Eseguire i test a riga di comando con una personalizzazione della build
-) Convertire il risultato dei test nel formato MSTest affinché potesse essere incluso nel risultato di una build.

Ora che i test NUnit o xUnit possono essere eseguiti direttamente con il test runner standard, si può utilizzare l’azione di esecuzione test nella build, avendo l’accortezza di avere incluso il package Nuget per il test runner apposito nel progetto di test.

image

E’ sufficiente aggiungere il package Nuget del test runner ad un progetto di test ed utilizzare il task build standard Test Assemblies per eseguire gli Unit Test durante la build.

Nel nuovo TFS / VSTS, la parte di esplorazione dei risultati dei test è stata molto migliorata, ed è quindi fondamentale che il risultato degli Unit Test sia correttamente associato alla build.

image

Ma cosa succede se per qualsiasi ragione non sia possibile utilizzare l’azione standard di esecuzione test? Ad esempio i test potrebbero essere eseguiti in altre macchine direttamente da riga di comando con esecuzione remota, oppure i test potrebbero essere eseguiti con un framework custom.

Nel nuovo sistema di build è presente un task dedicato appositamente all’upload dei risultati di test verso VSTS / TFS, chiamato appunto Publish Test Results.

image

L’aspetto più interessante di questo task è che comprende molteplici formati di output, tra cui NUnit JUnit e XUNit nativo.

image

In questo modo, anche se avete un framework di Unit Test custom per soddisfare esigenze particolari è sufficiente ad esempio fornire un output standard di tipo NUnit (https://github.com/nunit/docs/wiki/Test-Result-XML-Format) per poterlo associare direttamente alle vostre build.

Gian Maria.

Creare un clone dell’istallazione di produzione di TFS con TFS “15”

Ho appena bloggato nel blog inglese una grossa novità dell’installer della nuova versione di TFS, che per ora è identificata con il nome TFS “15”. Nel nuovo wizard è presente una opzione per automatizzare tutte le procedure di creazione di un clone o istanza di Pre-Produzione del vostro TFS.

La necessità di clonare l’ambiente è necessaria in molti scenari, prima di tutto vi permette di validare le procedure di upgrade, in questo caso create un clone del vostro TFS, eseguite le procedure di upgrade sul clone e poi con tutta calma potete verificare che dopo l’upgrade tutto funzioni correttamente.

Un altro scenario tipico è lo sviluppo di estensioni per TFS, perchè con un ambiente Clonato potete sviluppare e testare i vostri plugin o il vostro software su un clone esatto dei dati di produzione, senza interagire con il server di Produzione.

Potete leggere il post integrale nel mio blog inglese che trovate a questo indirizzo, nel quale ho aggiunto anche altri semplici consigli per minimizzare il rischio che l’ambiente Clonato possa interagire con l’ambiente di Produzione generando confusione e problemi.

Gian Maria.

Posted in ALM

Nuovo update di VSTS–7 luglio

Un altro sprint è stato deployato in Visual Studio Team Services il 7 luglio e dovrebbe ora essere disponibile per tutti gli account. Come sempre il team ha pubblicato un post con tutte le novità, ed in questo sprint sono state fatte molte modifiche alla ui ed alla usabilità.

Un aspetto interessante è l’inclusione del code coverage dei test eseguiti durante la build, metrica interessante per tutti i team che fanno uso estensivo di unit testing.

Tutte le restanti modifiche sono relativamente piccoli miglioramenti e potete quindi leggerli nel post originale.

Gian Maria.

Posted in ALM

Aggiornamento VSTS del 17 giugno

Questa volta l’aggiornamento è stato più rapido del previsto, il 17 giugno abbiamo avuto un altra wave di aggiornamenti su Visual Studio Team Service. Come sempre potete leggere tutti i dettagli nel blog ufficiale, qui vi farò un riassunto delle mie nuove funzionalità preferite.

Innanzitutto se avete un team corposo ed usate GitFlow è possibile che il numero delle branch in Git diventi elevato, per questo nel tab delle branches è ora disponibile una sezione “my branches” dove vedrete le branch che avete creato voi o a cui avete contribuito. In questo modo è immediato distinguere le vostre branch da quelle di altri componenti del team.

Branch picker featuring Mine

Un’altra importante novità è un nuovo header per la form dei Work Item, in particolare è ora presente in molta evidenza il bottone “Save & Close” che sicuramente è quello più utilizzato, dato che molto spesso dopo che si apre un Work Item se lo si modifica si vuole semplicemente chiudere salvando le modifiche effettuate.

Improved work item header

Per tutti coloro che usano le funzionalità di Test ed in particolare le exploratory sessions, è ora finalmente possibile avere una visualizzazione chiara di tutte le exploratory session effettuate sul progetto.

Insights in exploratory testing

Nell’addin di Chrome è ora possibile anche richiedere la registrazione del desktop da includere in un eventuale bug.

Un’altra interessantissima funzionalità è la possibilità di vedere l’andamento dei test per singole branch, questo è molto importante perché cosi si ha la chiara indicazione della qualità delle varie branch

History tab in the result summary page

La funzionalità sicuramente più corposa è però data dalla possibilità di personalizzare il Process Template introducendo stati custom. Questa funzionalità ha un intero post dedicato all’argomento, e costituisce un ulteriore importante passo verso la parità di funzionalità tra VSTS e TFS. Questo permette quindi di avere colonne personalizzabili nella Task Board, grazie alla possibilità di aggiungere stati al Work Item di tipo Task. Non è ancora possibile personalizzare in maniera avanzata le transizioni tra stati (con regole o decidere quali transizioni sono possibili), ma già questa funzionalità rende possibile personalizzare VSTS in modo che si adatti maggiormente alle vostre esigenze.

Per chi sviluppa Java invece è ora possibile effettuare analisi di codice direttamente da un task Maven, senza la necessità di impostare un server Sonar Qube, anche questa funzionalità è abbastanza corposa e descritta in dettaglio in un post dedicato.

Vi invito comunque a leggere il post ufficiale in modo da vedere tutte le novitĂ  disponibili.

Gian Maria.

Posted in ALM

Usare Azure come PAAS e non come IAAS

Si parla tanto di Cloud in questi periodi, e spesso purtroppo l’adozione del Cloud non viene fatto, a mio avviso, nel modo giusto.

Ad esempio, parlando di Azure, se si inizia l’approccio spostando e creando Virtual Machines su Azure il risultato non sempre è piacevole. Se una azienda ha già il suo sistema di virtualizzazione (vmware o Hyper-V) l’avere le VM su Azure non da vantaggi tangibili, soprattutto considerando la banda che abbiamo in Italia.

Se si vuole veramente avvantaggiarsi del Cloud, bisogna approcciare il problema da un punto di vista differente. Per fare un esempio prendo un post scritto dal caro amico Matteo (http://mattvsts.blogspot.it/2016/06/a-simple-vsts-based-pipeline-for-java.html) che spiega come creare una pipeline di Build –> Test –> Release di una app Java in un Azure Web Site.

In questo caso ci stiamo avvantaggiando del cloud in molti punti, e l’esperienza di Matteo è stata molto positiva dal punto di vista dell’operational. Pur non essendo un esperto in java, ma avendo semplicemente un progetto Java con una build di Maven è riuscito in poco tempo a mettere in produzione il prodotto automatizzando tutto il processo.

I vantaggi sono molti

1) Usiamo VSTS, per cui non piĂą sorgenti in casa, abbiamo tutti i tool che servono per la pipeline di sviluppo nel cloud, zero manutenzione
2) Stiamo adottando un approccio DevOps, dove abbiamo automatizzato tutta la pipeline, senza dover mettere nulla in casa.
3) Stiamo rilasciando una applicazione Java standard (un War) per cui non ci stiamo legando a nessuna tecnologia proprietaria che deriva dal Cloud che abbiamo scelto (Azure).
4) Non dobbiamo gestire Tomcat perchè usiamo un approccio PAAS con Azure Web Sites.

Il punto 4 è quello che ci da vantaggio, non dobbiamo installare, manutenere Tomcat, non dobbiamo pensare a creare una infrastruttura di hosting ridondante che ci permetta di essere online 24/7 e soprattutto possiamo modificare le risorse del website a piacimento. Se abbiamo un ecommerce, nel periodo di Natale possiamo semplicemente aumentare le risorse e siamo a posto.

Se al contrario approcciamo il problema installando una VM su Azure dove mettere Tomcat … abbiamo perso in partenza, perchè non stiamo veramente sfruttando il cloud.

Gian Maria.

Posted in ALM

VSTS release del primo Giugno

Come sempre il team di VSTS ha rilasciato live un nuovo sprint, andato online il primo Giugno e quindi disponibile in tutti gli account in questi giorni (gli update sono attivati a tutti gli account incrementalmente). Come sempre potete leggere online tutti i dettagli in questo post, e qui vi darò un riassunto delle novità più interessanti.

Anche in questo sprint abbiamo un miglioramento della Kanban board, in questo update sono stati aggiunti i filtri, in modo che voi possiate velocemente filtrare e visualizzare solamente le Card che soddisfano particolari requisiti.

Setting filters on the Kanban board 

Per quanto riguarda Git, è ora disponibile il protocollo SSH per connettervi ai vostri repository. SSH è un protocollo oramai deprecato anche da GitHub, ma nondimeno è ancora molto utilizzato, e per questo VSTS lo mette ora a disposizione per tutti gli account.

Managing SSH connections to Git repos

Sempre riguardo Git, la pagina web delle branch è stata completamente ridisegnata, ed in particolare è stato aggiunto un tab “mine” che permette di visualizzare le branch dove l’utente corrente ha contribuito. Inoltre se la branch ha il carattere / nel nome, viene visualizzata come un albero. Questa funzionalità è molto interessante per tutti coloro che lavorano con GitFlow.

Branches page showing the Mine pivot

Sul fronte DevOps è stata introdotta l’integrazione con Docker per la build e soprattutto per il Release Management. Sul fronte della build è stata introdotta la possibilità di creare immagini Docker e di inviarle a Docker Hub. Tutte le nuove funzionalità per Docker sono disponibili con una estensione del marketplace.

Running a Docker image

L’estensione è scaricabile per essere usata con TFS 2015 on premise.

Per tutti coloro che usano Sonar Qube, per tutte le build effettuate su una pull request, e per le quali è attivata l’analisi su Sonar Qube, si possono vedere le code analysis direttamente come commenti al codice.

SonarQube analysis comments

Questa funzionalità, descritta in dettaglio in questo post, è particolarmente interessante, perchè effettua una analisi in modalità differenziale, ovvero viene analizzato solamente il codice nuovo, che quindi entrerebbe nella branch target. In questo modo si può validare la qualità del codice di una pull request, mantenendo molto alta la qualità del proprio codice.

Per tutti gli afficionados della continuous integration, è ora disponibile un Widget per le dashboard che permettono di visualizzare metriche interessanti per i test. In questo modo potrete avere sempre sottocchio tutta la parte di testing delle vostre build.

Test results trend widget

Come sempre queste sono solamente alcune delle novitĂ  rilasciate, per una lista completa rimando al post ufficiale https://www.visualstudio.com/news/2016-jun-1-vso

Happy VSTS.

Gian Maria.

Posted in ALM