Testing

Da Wikiversità, l'apprendimento libero.
Jump to navigation Jump to search
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, utiliziamo 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]