Anàlisi estàtic vs anàlisi dinàmic en proves de programari



Què és l'anàlisi estàtic?

L'anàlisi estàtic no implica cap execució dinàmica del programari que es prova i pot detectar possibles defectes en una etapa inicial, abans d'executar el programa.

L'anàlisi estàtic es realitza després de la codificació i abans d'executar proves unitàries.

Una màquina pot fer anàlisis estàtiques per 'recórrer' automàticament el codi font i detectar regles que no compleixen. L'exemple clàssic és un compilador que troba errors lèxics, sintàctics i fins i tot alguns semàntics.


Una anàlisi estàtica també la pot fer una persona que revisaria el codi per assegurar-se que s’utilitzen normes i codis de codificació adequats per construir el programa. Sovint s’anomena Revisió de codis i ho fa un desenvolupador similar, algú que no sigui el desenvolupador que ha escrit el codi.

L'anàlisi estàtica també s'utilitza per obligar els desenvolupadors a no utilitzar parts de llenguatge de programació arriscades o errades establint regles que no s'han d'utilitzar.


Quan els desenvolupadors realitzen anàlisis de codi, solen cercar-los

  • Línies de codi
  • Freqüència de comentaris
  • Nidificació adequada
  • Nombre de trucades de funció
  • Complexitat ciclomàtica
  • També es pot comprovar si hi ha proves unitàries

Atributs de qualitat que poden centrar-se en l'anàlisi estàtica:

  • Fiabilitat
  • Manteniment
  • Testabilitat
  • Reutilització
  • Portabilitat
  • Eficiència


Quins avantatges té l'anàlisi estàtica?

El principal avantatge de l'anàlisi estàtica és que troba problemes amb el codi abans que estigui llest per a la integració i proves posteriors.

Avantatges de l'anàlisi de codi estàtic:


  • Pot trobar punts febles al codi a la ubicació exacta.
  • Pot ser dut a terme per desenvolupadors de programari capacitats que entenguin perfectament el codi.
  • Altres o futurs desenvolupadors poden entendre fàcilment el codi font
  • Permet donar una volta més ràpida per solucionar-ho
  • Les debilitats es troben abans del cicle de vida del desenvolupament, cosa que redueix el cost de reparació.
  • Menys defectes en proves posteriors
  • Es detecten defectes únics que no es poden detectar o difícilment mitjançant proves dinàmiques

    • Codi inaccessible

    • Ús variable (no declarat, no utilitzat)

    • Funcions no convocades

    • Infraccions del valor límit

Limitacions de l'anàlisi de codi estàtic:

  • Es consumeix molt de temps si es realitza manualment.
  • Les eines automatitzades produeixen falsos positius i falsos negatius.
  • No hi ha prou personal format per dur a terme una anàlisi estàtica del codi.
  • Les eines automatitzades poden proporcionar una falsa sensació de seguretat perquè tot s’està tractant.
  • Eines automatitzades tan bones com les regles amb què s’utilitzen per escanejar.
  • No troba vulnerabilitats introduïdes a l'entorn d'execució.


Què és l'anàlisi dinàmica?

A diferència de l 'Anàlisi estàtica, on el codi no s'executa, l' anàlisi dinàmica es basa en execució del sistema , sovint utilitzant eines.

De Wikipedia definició d’anàlisi de programa dinàmic :

L’anàlisi dinàmic de programes és l’anàlisi de programari informàtic que es realitza amb l’execució de programes construïts a partir d’aquest programari en un processador real o virtual (l’anàlisi realitzada sense executar programes es coneix com anàlisi de codi estàtic). Les eines d’anàlisi de programes dinàmics poden requerir la càrrega de biblioteques especials o fins i tot recompilar el codi del programa.


La pràctica d’anàlisi dinàmica més comuna consisteix a executar proves d’unitat contra el codi per trobar errors al codi.

Avantatges de l'anàlisi de codi dinàmic:

  • Identifica vulnerabilitats en un entorn d'execució.
  • Permet analitzar aplicacions en què no tingueu accés al codi real.
  • Identifica vulnerabilitats que podrien haver estat falsos negatius en l’anàlisi de codi estàtic.
  • Us permet validar els resultats de l'anàlisi de codi estàtic.
  • Es pot dur a terme contra qualsevol aplicació.

Limitacions de l'anàlisi de codi dinàmic:

  • Les eines automatitzades proporcionen una falsa sensació de seguretat perquè tot s’està tractant.
  • No es pot garantir la cobertura completa del codi font de la prova
  • Les eines automatitzades produeixen falsos positius i falsos negatius.
  • Les eines automatitzades només són tan bones com les regles amb què s’utilitzen per escanejar.
  • És més difícil rastrejar la vulnerabilitat fins a la ubicació exacta del codi, trigant més a solucionar el problema.