Collaudo del software: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
fix Etichetta: Annullato |
Gac (discussione | contributi) m Annullate le modifiche di 188.152.186.87 (discussione), riportata alla versione precedente di Egidio24 Etichetta: Rollback |
||
Riga 1:
{{Nota disambigua|l'album di [[ASAP Rocky]] del 2018|Testing (album)|Testing}}
{{F|ingegneria del software|maggio 2012}}
Il '''collaudo del software''' (detto anche '''testing''' o '''software testing''' secondo le denominazioni [[lingua inglese|inglesi]]), in [[informatica]], indica un procedimento, che fa parte del [[ciclo di vita del software]], utilizzato per individuare le carenze di [[Correttezza (logica matematica)|correttezza]], [[Specifica (ingegneria del software)#Completezza|completezza]] e [[affidabilità]] delle componenti [[software]] in corso di sviluppo. Consiste nell'esecuzione del software da parte del collaudatore, da solo o in combinazione ad altro software di servizio, e nel valutare se il comportamento del software rispetta i [[:Categoria:Requisiti software|requisiti]]. A volte il collaudo, che fa parte delle procedure di [[assicurazione di qualità]], viene confuso con il [[debugging]], con il [[Profiling (programmazione)|profiling]], o con il [[benchmark (informatica)|benchmarking]].
== Descrizione generale ==
Riga 38:
== Modello di sviluppo ==
=== Sviluppo a cascata ===
Il procedimento tradizionale di [[Sviluppo software|sviluppo del software]], detto "[[Modello a cascata|a cascata]]" (in inglese "''waterfall''"), prescrive di iniziare il collaudo appena è completata la prima versione del prodotto. I risultati del collaudo vengono utilizzati per rivedere i requisiti, o il progetto, o il codice, e produrre così la versione successiva.
Riga 44 ⟶ 45:
* Probabilmente, tra i requisiti non è stata inclusa la "collaudabilità" (in inglese, "''testability''"), cioè il progetto e il codice non contengono accorgimenti che agevolino il collaudo. In tal caso, il collaudo risulterà molto più costoso e meno efficace.
* Più tempo passa tra l'introduzione di un errore in un sistema e la segnalazione di un malfunzionamento dovuto a tale errore, più risulta difficile e costoso rimediarvi.
*
=== Sviluppo guidato dal collaudo ===
{{
Un procedimento più recente, detto "guidato dal collaudo" (in inglese, "''[[test driven development]]''"), proposto a partire dall'inizio degli anni 1990, consiste nel considerare il collaudo una parte integrante del prodotto:
Riga 58 ⟶ 59:
== Fasi di distribuzione ==
=== Il collaudo di tipo Alpha ===
{{
Appena un software è stato costruito, prima di distribuirlo fuori dall'azienda, viene normalmente sottoposto a un collaudo interno all'azienda stessa.
Riga 72:
=== Il collaudo di tipo Beta ===
{{
Spesso, quando un prodotto ha superato il collaudo di tipo Alpha, viene distribuito all'esterno dell'azienda ad alcuni clienti selezionati o anche a tutti i clienti, avvertendo gli utenti che il prodotto distribuito potrebbe non essere di qualità elevata e probabilmente potrebbe richiedere ulteriori correzioni.
Riga 90 ⟶ 89:
== Granularità ==
=== Il collaudo di modulo (Unit Testing) ===
{{
Quando si costruisce un prodotto complesso come un'automobile, non ci si limita a costruire e ad assemblare i pezzi e alla fine girare la chiave per vedere se tutto funziona. Questo per tre motivi:
* Alcuni difetti producono malfunzionamenti solo dopo un utilizzo prolungato, ma sono facilmente identificabili esaminando i singoli pezzi prima dell'assemblaggio.
* Se dopo aver girato la chiave la macchina non si accende, risulta molto difficile capire qual è il difetto.
* Se dopo aver girato la chiave la macchina non si accende, risulta molto costoso smontare la macchina, sostituire il pezzo difettoso e rimontarla.
*
Ragionamenti analoghi valgono per il software. Pertanto, come i singoli pezzi di un macchina vengono sottoposti al controllo di qualità prima dell'assemblaggio, così è opportuno collaudare separatamente le singole componenti di un sistema software.
Riga 117 ⟶ 115:
=== Il collaudo di sistema ===
Anche se i singoli moduli sono corretti, il sistema ottenuto integrandoli potrebbe non esserlo. Pertanto è sempre necessario collaudare il sistema completo.
Riga 128 ⟶ 127:
=== Il collaudo a scatola nera ===
Il collaudo effettuato accedendo al software solamente tramite l'interfaccia utente, oppure tramite interfacce di comunicazione tra processi, viene detto "collaudo a scatola nera" (in inglese, "black box testing").
Riga 147:
== Collaudo formale e informale ==
=== Il collaudo informale ===
Nelle piccole organizzazioni, o per prodotti software di poco valore, il collaudo è normalmente informale, cioè non esiste a livello organizzativo una mansione riconosciuta come "collaudo del software".
Riga 156 ⟶ 157:
=== Il collaudo formale ===
Il collaudo del software importante in grandi organizzazioni segue invece iter procedurali più rigorosi, analoghi a quelli dei progetti ingegneristici.
Riga 186 ⟶ 188:
== Altri tipi di collaudo ==
=== Collaudo Prestazionale (Performance Test) ===
Tra i requisiti di qualità di un'applicazione, non c'è solo la correttezza, ma anche l'efficienza, o comunque vengono definiti requisiti prestazionali il cui soddisfacimento deve essere verificato prima di utilizzare il software prodotto. Le attività finalizzate a determinare se un dato prodotto software soddisfa specificati requisiti prestazionali è chiamata "collaudo prestazionale" (o "performance testing"). Il suo scopo non è quindi rilevare errori nell'applicazione, ma verificare che l'applicazione soddisfi i requisiti prestazionali richiesti in fase di esplicitazione dei requisiti.
Riga 195 ⟶ 198:
=== Collaudo di Carico/Volume (Load/Volume Test) ===
Questo tipo di test in genere è parte del performance testing e tuning. In tale contesto, significa aumentare costantemente il carico sul sistema tramite strumenti automatici. Per una applicazione web, ad esempio, il carico è il numero di utenti/connessioni HTTP concorrenti.
Riga 215 ⟶ 219:
=== Collaudo di Stress (Stress Test) ===
Lo “stress test” ha lo scopo di provare a “rompere” il sistema sotto test sovraccaricando le sue risorse o sottraendogli risorse (in tale caso viene anche chiamato “negative testing”). Lo scopo principale di queste attività è verificare che il sistema va in “fault” e successivamente (eventualmente) recupera in maniera “indolore” – questo aspetto qualitativo è noto come recoverability (sistemi [[fault tolerance|fault-tolerant]]).
| |||