Metriche: Statistica in cui troviamo il numero di righe di codice per metodo, classi, attributi.
MIGLIORAMENTI SUL CODICE
Fare in modo che un metodo svolga solo un’operazione semplice. Questa suddivisione permette di verificare la correttezza delle operazioni e di riusarle.
Costruire delle astrazioni, le quali possono essere anche fornite dalle librerie java.(Metodi che richiamano altri metodi).
Suddivisione tra le operazioni in base al loro comportamento: operazioni che aggiornano lo stato (command) e quelle che restituiscono dei valori(query).
Osservabilità: si devono organizzare test, lo stato del sistema deve essere osservabile per verificare se l’esecuzione sta andando nella direzione corretta. Quando eseguo dei test per verificare la correttezza devo verificare che i risultati ottenuti siano uguali a quelli previsti che quindi devono essere osservabili. Se il codice ha un problema di osservabilità significa che non è adatto per effettuare dei test e quindi sarà errato(non testabile).
COS’È UN TEST? (domanda esame) Un test è una verifica del funzionamento del sistema software per verificare se il suo comportamento è corretto o meno. Quando si realizzano test si vuole eseguire sistema software, o parte di esso, sotto certe condizioni, partire da condizioni iniziali e poi ottenere dei risultati, ciò che viene controllato, quindi i valori, vengono chiamati valori input del test(sia che li passo al metodo o meno). Se ciò che mi aspetto è uguale al risultato appena fornito a runtime significa che il comportamento è corretto. Il test valuta in maniera automatica il comportamento, dove automatica non significa che faccio stampare il valore atteso dal metodo ma lo confronto. Parliamo di un programma che esegue il codice sotto certe condizioni (valori in input) e valuta se il risultato fornito è corretto.
L’unico modo per capire se un sistema software è corretto è eseguire dei test, anche più di un test per ogni metodo.
Si deve confrontare il risultato del metodo con il risultato atteso, la difficoltà maggiore nello scrivere un test è capire quale sia il risultato atteso quindi capire qual è il valore corretto. Ci si deve basare sui requisiti del cliente ,che se scritti bene, forniscono i valori corretti.
- valore atteso: È il risultato specifico che ti aspetti di ottenere da un test per un dato input.
Per il valore atteso si fa riferimento a quello che viene chiamato oracolo, ovvero un sistema che riesce a dare un valore corretto, confronto magari con una versione precedente stabile, se i risultati differiscono ci sono dei problemi. L’oracolo è il meccanismo che determina se l’output prodotto dal software è corretto oppure no. In pratica, è ciò che “sa” qual è il valore atteso o come verificarlo.
Ci deve essere almeno una classe di test per ogni metodo del codice, una classe di test è scritta appositamente per verificare il corretto funzionamento di una Classe. Serve per verificare la correttezza dei requisiti.
PROBABILMENTE MANCA UNA PARTE QUA CHE DOVREBBE AVERE LUCIANA
-1.png)
PRINCIPI
- kiss → keep it simple → produrre componenti semplici
- dry → don’t repeat yourself → evita ripetizioni nel codice, se faccio copia e incolla di molte parti del codice e poi devo modificare una parte copiata, questa va poi modificate in tutte le copie che ho fatto, meglio costruire un metodo più piccolo che fa solo poche cose e anziché ripetere codice chiamo quei metodi
- yagni → you ain’t gonna need it → non progettare funzionalità che ora non servono, andrai a complicare inutilmente il codice e questo porta a perdite di tempo
- lod → law of demeter → non parlare con gli estranei → un oggetto deve avere conoscenza solo di oggetti a lui correlati (amici), questo viene fatto per evitare problemi (anche problemi di sicurezza), di base quindi una classe deve avere contatti con poche classi, solitamente 3 o 5 al massimo
- I test vanno eseguiti molto spesso, cosi posso sapere con più precisione dove ci sono stati errori, inoltre eseguendo spesso i test evito di avere troppi errori.
UML Se ho 2 classi A e C e c’è una freccia che indica da A → C allora saprò che A per funzionare bene usa anche C. freccia con punta aperta (→) indica una Associazione o Dipendenza.