Qual è la differenza tra un difetto e un bug?
Qual è la differenza tra un difetto e un bug?
Risposte:
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.
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):
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.
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.
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 .
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".
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.
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.
La risposta di Dan McGrath è stata corretta.
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.
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.
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.
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.
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.
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.