Tecniche o categorie di test del software [chiuso]


16

Quali tipi di test software conosci? Ho sentito parlare di Test-Driven Development, Unit test ecc., Ma non riesco a capirne l'importanza e la differenza. Ad esempio, perché stiamo usando test di regressione o test di accettazione. Che vantaggio offrono?


8
Quale parte di questo era confusa o incompleta? it.wikipedia.org/wiki/Software_testing
S.Lott

2
Puoi saltare i test di regressione se non ti preoccupi se interrompi la funzionalità esistente e puoi saltare il test di accettazione se non ti importa se le persone che utilizzano effettivamente il software o pagano per esso pensano che faccia ciò che si aspettano che faccia . I programmatori professionisti hanno a cuore entrambe queste cose.
HLGEM,

Sto votando per riaprire questa domanda poiché è l'unica che ho potuto trovare dando una buona panoramica sui diversi tipi di categorie di test. Forse qualcuno ha una buona idea su come riformulare la domanda per adattarla meglio a questo sito?
Doc Brown,

Risposte:


38

Le grandi categorie secondo me sarebbero:

Test su scatola nera . Non riesci a vedere il codice e stai solo testando alla cieca in una certa misura poiché ciò che è nell'applicazione o nel sistema ti è nascosto. Pertanto, in questo caso le persone non conoscono tutti i casi di errore e devono indovinare con varie condizioni al contorno che possono essere o meno ovvie per trovare tutti i casi.

Test su scatola bianca . È possibile visualizzare il codice e verificare quali percorsi del codice vengono utilizzati in modo che la copertura del codice possa essere utilizzata come metrica per garantire che tutta la logica venga utilizzata nel sistema. L'idea qui è di sapere come appare il codice per guidare i test in modo che non sia così misterioso come i test in scatola nera.

Il test della scatola grigia è un ibrido dei due precedenti.

I casi limite tendono ad essere qualcosa che si può vedere nei test in white box poiché ci sono varie condizioni da vedere nel codice in cui si scrivono i test da eseguire, ad esempio se si dispone di un programma che richiede un numero e qualcuno inserisce X come viene gestito dovrebbe essere visto da qualche parte nel codice.

Le classificazioni generali dei test sarebbero:

Test unitari . Questi sono generalmente i test più piccoli che testano qualcosa di piuttosto specifico, ad esempio questo metodo gestisce questo caso limite? Si noti che l' iniezione di dipendenza può essere utilizzata qui per casi che coinvolgono oggetti simulati per ridurre eventuali dipendenze per i test.

Test di integrazione . Questi sono test in cui sono collegati un paio di componenti e vengono eseguiti test per assicurarsi che i componenti funzionino bene insieme. Si noti che mentre i test unitari possono funzionare in modo indipendente, è qui che viene eseguito il test di quanto bene si uniscono le cose in quanto potrebbe esserci una comunicazione errata tra i livelli che rendono questi test utili per catturare vari gotcha. Il termine test end-to-end viene utilizzato per test di integrazione in cui viene testata una catena completa di componenti da "un endpoint dell'applicazione all'altro" (qualunque cosa significhi).

Test di regressione . Questi sarebbero test eseguiti in passato e ripetuti per garantire che ciò che è stato corretto rimanga fisso e che i bug non vengano reintrodotti nel codice.

Test di usabilità . Questi sarebbero test effettuati per vedere come gli utenti finali possono lavorare con il software per completare varie attività. Dove potrebbe essere automatizzato qualcosa per rendere qualcosa più veloce o regolare l'interfaccia utente in modo che qualcosa sia più facile da usare.

Test di accettazione dell'utente . Questi sarebbero test eseguiti dagli utenti finali in modo che possano vedere in prima persona come funziona qualcosa e concordare che il software soddisfa le esigenze aziendali che lo hanno richiesto in primo luogo.

I test funzionali sono tutti i tipi di test basati sulle specifiche funzionali del software in prova. Questi sono sempre test in scatola nera.

Test delle prestazioni. Questi sarebbero test eseguiti per garantire che un sistema sia in grado di gestire un determinato carico senza rallentare troppo. Ad esempio, testare una nuova web farm di server in grado di gestire 100 utenti colpendo un sito allo stesso tempo sarebbe un esempio di test delle prestazioni. Questi possono anche essere chiamati "test di carico" o "stress test", in quanto l'idea qui è di spingere il sistema al limite o verificare che il sistema sia in grado di gestire alcune proiezioni da un altro reparto. La logica di questi test è che spesso ci sono numerose impostazioni di configurazione da ottimizzare che possono richiedere più di un po 'di lavoro per scoprire i colli di bottiglia e risolvere i problemi con questo. Il collo di bottiglia qui potrebbe essere memoria, I / O, CPU o larghezza di banda di rete che impedisce al sistema di rispondere come previsto.

Test Driven Development è una metodologia che non fa riferimento a un tipo specifico di test ma piuttosto che i test sono scritti prima del codice in modo che i test siano ciò che guida lo sviluppo piuttosto che il comportamento , il dominio o la funzionalità siano alcuni altri esempi in termini di processi.

L'integrazione continua è una pratica di esecuzione periodica di alcuni test come unità, integrazione e test di regressione in modo che se una modifica interrompe un test, questo viene intercettato il prima possibile.


5
+1 ... e sfortunatamente, ci sono ancora test manuali anche dopo tutto questo.
Steven Evers,

2
and Stres Test - tutte le sessioni possibili che testano la stessa maschera nello stesso tempo e attraversano continuamente lo scenario di test, da qualche parte incluso come parte
dell'UAT

1
Non ti mancano i test di copertura copertura / ramo? Inoltre, in esecuzione con una sorta di sistema di sorveglianza della memoria, come "Electric Fence" malloc o Valgrind?
Bruce Ediger,

1
@Bruce Ediger: la copertura è una statistica per i test in white box, non un metodo per testare se stessa e gli strumenti che descrivi sono per i test perf.
Steven Evers,

Devo differire su "strumenti ... sono per test perf". In alcuni linguaggi (C o C ++), l'esecuzione di numerosi test unitari in valgrind troverà bug che nessuno degli altri tipi di test sopra elencati troverà. Valgrind è certamente uno strumento di debug, ma è molto necessario eseguire test in un programma valgrinded.
Bruce Ediger,

4

Il test di regressione viene eseguito per garantire che le nuove modifiche a un sistema non abbiano interrotto alcuna funzionalità esistente che non avrebbe dovuto essere influenzata dalle modifiche.

Il test di accettazione viene solitamente eseguito dal cliente / cliente / utente aziendale, è spesso di livello più elevato rispetto ad altre forme di test ed è eseguito in modo tale che le persone che hanno richiesto le modifiche siano soddisfatte e consentano di promuovere le modifiche nel proprio sistema di produzione.


1
E ciò che è più importante in modo che siano d'accordo di aver ottenuto ciò che avevano voluto ottenere e possono pagarti ora.
Mchl
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.