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



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

Lezione 8. La macchina universale

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza

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

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P P P P P P < P 1, >

Testing. Definizioni. incomprensione umana nel tentativo di comprendere o risolvere un problema, o nell uso di strumenti

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

Il Testing. Ing. Emilio Spinicci 24/03/2002 1

Test del Software. Definizione SCOPO LIMITI DEL TEST

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

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

Ing. Emilio Spinicci 07/04/2004 1

Piano di gestione della qualità

Soluzione dell esercizio del 2 Febbraio 2004

Ricerca Operativa e Logistica

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

LA REVISIONE LEGALE DEI CONTI La comprensione

Approvazione CDA del 25 giugno Limiti al cumulo di incarichi ricoperti dagli amministratori di Unipol Gruppo Finanziario S.p.A.

Corso di Informatica

UNI EN ISO 9001:2008 Sistemi di Gestione per la Qualità: requisiti e guida per l uso

Semantica Assiomatica

Gli algoritmi: definizioni e proprietà

Database. Si ringrazia Marco Bertini per le slides

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

Collaudo e qualità del software Quali test eseguire

Sistemi elettronici per la sicurezza dei veicoli: presente e futuro. Il ruolo della norma ISO per la Sicurezza Funzionale

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

Il Modello Relazionale

Variabili e tipi di dato

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Progetto di Reti di Telecomunicazione Modelli in Programmazione Lineare Problemi di flusso

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo

Protezione. Protezione. Protezione. Obiettivi della protezione

Gestione Turni. Introduzione

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

PRESCRIZIONI PARTICOLARI DIRETTIVA 2006/42/CE RELATIVA ALLE MACCHINE Allegato X Garanzia Qualità Totale

13: Il test del software. 13Test.1

Aree di impatto per considerazioni da parte del cliente Tratte dalle Regole per ottenere il riconoscimento IATF

ISO 9000:2000 Assicurazione della qualità Parte della gestione per la qualità mirata a dare fiducia che i requisiti per la qualità saranno

Modello dei controlli di secondo e terzo livello

Macchine a stati finiti. Sommario. Sommario. M. Favalli. 5th June 2007

Esempi di algoritmi. Lezione III

Descrizione di un algoritmo

Sistemi di Gestione dei Dati e dei Processi Aziendali. Computer-Assisted Audit Technique (CAAT)

LINEE GUIDA PER L EROGAZIONE DELLA FORMAZIONE INTERNA

Sistema Qualità UNI EN ISO 9001 ED 2008

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

Algoritmi e strutture dati. Codici di Huffman

MANUALE DELLA QUALITÀ SEZIONE 5.1: FUNZIONAMENTO DEL SISTEMA DI GESTIONE PER LA QUALITÀ

LE FUNZIONI A DUE VARIABILI

Verifica e validazione della qualità del sw

Funzioni in C. Violetta Lonati

2. Leggi finanziarie di capitalizzazione

Luigi Piroddi

Analisi dei requisiti e casi d uso

METODI per effettuare previsioni con analisi di tipo WHAT-IF

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica. Ingegneria del Software.

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

Nozione di algoritmo. Gabriella Trucco

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:

Algebra Booleana ed Espressioni Booleane

REGOLAMENTO (UE) N. 1235/2011 DELLA COMMISSIONE

Metodi formali per la verifica dell affidabilità di sistemi software (e hardware) (Peled, Software Reliability Methods, cap. 1) Importanza della

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)

Alberta Riccio (Responsabile Qualità, Ambiente, Sicurezza e Risorse Umane)

CSP- CSE RSPP FSL - FFSL - CTS CTSS*

IL SISTEMA DI DELEGHE E PROCURE una tutela per la società e i suoi amministratori. Milano 18 novembre A cura di: Luca Ghisletti

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

GESTIONE DELLA QUALITÀ DELLE FORNITURE DI BENI E SERVIZI

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda

CONCETTO DI LIMITE DI UNA FUNZIONE REALE

1. PRIME PROPRIETÀ 2

10. Insiemi non misurabili secondo Lebesgue.

IL SISTEMA DI CONTROLLO INTERNO

Concetti di base di ingegneria del software

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010

AZIENDA SANITARIA LOCALE TO1 - SC MEDICINA LEGALE - OBITORIO CIVICO

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

DAL DIAGRAMMA AL CODICE

ali e non funzionali con priorità (high, medium, low) Use Case con un Activity Diagram o uno State Diagr ram

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

MANUALE DELLA QUALITÀ SIF CAPITOLO 08 (ED. 01) MISURAZIONI, ANALISI E MIGLIORAMENTO

Esercizi Capitolo 6 - Alberi binari di ricerca

Studente: SANTORO MC. Matricola : 528

risulta (x) = 1 se x < 0.

PRINCIPALI ATTIVITA TECNICHE PER LA MISURA DEL GAS

Norme per l organizzazione - ISO serie 9000

Capitolo 7: Teoria generale della calcolabilitá

b i 1,1,1 1,1,1 0,1,2 0,3,4

Intorni Fissato un punto sull' asse reale, si definisce intorno del punto, un intervallo aperto contenente e tutto contenuto in

Ottimizzazione delle interrogazioni (parte I)

MANUALE DELLA QUALITÀ SEZIONE 5.1: FUNZIONAMENTO DEL SISTEMA DI GESTIONE PER LA QUALITÀ

Capitolo 12 La regressione lineare semplice

Introduzione ai Metodi Formali

Sistemi Operativi. 5 Gestione della memoria

Transcript:

Convalida: attività volta ad assicurare che il SW sia conforme ai requisiti dell utente. Verifica: attività volta ad assicurare che il SW sia conforme alle specifiche dell analista. Goal: determinare malfunzionamenti/anomalie/errori nel SW. Strumenti: (non in contrapposizione ma complementari): Testing: basato su analisi dinamica del codice. Metodi Formali: basato su analisi statica del codice.

Il processo di valutazione di un sistema attraverso strumenti manuali o automatici col fine di determinare se il sistema soddisfa i requisiti specificati oppure se il suo comportamento attuale differisce da quello atteso (IEEE Std 829-1983, Standard for Software Test Documentation)

Unit Testing, Test di Integrazione, Test di Sistema, Test di Regressione, Test di Accettazione (Alpha Testing), Beta Testing.

Attività volta a determinare la correttezza e completezza (rispetto ai requisiti) di un programma visto come singolo modulo. Composto dalle seguenti attività (IEEE Std 1008-1987, Standard for Software Unit Testing): Pianificazione dell approccio, risorse e tempistica, Individuazione delle caratteristiche da testare, Determinazione dell insieme di test, Esecuzione dei Test, Verifica se altri altri test sono necessari, Valutazione dei risultati.

Un programma P è una funzione da un insieme di dati D (Dominio) in un insieme di dati R (Codominio). Si consideri un programma P : D -> R.

Dato d D, P(d) è corretto (ok(p, d)) se soddisfa le specifiche, non corretto altrimenti. Un test T per P è un sottoinsieme di D. P è corretto in T (ok(p, T)) se per ogni t T, si ha ok(p, t). P è corretto (ok(p)) se P è corretto in D. Un test T è ideale se la correttezza di P in T implica la correttezza di P. (Da questo segue che il test D è ideale).

Un Criterio di Selezione C per P è un insieme di sottoinsiemi di D. Un test T è selezionato da un criterio di selezione C se per ogni t T esiste c C t.c. t c, e per ogni c C esiste t T t.c. t c. Esempio: Si consideri un programma P : IN {Y,N}, e il criterio di selezione {{t t pari}, {0}, {t t primo}, {t t > 1000}}. Tale criterio ad esempio seleziona il test {6, 8, 0, 7, 37, 1001}.

Un criterio di selezione C è affidabile se comunque presi T1 e T2 selezionati da C, si ha ok(p, T1) ok(p, T2). Un criterio di selezione C è valido se ok(p) t.(selezionato(t,c) ok(p, t))

Esempio Per tale programma, il criterio di selezione: {{0}, {2}} è affidabile ma non valido, {{0, 1, 2, 3, 4}} è valido ma non affidabile, {{t t > 3}} è valido e affidabile.

Teorema (Goodenough, Gerhart) affidabile(c, P) valido(c, P) selezionato(c, T) ok(p, T) ok(p) Teorema (Howden): Non esiste un algoritmo che, dato un programma arbitrario P, generi un test ideale finito, e cioè un test finito definito da un criterio affidabile e valido.

L'aver dimostrato che un certo criterio di selezione di test soddisfa particolari proprietà di affidabilità e validità per il programma inizialmente in esame, non garantisce nulla sulle proprietà godute dallo stesso criterio di selezione di test una volta che il programma in esame viene modificato per rimuovere le anomalie riscontrate durante la fase di test

Sia {{0}, {2}} che {{0, 1, 2, 3, 4}} diventano test ideali {{t t > 3}} diventa valido (seleziona almeno un test che contiene un numero diverso da 5 e quindi rileva il malfunzionamento), ma non più affidabile

Due criteri fondamentali: Test funzionale o White Box Testing: basato sul programma, indipendente dalle specifiche. Test strutturale o Black Box Testing: basato sulle specifiche del programma, indipendente dal programma stesso. Questi due criteri sono complementari da loro e ognuno può rilevare malfunzionamenti non rivelabili con l altro. Il White Box Testing è basato sulla nozione di copertura, i.e. sull esecuzione di elementi del grafo di controllo di un programma.

Un comando di assegnamento o di ingresso/uscita può essere rappresentato da un solo nodo nel grafo di controllo

if cond then S1 else S2

while cond do S:

S1; S2

Esempio di grafo di un programma

Il grafo corrispondente ad un programma può essere modificato a seconda dell'uso che se ne intende fare Possono essere sia eliminati che aggiunti nodi ed archi

Esempio: Se si e` interessati solo ai comandi che comportano più alternative nel flusso di controllo i nodi corrispondenti a sequenze di ingressi/uscite ed assegnamenti possono essere collassati:

Esempio: Rappresentazione delle diverse azioni che corrispondono all'assegnamento (R1,...,R4, registri):

Ad ogni test T basato sulla nozione di copertura e associabile una misura del grado di copertura dato da: numero di elementi coperti da T numero totale di elementi copribili

Teorema (Weyuker): Dato un generico programma P, l esistenza di un dato di test tale da causare l esecuzione di una particolare istruzione di P, oppure di una particolare condizione di P, oppure di un particolare cammino di P, oppure di ogni istruzione di P, oppure di ogni condizione di P, oppure di ogni cammino di P non è decidibile.

Criterio di copertura dei comandi (Statement test) Un test T soddisfa il criterio di copertura dei comandi se e solo se ogni comando eseguibile del programma è eseguito per almeno un dato di test in T. Nel grafo di controllo del programma, ogni nodo corrispondente ad un comando eseguibile deve essere percorso almeno una volta Misura di copertura C : numero di comandi eseguiti numero totale di comandi eseguibili

Esempio: Si consideri il seguente programma

Il test S = {(x = 20, y = 30)}, causa l'esecuzione di tutti i comandi del programma e quindi soddisfa il criterio di copertura dei comandi (la copertura assicurata da S è 1) Il malfunzionamento (divisione per zero), che si verifica quando il comando alla linea 8 viene eseguito con valore zero per la variabile x non è rilevato dal test S Il test S non comporta l'esecuzione del programma per tutti i valori delle decisioni: la decisione alla linea 7 (x>0) dà valore vero per tutti i dati di test contenuti in S

Criterio di copertura delle decisioni (Branch test) Un test T soddisfa il criterio di copertura delle decisioni se e solo se ogni arco del grafo di controllo del programma è percorso almeno una volta Misura di copertura C : numero di archi percorsi numero totale di archi percorribili Ovviamente, se un test soddisfa il branch test allora soddisfa anche il statement test, ma non è detto il viceversa.

Il test S = {(x = 20, y = 30)} non soddisfa il criterio di copertura delle decisioni: l'arco (6, 8) non viene mai percorso Il test D = {(x = 20, y = 30), (x = 0, y = 30)} soddisfa il criterio di copertura delle decisioni, in quanto causa la percorrenza di tutti gli archi almeno una volta, e permette di rilevare il malfunzionamento causato dalla divisione per zero alla linea 8

Esempio: Si consideri il seguente programma

Il test {(x = 5, y = 5),(x = 5, y = -5)} soddisfa il criterio di copertura delle decisioni, ma non rileva un malfunzionamento causato da una divisione per zero sia alla linea 7 che alla linea 8 La decisione alla linea 7 può essere posta a vero ed a falso agendo unicamente su una sola delle due condizioni in or nella decisione

Criterio di copertura delle condizioni (Condition testing) Un test T soddisfa il criterio di copertura delle condizioni se e solo se ogni singola sottocondizione che compare nelle decisioni del programma assume il valore vero e falso per un qualche dato di test in T.

Il test C = {(x = 0, y = -5), (x = 5, y = 5)} soddisfa il criterio di copertura delle condizioni, infatti: per il dato (x = 0, y = -5) la condizione (x = 0) vale vero e la condizione (y > 0) vale falso, per il dato (x = 5, y = 5) la condizione (x = 0) vale falso e la condizione (y > 0) vale vero Il test C rileva il malfunzionamento causato dall'anomalia alla linea 7, ma non quello causato dall'anomalia alla linea 8 Il test C non soddisfa il criterio di copertura delle decisioni, infatti per entrambi i dati del test C la decisione di linea 7 vale vero)

Criterio di copertura delle condizioni e delle decisioni Un test T soddisfa il criterio di copertura delle condizioni e delle decisioni se e solo se ogni decisione vale sia vero che falso ed ogni singola sotto-condizione che compare nelle decisioni del programma vale sia vero che falso per diversi dati di test in T Il criterio di copertura delle decisioni e delle condizioni contiene sia il criterio di copertura delle condizione che il criterio di copertura delle decisioni

Il test C = {(x = 5, y = -5), (x = 0, y = -5), (x = 5, y = 5)} soddisfa il criterio di copertura delle condizioni e delle decisioni Il test C rileva il malfunzionamento causato dall'anomalia alla linea 7, e anche quello causato dall'anomalia alla linea 8

Un test T soddisfa il criterio di copertura dei cammini se e solo se ogni cammino nel programma viene percorso per almeno un dato di test in T Misura di copertura C : numero di cammini percorsi numero totale di cammini percorribili Il numero di cammini eseguibili può essere infinito, rendendo tale criterio non applicabile Per limitare il numero di cammini si fissa il numero massimo di percorrenze di ciascun ciclo

Un test T soddisfa il criterio di n-copertura dei cicli se e solo se ogni cammino contenente un numero di iterazioni di ogni ciclo non superiore ad n è eseguito per almeno un dato di test in T

Determinano la significatività dei cammini in un programma a partire dall'analisi di flusso delle variabili Selezione di un cammino basata sul numero di sequenze definizione/uso delle variabili Un ciclo viene ripetuto un numero maggiore di volte solo se ciò permette di eseguire sequenze di definizione/uso non già esaminate

Variabili x ed y definite (linea 5) e usate (linee 6 e 7), sufficienti test selezionati da criteri di 0-copertura dei cammini Variabili a e b : definizione di a di linea 6 usata nelle linee 8, 10, 11, 12 e 14; definizione di a di linea 11 (nodo 11') usata in 8, 10, 11, 12; definizione di b di linea 7 usata nelle linee 8, 10, 11 e 12; definizione di b di linea 12 (nodo 12') usata nelle linee 8, 10, 11, 12.

Obiettivo: determinare il numero minimo di iterazioni richieste affinché tutte le sequenze definizione/uso per le variabili a e b siano esercitate almeno una volta Dati di test che non causano alcuna iterazione del ciclo while (es. (x = 5, y = 5)) non sono sufficienti

Dati di test che causano un'iterazione del ciclo while (es. (x = 10, y = 5)) permettono di esercitare tutti gli usi delle variabili a e b che possono seguire le definizioni alle linee 6 e 7 rispettivamente, ma non gli usi dei valori definiti dai comandi alle linee 11 (nodo 11') e 12 (nodo 12')

Dati di test che causano due iterazioni del ciclo while (es. (x =15, y = 5)) permettono invece di testare tutte le sequenze definizione/uso delle variabili a e b, e quindi permettono un'analisi completa per il criterio scelto

Dati di test che richiedono piu` di due di iterazioni dei ciclo while (es. (x =20, y = 5)) non permettono di esercitare sequenze di definizione/uso non già esaminate

Sia x una variabile del programma P. Il cammino (i, n1,.., nm, j) nel grafo corrispondente al programma P è un cammino libero da definizioni rispetto alla variabile x dal nodo i al nodo j se e solo se la variabile x non appartiene a nessuno degli insiemi def associati ai nodi i, n1,..,nm, j Per ogni nodo i e ogni variabile x appartenente all'insieme def associato al nodo i, si definisce l'insieme du(x, i) come l'insieme di tutti i nodi j tali che esiste un cammino libero da definizioni rispetto alla variabile x dal nodo i al nodo j e x è usata nel nodo j

Criterio copertura delle definizioni Un test T soddisfa il criterio di copertura delle definizioni se e solo se per ogni nodo i ed ogni variabile x appartenente all'insieme def(i), T include un cammino libero-da-definizioni dal nodo i ad almeno un elemento di du(i, x) Esempio: Per il programma gcd il criterio seleziona test che causano al più un'iterazione del ciclo while Il criterio non richiede che per ogni definizione siano raggiunti tutti gli usi che possono fare riferimento alla stessa definizione Per la definizione di a corrispondente al nodo 11', il criterio è soddisfatto (uso di a al nodo 8)

Criterio di copertura di tutti gli usi Un test T soddisfa il criterio di copertura tutti gli usi se e solo se per ogni nodo i ed ogni variabile x appartenente all'insieme def(i), T include un cammino libero-da definizioni dal nodo i ad ogni elemento di du(i, x).

Criterio copertura dei cammini du Un test T soddisfa il criterio di copertura dei cammini du se e solo se per ogni nodo i ed ogni variabile x appartenente all'insieme def(i), T include tutti i cammini non contenenti cicli liberida-definizioni dal nodo i ad ogni elemento di du(i, x)

Black Box Testing Basati sulle specifiche del programma. Tre principi utili: per ogni variabile di input che assume valori in un intervallo, testare almeno un valore al di sotto, uno al di sopra e uno nell intervallo. per ogni variabile di input che assume valori discreti, testare almeno un valore valido e uno non valido (per la robustezza). test di frontiera (boundary testing): testare i valori di frontiera di ogni variabile (usualmente rilevano più errori di altri).

Test di Integrazione Dato un programma composto da piu moduli, si devono testare: i singoli moduli, secondo le tecniche già illustrate con eventuale creazione di moduli di simulazione (divisi in stubs e drivers). le interazioni fra i moduli, secondo due tecniche: big bang test: tutti i moduli vengono integrati e il sistema viene testato come unità, incremental test: i moduli vengono integrati e testati via via che sono prodotti.

Test di Sistema Il test di sistema è volto a testare particolari proprietà globali del sistema, fra cui: test di stress: proprietà del sistema in condizioni di sovraccarico, test di robustezza: proprietà del sistema se i dati non sono corretti, test di sicurezza: proprietà di sicurezza del sistema.

Test di Regressione Il test di regressione considera il caso che si produca una nuova versione di un programma. Teorema: Non è possibile stabilire l equivalenza di due programmi. =>si verifica la compatibilità della nuova versione rispetto alla precedente attraverso (i) l esecuzione dei due programmi sugli stessi dati (eventualmente convertiti) e (ii) il successivo confronto dei risultati.

Test di Accettazione (Alpha testing) Fase finale del processo di testing. Il sistema è testato su insieme di dati forniti dall utente. In casi limite, potrebbe essere una versione golden del programma che si sa essere corretta (cfr regression testing).

Beta testing Il sistema è fornito ad alcuni utenti potenziali che accettano di usare e il sistema e di riportarne gli eventuali problemi. E possibile che il processo di Beta testing comporti la modifica del sistema e il rilascio di nuove versioni da sottoporre nuovamente al Beta testing.