Corso di Ingegneria del Software. Testing

Documenti analoghi
Corso di Ingegneria del Software. Casi d uso

Corso di Ingegneria del Software. Esempi di casi d uso

Corso di Laurea Magistrale in Ingegneria Informatica Curriculum in IT Management. Ingegneria del Software II (IS2)

Corso di Ingegneria del Software. Metriche Parte II

Ingegneria del Software Testing. Corso di Ingegneria del Software Anno Accademico 2012/2013

Corso di Ingegneria del Software. Informazioni sul corso

Corso di Ingegneria del Software. La architettura software

Testing. Fondamenti teorici

Corso di Ingegneria del Software. I costi del software

Verifica parte IIA. Rif. Ghezzi et al

Materiale didattico. Sommario

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

Corso di Ingegneria del Software. Modelli di produzione del software

Corso di Laurea Magistrale in Ingegneria Informatica. Ingegneria del Software II (IS2)

14. Verifica e Validazione

SCD IS. Verifica e validazione: analisi dinamica. Verifica e validazione: analisi dinamica. Caratterizzazione. Definizione.

Verifica e Validazione del Software

Parte Teorica 1 compitino di Linguaggi per la Sicurezza Ipotesi di Domande

Corso di Ingegneria del Software. I costi del software

Corso di Ingegneria del Software. Modelli di produzione del software

Corso di Ingegneria del Software. Activity Diagram

SCD IS. Verifica e validazione: analisi dinamica. Verifica e validazione: analisi dinamica. Caratterizzazione. Classificazione delle problematiche

extreme Programming Gianluca Demartini 3 maggio 2004

Corso di Ingegneria del Software. Modelli di produzione del software

Verifica e Validazione del Software

Corso di Ingegneria del Software. Modelli di produzione del software

Verifica e validazione: introduzione

SCD IS. Verifica e validazione: analisi dinamica. Verifica e validazione: analisi dinamica. Caratterizzazione. Definizione

Vincenzo Gervasi, Laura Semini Ingegneria del Software Dipartimento di Informatica Università di Pisa

Verifica e Validazione del Software

Verifica e Validazione del Software

Capitolo 5. Algoritmi. Mauro Giacomini Pearson Addison-Wesley. All rights reserved

Fondamenti VBA. Che cos è VBA

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

INGEGNERIA DEL SOFTWARE. Il Corso. Obiettivi. A.A Prof. Giuseppe Visaggio Presentazione

Corso di Ingegneria del Software. La progettazione della interfaccia utente

Ingegneria del Software II

Università degli Studi di Bologna. Facoltà di Ingegneria CORSO DI INGEGNERIA DEL SOFTWARE. Prof. Evelina Lamma

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

Correttezza (prima parte)

Laboratorio di Informatica

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

Ingegneria del Software 22a. Progettazione delle prove. Dipartimento di Informatica Università di Pisa A.A. 2014/15

Vincenzo Gervasi, Laura Semini Ingegneria del Software Dipartimento di Informatica Università di Pisa

Corso di Ingegneria del Software. Modelli di produzione del software

12. Verifica e Validazione del Software

Utilizzo di un elaboratore

Fondamenti Informatica A.A. 2010/'11. (I parte)

Ingegneria del Software 2010

Laurea triennale - Comunicazione&DAMS - UNICAL. Dr. Annamaria Bria 1

Fondamenti Teorici. Antonio Pescapè e Marcello Esposito Parte Quarta v1.0

Fondamenti di Informatica. Proff. B.Buttarazzi & A.D Ambrogio A.A. 2011/2012

IC Test & Design for Testability

13. Verifica e Validazione del Software

Automatic generation of test cases

Capitolo 11. Teoria della computazione Pearson Addison-Wesley. All rights reserved

Tecniche di Testing White Box

Laboratorio di Informatica

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

Introduzione al corso


Corso di laurea triennale in Informatica Turno A

Corso di Ingegneria del Software. Introduzione al corso

La tolleranza ai guasti. Concetti generali

Programma del corso di: Calcolo Numerico Corso di laurea in Matematica a.a Prof. B.Paternoster

Ingegneria del Software 2014

Verifica e validazione: introduzione

CORSO DI PROGRAMMAZIONE. Cosimo Laneve/Ivan Lanese/Elena Giachino

Introduzione all informatica

Introduction to this Course

Ingegneria del Software L-A

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output

SRT064 BTH SRT051 BTH SRT052 BTH

Capitolo 0. Introduzione. Prof. Mauro Giacomini Pearson Addison-Wesley. All rights reserved

Ingegneria del software

CORSO DI FONDAMENTI DI INFORMATICA

DIAGNOSTICA DEI CIRCUITI INTEGRATI DEFINIZIONI GENERALI

Dip. Informatica VI Piano. Ambito disciplinare. Secondo Semestre Secondo Anno Lezioni frontali (9 CFU) Progetto (3 CFU)

INGEGNERIA DEL SOFTWARE

Fondamenti di Informatica per la Sicurezza a.a. 2008/09. Introduzione. Stefano Ferrari

Ingegneria del Software ( )

Fondamenti di Informatica e Laboratorio T-AB

Concetti di base sugli automi e sui linguaggi formali

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Presentazione ragionata del corso

Programma del corso di: Laboratorio di Programmazione e Calcolo Corso di laurea in Matematica a.a Proff. B. Paternoster, D.

Verifica e Validazione del Software

Corso di Ingegneria del Software. Modelli di produzione del software

Tutorato di Fondamenti di Informatica TUTOR: DAVIDE GHIANI, GIULIA ORRU

FONDAMENTI DI INFORMATICA

Il PROCESSO UNIFICATO

IS Corso di Ingegneria del Software 1

Stato dell arte sulle tecniche di testing di Sistemi Embedded

SOMMARIO DIAGRAMMI DI ATTIVITÀ INGEGNERIA DEL SOFTWARE. Introduzione. Concetti base. Introduzione. Concetti base

Introduzione all Ingegneria del Software

Metodi formali per la verifica dell affidabilità di sistemi: materiale didattico

A.A. 2006/2007 Laurea di Ingegneria Informatica. Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio

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

Politecnico di Bari Facoltà di Ingegneria

Transcript:

Corso di Ingegneria del Software a.a. 2009/2010 Mario Vacca mario.vacca1@istruzione.it

Concetti base Strategie di testing Bibliografia Sommario

Concetti di base Concetti di base Error (1) The difference between a computed, observed, or measured value or condition and the true, specified, or theoretically correct value or condition. For example, a difference of 30 meters between a computed result and the correct result. (2) An incorrect step, process, or data definition. For example, an incorrect instruction in a computer program. (3) An incorrect result. For example, a computed result of 12 when the correct result is 10. (4) A human action that produces an incorrect result. For example, an incorrect action on the part of a programmer or operator. Note: While all four definitions are commonly used, one distinction assigns definition 1 to the word error, definition 2 to the word fault, definition 3 to the word failure, and definition 4 to the word mistake. (da IEEE 610.12 Standard Glossary of Software Engineering Terminology, pag. 31)

Concetti di base Concetti di base Errore errore difetto o anomalia malfunzionamento o guasto

Concetti di base Concetti di base Verifica e Validazione (V&V) Verifica: stiamo realizzando correttamente il prodotto? Controlla la qualità delle attività svolte durante una fase dello sviluppo. Validazione: stiamo realizzando il prodotto corretto? Controlla la qualità del prodotto rispetto ai requisiti del committente.

Concetti di base Concetti di base Strategie di testing : processo scopo: individuare gli errori di funzionamento di un software the process of executing a program with the intent of finding errors (P. Jalote A Concise Introduction to Software Engineering Springer, 2008, pag. 229 )

Concetti di base Concetti di base Test Case, Test Suite, and Test Harness test case Insieme di test input e condizioni di esecuzione test suite Un gruppo di casi di test test harness framework

Concetti base Strategie di testing Bibliografia Sommario

Programma corretto P programma funzione P : D! R P(d), d 2 D corretto se soddisfa le specifiche, non corretto se diverso dal risultato previsto dalle specifiche. P corretto, 8d 2 D ; ok(p ; d)

Test ideale Caso di test d 2 D Test ideale Un insieme di test T si dice ideale se e solo se ogni volta che P è scorretto, allora esiste d 2 T tale che P è scorretto per d.

Criterio di selezione Un criterio di selezione di test C per un programma P è un insieme di predicati su D Un test T è selezionato dal criterio C se 8t 2 T 9c 2 C tale c(t) e 8c 2 C9t 2 T tale c(t)

Criteri di selezione affidabili e validi Un criterio di selezione di test C è affidabile per un programma P se per ogni coppia di test T 1, T 2 selezionati dal criterio C, il test T 1 ha successo se e solo se T 2 ha successo. Un criterio di selezione C è valido per un programma P se il programma P non è corretto, esiste almeno un test T selezionato da C che ha successo su P.

Teorema di Goodenough e Gerhart C affidabile e valido, T selezionato da C, T non ha successo allora P è corretto

Problemi indecidibili Dato P qualsiasi, stabilire se la sua esecuzione su un input arbitrario termina

Teorema di HOWDEN Non esiste un algoritmo che, dato un programma arbitrario P, generi un test finito definito da un criterio affidabile e valido.

Tesi di Dijkstra Il testing di un programma può rivelare la presenza di malfunzionamenti, ma mai dimostrarne l assenza.

Problemi indecidibili Teorema di Weyuker Dato P qualsiasi, i seguenti problemi sono indecidbili: esiste almeno un dato di ingresso che causa l esecuzione di un particolare comando? esiste un particolare dato di ingresso che causa l esecuzione di una particolare condizione (branch)? è possibile trovare almeno un dato di ingresso che causa l esecuzione di ogni comando di P? è possibile trovare almeno un dato di ingresso che causa l esecuzione di ogni condizione (branch) di P? è possibile trovare almeno un dato di ingresso che causa l esecuzione di ogni cammino di P?

Concetti base Strategie di testing Bibliografia Sommario

Concetti di base Strategie di testing revisione formale il testing procede bottom up (dal componente al sistema) uso di tecniche differenziate sviluppatore o tester debugging

Concetti di base Strategie di testing da R. Pressman Ingegneria del software Mc Graw Hill Italia, 5a edizione, 2007, pag. 486

Concetti base Strategie di testing Bibliografia Sommario

Strategie di testing Scriveremo i test prima di scrivere il codice, in continuazione. Conserveremo questi test per tutta la durata del sistema, e li eseguiremo frequentemente tutti assieme. Deriveremo dei test anche dalla prospettiva del cliente. da K. Beck Programmazione estrema, Addison-Wesley, 2000, pag. 126

Problema Necessità dei test Difficoltà di realizzarli

Il testing secondo la XP Secondo la XP si deve lavorare in accordo con la natura umana, e il testing è contrario alla natura umana. I test sono uno strumento per verificare il comportamento del sistema (CHE È LA COSA CHE INTERESSA) I test che si devono scrivere nell XP sono isolati ed automatici. da K. Beck Programmazione estrema, Addison-Wesley, 2000, pag. 127

Il testing secondo la XP Secondo la XP si deve lavorare in accordo con la natura umana, e il testing è contrario alla natura umana. I test sono uno strumento per verificare il comportamento del sistema (CHE È LA COSA CHE INTERESSA) I test che si devono scrivere nell XP sono isolati ed automatici. da K. Beck Programmazione estrema, Addison-Wesley, 2000, pag. 127

Il testing secondo la XP Secondo la XP si deve lavorare in accordo con la natura umana, e il testing è contrario alla natura umana. I test sono uno strumento per verificare il comportamento del sistema (CHE È LA COSA CHE INTERESSA) I test che si devono scrivere nell XP sono isolati ed automatici. da K. Beck Programmazione estrema, Addison-Wesley, 2000, pag. 127

Il testing secondo la XP I test devono essere non interagenti essere automatici collaudare ciò che potrebbe non funzionare pagare

Il testing secondo la XP Se il codice è talmente semplice da non poter non funzionare, e vi accertate che il codice in questione funziona realmente nella pratica, allora non dovete scrivere test. Se vi consigliassi di collaudare ogni cosa, v accorgereste ben presto che la maggior parte dei test che state scrivendo sono privi di valore, e se foste come me smettereste di scriverli dicendo: Questo testing è per gli stupidi. da K. Beck Programmazione estrema, Addison-Wesley, 2000, pag. 127

Il testing secondo la XP : tipi di test Test unitari relativi ai metodi programmatori successo 100 % Test funzionali relativi alle storie clienti (in collaborazione con il collaudatore del gruppo) non sempre 100 %

Il testing secondo la XP : tipi di test Test parallelo Stress test Test della scimmia

Bibliografia Concetti base Strategie di testing Bibliografia Sommario

Bibliografia Bibliografia Riferimenti bibliografici 1. R. Pressman Ingegneria del software Mc Graw Hill Italia, 5a edizione, 2007, capitoli 15 e 16. 2. IEEE 610.12 Standard Glossary of Software Engineering Terminology. 3. K. Beck Programmazione estrema, Addison-Wesley, 2000, (capitolo 18). 4. P. Jalote A Concise Introduction to Software Engineering Springer, 2008, par. 7.4, capitolo 8. 5. C. Ghezzi, M. Jazayeri, D. Mandrioli Ingegneria del software. Fondamenti e principi, Pearson Education Italia, 2004.