Checklist di debug: quanto è necessario avere? [chiuso]

2

Dovrebbe essere una check-list di essere una parte essenziale del processo di sviluppo? Come può essere integrato con unit-tests ?

Aggiorna

Elenco di controllo per il debug: pensa come elenco di controllo per la risoluzione dei problemi, come per la tua connessione di rete, questa volta per gli sviluppatori e il codice sorgente. Ad esempio, se stai cercando di accedere al web tramite il tuo browser web e non puoi, allora probabilmente andresti a controllare se è possibile caricare altri siti Web o no, altrimenti verificherai la tua connessione Internet / rete e così via.

Qui, se hai un team di più sviluppatori e ti imbatti in un bug, non ti limiterai a saltare nel codice sorgente e provare a eseguirne il debug lì, perché qualcun altro potrebbe cambiare il codice e questo potrebbe causare il problema. Per individuare il bug reale senza una lista di controllo, tutti devono passare molto tempo a guardare cose diverse, probabilmente anche in modo non organizzato.

Ad esempio abbiamo un modulo Mappa nel nostro software. Se stai cercando di usare quel modulo da qualche parte nell'applicazione e questo non funziona, allora c'è una piccola lista di controllo per aiutarti a eseguire il debug più velocemente:

  1. Verifica se la licenza esiste in Dashboard / Impostazioni / Mappa o nel database. È una licenza valida?
  2. Che cos'è il MapCenter? È un LatLng valido?
  3. Cos'è la MapProjection?
  4. Puoi raggiungere MapServer?

Quindi, specialmente se sei nuovo del team / codice, puoi raggiungere gli altri molto più velocemente senza passare ore a cercare di individuare la causa degli errori.

Ci sono modi per fare una migliore gestione degli errori - ad esempio, lanciare un'eccezione se MapServer non è raggiungibile, tuttavia ci sono anche situazioni in cui è ancora necessario controllare diversi elementi per assicurarsi causando esattamente l'errore.

La domanda è: Se sto scrivendo una funzione sort , e so che è necessario specificare la codifica corretta per ottenere il risultato corretto, dovrebbe Scrivo una lista di controllo semplicemente in questo modo:

  1. Assicurati di aver impostato la codifica corretta nel file di configurazione.

Se l'esempio precedente potrebbe salvare me stesso o un altro sviluppatore per 10-15 minuti di ricerca del problema, dovremmo rendere obbligatorio per ogni sviluppatore scrivere questo tipo di checklist quando individuano qualcosa che è potenzialmente fonte di problema su una parte specifica dell'applicazione più tardi?

    
posta Mahdi 16.01.2014 - 08:27
fonte

3 risposte

2

È una buona idea, ma il trucco diventa dove mettere la lista di controllo in modo che gli esperti di risoluzione dei problemi siano sicuri di saperlo e usarlo. Ad esempio, seguiamo un processo di sviluppo agile al lavoro. Ciò significa che a volte rilasciamo funzionalità per testarlo, ma non sono la versione user-friendly completa a cui stiamo lavorando alla fine.

Invitiamo tutti coloro che useranno la nuova funzione nella nostra demo. Presentiamo una lista di controllo per la risoluzione dei problemi, parliamo dei limiti, rispondiamo alle loro domande, rendiamo l'elenco disponibile a tutti. Poi, alcuni giorni dopo, quando iniziano effettivamente i test, riceviamo un sacco di telefonate, e-mail e segnalazioni di bug sulle cose che abbiamo inserito nella lista.

Poiché ha indicato Julia , le liste di controllo nei commenti di codice o in un file di documentazione non sono particolarmente utili. Queste informazioni per la risoluzione dei problemi devono essere inserite nel codice il più possibile. Se la licenza non è valida, hai almeno bisogno di un grande messaggio di errore che dice la tua licenza non è valida , ed è meglio se dice go qui per acquistare una licenza valida . Se il centro della mappa è una latitudine / longitudine non valida, hai almeno bisogno di un grande messaggio di errore che dice latitudine / longitudine non valida per il centro della mappa , ma è meglio se dichiari quali valori sono validi, come specifica un centro mappa entro i confini della Georgia .

In altre parole, è il tuo lavoro per abilitare la risoluzione dei problemi della tua applicazione senza usare una lista di controllo.

    
risposta data 16.01.2014 - 15:22
fonte
3

Posso vedere due aspetti.

  1. Con la maggior parte delle funzioni c'è un tipo di contratto che deve essere soddisfatto dal chiamante. Questo dovrebbe essere descritto nella documentazione. Questa documentazione può assumere molte forme diverse. È molto comune trovare commenti nel codice sorgente che spieghi lo scopo della funzione, i parametri e i valori di ritorno. Puoi ottenere un software che estrae questi commenti e genera un file di guida con collegamento ipertestuale, se lo desideri.

    Se non riesci a far funzionare il modulo Mappa (dal tuo esempio), inizi a guardare questa documentazione per vedere se la stai usando correttamente.

  2. Non c'è niente di sbagliato nello scrivere una FAQ o una lista di trouble-shooting per particolari librerie, ma questo dovrebbe essere solo se necessario. Il problema di avere una politica che ogni biblioteca deve avere una tale lista è che alcuni semplicemente non ne hanno bisogno e tu spendi gli sforzi per produrre qualcosa senza valore. Quali attività commerciali potrebbero intenzionalmente buttare via i soldi?

    A proposito, i controlli 2 e 3 nell'esempio della mappa saranno coperti dalla documentazione della funzione. Chiunque non pensi al check 4 probabilmente non dovrebbe lavorare nello sviluppo del software, in primo luogo. Il controllo 1 è valido se non è ovvio che è necessaria una licenza e il messaggio di errore dal modulo è inutile. (Ma come dice Julia nella sua risposta, è molto meglio rendere il messaggio di errore più informativo che creare una FAQ per la risoluzione dei problemi.)

Non vedo alcun modo ovvio per i test unitari di includere il controllo della documentazione richiesta. Questo dovrebbe far parte della revisione del codice, non del test dell'unità.

    
risposta data 16.01.2014 - 14:11
fonte
2

There are ways to do a better error handling -- like throw an exception for example if the MapServer is unreachable, however there are also situations that you still need to check different elements to make sure what exactly causing the error.

È vero, ma naturalmente ogni volta che devi approfondire per scoprire cosa non va, devi aggiungere un codice per fornire un messaggio informativo con qualsiasi mezzo, preferibilmente aggiungendo il problema ad una lista. Non ha molto senso controllare ripetutamente lo stesso insieme di possibili cause di errore, in particolare perché è probabile che tale elenco aumenti, quando è possibile ottenere l'applicazione per diagnosticare i problemi stessi.

    
risposta data 16.01.2014 - 14:21
fonte

Leggi altre domande sui tag