I metodi e i programmi che scriviamo andrebbero collaudati. Collaudare un metodo o un programma vuol dire verificarne il corretto funzionamento con quanti più dati possibili. Ovviamente, non siamo in grado di provare tutti i possibili input, ma quanto meno andrebbe verificato il corretto funzionamento nei casi principali. Ad esempio, per un programma che prende 3 numeri e restituisce il minimo, andrebbero provati i casi in cui il minimo è  il primo, il secondo o il terzo numero della serie, e anche i casi in cui due o più numeri in input sono uguali. Questo non ci da la certezza assoluta che il programma sia corretto, ma quanto meno ci instilla un po' di fiducia.

Ma come collaudare (in inglese to test, spesso impropriamente tradotto in italiano con testare) un metodo ? Nelle precedenti lezioni abbiamo sempre accompagnato i metodi che abbiamo scritto con un programma principale (detto programma driver) che richiamava il metodo con input noti, e poi noi esseri umani controllavamo manualmente che il risultato fosse quello corretto. Questo meccanismo può andare bene per uno o due metodi, ma certo non si presa bene a controllare la correttezza di tanti metodi.

Per questo, la maggior parte degli ambienti di sviluppo prevedono dei meccanismi appositi per il collaudo del software. Noi vedremo il meccanismo per gli unit test (collaudo di moduli) che possiamo utilizzare su VSCode. Se VSCode è aperto su una cartella contenente programmi Java, è possibile cliccare nella barra delle icone sull'icona (Testing).  Se non abbiamo precedentemente abilitato i test, possiamo a questo punto premere il pulsante "Enable Java Tests" che appare nella bara laterale sinistra (tra la barra delle icone e lo spazio dove si edita il codice). Vi viene chiesto (in alto nella finestra di VSCode), di scegliere il tipo di test da utilizzare: selezione JUnit Jupyter. Vi accorgete che i test Java sono attivi perché se cliccate sull'icona (Explorer) vedete la presenza, assieme ai file Java, di una cartella lib con un file contenente le classi necessarie per lo sviluppo di test. L'estensione del file (.jar) indica un file compresso (molto simile allo .zip) ma contenente classi Java. Non dovete fare nulla con la cartella lib: lasciatela lì e ignoratela.

Una volta attivati i test, la cosa migliore è creare una nuova classe apposita per il test. Per la descrizione di come scrivere questa classe, vi rimando direttamente ai programmi di esempio per questa lezione (dovete scaricarli e metterli in una cartella, poi aprire la cartella con VSCode).

Una volta scritta la classe con i test, è possibile tornare nella sezione collaudo di VSCode (icona ) e nella barra laterale, eventualmente espandendo le parti collassate, è possibile vedere l'elenco dei test:


La X rossa accanto al test vuol dire che il test è fallito. Per eseguire i test è sufficiente cliccare sull'icona (Run Tests), anche se ci sono altri modi che consentono di lanciare il singolo test. Si i programmi sono corretti e i test rieseguiti, la X rossa viene sostituita da un segno di spunta verde (ma tutto questo lo avete già visto provando a fare i compiti a casa).

Se un test è fallito, cliccando sopra il nome l'editor vi mostrerà il codice sorgente del test, con evidenziato il comando assert fallito. Di solito c'è anche un messaggio d'errore che dà indicazioni su qual è il problema. Nella immagine qui sotto, il problem è che il valore atteso di SommaErrata.somma(dati) era 5.6, ma il risultato è stato 4.5.


Last modified: Saturday, 19 November 2022, 11:40 AM