La verifica a livello di classe controlla le interazioni tra i metodi di una classe o di un piccolo gruppo di una classe. Lo scopo è verificare che la classe supporti tutti i casi di interesse per gli utenti e sia sufficientemente solida da gestire le sequenze di metodo impreviste.
Utilizzare un modello di verifica basato sullo scenario per generare un caso di prova semplice per la classe. Ad esempio, è possibile richiamare un costruttore e una serie di metodi che rappresentano i flussi più comuni per quella classe. Dopo che la verifica è stata generata, aggiungere un punto di inizializzazione e definire i valori predefiniti dei dati di verifica per i parametri del costruttore. In questo scenario semplice, ad esempio è possibile aggiungere un punto di inizializzazione per impostare il valore dell'oggetto su nullo. Ciò consente al programma di raccolta rifiuti di distruggere l'oggetto e di conseguenza utilizzare il codice di distruzione nella nuova classe.
Eseguire la verifica per accertarsi che tutto funzioni correttamente. In questo caso la verifica dovrebbe passare al primo tentativo perché non sono stati definiti i valori previsti per il costruttore. Se non si riescono a interpretare i risultati, utilizzare il debugger. Continuare a eseguire la verifica finché non dà esito positivo.
Quando si verifica una classe, il caso di prova gioca il ruolo di uno degli utenti della classe. Accertarsi di richiamare una serie di metodi dallo script di comportamento della verifica proprio come qualsiasi altro utente della classe.
Utilizzare le tecniche di partizione per definire in modo appropriato i dati di verifica.
Nel corso del flusso, accertarsi di definire numerose azioni di convalida. Ciascuna azione di convalida dovrebbe controllare che le azioni eseguite dall'ultima convalida abbiano modificato il componente sottoposto a verifica nel modo opportuno.
Eseguire la verifica tutte le volte che è necessario finché l'esito non è positivo.
Definire diverse variazioni del caso di utilizzo definendo diversi scenari di verifica. Utilizzare l'analisi della copertura dei percorsi basata sullo stato per valutare i differenti casi di utilizzo possibili. Per definire le variazioni di verifica, è possibile copiare una verifica esistente o crearne una nuova.
Probabilmente gli scenari definiti fino a questo momento riflettono i flussi che verranno utilizzati un giorno da un utente della classe. Vale la pena poi di considerare i flussi imprevisti. Lo scopo in questo caso è verificare che la classe possa gestire sequenze inaspettate di metodi e garantire che l'oggetto non venga mai corrotto.
Per verificare gli scenari meno comuni, definire alcune proprietà che dovrebbero essere valide nel corso della vita dell'oggetto. Tali proprietà sono anche chiamate invarianti. Definire le sequenze casuali delle chiamate di metodo, e, alla fine della verifica, definire l'azione di convalida per verificare che l'invariante sia rispettata.
Per valutare la copertura della verifica, andare alla vista Copertura nella prospettiva Creazione profili e osservare la copertura per in metodi che sono stati verificati. Se sono state coperte meno del 100% delle righe, aggiungere degli scenari nuovi. Nella Guida in linea è possibile reperire dettagli sul controllo della copertura del codice.
Per decidere quali insiemi di dati aggiungere, identificare le righe di codice che non sono coperte. Di solito tali righe sono correlate alle scelte all'interno del codice, ad esempio alle istruzioni if. Molto spesso, poiché la condizione viene sempre valutata falsa, il blocco di codice che segue la scelta non viene coperto. Per coprire questo blocco di codice è necessario comprendere qual è il caso di utilizzo che l'istruzione di scelta deve coprire e creare una verifica che rappresenti quel caso di utilizzo.
Concetti correlati
Strategie di verifica
Sottosistemi Java
Tecniche di verifica basate sullo stato
Attività correlate
Verifica dei metodi Java
Inserimento di punti di inizializzazione