Statinė analizė ir dinaminė programinės įrangos testavimo analizė



Kas yra statinė analizė?

Statinė analizė nereikalauja dinaminio bandomos programinės įrangos vykdymo ir gali aptikti galimus defektus ankstyvoje stadijoje, prieš paleidžiant programą.

Statinė analizė atliekama užkodavus ir prieš atliekant vieneto testus.

Statinę analizę mašina gali atlikti, kad automatiškai „pereitų“ šaltinio kodą ir nustatytų nesilaikančias taisykles. Klasikinis pavyzdys yra kompiliatorius, kuris randa leksikos, sintaksės ir net keletą semantinių klaidų.


Statinę analizę taip pat gali atlikti asmuo, kuris peržiūrėtų kodą, kad užtikrintų tinkamus kodavimo standartus ir konvencijas, naudojamus kuriant programą. Tai dažnai vadinama „Code Review“ ir tai atlieka bendraamžių kūrėjas, kažkas, išskyrus kūrėją, kuris parašė kodą.

Statinė analizė taip pat naudojama norint priversti kūrėjus nenaudoti rizikingų ar klaidingų programavimo kalbos dalių nustatant taisykles, kurių negalima naudoti.


Kai kūrėjai atlieka kodo analizę, jie paprastai ieško



  • Kodo eilutės
  • Komentarų dažnumas
  • Tinkamas lizdas
  • Funkcijų iškvietimų skaičius
  • Ciklomatinis sudėtingumas
  • Taip pat gali patikrinti, ar nėra vieneto bandymų

Kokybės požymiai, į kuriuos galima atkreipti dėmesį į statinę analizę:

  • Patikimumas
  • Palaikomumas
  • Testavimas
  • Pakartotinis naudojimas
  • Perkeliamumas
  • Efektyvumas


Kokie yra statinės analizės pranašumai?

Pagrindinis statinės analizės pranašumas yra tas, kad ji aptinka su kodu susijusių problemų, kol ji dar nėra pasirengusi integracijai ir tolesniam testavimui.

Statinio kodo analizės pranašumai:


  • Tai gali rasti kodo trūkumų tikslioje vietoje.
  • Ją gali atlikti apmokyti programinės įrangos užtikrinimo kūrėjai, kurie visiškai supranta kodą.
  • Šaltinio kodą gali lengvai suprasti kiti ar būsimi kūrėjai
  • Tai leidžia greičiau apsisukti pataisoms
  • Trūkumai nustatomi ankstesniame vystymosi ciklo etape, todėl sumažėja taisymo išlaidos.
  • Mažiau defektų vėlesniuose bandymuose
  • Aptinkami unikalūs defektai, kurių negalima arba vargu ar galima aptikti naudojant dinaminius testus

    • Nepasiekiamas kodas

    • Kintamas naudojimas (nedeklaruotas, nenaudojamas)

    • Neprašomos funkcijos

    • Ribinės vertės pažeidimai

Statinio kodo analizės apribojimai:

  • Tai užima daug laiko, jei atliekamas rankiniu būdu.
  • Automatiniai įrankiai sukelia klaidingą teigiamą ir klaidingą neigiamą informaciją.
  • Nėra pakankamai apmokytų darbuotojų, kad būtų galima kruopščiai atlikti statinio kodo analizę.
  • Automatiniai įrankiai gali suteikti klaidingą saugumo jausmą, kad viskas yra sprendžiama.
  • Automatiniai įrankiai tik tokie geri, kaip taisyklės, kurias jie naudoja nuskaitydami.
  • Tai neranda vykdymo laiko aplinkoje įdiegtų pažeidžiamumų.


Kas yra dinaminė analizė?

Skirtingai nuo statinės analizės, kai kodas nevykdomas, dinaminė analizė grindžiama sistemos vykdymas , dažnai naudojant įrankius.

Iš Vikipedijos dinaminės programos analizės apibrėžimas :

Dinaminė programos analizė yra kompiuterinės programinės įrangos analizė, atliekama vykdant programas, sukurtas iš tos programinės įrangos, realiame ar virtualiame procesoriuje (analizė, atlikta be programų vykdymo, vadinama statinio kodo analize). Dinaminės programos analizės priemonės gali pareikalauti specialių bibliotekų įkėlimo ar net programos kodo perkompiliavimo.


Dažniausia dinaminės analizės praktika yra vieneto testų vykdymas pagal kodą, siekiant rasti klaidų kode.

Dinaminės kodo analizės pranašumai:

  • Jis nustato vykdymo laiko pažeidžiamumus.
  • Tai leidžia analizuoti programas, kuriose jūs neturite prieigos prie tikrojo kodo.
  • Jis nustato pažeidžiamumus, kurie galėjo būti klaidingi neigiami atliekant statinio kodo analizę.
  • Tai leidžia patvirtinti statinio kodo analizės išvadas.
  • Tai gali būti atliekama prieš bet kokią paraišką.

Dinaminės kodo analizės apribojimai:

  • Automatiniai įrankiai suteikia klaidingą saugumo jausmą, kad viskas sprendžiama.
  • Negalima garantuoti visiško šaltinio kodo bandymo aprėpties
  • Automatiniai įrankiai sukelia klaidingą teigiamą ir klaidingą neigiamą informaciją.
  • Automatiniai įrankiai yra tokie pat geri, kaip taisyklės, kurias jie naudoja nuskaitydami.
  • Sunkiau atsekti pažeidžiamumą iki tikslios vietos kode, užtrunkant ilgiau, kol išspręsite problemą.