Ti sei mai chiesto cosa succede dietro le quinte prima che il software diventi pubblico? I programmatori sono ben consapevoli della quantità di lavoro che va nella creazione del programma. Le ore passate a cercare di appianare ogni piccolo bug lasciano molti strapparsi i capelli. E fino a quando il prodotto soddisfa tutte le parti interessate, non sarà disponibile per uso commerciale.
Enormi aziende di software, come Google, riescono nonostante i bug a bassa priorità nei loro software, ma le aziende più piccole e le startup non hanno quel lusso. I clienti si aspettano che i prodotti facciano ciò che rivendicano sulla pagina di vendita o nella documentazione. Con così tante opzioni là fuori, non ci penseranno due volte a saltare la nave se il prodotto sprecherà tempo e denaro. Pertanto, il software viene sottoposto a test rigorosi prima del rilascio al fine di:
- evidenzia le differenze tra il concetto originale e il risultato finale
- verificare che il software funzioni come pianificato dai progettisti
- convalidare il prodotto finale - il prodotto deve soddisfare i requisiti del cliente
- valutare caratteristiche e qualità
I test seguono un modello rigoroso. Ciò ottimizza l'uso di risorse preziose - abilità, tempo e denaro, fornendo al contempo agli stakeholder informazioni essenziali per portare avanti il prodotto. L'obiettivo è quello di facilitare una buona esperienza dell'utente finale attraverso un forte programma di garanzia della qualità. Con la posta in gioco così alta, i responsabili della QA sono tra i migliori guadagni della tecnologia. Il test di solito segue questi passaggi:
- Analisi dei requisiti in cui i gestori delineano un piano per mettere in atto una strategia di test adatta.
- I test iniziano e i risultati vengono analizzati.
- Eventuali difetti vengono corretti e il software passa attraverso i test di regressione - un sistema per verificare che il programma funzioni ancora dopo le modifiche.
- Un rapporto di chiusura del test quindi descrive l'intero processo e i risultati.
Metodi di test del software
Ecco i diversi metodi utilizzati per giudicare il comportamento e le prestazioni del prodotto. I test di scatola nera e scatola bianca sono i due metodi fondamentali.
- Test della scatola nera - Chiamato anche test funzionale o basato su specifiche, questo metodo si concentra sull'output. I tester non sono interessati ai meccanismi interni. Controllano solo che il software faccia quello che dovrebbe. La conoscenza della codifica non è necessaria ei tester lavorano a livello di interfaccia utente.
- Test white box : questo metodo utilizza il know-how di codifica come parte della procedura di test. Quando un prodotto si guasta, i tester entrano in profondità nel codice quanto necessario per trovare la causa. Gli sviluppatori di software lo fanno da soli poiché determinano come dovrebbe funzionare il prodotto. I test basati sulla struttura e sulla scatola di vetro sono altri nomi per questo metodo.
- Test statici : i tester esaminano il codice e la documentazione del software ma non eseguono il programma. I test statici iniziano all'inizio dello sviluppo del prodotto durante il processo di verifica.
- Test dinamici : il software viene eseguito con vari input ei tester confrontano gli output con il comportamento previsto con questo metodo.
- Test della GUI: verifica le caratteristiche della GUI: formattazione del testo, caselle di testo, pulsanti, elenchi, layout, colori, caratteri, dimensioni dei caratteri e così via. I test della GUI richiedono molto tempo e le aziende di terze parti assumono spesso l'incarico anziché gli sviluppatori.
Livelli di prova
Questi sono necessari per identificare le aree di debolezza e sovrapposizione in ciascuna fase del ciclo di vita dello sviluppo del software.
- Test delle unità : gli sviluppatori testano le parti più elementari del codice come classi, interfacce e funzioni / procedure. Sanno come dovrebbe rispondere il loro codice e possono apportare modifiche a seconda dell'output.
- Test dei componenti - Altri nomi sono test del modulo o del programma. È simile al test delle unità ma contiene un livello più alto di integrazione. I moduli del software sono testati per i difetti per verificare la loro funzione individuale.
- Test di integrazione : identifica gli errori quando i moduli sono integrati. Diversi test di integrazione sono bottom-up, top-down e incrementali funzionali.
- Test del sistema - I componenti di un progetto vengono testati nel loro complesso in diversi ambienti con questo metodo. Cade sotto il metodo della scatola nera ed è uno dei test finali del processo. Determina se il sistema funziona come dovrebbe per soddisfare le esigenze aziendali e dell'utente.
- Test alfa - Il personale interno testa il software sul sito dello sviluppatore in un ambiente simulato o reale. Successivamente, gli sviluppatori correggono bug e altri problemi.
- Test beta - Conosciuto anche come test sul campo, il cliente testa il prodotto sul proprio sito in condizioni reali. Il cliente può offrire a un gruppo di utenti finali l'opportunità di testare il software tramite versioni prerelease o beta. Il feedback sui possibili miglioramenti viene quindi inviato allo sviluppatore.
- Test di accettazione - Anche nell'ambito del test della scatola nera, il client testa il software per scoprire se lo sviluppatore ha creato il programma secondo le specifiche desiderate.
Tipi di test
Questi test del software si concentrano su obiettivi specifici.
- Test di installazione : il test engineer del software e il configuration manager eseguono questo test per garantire che l'utente finale possa installare ed eseguire il programma. Copre aree come file di installazione, posizioni di installazione e privilegi amministrativi.
- Test di sviluppo : implementa una serie di strategie sincronizzate per rilevare e prevenire i difetti. Include analisi del codice statico, recensioni di peer code, tracciabilità e analisi delle metriche. L'obiettivo è ridurre i rischi e risparmiare sui costi.
- Test di usabilità : l'esperienza utente viene messa sotto i riflettori con questo test. Misura la bontà della GUI e la sua facilità d'uso. Il test verifica l'accuratezza e l'efficienza delle funzioni e le risposte emotive dei soggetti del test.
- Test di sanità - Questo indica se il software vale il tempo e il costo per continuare ulteriori test. Troppi difetti e test più aggressivi non seguono.
- Test sui fumi: i test sui fumi rivelano guasti di base che sono abbastanza gravi da impedire il rilascio. Quando viene eseguito su una nuova build, viene chiamato test di verifica build.
- Test di regressione - Quando il sistema subisce delle modifiche, i test di regressione monitorano il comportamento imprevisto. Indica gli effetti negativi su moduli o componenti.
- Test distruttivi : i tester immettono voci anomale e individuano la capacità del software di gestire input inattesi. Questo mostra agli sviluppatori quanto è robusto il programma nella gestione degli errori.
- Test di recupero : quando l'hardware o altre funzioni falliscono, questo test mostra quanto bene il software può recuperare e continuare a funzionare.
- Test automatici : esegue funzioni difficili da implementare manualmente. Utilizza software specifico per eseguire i test e fornire dati sui risultati effettivi o previsti.
- Test di compatibilità : il software deve essere eseguito in diversi ambienti di elaborazione, pertanto verifica la compatibilità con diversi sistemi. Ad esempio, il software funziona con vari sistemi operativi e browser Web?
- Test delle prestazioni : si tratta di un test approfondito che esamina le prestazioni del software in diversi scenari. Vengono raccolte informazioni su reattività, stabilità, allocazione delle risorse e velocità. Inoltre, sub-test come volume, capacità e spike testing svolgono un ruolo in questo processo.
- Test di sicurezza : misura la capacità del software di proteggere la sicurezza degli utenti. Ciò significa funzioni di autorizzazione, autenticazione, riservatezza, integrità, disponibilità e non ripudio.
- Test di accessibilità - Questo non è lo stesso dei test di usabilità. Questo determina la misura in cui gli utenti di diverse abilità - apprendimento e disabilità fisiche incluse, possono utilizzare il software.
- Test di internazionalizzazione e localizzazione - I risultati mostrano come il software può adattarsi alle diverse lingue e alle richieste regionali. Ciò include l'aggiunta di componenti per posizioni specifiche e la traduzione di testo.
Il test del software è una parte essenziale del portare un prodotto sul mercato. E senza tester, la vasta gamma di software disponibili non esisterebbe. Diventa un tester software certificato attraverso organizzazioni come BCS, The Chartered Institute per IT, ISTQB® (International Software Testing Qualifications Board) e ASQ (ex American Society for Quality).