Scroll

L’integration testing ricopre un ruolo chiave all’interno della governance IT. Uno degli aspetti più difficili a livello di componenti e sistemi IT è quello relativo alla capacità di governare la complessità, così da verificarne il funzionamento, secondo le specifiche. Poiché le infrastrutture IT sono sistemi complessi e articolati, non è sufficiente che ogni singolo componente funzioni correttamente, bensì è anche necessario che sia perfettamente integrato con il resto del sistema.

In quest’ottica, durante la fase di sviluppo è indispensabile testare anche l’integrazione attraverso processi standardizzati capaci di verificare i criteri d’ingresso, la pianificazione e scrittura dei test, oltre alla relativa esecuzione. In questo modo l’integration testing si qualifica come una fase di controllo che certifica il funzionamento dei moduli secondo le specifiche,ottenendo una reale minimizzazione di potenziali problematiche.

Le diverse tipologie di integration testing

La metodologia del test d’integrazione può comprendere, a sua volta, diversi tipi di approccio. Principalmente, quando si stabiliscono le linee guida, è indispensabile comprendere aspetti come il costo, la complessità dell’integration testing, oltre a criticità dell’applicazione o sistema.

A livello di gestione, quindi, si tende ad adottare diverse tipologie di integration test basate sulle reali esigenze. Con il metodo Big Bang, ad esempio, si attende il rilascio di tutti i componenti per procedere alla verifica dell’intero sistema, basandosi sulle interazioni tra i vari moduli. In alternativa, il metodo incrementale focalizzerà la propria attenzione nel testing dei componenti, a mano a mano che vengono integrati. Grazie a quest’ultimo si ha il principale vantaggio di poter più facilmente identificare eventuali difetti, mentre le tempistiche, rispetto al metodo Big Bang, risultano essere maggiori.

In particolar modo, dal momento che all’interno di un sistema possono essere presenti uno o più moduli, l’integration and system testing permette di verificare combinazioni dei singoli moduli, al fine di garantire che il software funzioni correttamente. In contesti in cui è presente un’elevata complessità a livello di sistema, l’integration and system testing consente di attivare metodi incrementali attraverso una metodologia black box.

A livello di gestione, quindi, si tende ad adottare diverse tipologie di integration test basate sulle reali esigenze. Con il test di integrazione Big Bang, ad esempio, si attende il rilascio di tutti i componenti per procedere alla verifica dell’intero sistema, basandosi sulle interazioni tra i vari moduli. In alternativa, il metodo incrementale, conosciuto anche come top-down, viene focalizzata l’attenzione nel testing dei componenti, a mano a mano che vengono integrati. Di fatto, i moduli di livello superiori vengono testati prima dei moduli di livello inferiore, con la conseguenza di appoggiarsi a stub per simulare il sotto modulo, nel caso in cui non sia stato ancora sviluppato. Grazie a questa tecnica di test di integrazione si ha il vantaggio di poter più facilmente identificare eventuali difetti, mentre le tempistiche, rispetto al metodo Big Bang, risultano essere maggiori.

In alternativa, con il test di integrazione bottom-up, l’approccio è dal basso verso l’alto, ovvero i moduli di livello inferiore vengono testati prima di quello di livello superiore. Al fine di testare tutti i sottosistemi presenti, vengono utilizzati test driver per simulare le componenti dei livelli più in alto, non ancora integrati. In alternativa, il test di integrazione di tipo sandwich sfrutta le strategie top-down e bottom-up alternandole, senza pero testare individualmente i singoli sottosistemi prima dell’integrazione.

La metodologia Agile

Soprattutto in contesti in cui viene adottata la metodologia di sviluppo Agile è ancor più fondamentale che ogni singola fase di test sia ben definita, con il vantaggio di poter svolgere l’integration testing in una fase iniziale e in modo ripetitivo, prima dell’unit test.

Di fatto, è necessario avere un ambiente di test che rispecchi l’ambiente di produzione, una build completa del software, dati reali che rappresentano le connessioni tra l’interno e l’esterno dell’applicazione, oltre a un accurato piano di test.

In tutto ciò, un punto chiave è il fatto che il test di integrazione può risultare costoso da eseguire correttamente e al momento giusto nel ciclo di sviluppo. Tuttavia, nel lungo periodo, questa strategia di test risulta utile a eliminare potenziali costi connessi alla rimozione dei difetti a livello di architettura, soprattutto quando il software è in produzione.

Documentazione condivisa e chiara

Ogni qual volta si svolge integration testing, ulteriore requisito fondamentale è l’aver a disposizione un documento condiviso con tutto il team di sviluppo relativo alla progettazione, al cui interno trovare tutti i dettagli a livello di integrazione tra le singole componenti. Al contempo, dovrà essere disponibile un ambiente di test dedicato alle attività di test da effettuare.

Ulteriori elementi da tenere in considerazione sono l’identificazione dei moduli critici, delle condizioni da documentare, della gestione delle priorità di esecuzione dei test, oltre all’integrazione tra le diverse interfacce.

Migliorare la governance e raggiungere gli obiettivi preposti

Quindi, attraverso la metodologia di integration testing, l’azienda si sposta progressivamente verso livelli più elevati di maturità dei test. Nuovi processi e attività eterogenee vengono aggiunti per migliorare la prevedibilità nella qualità dei test e del software.

Non è più sufficiente avere un processo di test ottimizzato alla singola ricerca di difetti prima del rilascio finale. Bensì, è essenziale avere un approccio integrato teso a garantire che la strategia e la pianificazione del test siano coerenti con gli obiettivi di business, comunicando il valore e l’impatto dei test sugli obiettivi aziendali con strumenti e governance efficaci, oltre a fornire un’impostazione di processi e metriche capaci di tracciare e misurare il divario tra la qualità esistente e quella attesa.