I termini "fragile" e "fragile" non hanno una definizione chiara e specifica nel contesto dello sviluppo del software. Sono piuttosto parole comuni in inglese che a volte vengono utilizzate nello sviluppo di software per descrivere determinati tipi di codice.
Nel contesto dello sviluppo del software, queste parole significano esattamente la stessa cosa che fanno ovunque: le cose "fragili" e "fragili" sono cose facili da rompere.
Detto questo, c'è questo "saggio di riflessione personale" da Wikipedia . Se stai cercando una definizione "ufficiale", questa è valida come qualsiasi:
Software brittleness is the increased difficulty in fixing older software that may appear reliable, but fails badly when presented with unusual data or altered in a seemingly minor way.
Cose che rendono i test unitari fragili:
- Asserimento contro elementi in un'interfaccia utente.
- Asserimento contro stringhe di risultato di grandi dimensioni anziché valori discreti.
- Stato statico o condivisione dello stato impropria tra i thread.
- Dati di test non realistici o altrimenti inadeguati
- Elaborare schemi di derisione.
- Codice fragile sotto test.
- Troppi casi limite o complessità ciclomatica irragionevolmente alta.
- Troppe responsabilità.
- Astrazioni di perdita.
- Il codice sotto test non è idempotente tra le sessioni di test.
- Test i cui risultati possono variare in base all'ambiente, ad esempio i tempi di esecuzione.
- Test che non possono essere eseguiti indipendentemente l'uno dall'altro.
Come puoi vedere, ciò che rende i test di unità fragili spesso è non l'errore del test, ma l'errore del codice in fase di test.
Un modo per avere test migliori (e per estensione, codice migliore), è fare pratica di sviluppo in prova. Scrivere i test prima ti costringe a pensare alla superficie dell'API del tuo codice, e ti incoraggia caldamente a scrivere quella superficie in modo da renderla più semplice, più robusta, più deterministica e più facile da testare.
Ulteriori letture
The Brittleness of Unit Test
Qualche buon consiglio per i neofiti ai test unitari