Unit Test: Un tipo di test del software in cui vengono testate singole di un software. Lo scopo è convalidare che ogni unità del codice software funzioni come previsto. Lo Unit Testing viene eseguito durante lo sviluppo (fase di codifica) di un'applicazione da parte degli sviluppatori. Essi isolano una sezione di codice e ne verificano la correttezza.
Unità : può essere una singola funzione, metodo, procedura, modulo o oggetto. La definizione di unità è decisa team by team
Una primissima introduzione al TDD per chi è a digiuno di test in generale e di TDD in particolare. Usa Java/Junit, ma è facimente adattabile ad altri linguaggi. 40-60 minuti.
Test, Tools and Tips per tester e non.
Consigli su come affrontare il testing e come comportarsi con applicazioni di tipo web, con scenari e possibili soluzioni con vari tools a disposizione
Una panoramica sui test automatizzati con un pò di teoria su come approciarsi.
Ed infine una panoramica su Serenity BDD, tool utilizzato per creare i test automatizzati
Le operazioni di testing possono richiedere molto tempo e possono implicare ingenti costi per le imprese. Per questo motivo è di fondamentale importanza individuare sul mercato le migliori soluzioni disponibili, al fine di ridurre al minimo gli effort impiegati per testare le proprie applicazioni.
TestComplete di SmartBear centra appieno questi obiettivi: TestComplete, infatti, offre una piattaforma di test per creare, eseguire e mantenere in modo semplice test automatici per applicazioni software di tipo desktop, Web, mobile, e client-server, favorendo un’elevata riduzione dei tempi e dei costi dedicati alle operazioni di testing.
In questo webinar uno dei Testing Guru di Emerasoft mostra come sfruttare al meglio le potenzialità offerte dal testing automatico grazie all’utilizzo di TestComplete.
Guarda il webinar on demand: https://www.youtube.com/watch?v=N7aTTfSoREI
Quando si scrivono i test, la corretta gestione delle dipendenze (Dependency Injection) è uno degli aspetti più rilevanti e molte volte le best practices per l’utilizzo di un Dependency injector ed una libreria di Mocking sono le stesse.
In questa presentazione si cerca di capire quando un Dependency injector rappresenta un Anti-pattern e quando invece diventa un valido strumento professionale per risparmiare tempo, ridurre gli errori, scrivere meno codice e rendere l’applicazione molto flessibile.
Tutto questo però senza sacrificare il design dei nostri oggetti e legarci in modo indissolubile ad un framework.
Le pratiche ingegneristiche di eXtreme ProgrammingAndrea Francia
Ìý
Le pratiche ingegneristiche sono il sottoinsieme delle pratiche descritte nei libri di eXtreme Programming che hanno direttamente a che fare con le modalità con cui si scrive/progetta/verifica il software.
Esse sono:
- il Simple Design
- il Test-Driven Development
- la Continuous Integration
- il Refactoring, e
- il Pair Programming.
Sono famose di nome, ma non sempre è possibile venire a contatto con una loro definizione corretta, ed è facile farsi un'idea sbagliata di cosa siano e trovare problemi ad applicarle in modo efficace alla propria situazione.
Spiegherò come ognuna di queste pratiche possono aiutarci nello sviluppo software portando esempi presi dal mio lavoro quotidiano o dal lavoro di altre persone con cui sono venuto in contatto.
PASS Virtual Chapter - Unit Testing su SQL ServerAlessandro Alpi
Ìý
Con quanto segue andremo ad approfondire il concetto di unit test e, nella fattispecie, del testing tramite il framework free tSQLt, utilizzando t-sql e SQL Server Management Studio.
Gestire l’infrastruttura come se fosse codice, ha degli indubbi vantaggi, soprattutto in un team agile che ha più esperienze Dev piuttosto che Ops.
In questa sessione vi racconteremo la nostra esperienza, problemi, vantaggi e cosa abbiamo imparato.
Lo unified tooling è l’area di interesse DevOps che fonde pratiche di software development a quelle di system administration, con lo scopo di semplificare il processo di deployment di ambienti complessi. In questo talk vengono esposte le esperienze di un team di dev che è riuscito a gestire e replicare ambienti complessi, ricorrendo a strumenti e pratiche delle metodologie agili. Saranno evidenziati i vantaggi ottenuti e le problematiche riscontrate.
Delphi & Dintorni Webinar - Diventa un mago del TestingMarco Breveglieri
Ìý
Il Testing è una pratica sempre più preziosa e fondamentale nell'ambito dello sviluppo del software: si tratta di un passaggio fondamentale per ridurre il numero dei bug nel software e abilitare automatismi come la Continuous Integration e la Continuous Delivery. Se utilizzati in modo errato però, i test possono causare più problemi di quanti ne prevengano: è importante quindi conoscere le differenze tra le varie tipologie di test, quali sono le loro caratteristiche ideali e padroneggiarli al meglio. In questo webinar faremo luce sul Testing, chiariremo bene i concetti di Unit e Integration Test, vedremo come scriverli nel modo corretto e quali tool ci vengono in aiuto... alla fine il Testing non avrà più segreti!
Test, Tools and Tips per tester e non.
Consigli su come affrontare il testing e come comportarsi con applicazioni di tipo web, con scenari e possibili soluzioni con vari tools a disposizione
Una panoramica sui test automatizzati con un pò di teoria su come approciarsi.
Ed infine una panoramica su Serenity BDD, tool utilizzato per creare i test automatizzati
Le operazioni di testing possono richiedere molto tempo e possono implicare ingenti costi per le imprese. Per questo motivo è di fondamentale importanza individuare sul mercato le migliori soluzioni disponibili, al fine di ridurre al minimo gli effort impiegati per testare le proprie applicazioni.
TestComplete di SmartBear centra appieno questi obiettivi: TestComplete, infatti, offre una piattaforma di test per creare, eseguire e mantenere in modo semplice test automatici per applicazioni software di tipo desktop, Web, mobile, e client-server, favorendo un’elevata riduzione dei tempi e dei costi dedicati alle operazioni di testing.
In questo webinar uno dei Testing Guru di Emerasoft mostra come sfruttare al meglio le potenzialità offerte dal testing automatico grazie all’utilizzo di TestComplete.
Guarda il webinar on demand: https://www.youtube.com/watch?v=N7aTTfSoREI
Quando si scrivono i test, la corretta gestione delle dipendenze (Dependency Injection) è uno degli aspetti più rilevanti e molte volte le best practices per l’utilizzo di un Dependency injector ed una libreria di Mocking sono le stesse.
In questa presentazione si cerca di capire quando un Dependency injector rappresenta un Anti-pattern e quando invece diventa un valido strumento professionale per risparmiare tempo, ridurre gli errori, scrivere meno codice e rendere l’applicazione molto flessibile.
Tutto questo però senza sacrificare il design dei nostri oggetti e legarci in modo indissolubile ad un framework.
Le pratiche ingegneristiche di eXtreme ProgrammingAndrea Francia
Ìý
Le pratiche ingegneristiche sono il sottoinsieme delle pratiche descritte nei libri di eXtreme Programming che hanno direttamente a che fare con le modalità con cui si scrive/progetta/verifica il software.
Esse sono:
- il Simple Design
- il Test-Driven Development
- la Continuous Integration
- il Refactoring, e
- il Pair Programming.
Sono famose di nome, ma non sempre è possibile venire a contatto con una loro definizione corretta, ed è facile farsi un'idea sbagliata di cosa siano e trovare problemi ad applicarle in modo efficace alla propria situazione.
Spiegherò come ognuna di queste pratiche possono aiutarci nello sviluppo software portando esempi presi dal mio lavoro quotidiano o dal lavoro di altre persone con cui sono venuto in contatto.
PASS Virtual Chapter - Unit Testing su SQL ServerAlessandro Alpi
Ìý
Con quanto segue andremo ad approfondire il concetto di unit test e, nella fattispecie, del testing tramite il framework free tSQLt, utilizzando t-sql e SQL Server Management Studio.
Gestire l’infrastruttura come se fosse codice, ha degli indubbi vantaggi, soprattutto in un team agile che ha più esperienze Dev piuttosto che Ops.
In questa sessione vi racconteremo la nostra esperienza, problemi, vantaggi e cosa abbiamo imparato.
Lo unified tooling è l’area di interesse DevOps che fonde pratiche di software development a quelle di system administration, con lo scopo di semplificare il processo di deployment di ambienti complessi. In questo talk vengono esposte le esperienze di un team di dev che è riuscito a gestire e replicare ambienti complessi, ricorrendo a strumenti e pratiche delle metodologie agili. Saranno evidenziati i vantaggi ottenuti e le problematiche riscontrate.
Delphi & Dintorni Webinar - Diventa un mago del TestingMarco Breveglieri
Ìý
Il Testing è una pratica sempre più preziosa e fondamentale nell'ambito dello sviluppo del software: si tratta di un passaggio fondamentale per ridurre il numero dei bug nel software e abilitare automatismi come la Continuous Integration e la Continuous Delivery. Se utilizzati in modo errato però, i test possono causare più problemi di quanti ne prevengano: è importante quindi conoscere le differenze tra le varie tipologie di test, quali sono le loro caratteristiche ideali e padroneggiarli al meglio. In questo webinar faremo luce sul Testing, chiariremo bene i concetti di Unit e Integration Test, vedremo come scriverli nel modo corretto e quali tool ci vengono in aiuto... alla fine il Testing non avrà più segreti!
DotNetCampus - Continuous Integration con Sql ServerAlessandro Alpi
Ìý
Continuous Integration con SQL Server. Come automatizzare i processi di build e di test su database SQL Server. Come includere SQL Server nei processi di Application Lifecycle Management (Database Lifecycle Management).
La continuous integration, ovvero un insieme di pratiche di sviluppo atte a rilasciare frequentemente le modifiche al nostro codice, può essere applicata anche a SQL Server. In questa sessione andremo a descrivere come mettere sotto controllo del codice sorgente i nostri database in un'ottica di teamwork e, successivamente, a capire come automatizzare il processo di test unitario al fine di prevenire regressioni e correggere quanto prima bug.
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...Boymix81
Ìý
Breve presentazione del lavoro svolto per la tesi : STRUMENTI PER LA GENERAZIONE AUTOMATICA DI TEST STRUTTURALI E FUNZIONALI, scaricabile dal sito web http://boymix81.mynickname.info
PASS Virtual Chapter - SQL Server Continuous IntegrationAlessandro Alpi
Ìý
Build automatizzate, esecuzione di unit test, creazione di un pacchetto nuget, ecco cosa serve per essere pronti con SQL Server e la continuous integration
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...Alessandro Alpi
Ìý
In questa serie di slide vedremo come creare i build step su Visual Studio Team Services sfruttando gli add-on forniti da Red Gate, come DLM Automation 2: Build.
Lo Unit Test è importante per testare gli aspetti di base di un qualsiasi applicativo PHP.
Con il framework PHPUnit noi possiamo effettuare test di unità senza problemi e senza notevoli sforzi.
This document discusses developing a containerized application and deploying it to the cloud. It notes that Kubernetes requires significant knowledge even for simple application releases. It then lists features of Azure Container Apps such as running containers, auto-scaling, HTTPS ingress without additional infrastructure, traffic splitting for deployments, internal service discovery, and using Dapr microservices. The document also covers ingress, service discovery, blue/green deployments with revisions, an example lab architecture, and a real project scenario. It concludes by providing a link to a sample container app project.
How to develop modern web application, with no money and nod javascriptAndrea Tosato
Ìý
This document discusses how to develop modern web applications using Azure services with no money and no JavaScript. It introduces Azure Content Delivery Network (CDN) for caching and delivering static assets quickly. It also discusses using Azure Static Websites to host static websites, Blazor for building client-side web UI using C#, and Azure Functions for serverless computing. Other topics covered include using Durable Functions for orchestrating long-running workflows, Entity Framework Core for working with Cosmos DB database, and taking advantage of the free tiers of Azure Functions and Cosmos DB.
Entity framework core v3 from sql to no sqlAndrea Tosato
Ìý
Entity framework core v3, from SQL to NoSql.
Marco Minerva and Andrea Tosato samples: https://github.com/andreatosato/Entity-FrameworkCore3-from-SQL-2-NoSQL
Mixing Identity server, AAD, ASP .NET IdentityAndrea Tosato
Ìý
This document provides an overview of IdentityServer, including where to get started, key terminology, differences between identity and access tokens, extension grants, cookies, seed data, ASP.NET Core Identity entities, migrations, and integrating with Azure Active Directory. Templates are available to generate IdentityServer projects. Key concepts covered include users, clients, resources, API resources, identity resources, and the userinfo endpoint. Differences between identity tokens and access tokens are defined.
UI Testing, Performance Testing, Load Testing. I test meno utilizzati nel mondo dello sviluppo.
Strumenti ed esempi per lo sviluppo.
Codice disponibile qui: https://github.com/andreatosato/DOH2019
Local session of dotNetConf2019.
News of .NET Core 3.0 and some new feature of .NET Core 3.1.
Blazor, gRPC, SignalR, Compilation Types, Worker Service, Docker images and so on.
More info on cloudgen.it (Cloudgen Verona).
Demo on: https://github.com/cloudgenverona/dotnetconf2019
Deep Dive Azure Functions - Global Azure Bootcamp 2019Andrea Tosato
Ìý
This document summarizes key differences between Azure Functions version 1 and 2. Version 2 offers improvements like .NET Core support instead of just .NET Framework, ability to isolate assemblies, and support for additional languages like Python and Node.js version 10. It also describes deployment options, new bindings for inputs and outputs, and premium plans that enable configuring minimum and maximum instance counts and using virtual networks. Durable Functions are demonstrated for orchestrating function apps.
Come gestire workflow complessi con Azure Durable Functions, un nuovo framework che consente di gestire functions complesse e scalare le proprie applicazioni.
Deploy multi-environment application with Azure DevOpsAndrea Tosato
Ìý
Nella sessione presentata allo scorso Digital Innovation Saturday di Pordenone (26/01/2019), ho presentato Azure DevOps e le funzionalità principali.
Infine ho mostrato come rilasciare aggiornamenti applicativi e database con un paio di demo.
Materiale presentato al Digital Innovation Saturday di Pordenone (26/01/2019).
Nella presentazione vengono esposti i motivi per utilizzare i Cognitive Service su Container, il tutto corredato da qualche demo disponibile su GitHub.
SignalR was created in 2011 and brought into the ASP.NET project in 2013 to address issues with real-time communication over the web. It was rewritten in 2018 to no longer rely on jQuery and to support cross-platform usage. SignalR uses various transport protocols like WebSockets, Server-Sent Events, and long polling to provide real-time functionality like broadcasting, multicasting, groups and bidirectional communication in a scalable way both on-premises and in the cloud using services like Azure SignalR Service.
Microcharts is a simple charting library for multiple platforms that uses shared code and rendering across platforms. It allows creating charts in a few steps and is built on top of the SkiaSharp library, which provides 2D graphics capabilities that work across different hardware and software using common APIs. The Microcharts library is not intended to have heavy customization but serves as an easy way to add basic charts like bars, donuts, lines, points, radar and radial gauges.
Introduzione allo sviluppo cross-platform mobile con Xamarin e Xamarin.Forms. Spiegazione dell'engine di Xamarin e della relazione con (Android, iOS, Windows).
4. 4
Svantaggi
• Richiede molto tempo di sviluppo (tempo = costo!)
• Richiede enorme pazienza al team di sviluppo
• Necessita di una rigorosa documentazione
• Non è possibile testare tutti gli input e gli scenari
come nel mondo reale
9. 9
Ciclo di vita del codice
• Unit test è un segmento di
codice utilizzato per testare un
pezzo di codice applicativo
• Verifica se il codice:
o Rispetta i requisiti e il design
o Si comporta come previsto
o Aiuta a identificare gli
algoritmi e lo logiche errate
10. 10
I componenti fondamenti di un test
• Il test deve essere leggibile
• Il test deve essere veritiero
• Il test deve essere mantenibile
• Il test deve essere ISOLATO
• Il test deve essere veloce
• Il test si deve documentare da se (nomenclatura)
• Il test non deve contenere logica
11. 11
Manual vs Automated
• Test automatizzati
 Decrementano
drammaticamente il numero di
difetti del codice
 Migliorano il disegno app.
 Sono una buona
documentazione
 Riducono il costo ai
cambiamenti
 Consento refactoring
• Test manuali
Richiede una persona
designata ai test ad ogni
release
Meno efficiente
Non strutturato
Non ripetibile
Non comprensibile
rispetto al codice
12. 12
Tipi di test
End to end (black-box)
Difficili da scrivere e da eseguire.
Riscontrano malfunzionamenti grafici
Functional test
Semplici da scrivere
Trovano bug di media importanza
Unit test
Semplici da scrivere
Trovano bug di logica
16. 17
TDD
• Stile di sviluppo/ progettazione
• Non è una tecnica di testing.
• La programmazione e lo unit test non sono attivitÃ
separate.
Si scrive prima un test che fallisce, e poi si scrive il relativo codice.
Differisce dagli approcci tradizionali, in cui prima si scrive il codice e poi (forse) lo si testa.
17. 18
Vantaggi del TDD
• Permette di scrivere software migliore e più rapidamente
(costruendo software in piccoli incrementi- 1 test alla volta)
• Evita il procedere per tentativi
• Produce codice pulito e che funziona (in modo opposto allo
sviluppo architecture driven, in cui si fanno prima tutte le
decisioni).
• Consente agli sviluppatori di produrre un insieme di test di
regressione automatizzabili, man mano che sviluppano.
• Riduce il tempo per la correzione dei difetti
20. 21
Red/Green/Refactor pattern
Red Scrivi un Test che fallisce.
Green Scrivi il codice per soddisfare il test.
Refactor Migliora il codice senza cambiarne la
funzionalità .
Ripeti.
21. 22
AAA pattern
• Arrange
Creazione dell’ambiente applicativo che
si vuole testare.
• Act
Esecuzione del codice che si vuole
testare
• Assert
Verifica e validazione dei risultati
ottenuti
[TestMethod]
public void NoNewMessages()
{
//Arrange
Mailbox mailbox = new Mailbox();
//Act
var result = mailbox.GetCount(0);
//Assert
Assert.AreEqual("No new messages.", result);
}
24. 25
Unit test
Non è Unit Test se:
• comunica con il database
• comunica in rete o servizi terze parti
• non può essere lanciato in parallelo ad altri test
• utilizza il filesystem
25. 26
Unit test
Unit Test se:
• non comunica con il database
• non comunica in rete o servizi terze parti
• può essere lanciato in parallelo ad altri test
• non utilizza il filesystem
• dovrebbe durare massimo 1 secondo
26. 27
Unit test
Inoltre…
• Scritto ed eseguito dai sviluppatori
• Obiettivo: separare ciascuna parte e testare singolarmente
• Eseguito prima delle integrazioni
• Considera di utilizzare dei White-Box
• IntelliTest https://www.microsoft.com/en-us/research/project/pex-and-moles-isolation-and-white-box-unit-testing-for-net/
• Utilizza le asserzioni per verificare le esecuzioni del codice
34. 35
Nomenclatura
Stubs (variante test doubles)
Fornisce un comportamento fissato (metodi che tornano
sempre lo stesso valore).
Viene usato per controllare l'"input indiretto" del codice sotto
test.
35. 36
Nomenclatura
Mock (variante spy)
Memorizza esplicitamente le aspettative sul comportamento del
codice sotto test, e verificare lo stato.
Comportamento programmabile, che simula quello
dell'oggetto reale
36. 37
Mock vs Stub
In genere lo stub è molto più semplice di un Mock-Object.
Gli stub forniscono risposte preconfezionate, e nulla che sia al di
fuori di ciò che è previsto per il test.
I mock hanno implementazioni più sofisticate che consentono di
verificare il comportamento dell’unità testata (e non solo lo stato)
verificando ad esempio le collaborazioni avute con altri oggetti
ed il relativo ordine di esecuzione. Possono verificare se l’oggetto
che li usa lo fa correttamente. Testano unità senza legarsi ad
oggetti esterni.
37. 38
La classe Client (da testare) usa i metodi di Helper.
Vogliamo controllare direttamente ciò che Helper restituisce a Client
42. 43
Continuous testing
È una pratica di sviluppo software in cui i membri del team di
sviluppo integrano il proprio lavoro frequentemente, almeno una
volta al giorno. Ogni integrazione è verificata da strumenti
automatici che eseguono il build e riesegueno tutti i test sulla
nuova configurazione, per trovare errori di integrazione
rapidamente.
43. Click to edit Master title style
Demo
VSTS – continuous testing