Bug inspiegabili?

7

Ho riscontrato bug estremamente difficili da riprodurre in modo affidabile e / o esplicativo, ma che appare per essere risolto. Quando ciò accade, quanto tempo dovrei dedicare a inseguirlo?

Esempio: questa domanda SO e questo post sul forum jQuery , che offre soluzioni diverse. Il problema era riproducibile a intermittenza fino al cambiamento che ho discusso nella domanda SO, e non del tutto dopo il cambiamento.

Se non capisco in modo conclusivo che cosa abbia causato il bug, posso affermare con sicurezza che non tornerà in futuro di sorpresa?

    
posta Mr. Jefferson 06.05.2011 - 22:41
fonte

3 risposte

10

If I don't conclusively understand what caused the bug, can I claim with confidence that it won't come back in the future by surprise?

No. Quindi la tua prossima domanda dovrebbe essere: quanto sarà grave se tornerà di sorpresa?

Se la risposta è "abbastanza brutta, ci costerà milioni di dollari e clienti", quindi è necessario dedicare un po 'di tempo a capirlo. L'approccio migliore è quello di adottare un ambiente di test e ripristinare la modifica che ritenete sia stata corretta e niente altro.

Se la risposta è "beh, sarà un po 'imbarazzante, ma niente di ciò che non possiamo affrontare", per ora chiamalo male.

    
risposta data 06.05.2011 - 22:52
fonte
3

Nel tuo caso particolare hai avuto una condizione di gara. Ci sono due modi per risolverlo. Uno è assicurarsi che un lato vinca sempre la gara (la soluzione $ (finestra) .load ()). L'altro è di farlo in modo che funzioni correttamente, indipendentemente da chi vince la gara (la soluzione di dimensioni dell'immagine esplicita).

Di solito le migliori pratiche e gli standard di codifica derivano dall'esigenza di evitare che tali problemi si manifestino in primo luogo. In questo caso, si applica la best practice di specificare sempre in modo esplicito le dimensioni dell'immagine. Hai trovato una buona ragione per cui la via difficile, e ci sono altri che non hai ancora incontrato. Aggiungere questa pratica ai tuoi standard di codifica dovrebbe soddisfare i semi.

    
risposta data 06.05.2011 - 22:58
fonte
3

Se hai apportato una modifica ma non sei sicuro perché potrebbe aver corretto il bug, allora non puoi davvero affermare di aver effettivamente corretto il bug.

Ci sono diversi modi in cui una modifica può influire su un bug, supponendo che in realtà non risolva il problema:

  1. Hai cambiato i tempi di alcune chiamate asincrone. Se ora richiede più tempo, non sta più tentando di accedere agli stessi dati di un altro codice. Il bug riapparirà se il tempo cambia.
  2. Hai spostato alcuni dati nella memoria in modo che non sovraccarichi più un buffer nel codice. (Ovviamente questo dipende dalla lingua). Anche in questo caso il bug potrebbe riapparire in qualsiasi momento.
  3. L'ordine in cui le variabili sono inizializzate è cambiato e ora funziona perché B è inizializzato prima di A .

e così via.

Puoi solo reclamare definitivamente che un bug è stato risolto se sai perché il problema si è verificato in primo luogo. Ammetti di "non capire in modo conclusivo che cosa abbia causato il bug", quindi dovrai fare più indagini sia sul problema che sulla correzione finché non lo fai.

    
risposta data 06.05.2011 - 22:51
fonte

Leggi altre domande sui tag