Testing: esercitare il programma con dati di test per verificare che il suo comportamento sia conforme a quello atteso (definito nella specifica)
Oracolo: output atteso, quello che ci si aspetta che il programma produca
Malfunzionamento: comportamento del programma diverso da quello atteso
Obiettivo del testing: individuare malfunzionamenti
Testare il programma con tutti i possibili dati di test è impraticabile, quindi l’obiettivo è individuare classi di dati di test, selezionare un caso di test da ogni classe ed evitare classi di test ridondanti
Test suite: un insieme di casi di test per un programma
Un malfunzionamento di un programma è causato da un difetto (errore, bug) nel codice
Debugging: individuazione e correzione del difetto che ha causato il malfunzionamento
Più alta è la fase in cui si introduce il difetto, maggiore è la difficoltà di rimuoverlo
La ricerca di un difetto può essere fatta inserendo nel codice sorgente punti di ispezione dello stato delle variabili
In C il termine stream indica una sorgente di input o una destinazione per l’output
Gli stream spesso rappresentano file memorizzati da qualche parte (hard disk o altri tipi di memoria a lungo termine), in altri casi sono associati a periferiche (schede di rete, stampanti, ..)
Per automatizzare il test si possono usare i file per leggere dati di input e scrivere dati di output