Differenza tra un difetto e un bug nei test?


35

Qual è la differenza tra un difetto e un bug?


2
Leggi testingstandards.co.uk/bs_7925-1_online.htm per ulteriori informazioni
StuperUser

1
Esistono bug che in realtà dicono che manca qualcosa, il che significa che sono richieste di funzionalità, non bug.
m3th0dman,

La risposta dipende dallo scopo per cui lo stai chiedendo.
max630,

Cerca l'etimologia della parola difetto. De = no, un. Facere = fare. Quindi, non funziona (come previsto), non esegue, è rotto, kaput. Considerando che bug significa "qualcosa nelle opere che impedisce prestazioni". Alla fine della giornata dovrai sistemare qualcosa, quindi è tutto accademico. Ho votato per chiudere, non hai qualche bug da correggere ?!
Martin Maat,

Risposte:


59
  • Un errore è il risultato di un errore di codifica

  • Un difetto è una deviazione dai requisiti

Cioè: un difetto non significa necessariamente che c'è un bug nel codice , potrebbe essere una funzione che non è stata implementata ma definita nei requisiti del software.


Dalla pagina di Wikipedia sui test del software :

Non tutti i difetti del software sono causati da errori di codifica. Una fonte comune di costosi difetti è causata da lacune nei requisiti, ad esempio requisiti non riconosciuti, che provocano errori di omissione da parte del progettista del programma [14]. Una fonte comune di lacune nei requisiti sono i requisiti non funzionali come testabilità, scalabilità, manutenibilità, usabilità, prestazioni e sicurezza.


15
Entrambi sono "deviazioni dai requisiti" secondo me.
Martin Wickman,

2
Un difetto non deve essere un bug. Inoltre, un bug non deve significare che un requisito non era soddisfatto, e quindi non è "una deviazione dal requisito"
Dan McGrath,

5
Sembra che manchi il punto @Martin. Sì, un bug può essere un difetto. Sì, un difetto può essere un bug. Ma questo non è necessariamente sempre vero. Solo perché c'è qualche sovrapposizione, non significa che siano identici! Venn Diagram of Bug & Defect -> (())
Dan McGrath,

8
@Dan McGrath: sostanzialmente quello che hai fatto qui è la tua definizione di bug. Ma in generale non c'è alcun significato definito, è solo un gergo ingegneristico!
MaR

3
@DanMcGrath: il tuo diagramma di Venn è inutile. Potrebbe significare ({}) o ({)} . Presumo tu intendessi il secondo.
Brian,

21

Citando Ilene Burnstein dal libro Practical Software Testing (raccomandato) che parte dalla definizione contenuta nella "Raccolta di standard IEEE per l'ingegneria del software" (1994) e "Glossario standard IEEE di terminologia dell'ingegneria del software" (standard 610.12, 1990):

Errore

Un errore è un errore, un malinteso o un malinteso da parte di uno sviluppatore di software

Nella categoria degli sviluppatori includiamo ingegneri del software, programmatori, analisti e tester. Ad esempio, uno sviluppatore potrebbe fraintendere una notazione di progettazione o un programmatore potrebbe digitare un nome di variabile in modo errato.

Difetti (difetti)

Un errore (difetto) viene introdotto nel software a seguito di un errore. Si tratta di un'anomalia nel software che può causare un comportamento errato e non conforme alle specifiche.

Difetti o difetti sono talvolta chiamati "bug". L'uso di quest'ultimo termine banalizza l'impatto che i guasti hanno sulla qualità del software. L'uso del termine "difetto" è anche associato ad artefatti software come requisiti e documenti di progettazione. I difetti che si verificano in questi artefatti sono anche causati da errori e di solito vengono rilevati nel processo di revisione.

fallimenti

Un fallimento è l'incapacità di un sistema software o di un componente di eseguire le sue funzioni richieste entro specifici requisiti di prestazione.

Durante l'esecuzione di un componente o sistema software, un tester, uno sviluppatore o un utente osserva che non produce i risultati previsti. In alcuni casi un particolare tipo di comportamento scorretto indica che è presente un certo tipo di errore. Possiamo dire che il tipo di comportamento scorretto è un sintomo della colpa. Uno sviluppatore / tester esperto disporrà di una base di conoscenza di guasti / sintomi / casi di guasto (modelli di guasto descritti nel capitolo 3) memorizzati. Un comportamento errato può includere la produzione di valori errati per le variabili di output, una risposta errata da parte di un dispositivo o un'immagine errata su uno schermo. Durante i test lo sviluppo di solito viene osservato dai tester e gli errori vengono individuati e riparati dagli sviluppatori.

Puoi leggere l'intero capitolo in Google Libri, qui .


12

Ci sono alcuni termini diversi relativi ai bug del software. Estratto da un corso che ho seguito:

  • Errore : azione umana o omissione che provoca un errore.

  • Fault : Fault è un difetto del software (fase errata, definizione del processo o dei dati) che causa un errore.

  • Bug : uguale a Guasto.

  • Fallimento : l'incapacità di un software di eseguire le funzioni richieste entro i requisiti di prestazione specificati.

In base a ciò, non vi è alcuna differenza tra un difetto e un bug. Tuttavia, alcune persone sostengono che il bug è un errore che si trova prima di rilasciare il software, mentre il difetto è quello riscontrato dal cliente.

Non ho resistito alla pubblicazione del famoso "primo vero caso di bug trovato".

testo alternativo



Non è da lì che l'ho preso, ma potrebbero avere una fonte comune (o questa potrebbe essere la fonte).
Tamás Szelei,

Sì, molti, molti anni fa ho passato un po 'a cercare di risolvere un bug. Sullo schermo avevo uno sfarfallio fastidioso e non aveva senso. Alla fine volò via. (Questo era nell'era del testo bianco su uno schermo nero, il punto in questione era abbastanza lontano da essere sempre nero mentre stavo modificando, quindi l'ho notato solo quando il programma ha messo un po 'di bianco dietro di esso.)
Loren Pechtel,

7

Oh caro.

Ai vecchi tempi - il funzionamento difettoso di un computer era causato da ogni sorta di cose - inclusi topi che masticavano i cavi e veri e propri bug (creature) che si mettevano al lavoro.

Il termine BUG si è bloccato come termine che significa qualcosa che non funziona come previsto.

BUG dovrebbe essere pensato come un termine gergale che significa un difetto.

Un difetto è un termine tecnicamente corretto che significa che la cosa non fa come dovrebbe.

Ove possibile, l'uso di DEFECT anziché BUG comporta in realtà una connotazione che riconosciamo i nostri fallimenti (i nostri difetti, la nostra mancanza di comprensione dei requisiti degli utenti o le cose che abbiamo trascurato nell'implementazione) invece di vestirli come il bug più banale dal suono ".

Usa DIFETTO.

Cerca di non usare il termine BUG. È sciocco, irrilevante, storico e banalizzante.


2
Perché dovresti rimuovere dall'uso un termine tecnico ben compreso? Mi dispiace ... sì, BUG è storico - ma se pensi che i programmatori considerino i bug (genericamente piuttosto che specifici) come banali solo perché sono chiamati bug o il termine è irrilevante a causa delle sue origini, allora sono temo che la mia trasformazione in una scontrosa mezza età sia del tutto giustificata. Oh, e come sottolinea @Dan, i bug sono difetti ma i difetti non sono necessariamente bug, il che suggerisce ulteriormente che il termine ha valore.
Murph,

3
@Murph, un "bug" è un eufemismo per un errore di programmazione. Inconsciamente, questo attira un tipo di gremlin sul quale lo sviluppatore non ha alcun controllo. Questo non è corretto - è un errore e riconoscere questo è un passo verso un comportamento più professionale. (Imho ovviamente :-))
rsp

1
Ehm, chiaramente non sono d'accordo (-: So esattamente chi è responsabile dei bug - errori di codifica e di logica - che ho nel mio codice. (Sono anche in grado di identificare i guasti nel codice di altre persone.) Tutti i programmatori che conosco sono chiari su cosa significhi il termine - che loro (beh qualche programmatore) e non una sorta di gremlin hanno fatto un errore
Murph

2
Quando hai a che fare con i tuoi clienti puoi chiamare queste cose bug o difetti. Bugs è gergo. Difetti è un riconoscimento, al di fuori del gergo, che non è come dovrebbe essere. "Difetti" è un termine che è, e incoraggia, una comunicazione chiara - al di fuori della fraternità di programmazione e all'interno. (Non sono anche d'accordo sul fatto che ci sia una differenza tra un bug e un difetto.)
quick_now

Difetti è il termine corretto. Quanti programmi vengono rilasciati con bug e tutti lo accettiamo? Ma quanti programmi vengono rilasciati con difetti? Non lo accetteremmo perché il termine implica una maggiore severità e sappiamo che è colpa nostra per l'errore, piuttosto che un bug in cui possiamo incolpare il tempo o l'ora del giorno.
Rudolf Olah,

7

Dal Glossario standard IEEE sulla terminologia dell'ingegneria del software, che è citato nel corpo di conoscenza dell'ingegneria del software KA per test del software e qualità del software:

bug. Vedi: errore; colpa.


errore. (1) La differenza tra un valore o una condizione calcolata, osservata o misurata e il valore o la condizione vera, specificata o teoricamente corretta. Ad esempio, una differenza di 30 metri tra un risultato calcolato e il risultato corretto. (2) Fase, processo o definizione dei dati errati. Ad esempio, un'istruzione errata in un programma per computer. (3) Un risultato errato. Ad esempio, un risultato calcolato di 12 quando il risultato corretto è 10. (4) Un'azione umana che produce un risultato errato. Ad esempio, un'azione errata da parte di un programmatore o operatore. Nota: mentre tutte e quattro le definizioni sono comunemente utilizzate, una distinzione assegna la definizione 1 alla parola "errore", la definizione 2 alla parola "errore", la definizione 3 alla parola "errore" e la definizione 4 alla parola "errore". Vedi a2so: errore dinamico; errore fatale; errore indigeno; errore semantico; errore sintattico; errore statico; errore transitorio.


fallimento. L'incapacità di un sistema o componente di eseguire le sue funzioni richieste entro determinati requisiti di prestazione. Nota: la disciplina di tolleranza agli errori distingue tra un'azione umana (un errore), la sua manifestazione (un errore hardware o software), il risultato dell'errore (un errore) e la quantità con cui il risultato è errato (l'errore). Vedi anche: crash; fallimento dipendente; eccezione; modalità fallimento; tasso di fallimento; fallimento grave; fallimento incipiente; fallimento indipendente; fallimento casuale; fallimento lieve; fallimento bloccato.


colpa. (1) Un difetto in un dispositivo o componente hardware; ad esempio un corto circuito o un filo rotto. (2) Fase, processo o definizione dei dati errati in un programma per computer. Nota: questa definizione viene utilizzata principalmente dalla disciplina di tolleranza agli errori. Nell'uso comune, i termini "errore" e "errore" sono usati per esprimere questo significato. Vedi anche: guasto sensibile ai dati; errore sensibile al programma; guasti equivalenti; mascheramento dei guasti; guasto intermittente.


Penso che la definizione di fallimento sia la più pertinente. Tutto inizia con un errore, che si tratti di requisiti, progettazione, implementazione o caso / procedura di test. Se questo errore si manifesta nel software, diventa un errore. Un errore è causato dall'esistenza di uno o più guasti nel software.

Tuttavia, non voglio approfondire la definizione formale di errore. Preferisco di gran lunga la definizione fornita da dukeofgaming nella sua risposta , tuttavia, quella in questa risposta è la definizione standard di errore IEEE.


3

La risposta di Dan McGrath è stata corretta.

  • Un errore è il risultato di un errore di codifica
  • Un difetto è una deviazione dai requisiti

Forse un esempio lo renderebbe più chiaro.

Esempio: il cliente voleva che il modulo Web fosse in grado di salvare e chiudere la finestra.

Scenario n. 1: il modulo Web ha un pulsante di salvataggio e un altro pulsante di chiusura. Risultato: difetto, poiché il client voleva che il pulsante 1 salvasse e chiudesse la finestra. Lo sviluppatore ha frainteso e creato separatamente. Poiché entrambi i pulsanti hanno soddisfatto i loro requisiti, non si tratta di un bug, ma di un difetto perché non soddisfaceva i requisiti del cliente.

Scenario n. 2: il modulo Web ha un pulsante Salva e chiudi, ma salva solo ma non si chiude. Risultato: bug. Perché il pulsante non funziona come richiesto / previsto. Lo sviluppatore sa che si suppone di produrre quel risultato, ma alla fine no. (forse errore di codifica)

Non sono sicuro se questo lo rende più chiaro.

p / s: dal punto di vista dello sviluppatore (ero una volta), sia i difetti che i bug sono altrettanto importanti. Lo ripareremo ancora.

Abbiamo anche riscontrato strane anomalie, che abbiamo classificato sotto bug e continuamente cerchiamo di capire qual è la causa e come risolverlo. Definirlo bug non lo rende banale rispetto ai difetti.


Cosa chiamiamo requisiti difettosi?
gnasher729,

@ gnasher729 se per requisiti errati intendevi che i programmatori hanno frainteso i requisiti, allora penso che sia un difetto. Ma se si intendevano requisiti errati in quanto l'utente che fornisce i requisiti errati risultanti nel lavoro finale non risolve il problema iniziale, questo va oltre l'insetto e il difetto poiché questo è un problema con la sessione di raccolta dei requisiti piuttosto che con lo sviluppo.
tctham,

0

La differenza è che il termine "bug" sembra magico. Come se un programma potesse contenere casualmente dei bug dopo aver terminato la programmazione. Se ha bug casuali, significa che non sei conforme alle specifiche e che il tuo programma è in errore.

Un difetto indica un errore in cui il programma non è conforme alle specifiche. Questo è più grave e sostanzialmente dice che qualsiasi errore è un grosso problema con il programma e questo significa che il programma non è adatto per essere rilasciato.

La differenza sta nell'atteggiamento dei programmatori che usano i termini. Ci sono milioni di programmi rilasciati con bug e la gente sta bene perché accetta per qualche ragione che un bug è magico e casuale e che ogni programma contiene almeno un bug. Tuttavia, un programmatore che utilizza il termine "difetto" può sentirsi a disagio nel rilasciare un programma con un difetto perché il termine implica una maggiore gravità.

Le implicazioni della preferenza di un termine rispetto all'altro ci riguardano quotidianamente.


0

Secondo l' affidabilità: concetti di base e terminologia :

Un errore di sistema si verifica quando il servizio erogato si discosta dall'adempimento della funzione di sistema, essendo quest'ultimo destinato al sistema. Un errore è quella parte dello stato del sistema che può causare un successivo errore: un errore che influisce sul servizio indica che si è verificato o si è verificato un errore. La causa giudicata o ipotizzata di un errore è un errore .

Capisco il difetto come un altro nome per colpa.

Il bug è confuso e può rappresentare un errore o un errore a seconda del contesto.

Si noti che non si fa menzione delle specifiche: anche una specifica può essere difettosa.


0

Eccone uno che ho fatto in precedenza per il mio datore di lavoro Q-LEAP basato sul vocabolario ISTQB e ho anche controllato il vocabolario IEEE. Godere.

Bug e difetto? Lo stesso anche se si può avere una discussione infinita su questo. Abbiamo davvero altre cose di cui preoccuparci, la vita è già abbastanza complicata, ecc.

inserisci qui la descrizione dell'immagine

Un esempio di come il termine viene utilizzato in natura, da "How Google Tests Software" p. 113. Apri un articolo di "Software IEEE" ed è usato allo stesso modo. In effetti, raramente si incontra la parola "difetto" nella vita reale.

Vita di un insetto

Bug e segnalazioni di errori sono l'unico artefatto che ogni tester capisce. La ricerca di bug, il triaging dei bug, la correzione di bug e la regressione di bug sono il battito cardiaco e il flusso di lavoro per la qualità del software. Questa è la parte del test più convenzionale su Google, ma ci sono ancora alcune deviazioni interessanti dalla norma. Per questa sezione, ignoriamo i bug archiviati per tenere traccia degli oggetti di lavoro e usiamo il termine per identificare il codice effettivamente rotto. Pertanto, i bug rappresentano spesso il flusso di lavoro orario per ora e per i team di progettazione.

È nato un bug. I bug vengono rilevati e archiviati da tutti su Google. I Product Manager archiviano i bug quando rilevano problemi nelle prime build che differiscono dalle loro specifiche / pensieri. Gli sviluppatori segnalano i bug quando si rendono conto di aver accidentalmente verificato un problema o di trovare un problema altrove nella base di codice o durante il cibo con i prodotti Google. I bug arrivano anche dal campo, dai tester di crowdsourcing, dai test dei fornitori esterni e sono archiviati dai gestori della comunità che monitorano i gruppi Google specifici del prodotto. Molte versioni interne di app hanno anche modi rapidi con un clic per archiviare i bug, come Google Maps. E, a volte, i programmi software creano bug tramite un'API.


0

Al di fuori di specifici bug / attività / ticket / difetti / problemi / qualunque sia l'istanza del sistema di tracciamento, queste parole non hanno alcun significato esatto e quindi discutere la differenza tra loro è inutile. Quando si regola il flusso di lavoro, è necessario regolare la terminologia e fornire descrizioni.

Nel mio ambiente attuale un "difetto" è qualsiasi elemento di Jira. Sembra che Jira stesso usi il termine "problema". Potremmo averlo ereditato da un sistema precedente. "Bug" è un tipo di problema quando qualcosa non funziona come previsto e descritto nella documentazione. "Richiesta di funzionalità" quando qualcosa funziona come previsto, ma si desidera l'impvovement (può essere ovvio e importante, ma se viene descritto il comportamento corrente, si tratta comunque di una richiesta di funzionalità). Esistono più tipi, ma questi 2 vengono utilizzati da persone esterne al team di sviluppo per chiedere qualcosa.

Se scegli i nomi per i tipi di problemi, "bug" e "difetto" sembrano simili a me. La differenza tra loro è stilistica. Dato che l'inglese non è la mia lingua madre, non riesco davvero a vederne gran parte e non sono sicuro che ciò che vedo sia corretto.

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.