Ingegneria del Software



Похожие документы
Testing. Definizioni. incomprensione umana nel tentativo di comprendere o risolvere un problema, o nell uso di strumenti

Testing: basato su analisi dinamica del codice. Metodi Formali: basato su analisi statica del codice.

Collaudo e qualità del software Quali test eseguire

PROJECT MANAGEMENT SERVIZI DI PROJECT MANAGEMENT DI ELEVATA PROFESSIONALITÀ

In legenda sono riportate le fasi R, P, C/T e I/SA come specificato nella norma ISO/IEC

Piano di gestione della qualità

Collaudo e qualità del software Il testing nel ciclo di vita del software

Project Management. Modulo: Introduzione. prof. ing. Guido Guizzi

Generazione Automatica di Asserzioni da Modelli di Specifica

GESTIONE DELLA QUALITÀ DELLE FORNITURE DI BENI E SERVIZI

Ciclo di vita del progetto

Ingegneria del Software

I modelli normativi. I modelli per l eccellenza. I modelli di gestione per la qualità. ! I modelli normativi. ! I modelli per l eccellenza

Esempi di errori/difetti. algoritmi sintassi calcolo e precisione documento stress capacità ricovery sistema hardware e software standard e procedure

Concetti di base di ingegneria del software

Rational Unified Process Introduzione

Test di Apprendimento

Lo sviluppo del software: usi e clausole commentate Aspetti Tecnici. Prof. Franco Sirovich Dipartimento di Informatica Università di Torino

Software Testing. Lezione 2 Livelli di test. Federica Spiga. federica_spiga@yahoo.it. A.A Autori: F.Rabini/F.Spiga

Verifica parte IIA. Test (o analisi dinamica) Mancanza di continuità. Esempio

Ciclo di vita del software: strumenti e procedure per migliorarne la sicurezza. Roberto Ugolini roberto.ugolini@postecom.it

INGEGNERIA DEL SOFTWARE. Prof. Paolo Salvaneschi

Governare il processo della sicurezza

IL SOFTWARE SECONDO LA NORMA UNI EN ISO :2008 (IIA PARTE) 1

EVOLUZIONE DELLE INIZIATIVE PER LA QUALITA : L APPROCCIO SIX SIGMA

Riepilogo delle modifiche di PA-DSS dalla versione 2.0 alla 3.0

Base di dati e sistemi informativi

Ciclo di vita del software

Role plaing esperienziale: ATTUAZIONE DI UN PROGETTO DI NURSING

Quality gate. Sono eventi programmati regolarmente e condotti seguendo una procedura standard

Specifiche dello sviluppo di un progetto software e indicazioni sulla documentazione e sulle modalità di esercizio delle prestazioni

Test e collaudo del software Continuous Integration and Testing

Area Marketing. Approfondimento

L o. Walter Ambu japs: una soluzione agile (

Ciclo di vita del software: strumenti e procedure per migliorarne la sicurezza

Progetto. Portale Turistico Regionale. Andrea Polini, Oliviero Riganelli, Massimo Troiani. Ingegneria del Software Corso di Laurea in Informatica

LA REVISIONE LEGALE DEI CONTI La comprensione

Verifica e validazione della qualità del sw

IL MODELLO SCOR. Agenda. La Supply Chain Il Modello SCOR SCOR project roadmap. Prof. Giovanni Perrone Ing. Lorena Scarpulla. Engineering.

QUESTIONARIO 1: PROCESSO DI AUTOVALUTAZIONE

Azione su un prodotto-servizio NC, per renderlo conforme ai requisiti

La Metodologia adottata nel Corso

Il modello di ottimizzazione SAM

Pianificazione e progettazione

Workflow di Test. Valerio Mercanti - ISP0607 1

IL MARKETING E QUELLA FUNZIONE D IMPRESA CHE:

IL CICLO DI VITA DEL PROGETTO. Elementi essenziali di progetto. Fasi e tappe Gli Approcci

Concetto di sicurezza, arrivando diritti all obiettivo. con Safety Evaluation Tool Safety Integrated. Safety Integrated. Answers for industry.

Allegato 1.3 Modalità di messa in produzione software

LE CARTE DI CONTROLLO (4)

La gestione della sicurezza nei rapporti con i fornitori esterni, G. Pontevolpe

Ciclo di vita dimensionale

Strumento per l iniezione di guasti software nel sistema operativo GNU/Linux

Copyright Università degli Studi di Torino, Progetto Atlante delle Professioni 2009 IT PROCESS EXPERT

Le strumentazioni laser scanning oriented per i processi di censimento anagrafico dei patrimoni

Norme per l organizzazione - ISO serie 9000

PROGETTAZIONE DI UN SITO WEB

11. Evoluzione del Software

Diventa fondamentale che si verifichi una vera e propria rivoluzione copernicana, al fine di porre al centro il cliente e la sua piena soddisfazione.

PROCEDURA PR.07/03. Progettazione e sviluppo software STATO DI REVISIONE. Verificato da

Release Management. Obiettivi. Definizioni. Responsabilità. Attività. Input

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

POLITECNICO DI TORINO

LEAD GENERATION PROGRAM

Sistemi Informativi e Sistemi ERP

Sistemi informativi secondo prospettive combinate

Gli 8 principi della Qualità

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Firewall applicativo per la protezione di portali intranet/extranet

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico

Appendice III. Competenza e definizione della competenza

LE NORME UNI DI RIFERIMENTO PER GLI INTERVENTI SUGLI ASCENSORI ESISTENTI

La sicurezza sul lavoro. Concetti di base e accenni alla normativa vigente

EasyMACHINERY ERPGestionaleCRM. partner

GESTIONE DELLE NON CONFORMITÀ E RECLAMI

REFERENZIAZIONI 2001) NUP

IL PROCESSO DI FABBRICAZIONE (sviluppo nuovo prodotto)

Esercizio 1: trading on-line

YOUR EASY SOLUTION FOR COSTING

Il modello veneto di Bilancio Sociale Avis

UML e (R)UP (an overview)

Come scrivere una proposta progettuale

Relazione Tecnica e valutazioni in laboratorio Francesco Rappo

Cosa significa che il SW è non lineare? Piccoli cambiamenti nel codice portano a grandi cambiamenti di comportamento

Autorità Nazionale Anticorruzione e per la valutazione e la trasparenza delle amministrazioni pubbliche

COME VIENE REALIZZATO UN SERVIZIO DI RIORGANIZZAZIONE DEI SISTEMI INFORMATIVI AZIENDALI?

Configuration Management

TENUTA SOTTO CONTROLLO DELLE REGISTRAZIONI

Progettazione dei Sistemi di Produzione

Programmazione e controllo

La gestione manageriale dei progetti

NUOVI APPROCCI PER UN MANAGER ALLENATORE : IL PROCESSO DI COACHING

Corso formazione su Sistema di gestione della qualità. Standard ISO 9001:2000/2008 Vision 2000

Транскрипт:

Ingegneria del Software Testing - Strategie di del Software Testing del Software Il testing è quell attivit attività di esercizio del software tesa all individuazione dei malfunzionamenti prima della messa in esercizio Construction Testing Deployment

Cosa mostra il Testing? malfunzionamenti conformità coi requisiti indicazioni di performance indicazione di qualità Failure Faults, Errors e Failures Si manifesta quando il servizio offerto dal sistema devia dalle specifiche Error Si ha quando il sistema si porta in uno stato scorretto che può essere causa di un fallimento Fault E la causa che provoca un errore

Un Esempio di Software Fault Un sistema di gestione degli accessi a servizi pubblici e privati. Specifiche: Gli utenti possono avere due livelli di diritti 1 e 0. I servizi privati richiedono livello di diritti pari ad 1 L accesso ad un servizio è accordato se il servizio è disponibile ed il livello di diritti utente coincide col livello richiesto Un Esempio di Software Fault (2) if(servizioprivato) Fault { if(diritti = 1) Autorizzato = true; else } Caso 1 Utente Marco Rossi Diritti = 1 Richiede Servizio Pubblico Servizio disponibile Fault Latente Nessun Errore Nessun Fallimento Autorizzato = false; if(autorizzato && ServizioDisponibile) cout<<"accesso garantito"<<endl; Caso 2 Utente Marco Rossi Diritti = 1 Richiede Servizio Privato Servizio disponibile Caso 3 Utente Giorgio Bianchi Diritti = 0 Richiede Servizio Privato Servizio NON disponibile Caso 4 Utente Giorgio Bianchi Diritti = 0 Richiede Servizio Privato Servizio Ing. Antonio disponibile Coronato Fault Mascherato Nessun Errore Nessun Fallimento Fault Attivo Errore Nessun Fallimento Fault Attivo Errore Fallimento

Software Faults nel Ciclo di Vita del Sistema La presenza di errori nel software sviluppato è da considerarsi una condizione normale Per sistemi software complessi non è realistico pensare di ottenere dalla fase di sviluppo release immuni da errori Adottare processi di sviluppo di qualità riduce la quantità di errori presenti nel software sviluppato E necessario eliminare (o quantomeno ridurre) gli errori software prima della messa in esercizio del sistema Azioni di collaudo guidate da opportune strategie individuano errori presenti nel software Azioni correttive aumentano la qualità del prodotto finale Tesi di Dijkiastra Il testing NON PUÒ dimostrare l assenza di difetti, ma può solo dimostrare la presenza di difetti

Chi Testa il Software? developer Comprende bene il sistema ma è inconsciamente gentile nell attivit attività di testing Testing guidato dalla consegna independent tester Deve imparare il sistema ma è più critico ed esigente Testing guidato dalla qualità Sviluppatori e tester indipendenti cooperano e svolgono entrambi attività di testing Verifica Verifica e Convalida Insieme delle attività tese ad accertare la correttezza funzionale Convalida (o Validazione) Insieme delle attività tese a verificare la implementazione dei requisiti software

! "#$#%$##% & ' (()) ' '* (( "#$#%$##%

Strategie di Testing Le attività di testing necessitanto di una vera e propria strategia Pianificazione Progettazione dei test case Esecuzione dei test case Raccolta dei risultati Valutazione dei risultati Pianificazione del Testing Quando possiamo ritenere concluse le attività di testing? Diversi criteri per decidere quando terminare il testing Criterio temporale Si definisce un periodo di tempo massimo per le attività di testing Criterio di costo Si assegna un badget massimo per le attività di testing Criterio di copertura Percentuale predefinita degli elementi di un modello di programma Legato ad un criterio di selezione dei casi di test Criterio statistico Si ripetono attività di testing fino al raggiungimento di un MTBF (mean time between failures) obiettivo Legato ad un criterio di selezione dei casi di test

+ * *'*,,, "#$#%$##%

Progettazione dei Casi di Test Un caso di test è un sottoinsieme dei possibili dati di input Un test è formato da un insieme di casi di test L esecuzione del test consiste nell esecuzione del programma per tutti i casi di test Un test ha successo se rileva uno o più malfunzionamenti del programma Progettazione dei Casi di Test (2) Un test è ideale se l insuccesso del test implica la correttezza del programma Un test esaustivo è un test che contiene tutti i dati di ingresso al programma Un test esaustivo è un test ideale Un test esaustivo non è pratico e quasi sempre non è fattibile Obiettivo realistico Selezionare casi di test che approssimano un test ideale Obiettivi pratici Massimizzare il numero di malfunzionamenti scoperti (richiede molti casi di test) Minimizzare il numero di casi di test (e quindi il costo del testing)

Valutazione dei Risultati del Test Condizione necessaria per effettuare un test: conoscere il comportamento atteso per poterlo confrontare con quello osservato L oracolo conosce il comportamento atteso per ogni caso di prova Oracolo umano si basa sulle specifiche o sul giudizio Oracolo automatico generato dalle specifiche (formali) stesso software ma sviluppato da altri versione precedente (test di regressione) Strategie di Testing unit test integration test system test validation test

Approccio Bottom-Up Si parte dal testing in piccolo e si va verso il testing in grande di Sistema di Convalida di Integrazione Unità Unità Unità Due ruoli coinvolti Chi fa cosa? di Sistema di Convalida independent tester di Integrazione Unità Unità Unità developer

Altre Attività di Testing Testing del produttore Testing di unità Testing di integrazione Testing di convalida Testing di sistema Testing cooperativo produttore-cliente (privilegiato) Alpha testing uso del sistema da parte di utenti reali ma nell'ambiente di produzione e prima della immissione sul mercato Beta testing uso del sistema da parte di utenti reali ma nell'ambiente di produzione e prima della immissione sul mercato Testing del cliente Testing di accettazione Testing delle Applicazioni Applicazioni Function-Oriented Le unità di testing sono rappresentate dai moduli sorgente Focus sulle funzionalità Applicazioni Object-Oriented Le unità di testing sono rappresentate dalle singole classi Focus sulle comunicazioni e collaborazioni tra classi (oltre che sulle funzionalità) Applicazioni Component-Based Le unità di testing sono rappresentate dai singoli componenti o dalle classi dei singoli componenti Focus sulle problematiche di integrazione (oltre che sulle collaborazioni e sulle funzionalità)

Testing di Unità Unità da Testare results software engineer test cases Testing di Unità (2) Modulo da testare Interfacce Strutture dati locali Cammini indipendenti Cammini di gestione degli errori test cases

Ambiente di Testing per le Unità Generalmente le unità di testing non costituisco elementi software eseguibili indipendentemente => E necessario definire ambienti di testing Modulo pilota Modulo Da testare Modulo Modulo fittizio fittizio Interfacce Strutture dati locali Cammini indipendenti Cammini di gestione degli errori Risultati test cases Strategie di Testing di Integrazione Testing dell intero sistema Si integrano tutte le unità del sistema e successivamente si procede al testing Può essere particolarmente oneroso nel caso di sistemi complessi Testing incrementale Le unità sono integrate in maniera incrementale Dopo ogni incremento si procede al testing di integrazione

Integrazione con approccio Top-Down Passi del processo di integrazione: 1. Testing del modulo di controllo (modulo pilota) 2. Sostituzione di un modulo fittizio con il corrispondente reale 3. Test di integrazione dopo ogni sostituzione 4. Ritorna al passo 2 fino al completamento dell integrazione Modi di integrazione: Depth-first Breadth-first Modulo reale D C E B A F Modulo pilota G Modulo fittizio Difficoltà di testing per i moduli fittizzi che devono restituire risultati di elaborazione Integrazione con approccio Bottom-Up Passi del processo di integrazione: 1. Aggregazione delle unità di basso livello in gruppi (cluster) 2. Predisposizione di un modulo pilota per il cluster 3. Test del cluster 4. Sostituzione dei moduli pilota (fittizi) con i moduli reali 5. Ritorna al passo 2 fino al completamento dell integrazione D C E cluster B A F G

Integrazione con approccio a Sandwitch A I moduli di controllo sono testati con moduli fittizzi B F G D C E I moduli che sviluppano funzionalità sono ragruppati in cluster cluster Ulteriori Livelli di Testing Testing di Convalida Verifica che il sistema funzioni secondo le aspettative del cliente Le aspettative del cliente sono stabilite dai requisiti Le prove di convalida possono essere specificate nel documento SRS Può includere alpha e beta testing Alpha/Beta testing Focus sull utilizzo da parte dell utente -

. ( +/( +/( )) "%$#%$##%

Ulteriori Livelli di Testing (2) Testing di sistema Focalizza sull intero sistema Può includere testing di affidabilità, sicurezza, performance e stress Testing di affidabilità Si forza il sistema a fallire per verificarne le capacità di recovery Si sollecita il sistema con dati scorretti, iniettando errori, esercitando le sezioni di gestione delle eccezioni Ulteriori Livelli di Testing (3) Testing di sicurezza Si attenta alle caratteristiche di sicurezza del sistema per evidenziare vulnerabilità Si esercitano i servizi di: Authentication Access control Privacy Testing di performance Si esercita il sistema in condizioni operative normali per verificarene le performace Testing di stress Si sollecita il sistema con volumi di carico particolarmente elevati, ad esempio un ordine di grandezza superiore alle normali condizioni

Debugging Definizione Il Debugging è il processo di scoperta dei fault a partire dai malfunzionamenti (failures) individuati dal testing Include l ispezione del software, cioè l analisi del codice sorgente

Risultati del Testing Nel caso del sistema di gestione degli accessi a servizi pubblici e privati Test Case Utente Giorgio Bianchi Diritti = 0 Richiede Servizio Privato Servizio disponibile? Failure! Qual è la causa? Grant Access! tester Risultati delle Attività di Debugging Individuare le cause dei fallimenti evidenziati dal testing if(servizioprivato) Fault { if(diritti = 1) Autorizzato = true; else Autorizzato = false; if(autorizzato && ServizioDisponibile) cout<<"accesso garantito"<<endl; }

Il Processo di Debugging test cases Testing regression tests new test cases suspected causes corrections identified causes Debugging results Degugging Effort tempo necessario per correggere l errore e condurre test di regressione tempo necessario per diagnosticare il fallimento, analizzare I sintomi e determinare la causa

Sintomi e Cause Sintomi e cause possono essere geograficamente separati I sintomi possono scomparire quando un altro errore viene corretto Correlazione tra errori symptom cause Casi di failure intermittenti Sincronizzazione di thread Fault d ambiente Malfunzionamenti introdotti da compilatori, sistemi operativi Conseguenze di un Software Fault damage infectious mild annoying serious disturbing catastrophic extreme Bug Type Bug Categories: function-related bugs, system-related bugs, data bugs, coding bugs, design bugs, documentation bugs, standards violations, etc.

Tecniche di debugging brute force / testing backtracking induction deduction Pressman, cap. 13 Riferimenti Bibliografici