Testing del Software: Componenti, Interfacce e Automazione

Classified in Informatica

Written at on italiano with a size of 5,99 KB.

Obiettivi e Strategie del Testing del Software

Il processo di testing del software ha due obiettivi principali:

  1. Dimostrare allo sviluppatore e al cliente che il software soddisfa i requisiti.
  2. Scoprire vizi o difetti nel software che causano comportamenti scorretti, indesiderati o non conformi alle specifiche.

Il primo obiettivo porta al test di convalida, dove ci si aspetta che il sistema funzioni correttamente con un insieme di casi di test che riflettono l'utilizzo previsto. Il secondo obiettivo porta al test dei difetti, con casi di test progettati per evidenziare i problemi.

È importante sottolineare che i test non possono dimostrare l'assenza totale di difetti, ma solo la loro presenza.

Le politiche di test possono basarsi sull'esperienza di utilizzo del sistema e concentrarsi sulle caratteristiche operative. Ad esempio:

  • Testare tutte le funzioni del sistema accessibili tramite menu.
  • Testare combinazioni di funzioni (es., formattazione del testo) accessibili dallo stesso menu.
  • Testare tutte le funzioni con input corretti e non corretti.

Testing dei Sistemi: Integrazione e Rilascio

Il testing del sistema prevede l'integrazione di componenti e la verifica del sistema integrato. Si distinguono due fasi:

Test d'Integrazione

Il team di test accede al codice sorgente per identificare la causa dei problemi e i componenti da correggere. L'obiettivo è individuare problemi nelle interazioni tra i componenti.

Test di Rilascio (Release Testing)

Viene testata una versione del sistema potenzialmente rilasciabile agli utenti. L'obiettivo è verificare che il sistema soddisfi i requisiti e sia affidabile, aumentando la fiducia del fornitore.

Test delle Prestazioni

Dopo l'integrazione completa, si verificano le proprietà emergenti come prestazioni e affidabilità.

Test dei Componenti (Unit Testing)

Il test dei componenti, o unit test, verifica i singoli componenti del sistema (difetto testing). Si possono testare:

  1. Singole funzioni o metodi di un oggetto.
  2. Classi di oggetti con attributi e metodi.
  3. Componenti compositi con interfacce definite.

Test delle Interfacce

Fondamentale nello sviluppo object-oriented e component-based, il test delle interfacce verifica la corretta interazione tra componenti. Tipi di interfacce:

  • Interfacce Parametriche: Passaggio di dati o riferimenti a funzioni tra componenti.
  • Interfacce a Memoria Condivisa: Condivisione di un'area di memoria tra componenti.
  • Interfacce Procedurali: Un componente offre procedure richiamabili da altri.
  • Interfacce di Passaggio Messaggi (Message Passing): Un componente richiede servizi ad altri tramite messaggi.

Tipi di Errori di Interfaccia

Errori comuni nei sistemi complessi:

  • Abuso dell'Interfaccia: Errori nell'utilizzo dell'interfaccia di un altro componente.
  • Scarsa Comprensione dell'Interfaccia: Incomprensioni delle specifiche e ipotesi errate sul comportamento.
  • Errori di Timing: Nei sistemi real-time con memoria condivisa o passaggio di messaggi.

Linee Guida per il Test delle Interfacce

  • Elencare esplicitamente ogni chiamata a componenti esterni.
  • Verificare i puntatori di interfaccia (puntatori nulli).
  • Causare il fallimento del componente chiamato tramite interfaccia procedurale.
  • Usare test di stress nei sistemi a scambio di messaggi.
  • Variare l'ordine di attivazione dei componenti che interagiscono tramite memoria condivisa.

Progettazione dei Casi di Test (Test Case Design)

La progettazione dei casi di test (input e output previsti) è cruciale. Approcci:

  • Test Basato sui Requisiti: Casi di test per verificare i requisiti.
  • Test di Partizione: Identificazione di partizioni di input/output e progettazione di test per coprirle tutte.
  • Test Strutturale: Utilizzo della conoscenza della struttura del programma per esercitare tutte le sue parti.

Test del Percorso (Path Testing)

Strategia di test strutturale per esercitare ogni percorso di esecuzione di un componente o programma. Garantisce che tutte le istruzioni siano eseguite almeno una volta.

Automazione del Testing

Il testing è un processo costoso e laborioso. Un banco di lavoro di test (test workbench) offre strumenti integrati per supportarlo:

  1. Test Manager: Gestisce l'esecuzione dei test, i dati, i risultati e le risorse.
  2. Generatore di Dati di Test: Genera dati di test.
  3. Oracolo: Genera previsioni dei risultati attesi.
  4. Comparatore di File: Confronta i risultati dei test con quelli precedenti.
  5. Generatore di Report: Fornisce risorse per i report dei risultati.
  6. Analisi Dinamica: Aggiunge codice per contare l'esecuzione di ogni istruzione (profilo di esecuzione).
  7. Simulatore: Simula la macchina di destinazione.

Software Testing (Punti Chiave)

  • I test mostrano solo la presenza di errori, non la loro assenza.
  • Il test dei componenti è responsabilità degli sviluppatori; il test del sistema è svolto da un team separato.
  • Il test di integrazione è la prima attività di test del sistema. Il test di rilascio verifica la conformità ai requisiti.
  • Durante il test del sistema, si cerca di "rompere" il sistema.
  • Il test dell'interfaccia rileva difetti nelle interfacce dei componenti.
  • Il partizionamento di equivalenza è un metodo per derivare casi di test.
  • Il test strutturale si basa sull'analisi del programma.
  • L'automazione riduce i costi del testing.

Entradas relacionadas: