Differenza tra test statico e revisione del codice [duplicato]

4

Qual è la differenza tra test statico e riesame del codice ?

Ho trovato alcune informazioni su wikipedia che in entrambi i casi il programmatore controlla la sintassi e la logica del codice per i bug.

    
posta dbow 11.01.2012 - 09:27
fonte

4 risposte

3

In una revisione del codice, il codice sorgente viene letto da un essere umano. Questo è spesso qualcuno diverso dallo sviluppatore originale, ma non è un requisito. Ad esempio, il processo software personale consente di identificare le revisioni del codice personale guidate dalle liste di controllo di problemi specifici. In alternativa, ci sono un numero di tecniche che coinvolgono altre persone - la programmazione di coppie, i controlli over-the-shoulder e le ispezioni formali .

Indipendentemente dalla tecnica utilizzata, ci sono una serie di ragioni per cui sarebbe stata eseguita una revisione del codice, sebbene alcune tecniche si prestino meglio a scopi specifici. Ad esempio, è possibile rivedere una grande quantità di codice scritto da un nuovo sviluppatore per garantire che stiano seguendo le convenzioni del team e comprendano gli obiettivi di progettazione e implementazione del team. Le revisioni del codice consentono inoltre di verificare errori logici e problemi di sicurezza. I test possono anche essere rivisti per garantire che i casi di test corrispondano ai requisiti e che forniscano una copertura adeguata.

L'analisi statica del codice viene eseguita da vari strumenti che eseguono la scansione dei file sorgente e, in alcuni casi, dei file binari, per identificare potenziali problemi, che vanno dagli errori di indicizzazione alle assegnazioni non necessarie ai buchi di sicurezza. Questi strumenti in genere producono report che indicano la posizione e la gravità dei possibili problemi.

Spesso, l'analisi statica e le revisioni del codice vengono utilizzate insieme per fornire copertura. Nelle mie esperienze, i singoli sviluppatori eseguono analisi statiche sul proprio codice prima di una revisione del codice. Dopo aver esaminato i risultati dell'analisi statica, correggono eventuali problemi che potrebbero causare problemi, quindi inviano il loro codice per la revisione. Individuando e correggendo problemi facilmente identificabili automaticamente, i revisori del codice umano possono concentrare i loro sforzi su un diverso sottoinsieme di problemi.

    
risposta data 11.01.2012 - 13:33
fonte
2

La differenza sta nel chi : il test statico viene eseguito dal programmatore stesso, preferibilmente con l'aiuto di strumenti di test statici. La revisione del codice è fatta da un altro umano.

    
risposta data 11.01.2012 - 09:36
fonte
0

Una cosa che non ho ancora incontrato con uno strumento di analisi del codice statico che catturerà sono errori logici. Ad esempio, il codice può essere assolutamente bello e perfetto da ogni angolo tecnico, ma se un metodo TransferMoney() chiama targetAccount.withdraw() piuttosto che targetAccount.deposit() , questo è un errore piuttosto evidente che qualsiasi revisione approfondita a metà del codice sta per prendere perché l'umano che fa la revisione del codice è probabilmente più bravo a capire la semantica del metodo TransferMoney (). Errori simili possono essere fatti in modi che sono tutt'altro che ovvi, in particolare allo sviluppatore che scrive il codice.

L'analisi statica può solo capire se il codice è corretto tecnicamente, non può fare molto sulla logica di business implementata da quel codice.

    
risposta data 11.01.2012 - 13:33
fonte
0

Sono d'accordo con le altre risposte sull'analisi statica e sulle revisioni del codice. Mi piacerebbe aggiungere un paio di punti che ritengo importanti per entrambi.

Per l'analisi statica (almeno per c #) ci sono alcuni strumenti davvero interessanti (FXCop) che sono in grado di identificare problemi di implementazione come il modello monouso. È anche un buon strumento per identificare alcuni odori di codice, come l'accoppiamento o la complessità ciclomatica. Non sto suggerendo che siano perfetti, ma ho trovato alcuni di questi utili per identificare i problemi.

Per quanto riguarda le revisioni del codice, la maggior parte delle revisioni del codice delle cose vengono utilizzate per il posto in cui lavoro, per abbattere i silos della conoscenza e insegnare agli altri che cosa hai scritto. Di solito una grande conversazione viene dalla recensione su come il codice è scritto, sfidando gli altri con diversi punti di vista, imparando nuove convenzioni, ecc.

Come puoi vedere, sono compiti molto diversi che entrambi hanno utilizzato per la maggior parte degli sviluppatori. I computer sono anche bravi a trovare cose che violano regole molto specifiche in cui gli esseri umani sono migliori al contrario.

Spero che ti stia chiedendo di poter utilizzare entrambi e di non scegliere l'uno sull'altro.

    
risposta data 11.01.2012 - 14:15
fonte

Leggi altre domande sui tag