Tipologie di testing software: Il Test di manutenibilità

Tipologie di testing software: Il Test di manutenibilità

I team sono spesso concentrati sullo sviluppo economicamente vantaggioso dei sistemi IT. Nel costo totale di proprietà, i costi di manutenzione sono spesso molto più elevati dei costi di sviluppo. In DevOps il team dovrebbe trovare un giusto equilibrio tra costi di sviluppo e manutenzione. Uno sviluppo rapido e sporco (che causa molto debito tecnico) può comportare costi totali più elevati rispetto a sistemi ben progettati e ben ingegnerizzati. Pertanto, è essenziale concentrarsi sulla manutenibilità. Una buona architettura e struttura avvantaggiano notevolmente la manutenibilità. Il test di manutenibilità è una varietà di test basata sulla caratteristica di qualità ISO25010 “manutenibilità”; all’interno dei cosiddetti non funzionali.

Che cos’è la manutenibilità?

La manutenibilità è il grado di efficacia ed efficienza con cui un prodotto o sistema può essere modificato dai manutentori previsti.

La manutenibilità riguarda la modifica di un sistema IT in modo semplice ed efficace. Se si dedica più impegno al mantenimento del codice esistente che alla scrittura di nuovo codice, questo è un indizio che la manutenibilità potrebbe essere scarsa. Le modifiche possono includere correzioni, miglioramenti o adattamenti del software. Ma si riferisce anche ai cambiamenti nell’ambiente, nei requisiti, nelle specifiche e nelle storie degli utenti. Si riferisce anche all’installazione di aggiornamenti e upgrade. Gli indicatori di manutenibilità sono la qualità del codice, la qualità della documentazione, la qualità dei test e molti altri.

Questa varietà di test non deve essere confusa con i test di mantenimento. Nei test di manutenzione, il motivo del test è che il sistema è stato modificato. Nei test di manutenibilità, lo scopo del test è vedere quanto bene il sistema può essere aggiornato, modificato e mantenuto.

Lo standard ISO25010 definisce cinque sottocaratteristiche per la manutenibilità:

  • Modularità: il grado in cui un sistema o un programma per computer è composto da componenti discreti, in modo che una modifica a un componente abbia un impatto minimo sugli altri componenti.
  • Riutilizzabilità: il grado in cui una risorsa può essere utilizzata in più di un sistema o nella creazione di altre risorse.
  • Analizzabilità: il grado di efficacia ed efficienza con cui è possibile valutare l’impatto su un prodotto o sistema di una modifica prevista a una o più delle sue parti, o a diagnosticare un prodotto per carenze o cause di guasti o per identificare le parti da modificare.
  • Modificabilità: il grado in cui un prodotto o un sistema può essere modificato in modo efficace ed efficiente senza introdurre difetti o degradare la qualità del prodotto esistente.
  • Testabilità: il grado di efficacia ed efficienza con cui è possibile stabilire i criteri di test per un sistema, prodotto o componente e i test possono essere eseguiti per determinare se tali criteri sono stati soddisfatti.

Queste cinque sottocaratteristiche coprono prospettive piuttosto diverse di manutenibilità, che possono anche interessare persone molto diverse all’interno (o anche al di fuori) del team.

La norma ISO25010 contiene una nota secondo cui la modificabilità è una combinazione di modificabilità e stabilità. Questi due termini non sono menzionati come sottocaratteristiche nello standard ISO25010 ma sono spesso utilizzati nella pratica. La modificabilità è la facilità o la difficoltà di apportare adattamenti al sistema. La stabilità è la facilità o la difficoltà di mantenere il sistema in uno stato coerente durante la modifica.

Discuteremo la testabilità separatamente dalle altre quattro sottocaratteristiche perché queste quattro sono principalmente un focus sullo sviluppo, mentre la testabilità ha una prospettiva di test.

Tipologie di testing software Il Test di manutenibilità

Misurare la manutenibilità sia staticamente che dinamicamente

La manutenibilità delle caratteristiche di qualità e le sue sottocaratteristiche sono determinate misurando un insieme di proprietà del prodotto software. Queste proprietà sono volume, duplicazione, complessità dell’unità, dimensione dell’unità, interfaccia dell’unità, accoppiamento dei moduli, equilibrio dei componenti e indipendenza dei componenti.

Le caratteristiche di manutenibilità di un sistema IT saranno in parte misurate osservando il prodotto (es. revisioni del codice), altre caratteristiche potranno essere misurate solo osservando le persone in esercizio mentre svolgono attività di manutenzione. Il primo è il puro test statico. Il secondo può essere chiamato testing dinamico, ma bisogna tenere presente che in questo caso l’oggetto del test non è il sistema informativo in sé, ma l’attività di manutenzione svolta sul sistema informativo.

Gli artefatti software che possono essere considerati valutati sono ad esempio file di codice sorgente, file di definizione dei dati, file di manipolazione dei dati e contenuto attivo di pagine web. Potrebbero anche essere procedure di installazione o infrastrutture come codice.

I test di manutenibilità possono essere eseguiti o supportati da strumenti automatizzati.

Misurazioni statiche

Esempi di misurazioni statiche sono:

  • Volume del codice, ad esempio misurato in righe di codice
  • Complessità ciclomatica di un’unità e/o del sistema nel suo insieme
  • Rapporto commento/codice
  • Profondità di annidamento delle dichiarazioni decisionali
  • Accoppiamento: numero di elementi di dati passati tra i moduli

Misure dinamiche

La misurazione dinamica della manutenibilità consiste principalmente nel cronometrare la durata di specifiche attività di manutenzione.

Esempi di misurazioni dinamiche sono:

  • Tempo trascorso per l’implementazione di una modifica
  • Stabilità del sistema, ad esempio il tempo medio tra i guasti

Testabilità

La testabilità riguarda sia le singole parti di un sistema, sia il sistema IT nel suo insieme e persino il processo aziendale end-to-end. La testabilità in pratica è il grado di efficacia ed efficienza con cui è possibile stabilire i criteri di test per un sistema, prodotto o componente ed eseguire test per determinare se tali criteri sono stati soddisfatti.

La qualità della documentazione del sistema, ad esempio nelle descrizioni dell’architettura ma anche nelle epiche e nelle storie degli utenti, influenza notevolmente la testabilità del sistema. Altrettanto importante è la facilità con cui i risultati provvisori del sistema possono essere resi visibili, valutati e persino manipolati, ad esempio disponendo di strumenti che possano accedere al database.

Le possibilità e le capacità dell’ambiente di test sono importanti anche per la testabilità del sistema, si pensi alle possibilità di viaggiare nel tempo per testare processi aziendali estesi come la scadenza dell’assicurazione o i termini del mutuo.

Una misura dinamica della testabilità è l’efficienza del re-test, ovvero la facilità di eseguire il test dopo che un problema è stato risolto.

Per ottenere una buona testabilità, il team potrebbe dover aggiungere funzionalità extra che supportino la facilità dei test. Si pensi, ad esempio, all’aggiunta di strutture per viaggiare nel tempo in un sistema che prevede un processo di durata molto lunga (come un sistema per le assicurazioni sulla vita). Inoltre, il team potrebbe aver bisogno di strumenti e strutture speciali, ad esempio per controllare il contenuto di un database esaminando direttamente le tabelle del database.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *