Il software testing, o test del software, è anche noto come application testing.
Il test del software è principalmente un processo ampio composto da diversi processi interconnessi. L’obiettivo principale del test del software è misurare l’integrità del software insieme alla sua completezza in termini di requisiti fondamentali. Il test del software comporta l’esame e il controllo del software attraverso diversi processi di test. Gli obiettivi di questi processi possono includere:
Verifica della completezza del software rispetto ai requisiti funzionali/aziendali
Identificazione di bug/errori tecnici e garanzia che il software sia privo di errori
Valutazione di usabilità, prestazioni, sicurezza, localizzazione, compatibilità e installazione
Il software testato deve superare tutti i test per essere considerato completo o idoneo all’uso. Alcuni dei diversi tipi di metodi di test del software includono il test della scatola bianca, il test della scatola nera e il test della scatola grigia. Inoltre, il software può essere testato nel suo complesso, in componenti/unità o all’interno di un sistema live.
Il Black Box Testing è una tecnica di test del software che si concentra sull’analisi della funzionalità del software, rispetto ai meccanismi interni del sistema. Il Black Box Testing è stato sviluppato come metodo per analizzare i requisiti del cliente, le specifiche e le strategie di progettazione di alto livello.
Un tester del Black Box Testing seleziona una serie di condizioni di input e di esecuzione del codice valide e non valide e verifica la presenza di risposte di output valide.
Il Black Box Testing è anche noto come test funzionale o test a scatola chiusa.
Un motore di ricerca è un semplice esempio di un’applicazione soggetta a black box testing. Un utente di un motore di ricerca inserisce il testo nella barra di ricerca di un browser web. Il motore di ricerca quindi individua e recupera i risultati relativi ai dati utente (output).
I vantaggi del Black Box Testing includono:
Il Black Box Testing presenta anche alcuni svantaggi, come segue:
Durante il white-box testing, il codice viene eseguito con valori di input preselezionati per la convalida dei valori di output preselezionati. I white-box testing spesso comportano la scrittura di codice stub (pezzo di codice utilizzato per sostituire una specifica funzionalità. Uno stub può simulare il comportamento del codice esistente, come una procedura su una macchina remota.) e anche driver.
I vantaggi dei white-box testing includono:
Gli svantaggi includono:
Uno Unit Test è un componente del ciclo di vita dello sviluppo software (SDLC) in cui una procedura di test completa viene applicata individualmente alle parti più piccole di un programma software per l’idoneità o il funzionamento desiderato.
Un unit test è una procedura di misurazione e valutazione della qualità applicata nella maggior parte delle attività di sviluppo software aziendale. In generale, un test unitario valuta in che modo il codice software è conforme all’obiettivo generale del software/applicazione/programma e in che modo la sua idoneità influisce su altre unità più piccole. I test unitari possono essere eseguiti manualmente – da uno o più sviluppatori – o tramite una soluzione software automatizzata.
Durante il test, ogni unità è isolata dal programma o dall’interfaccia principale. I test unitari vengono in genere eseguiti dopo lo sviluppo e prima della pubblicazione, facilitando così l’integrazione e il rilevamento precoce dei problemi. La dimensione o l’ambito di un’unità varia a seconda del linguaggio di programmazione, dell’applicazione software e degli obiettivi di test.
Il test funzionale è un processo di test utilizzato all’interno dello sviluppo del software in cui il software viene testato per garantire che sia conforme a tutti i requisiti. E’ un modo per controllare il software per garantire che disponga di tutte le funzionalità richieste specificate nei suoi requisiti funzionali.
Il test funzionale viene utilizzato principalmente per verificare che una parte del software fornisca lo stesso output richiesto dall’utente finale o dall’azienda. In genere, i test funzionali comportano la valutazione e il confronto di ciascuna funzione software con i requisiti aziendali. Il software viene testato fornendogli alcuni input correlati in modo che l’output possa essere valutato per vedere come è conforme, correlato o varia rispetto ai suoi requisiti di base. Inoltre, i test funzionali controllano anche l’usabilità del software, ad esempio assicurandosi che le funzioni di navigazione funzionino come richiesto.
Il test di regressione è un tipo di test del software utilizzato per determinare se i nuovi problemi sono il risultato di modifiche al software.
Prima di applicare una modifica, viene testato un programma. Dopo l’applicazione di una modifica, il programma viene nuovamente testato in aree selezionate per rilevare se la modifica ha creato nuovi bug o problemi o se la modifica effettiva ha raggiunto lo scopo previsto.
Il test di regressione è essenziale per le applicazioni software di grandi dimensioni, poiché spesso è difficile sapere se la modifica di una parte di un problema ha creato un nuovo problema per una parte diversa dell’applicazione. Ad esempio, una modifica a un modulo di prestito di un’applicazione bancaria può comportare il fallimento di un rapporto di transazione mensile. Nella maggior parte dei casi, i problemi possono sembrare non correlati, ma in realtà possono essere la causa della frustrazione tra gli sviluppatori di applicazioni.
Altre situazioni che richiedono test di regressione includono il rilevamento se determinate modifiche raggiungono un obiettivo prefissato o il test per nuovi pericoli associati a problemi che riaffiorano dopo un periodo senza problemi.
I moderni test di regressione vengono gestiti principalmente tramite strumenti di test commerciali specializzati che acquisiscono istantanee software esistenti che vengono quindi confrontate dopo aver applicato una modifica specifica. È quasi impossibile per i tester umani eseguire le stesse attività con la stessa efficienza dei tester software automatizzati. Ciò è particolarmente vero con applicazioni software grandi e complesse all’interno di vasti ambienti informatici come banche, ospedali, aziende manifatturiere e grandi rivenditori.
Lo stress test si riferisce al test del software o dell’hardware per determinare se le sue prestazioni sono soddisfacenti in condizioni estreme e sfavorevoli, che possono verificarsi a seguito di traffico di rete intenso, caricamento del processo, underclocking, overclocking e richieste massime di utilizzo delle risorse.
La maggior parte dei sistemi viene sviluppata presupponendo condizioni operative normali. Pertanto, anche se viene superato un limite, gli errori sono trascurabili se il sistema viene sottoposto a stress test durante lo sviluppo.
Lo stress test viene utilizzato nei seguenti contesti:
Il test automatizzato (automazione del test del software) è un approccio alla verifica del codice che fa uso di strumenti software speciali che eseguono i test automaticamente e quindi confrontano i risultati dei test effettivi con i risultati previsti.
I test automatizzati svolgono un ruolo importante nella distribuzione continua (CD), nell’integrazione continua (CI), in DevOps e DevSecOps. I principali vantaggi dei test automatizzati includono:
Nello sviluppo del software, è particolarmente utile eseguire test automatizzati durante il processo di compilazione per garantire che un’applicazione non presenti errori di compilazione e svolga la funzione prevista.
Prendersi il tempo per automatizzare i test del software alla fine farà risparmiare tempo agli sviluppatori riducendo il rischio che una modifica del codice interrompa le funzionalità esistenti.
Il test è una fase molto importante nel processo di sviluppo. Garantisce che tutti i bug vengano risolti e che il prodotto, software o hardware, funzioni come previsto o il più vicino possibile alle prestazioni target. I test automatizzati, piuttosto che i test manuali, sono essenziali per fornire costantemente software conveniente che soddisfi le esigenze degli utenti in modo tempestivo con difetti minimi.
I test manuali vengono ancora eseguiti in vari periodi durante lo sviluppo, ma questo viene svolto principalmente dagli sviluppatori o dagli stessi ingegneri hardware per verificare rapidamente se le modifiche apportate hanno prodotto l’effetto desiderato.
Ercole Palmeri
Reply, società di consulenza e system integrator a livello globale e Oracle Cloud Managed Service…
MasterZ Blockchain, aumenta il valore per il Master d’ eccellenza WEB 3.0 più grande d'…
33 finalisti selezionati tra 5.213 candidature in 163 paesi I finalisti sostengono un'azione climatica incisiva…
I prodotti biologici si sono evidenziati come una classe farmaceutica innovativa, rivoluzionando il campo della…
L'internalizzazione delle stampanti per la produzione di metalli e polimeri negli stabilimenti di Riom, Francia…
L'analisi dei dati senza librerie e potenziata dall'apprendimento automatico con Spectronaut ® 18 offre quantificazione e produttività…
Mattermost presenta un ecosistema ampliato di alleati con un'enfasi sui nuovi casi d'uso del Dipartimento…
La piattaforma di punta TV 2.0 di United Cloud, estremamente popolare con il nome commerciale…
Armis Centrix™ consente alle organizzazioni di vedere, proteggere e gestire tutte le risorse virtuali, garantendo…
La nanotecnologia ha inaugurato una nuova era nella somministrazione di farmaci oculari, offrendo soluzioni piccole…