Metodologie di test del software: modelli di QA
⚡ Riepilogo intelligente
La metodologia di test del software definisce le strategie e le tipologie di test utilizzate per certificare che un'applicazione soddisfi le aspettative del cliente. I metodi Waterfall, iterativo, agile e extreme programming influenzano ciascuno il momento in cui iniziano i test e le modalità di restituzione del feedback.

Cos'è la metodologia di test del software?
Per metodologia di test del software si intendono le strategie e i tipi di test utilizzati per certificare che l'applicazione sottoposta a test soddisfa le aspettative del cliente. Le metodologie di test includono test funzionali e non funzionali per convalidare l'AUT. Esempi di metodologie di test sono Test unitari, Test d'integrazione, Test di sistema, Test di Performance ecc. Ciascuna metodologia di test ha un obiettivo di test, una strategia di test e risultati finali definiti.
Note:: Poiché il test del software è parte integrante di qualsiasi metodologia di sviluppo, molte aziende utilizzano colloquialmente il termine metodologie di sviluppo e metodologie di test. Pertanto le metodologie di test potrebbero anche fare riferimento a Waterfall, Agile e altri modelli di QA rispetto alla definizione di metodologie di test di cui sopra. La discussione sui vari tipi di test non aggiunge valore ai lettori. Discuteremo quindi i diversi modelli di sviluppo.
Metodologia di test vs. Tipo di test vs. Strategia di test
La nota di cui sopra allude a una reale ambiguità nel settore. Tre termini vengono usati in modo intercambiabile nel linguaggio comune, ma assumono significati diversi nei documenti di progetto, e confonderli porta a piani di test che rispondono alla domanda sbagliata.
| Termine | Domanda a cui risponde | Deciso da | Esempi |
|---|---|---|---|
| Metodologia di prova | Quando e come si inseriscono i test nel ciclo di sviluppo? | Il modello di sviluppo in uso | Waterfall, iterativo, agile, programmazione estrema |
| Tipo di test | Quale aspetto del prodotto viene verificato? | Copertura dei rischi e dei requisiti | Unità, integrazione, sistema, prestazioni, sicurezza |
| Livello di prova | A che livello di dettaglio viene esaminato il software? | Posizione nella gerarchia di compilazione | Componente, integrazione, sistema, accettazione |
| Strategia di prova | Qual è il nostro approccio organizzativo alla qualità? | La leadership in ambito QA si applica a tutti i progetti. | Basato sul rischio, automazione prima di tutto, spostamento a sinistra |
| Piano di test | Cosa testerà esattamente questo progetto, quando e da chi? | Responsabile dei test, specifico del progetto | Ambito di applicazione, tempistiche, risorse, criteri di ingresso e di uscita |
Una regola pratica utile: la metodologia stabilisce il ritmo, il tipo stabilisce l'obiettivo e il piano di prova registra l'impegno. Le sezioni seguenti esaminano le metodologie.
Modello a cascata
Che cos'è?
Nel modello a cascata, progresso dello sviluppo del software attraverso varie fasi come l'analisi dei requisiti, la progettazione ecc. sequenzialmente.
In questo modello, la fase successiva inizia solo quando la fase precedente è completata.
Qual è l'approccio al test?
La prima fase nel modello a cascata è la fase dei requisiti in cui tutti i requisiti del progetto sono completamente definiti prima di iniziare il test. Durante questa fase, il team di test fa un brainstorming sull'ambito del test, sulla strategia di test e redige un piano di test dettagliato.
Solo una volta completata la progettazione del software, il team passerà all’esecuzione dei test case per garantire che il software sviluppato si comporti come previsto.
In questa metodologia, il team di testing procede alla fase successiva solo quando la fase precedente è completata.
| Vantaggi | Svantaggi |
|---|---|
| Questo modello di ingegneria del software è molto semplice da pianificare e gestire. Pertanto, i progetti in cui i requisiti sono chiaramente definiti e dichiarati in anticipo possono essere facilmente testati utilizzando un modello a cascata. | Nel modello a cascata è possibile iniziare con la fase successiva solo una volta completata la fase precedente. Pertanto, questo modello non può accogliere eventi imprevisti e incertezze. |
| Questa metodologia non è adatta per progetti in cui i requisiti cambiano frequentemente. |
Sviluppo iterativo
Che cos'è?
In questo modello, un progetto di grandi dimensioni viene suddiviso in piccole parti, e ciascuna parte è soggetta a molteplici iterazioni del modello a cascata. Al termine di un'iterazione, viene sviluppato un nuovo modulo o migliorato un modulo esistente. Questo modulo viene integrato nell'architettura software e l'intero sistema viene testato nella sua interezza.
Qual è l'approccio al test?
Non appena l'iterazione è completata, l'intero sistema viene sottoposto a test. Il feedback dei test è immediatamente disponibile e viene incorporato nel ciclo successivo. Il tempo di test richiesto nelle iterazioni successive può essere ridotto in base all'esperienza acquisita dalle iterazioni precedenti.
| Vantaggi | Svantaggi |
|---|---|
| Il vantaggio principale dello sviluppo iterativo è che il feedback del test è immediatamente disponibile alla fine di ogni ciclo. | Questo modello aumenta significativamente le spese generali di comunicazione poiché, alla fine di ogni ciclo, deve essere fornito un feedback sui risultati finali, sull'impegno, ecc. |
Metodologia agile
Che cos'è?
Le metodologie tradizionali di sviluppo software si basano sul presupposto che i requisiti software rimangano costanti per tutto il progetto. Ma con l'aumento della complessità, i requisiti subiscono numerose modifiche e si evolvono continuamente. A volte, il cliente stesso non è sicuro di cosa vuole. Sebbene il modello iterativo affronti questo problema, si basa comunque sul modello a cascata.
Nella metodologia Agile, il software viene sviluppato in cicli incrementali e rapidi. Vengono enfatizzate le interazioni tra clienti, sviluppatori e clienti piuttosto che processi e strumenti. La metodologia agile si concentra sulla risposta al cambiamento piuttosto che su una pianificazione estensiva.
Qual è l'approccio al test?
Il test incrementale viene utilizzato nei metodi di sviluppo agili e, quindi, ogni versione del progetto viene testata accuratamente. Ciò garantisce che eventuali bug nel sistema vengano corretti prima del rilascio successivo.
| Vantaggi | Svantaggi |
|---|---|
| È possibile apportare modifiche al progetto in qualsiasi momento per conformarsi ai requisiti. | L'interazione costante con il cliente comporta una maggiore pressione in termini di tempo su tutte le parti interessate, compresi il cliente stesso, i team di sviluppo software e di test. |
| Questi test incrementali riducono al minimo i rischi. |
Programmazione estrema
Che cos'è?
La programmazione estrema è un tipo di metodologia agile che crede in cicli di sviluppo brevi. Un progetto è suddiviso in semplici attività di ingegneria. I programmatori codificano un semplice pezzo di software e rispondono al cliente per un feedback. RevI punti di vista del cliente vengono incorporati e gli sviluppatori procedono con l'attività successiva.
Nella programmazione estrema gli sviluppatori di solito lavorano in coppia.
Programmazione estrema viene utilizzato in luoghi in cui le esigenze dei clienti cambiano costantemente.
Qual è l'approccio al test?
La programmazione estrema segue uno sviluppo basato sui test descritto come segue:
- Aggiungere un Test Case alla suite di test per verificare la nuova funzionalità che deve ancora essere sviluppata
- Esegui tutti i test e ovviamente il nuovo test case aggiunto deve fallire poiché la funzionalità non è ancora codificata
- Scrivi del codice per implementare la caratteristica/funzionalità
- Esegui nuovamente la suite di test. Questa volta, il nuovo caso di test dovrebbe passare poiché la funzionalità è stata codificata
| Vantaggi | Svantaggi |
|---|---|
| I clienti che hanno in mente un design software vago potrebbero utilizzare la programmazione estrema | Le riunioni tra il team di sviluppo software e i clienti aumentano i requisiti di tempo. |
| Test continui e integrazione continua di piccole versioni garantiscono che il codice software fornito sia di alta qualità |
Modello a V e modello a spirale
Nella maggior parte dei progetti compaiono altri due modelli che completano il quadro, poiché ciascuno risponde in modo diverso a un punto debole dell'approccio a cascata.
Modello V. Spesso definito verifica e validazione, il modello V associa a ogni fase di sviluppo una corrispondente fase di test, rappresentata dai due bracci di una V. I requisiti sono abbinati ai test di accettazione, la progettazione di alto livello ai test di sistema, la progettazione di basso livello ai test di integrazione e la programmazione ai test unitari. Il vantaggio sta nel fatto che la progettazione dei test inizia parallelamente a ciascuna fase di sviluppo, anziché dopo la programmazione, consentendo così di individuare eventuali requisiti ambigui da parte di chi scrive i test di accettazione mesi prima che si possa verificare un difetto. Il suo punto debole è ereditato dal modello a cascata: il modello presuppone ancora che i requisiti siano stabili.
Modello a spirale. Il modello a spirale prevede un'iterazione basata su un'analisi esplicita dei rischi. Ogni ciclo comprende quattro attività: definire gli obiettivi, identificare e risolvere i rischi, sviluppare e testare, e infine pianificare l'iterazione successiva. I test si concentrano quindi dove il rischio è maggiore, anziché essere distribuiti uniformemente. Questo approccio è adatto a programmi di grandi dimensioni, costosi e di lunga durata, come quelli aerospaziali o i sistemi centrali bancari, dove il costo di una scoperta tardiva è elevato. Per un piccolo progetto web, il sovraccarico derivante da un'analisi formale dei rischi ad ogni ciclo è raramente giustificato.
Entrambi i modelli si collocano tra la disciplina del modello a cascata e la reattività agile. Dove la frequenza di rilascio è più importante di entrambe, DevOps La pipeline integra i test nell'integrazione continua, in modo che ogni commit venga verificato automaticamente.
Quale metodologia software scegliere?
Sono disponibili tantissime metodologie per lo sviluppo del software e i relativi test. Ogni tecnica e metodologia di test è progettata per uno scopo specifico e ha i suoi relativi meriti e demeriti.
La selezione di una particolare metodologia dipende da molti fattori come la natura del progetto, i requisiti del cliente, la pianificazione del progetto, ecc.
Dal punto di vista del test, alcune metodologie spingono per testare l'input nelle prime fasi del ciclo di vita dello sviluppo, mentre altre aspettano finché non sia pronto un modello funzionante del sistema.
Come impostare le metodologie di test del software?
Le metodologie di test del software non dovrebbero essere impostate solo per il gusto di testare il codice del software. Dovrebbe essere considerato il quadro generale e l’obiettivo principale del progetto dovrebbe essere soddisfatto dalla metodologia di test. Fare riferimento a questo elenco di persone rispettabili fornitori di servizi di test del software che può aiutarti a stabilire strategie di test efficaci su misura per gli obiettivi del tuo progetto.
Programmazione
Una pianificazione realistica è la chiave per l'implementazione di una metodologia di test di successo e la pianificazione dovrebbe soddisfare le esigenze di ogni membro del team.
Risultati definiti
Per mantenere tutti i membri del team sulla stessa lunghezza d’onda, dovrebbero essere forniti risultati ben definiti. I risultati finali dovrebbero contenere contenuti diretti senza alcuna ambiguità.
Approccio di prova
Una volta completata la pianificazione e resi disponibili i risultati finali definiti, il team di test dovrebbe essere in grado di formulare il giusto approccio al test. I documenti di definizione e le riunioni degli sviluppatori dovrebbero indicare al team il miglior approccio di test che può essere utilizzato per il progetto.
Reportistica
È molto difficile ottenere un reporting trasparente, ma questo passaggio determina l’efficacia dell’approccio di test utilizzato nel progetto.




