lezione
lezione
Testing
Tipo di risorsa Tipo: lezione
Materia di appartenenza Materie:

Definizione

modifica

Il Testing è un metodo di verifica nel quale si accerta la correttezza di un sistema esercitandolo e comparandone il funzionamento rispetto alle attese.

Attività sottese al Testing

modifica
Test Case Selection
scelta dei Test Cases
Sensitization
identificare gli input che portano ai Test Cases scelti
Execution
creare stub, driver, log
Oracle Verdict
il sistema verifica le attese?
Debugging
tracciare ciascuna Failure su una o più Faults
Coverage Analysis
Stimare il grado di copertura raggiunto rispetto alla complessità reale del sistema - Ci da un indicatore di confidenza sulla assenza di errori residui

Occorre innanzi tutto domandarsi a quale livello di astrazione del sistema possiamo lavorare

  • Codice Sorgente
  • Codice Compilato
  • Diagramma UML

Sono possibili inoltre diverse astrazioni rispetto ad altrettante prospettive che intendiamo investigare

Funzionale
il sistema è visto come una BlackBox investigabile solo in termini di relazioni tra l'input immesso e l'output restituito. Viene testato facendo riferimento alla specifica dei requisiti.
Strutturale
il sistema è visto come una WhiteBox, ovvero si ha accesso, invece che alle relazioni di Ingresso/Uscita, al codice sorgente.
Architetturale
il sistema è visto come una GreyBox, ovvero si ha accesso all'aspetto Funzionale e alle principali relazioni funzionali interne.

Solitamente il miglior approccio da adottare prevede:

  • Prospettiva Funzionale nel TCS
  • Prospettiva Strutturale nella CA

Approccio al Testing

modifica
Approccio Control Flow Data Flow Finite States OO testing
Funzionale NO NO OK OK
Strutturale OK OK NO OK

Test Case Selection

modifica

Sensitization

modifica

Execution

modifica

Oracle Verdict

modifica

Debugging

modifica

Coverage Analysis

modifica

Una volta definito il livello di astrazione desiderato, utilizziamo un opportuno Criterio di Copertura

  • All Nodes
  • All Edges
  • All Conditions
  • Condition Decision
  • Multiple Conditions
  • Modified Condition-Decision

All Nodes

modifica

Con questo criterio si intende visitare tutti i nodi del Control Flow Graph

Pro:

  • Complessità:  

Contro:

  • Non garantisce la copertura di tutte le scelte

All Edges

modifica

Con questo criterio oltre a verificare tutti i nodi del control flow graph si controllano anche tutti gli archi.

La complessità è O (N* C) dove N è il numero di nodi e E è il massimo grado di uscita.

All Conditions

modifica

Condition Decision

modifica

Multiple Conditions

modifica

Modified Condition-Decision

modifica

Bibliografia

modifica