Ispezione, revisione del codice: è davvero un test?

5

ISTQB, Wikipedia o altre fonti classificano le attività di verifica (recensioni, ecc.) come test statici, mentre altri no. Se possiamo dire che le revisioni paritetiche e le ispezioni sono in realtà una sorta di test, allora molti standard non hanno senso (si consideri ad esempio ISO che dice che la validazione viene fatta testando, mentre la verifica tramite il controllo dei prodotti del lavoro) - dovrebbe almeno dire test dinamici per la convalida, non dovrebbe? Sto completando una tesi di master che si occupa di QA e devo ammettere che non ho mai visto una letteratura peggiore e più ambigua e contraddittoria rispetto a quella in questo campo: / Pensi (e se sì, perché) che i test statici sono un termine valido e giustificabile o dovremmo attenerci a test e analisi / analisi statiche?

Wikipedia: Test statico è una forma di test del software in cui il software non viene effettivamente utilizzato. Questo è in contrasto con i test dinamici. Generalmente non è un test dettagliato, ma controlla principalmente la sanità mentale del codice, dell'algoritmo o del documento. È principalmente il controllo della sintassi del codice e / o manualmente la revisione del codice o del documento per trovare errori. Questo tipo di test può essere utilizzato dallo sviluppatore che ha scritto il codice, in isolamento. Vengono anche utilizzate recensioni di codici, ispezioni e procedure dettagliate.

EDIT: una delle tante fonti che menziona test statici per utilizzare recensioni ecc. (cerca "test statici" nei libri di Google):

    
posta John V 13.11.2012 - 10:30
fonte

3 risposte

7

Personalmente, non ho mai sentito parlare del termine "test statico". Ho solo sentito parlare del termine "analisi statica", che si riferisce a qualsiasi momento in cui un prodotto di lavoro viene esaminato senza essere utilizzato. Questo include recensioni del codice e strumenti come Lint, FindBugs, PMD e FxCop.

Ecco alcune informazioni dalle fonti che ho a disposizione:

  • La sezione 5 (Test del software) della Guida al corpus della conoscenza del software non fa riferimento al "test statico". Fa riferimento a "tecniche di gestione della qualità del software statico" descritte nella Sezione 11 (Qualità del software). La sezione 11 riporta una sola menzione degli strumenti utilizzati per supportare queste attività, affermando che le attività analitiche statiche possono essere condotte "con o senza l'ausilio di strumenti".
  • Il glossario di Software Engineering, 8th Edition di Ian Sommerville menziona specificamente l'analisi statica come un "tool-based" analisi del codice sorgente di un programma per scoprire errori e anomalie ". Tuttavia, nel capitolo 22.3, Sommerville fa riferimento alle ispezioni come "una forma di analisi statica". Non vi è alcun riferimento al "test statico". Questo libro è considerato uno dei riferimenti canonici sull'ampiezza dell'ingegneria del software e viene spesso citato come lettura consigliata prima di entrambi gli esami di certificazione IEEE.
  • Roger S. Pressman Ingegneria del software: l'approccio di un praticante, 6a edizione non fa riferimento all'analisi statica o statica test che ho potuto trovare nell'indice o nei capitoli del test.
  • Il codice completo, seconda edizione di Steve McConnell non fa riferimento specifico all'analisi statica o al test statico. Tuttavia, il capitolo 30.2 contiene una sezione sull'analisi della qualità del codice. Gli strumenti per controllare automaticamente la sintassi e la semantica sono chiamati strumenti che "esaminano il codice sorgente statico per valutarne la qualità". Un esempio specifico fornito è Lint, che viene spesso definito come uno strumento di analisi statico da altre fonti.

Gli strumenti di analisi possono essere utilizzati solo per verificare il prodotto. Le revisioni umane degli artefatti possono essere utilizzate per eseguire sia la verifica che la convalida. I test che prevedono l'esecuzione del software possono essere la verifica, la convalida o entrambi, a seconda del contesto. La differenza fondamentale è che la verifica riguarda la ricerca di errori e difetti, mentre la convalida riguarda la garanzia che i requisiti descrivano adeguatamente le esigenze del cliente / utente e gli elementi del lavoro (progettazione, implementazione e test) corrispondano ai requisiti (e prodotti da cui derivano).

    
risposta data 13.11.2012 - 12:15
fonte
2

È ( S ) QA , non test!

In realtà non esegue alcun test, quindi sarei sorpreso del motivo per cui questo sarebbe trattato e riferito come tale. Tranne se ti aspetti che i revisori testino il programma insieme alla loro revisione del codice.

    
risposta data 13.11.2012 - 13:56
fonte
1

Le recensioni di codice al giorno d'oggi possono, a volte, raccogliere bug. Ma si tratta più di rivedere la qualità del codice piuttosto che la qualità del prodotto.

Ma c'è stato un tempo in cui le prove statiche - passando attraverso il codice con un occhio per catturare i bug - era una tecnica giustificabile. Quella volta era quando la compilazione era qualcosa che mettevi in una coda VMS e aspettava quattro ore per l'esecuzione. Quindi avresti impostato un'esecuzione di test e l'avresti posizionata sul retro della stessa coda. Oppure, prima, stampavi il codice su schede e portali in una sala operativa, aspettandoti di poterlo testare in un paio di giorni.

Trascorrere un'ora a scorrere il codice prima (o, spesso, mentre) in attesa di quella era un'ottima idea.

Ora puoi compilare in pochi secondi ed eseguire immediatamente, quindi i vantaggi dei test statici sono ormai lontani. Ma quei giorni erano meno di 20 anni fa, per alcuni di noi, e questo potrebbe essere il motivo per cui continui a vedere il riferimento alle revisioni del codice come attività di controllo qualità dell'applicazione.

    
risposta data 13.11.2012 - 11:51
fonte

Leggi altre domande sui tag