Verifica e Validazione del Software

Documenti analoghi
Verifica e Validazione del Software

Test Driven Development (TDD) Test Driven Development 1

14. Verifica e Validazione

3. Ciclo di Vita e Processi di Sviluppo

Correzione degli errori

Verifica e Validazione del Software

Piano di Testing. Fontolan Federico Giacomazzi Andrea Yoshida Kotono Rosada Fabio

Prefazione...IX. Ringraziamenti...XIII. Gli autori...xv. Capitolo 1 - Le tecnologie mobili: la nuova generazione di tecnologie dell informazione...

Verifica e validazione: introduzione

Gestione dello sviluppo software Modelli Base

Ingegneria del Software

Lo sviluppo del progetto informatico

Modelli di processo. Marina Zanella - Ingegneria del Software Processo 1

REPERTORIO DELLE QUALIFICAZIONI PROFESSIONALI DELLA REGIONE CAMPANIA

Ingegneria del Software Agile Testing. Corso di Ingegneria del Software Anno Accademico 2012/13

La Raccolta dei Requisiti. Corso di Ingegneria del Software Anno Accademico 2012/2013

Il coinvolgimento del cliente finale nel processo produttivo dei servizi digitali: mito o realtà? Software Testing Forum 2016 Milano 16 Giugno

Strumenti per l automazione del testing di applicazioni web Javascript-based

Verifica parte IID. Test in grande. Test e modularità. Test di modulo

Collaudo del software

Pratiche di XP [Beck] Extreme Programming (XP) Story Card. Gioco di pianificazione

Usabilità e test a basso costo

Informatica. Progettazione ed implementazione di un tool per il supporto al debug nella pratica di sviluppo Test Driven

Analisi e specifica dei requisiti

Verifica e Validazione del Software

Analisi e Progettazione del Software

Dottorato di ricerca in Informatica Dipartimento di Informatica Università degli Studi di Verona. Nicola Drago (XV ciclo)

Stato dell arte sulle tecniche di testing di Sistemi Embedded

4. Qualità. un concetto molte sfaccettature. Andrea Polini. Ingegneria del Software Corso di Laurea in Informatica

Strumento e tecnica a supporto del crash testing automatico di applicazioni mobili basato sul sistema operativo Android Anno Accademico 2010/2011

Corso di Ingegneria del Software. Modelli di produzione del software

IS Corso di Ingegneria del Software 1

Acquisizione di prodotti e servizi Parte 2

DIAGNOSTICA DEI CIRCUITI INTEGRATI DEFINIZIONI GENERALI

Materiale didattico. Sommario

Collaudo e qualità del software Quali test eseguire

UNIVERSITA CA FOSCARI VENEZIA - CT0090 INGEGNERIA DEL SOFTWARE 2016/2017 ARRIFORNISCETE. Piano di Testing 1.1 TEAM CODROT

Obiettivi di accessibilità per l anno 2014

Introduzione. Sommario. Il software. Definizione di Ingegneria del software

UNIVERSITA CA FOSCARI VENEZIA - CT0090 INGEGNERIA DEL SOFTWARE 2016/2017 ARRIFORNISCETE. Documento di Analisi e Specifica 1.

L AFFIDABILITA NELLA FASE DI PRODUZIONE

Gui testing automatico di applicazioni Android tramite emulazione di input ed eventi provenienti da sensori

Lezione 1 Ingegneria del Software II- Introduzione e Motivazione. Ingegneria del Software 2 Introduzione e Motivazioni 1

13. Verifica e Validazione del Software

Il concetto di sicurezza informatica: le politiche di contrasto alla criminalità informatica

7. Architetture Software

Programmazione con Java

Verifica e Validazione del Software

Capitolo I1: Laboratorio con DevC++

Robotium Recorder. Un altro ambiente che supporta il capture & replay è Robotium Recorder.

2131 Specialisti in informatica 2132 Programmatori informatici Informatici e telematici Tecnici informatici

IS Corso di Ingegneria del Software 1

Università di Bergamo Facoltà di Ingegneria INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi A6_3 V2.1. Gestione

Software solido e usabile: come integrare ingegneria dell usabilità e del software

Automatic generation of test cases

45 incontri con i nostri clienti per descrivere come cambia il calcestruzzo

Il ciclo di vita del SW

Gestione della Concorrenza

Confartigianato Vicenza. Navigazione Web ed sicura per l associazione di categoria di PMI più grande d Italia

Modelli di Ciclo di Vita del Software (CVS)

Il ciclo di vita del SW

Gruppo Turbine Pelton Busato Marco D Alessandro Marco De Pieri Alex IdroVENETO. (Monitoraggio Acqua Veneto) Piano di Testing

Verifica e Validazione del Software

Corso di Ingegneria del Software. La architettura software

Nell ambito quindi di un ulteriore potenziamento della propria struttura, Klopotek Software & Technology Services S.r.l.

Il meglio della tecnologia di misura della temperatura e del design igienico-sanitario nell industria alimentare

Processo parte III. Modello Code and fix. Modello a cascata. Modello a cascata (waterfall) Leggere Sez. 7.4 Ghezzi et al.

Integrated Architecture Tools

E-LEARNING OUTSIDE THE BOX

Centrale di rivelazione incendio convenzionale serie 500 Estrema facilità d'installazione

Un linguaggio per la rappresentazione formale di vincoli su scenari d'uso

Ciclo di vita per lo sviluppo di software sicuro

LE PRESCRIVO UNA APP DAL TACCUINO AL PERSONAL HEALTH RECORD

CICLO DI VITA DEL PROGETTO

INTERAZIONE UOMO-MACCHINA

HR SOFTWARE. Controllare, misurare e ridurre i rischi professionali per migliorare la qualità della vita al lavoro. accilineplus.ayming.

Introduzione all Ingegneria del Software

Il nuovo riuso. L Innovazione in Campania

Non rischiate, scegliete la miglior soluzione per client desktop e portatili CLIENT SECURITY

Organizzazione e Project Management Vincenzo Corvello

Università di Pisa Facoltà di Scienze Matematiche Fisiche e Naturali

Sviluppo di un'interfaccia grafica per l'automatizzazione di campagne di software fault injection. relatore Ch.mo prof.

Capacity Availability Continuity Infrastructure Management

L ESPERIENZA della REGIONE TOSCANA

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Basi di Dati. Progettazione di una Base di Dati. Progettazione di una Base di Dati

INSEGNAMENTO DI INGEGNERIA DEL SOFTWARE B (5 CFU) CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA a.a

LA MECCATRONICA E L AUTOMAZIONE PER LA FABBRICA DEL FUTURO

2017 EasyWeb-Solution - tutti i diritti riservati. Web Agency Social Marketing Foto & Video

OFFERTA DI LAVORO (1)

INTERAZIONE UOMO-MACCHINA

scopri il nostro mondo

Il PROCESSO UNIFICATO

Spring Stack Testing: Continuous integration, Continuous Agitation

L evoluzione normativa dei sistemi di comando

Disegno di Macchine. Docente: ing. Francesca Campana

Offerta Proposta di servizi Area DB2: Health Check per il DB2 z/os

Syllabus Start rev. 1.03

Programmazione e Controllo della Produzione. Introduzione

Ministero dell Istruzione, dell Università e della Ricerca. Servizio di collaudo

Transcript:

Verifica e Validazione del Software Testing processes Ingegneria del Software 2 Testing Processes 1

Riferimenti Ian Sommerville, Ingegneria del Software, capitoli 22-23-24 (più dettagliato sui processi) Pressman, Principi di Ingegneria del Software, 5 edizione, Capitoli 15-16 Ghezzi, Jazazeri, Mandrioli, Ingegneria del Software, 2 edizione, Capitolo 6 (più dettagliato sulle tecniche) Ingegneria del Software 2 Testing Processes 2

Modello V R equir ements specifica tion S ystem specifica tion S ystem design Detailed design Acceptance test plan S ystem integ r a tion test plan Sub-system integ r a tion test plan Module and unit code and test Service Acceptance test S ystem integ r a tion test Sub-system integ r a tion test Ingegneria del Software 2 Testing Processes 3

Livelli di Testing System Testing in tre stage Simulation stage Il software viene testato in isolamento in un ambiente completamente simulato Prototyping stage L ambiente reale inizia a rimpiazzare quello simulato, ma il software è eseguito sempre su di un emulatore Un emulatore è un componente software che emula il comportamento di un componente reale da cui il software da testare dipende Pre-production stage Il software è eseguito su di un device reale in un ambiente reale Ingegneria del Software 2 Testing Automation 4 4

Livello produttore-utente privilegiato Alpha testing: uso del sistema da parte di utenti reali ma nell'ambiente di produzione e prima della immissione sul mercato. Beta Testing: installazione ed uso del sistema in ambiente reale prima della immissione sul mercato. tipicamente adottati dai produttori di packages per mercato di massa! Ingegneria del Software 2 Testing Processes 5

Testing di Accettazione Testing effettuato sull intero sistema sulla base di un piano e di procedure approvate dal cliente (o utente); l obiettivo é quello di mettere il cliente, l'utente o altri a ciò preposti (collaudatori o enti ad hoc) in condizione di decidere se accettare il prodotto; Occorre provare che il software fornisce tutte le funzionalità, le prestazioni, l affidabilità, etc. richieste, e che non fallisca. É in genere un testing black-box (a scatola nera): Basato solo sulle specifiche del software; I Tester non accedono al suo codice. è a carico del committente;.. è più 'una dimostrazione che un test' Ingegneria del Software 2 Testing Processes 6

Il Testing dei Requisiti Non Funzionali Ingegneria del Software 2 Testing Processes 7

Performance testing Dopo che il sistema è stato completamente integrato, è possibile testarne le proprietà emergenti, come le prestazioni ed affidabilità. I test di prestazione in genere riguardano il carico e si pianificano test in cui il carico viene incrementato progressivamente finché le prestazioni diventano inaccettabili. Il carico deve essere progettato in modo da rispecchiare le normali condizioni di utilizzo. Ingegneria del Software 2 Testing Processes 8

Stress testing Nello stress testing si sollecita il sistema con un carico superiore a quello massimo previsto: in queste condizioni in genere i difetti vengono alla luce. Stressando il sistema si può testare il comportamento in caso di fallimento. L eventuale fallimento dovrebbe essere leggero e non produrre effetti catastrofici. Si deve controllare che non ci siano perdite inaccettabili di servizio e di dati. Lo Stress testing è particolarmente rilevante per sistemi distribuiti che possono mostrare severe degradazioni delle prestazioni quando la rete è sommersa di richieste. Ingegneria del Software 2 Testing Processes 9

Altri tipi di Testing (di requisiti Non-Funzionali) Testing di Compatibilità Consiste nel provare la stessa applicazione al variare di diversi sistemi e piattaforme e al variare di diverse configurazioni E difficilissimo poter testare su tutte le piattaforme possibili In ogni caso, è impossibile testare sulle piattaforme di futura generazione! Ogni applicazione dovrebbe dichiarare l insieme di piattaforme per le quali è stata testata la compatibilità Testing di Accessibilità Consiste nel verificare che sia possibile l accesso ai contenuti dell applicazione in presenza di capacità hardware/software ridotte (sul lato client) e di disabilità dell utente Particolarmente importante per applicazioni Web, in particolare per quelle dirette ad un pubblico globale (es.: applicazioni istituzionali) Esistono standard nazionali (es.: Legge Stanca) e internazionali (es.: W3C) contenenti requisiti di accessibilità a regole da verificare Ingegneria del Software 2 Testing Processes 10

Altri tipi di Testing Testing di Sicurezza Consiste nel verificare l efficacia del sistema nel difendersi e prevenire accessi da utenti non autorizzati, utilizzo improprio delle risorse, etc. Studiato a fondo nell esame di Secutity and Dependability Testing di Usabilità consiste nel verificare e misurare l usabilità dell applicazione per gli utenti, valutando se soddisfa degli standard minimi La misura dell usabilità non è completamente una misura oggettiva, per cui deve essere valutata con metodologie statistiche Ingegneria del Software 2 Testing Processes 11

Test Driven Development (TDD) Ingegneria del Software 2 12 Metodi Agili

Riferimenti S. Amber. Introduction to Test Driven Development (TDD). www.agiledata.org http://www.testdriven.com (online community/forum for TDD) D. Janzen, Test-Driven Development:Concepts, Taxonomy,and Future Direction, IEEE Computer- 2005 Ingegneria del Software 2 13

Cosa significa TDD? È un approccio evolutivo allo sviluppo software in cui 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. Ingegneria del Software 2 14

La soluzione offerta dal TDD Ciclo di sviluppo Tradizionale Design Code Test Sviluppo con TDD Test Code Design Ingegneria del Software 2 15

Cosa è il TDD TDD è uno stile di sviluppo/ progettazione, non è una tecnica di testing In TDD la programmazione e lo unit test non sono attività separate In TDD, si può scrivere nuovo codice solo se un test automatico è fallito TDD Mantra: Only ever write code to fix a failing test Ingegneria del Software 2 16

Vantaggi del TDD Permette di scrivere software migliore e più rapidamente (costruendo software in piccoli incrementi- 1 test per volta) Evita la paura nello sviluppatore che : induce a procedere per tentativi fa comunicare meno fa temere il feedback rende acidi! Ingegneria del Software 2 17

Vantaggi 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 Ingegneria del Software 2 18

Qualità interna col TDD La presenza di difetti nel codice può dipendere dalla mancanza di test, o dalla mancata esecuzione di test che abbiano evidenziato tali difetti. Invece: Col TDD non ci sarà mai, praticamente, una parte di codice non testata Scrivendo i test prima del codice, si è portati a cercare test che esercitano sia i casi normali, che i casi limite e di errore Si riduce il tempo per la correzione dei difetti (si sa esattamente quali nuove linee possano aver fatto fallire il test: non serve neanche il debugger!) Ingegneria del Software 2 19

Il Ciclo di Sviluppo TDD RED GREEN REFACTOR TEST-DRIVEN APPROACH Scrivi un test che non funzionerà (red) Fai in modo che il test funzioni, scrivendo solo il codice necessario a superarlo (green) Migliora (ristruttura il codice ed i test) Esegui tutti i test per assicurarsi che non ci siano problemi Ripeti finchè non trovi altri test Ingegneria del Software 2 20