Analisi e test statici sono cose diverse e raccolgono diverse classi di problemi.
Con il test della scatola in bianco o nero, esegui parti del codice con input, ecc. che lo sviluppatore o il tester pensa siano importanti. L'unico controllo di qualità reale sulla progettazione dei casi di test da parte degli sviluppatori / tester è la copertura del codice ... e questo non ti dice nulla se la logica è stata testata correttamente.
Al contrario, l'analisi statica sta cercando problemi in un modo diverso; cioè analizzando cosa fa il codice indipendentemente dai casi / dai dati del test. In genere trovano diversi tipi di problemi, e in genere li trovano con meno sforzo da parte dello sviluppatore / tester. Ad esempio, un analizzatore statico potrebbe identificare un codice morto o una perdita di risorse o risorse che sarebbe impossibile trovare con il test dell'unità o una pratica non sicura come (in Java) utilizzando ==
per testare le stringhe.
In breve i due approcci sono complementari.