Staattinen analyysi vs. dynaaminen analyysi ohjelmistotestauksessa



Mikä on staattinen analyysi?

Staattinen analyysi ei sisällä testattavan ohjelmiston dynaamista suoritusta, ja se voi havaita mahdolliset viat jo varhaisessa vaiheessa, ennen ohjelman suorittamista.

Staattinen analyysi tehdään koodauksen jälkeen ja ennen yksikötestien suorittamista.

Kone voi tehdä staattisen analyysin lähdekoodin automaattisen 'kävelemisen' läpi ja havaitsemaan sääntöjenvastaiset säännöt. Klassinen esimerkki on kääntäjä, joka löytää leksikaalisia, syntaktisia ja jopa joitain semanttisia virheitä.


Staattisen analyysin voi suorittaa myös henkilö, joka tarkistaa koodin varmistaakseen, että ohjelman rakentamiseen käytetään asianmukaisia ​​koodausstandardeja ja käytäntöjä. Tätä kutsutaan usein Code Reviewiksi, ja sen tekee vertaiskehittäjä, joku muu kuin koodin kirjoittanut kehittäjä.

Staattista analyysiä käytetään myös pakottamaan kehittäjät olemaan käyttämättä ohjelmointikielen riskialttiita tai viallisia osia asettamalla sääntöjä, joita ei saa käyttää.


Kun kehittäjät suorittavat koodianalyysin, he yleensä etsivät

  • Koodirivit
  • Kommenttien tiheys
  • Oikea pesintä
  • Toimintakutsujen määrä
  • Syklomaattinen monimutkaisuus
  • Voi myös tarkistaa yksikötestit

Laatuominaisuudet, jotka voivat olla staattisen analyysin painopiste:

  • Luotettavuus
  • Ylläpidettävyys
  • Testattavuus
  • Uudelleenkäytettävyys
  • Siirrettävyys
  • Tehokkuus


Mitkä ovat staattisen analyysin edut?

Staattisen analyysin tärkein etu on, että se löytää ongelmia koodissa ennen kuin se on valmis integrointiin ja lisätestaukseen.

Staattisen koodianalyysin edut:


  • Se voi löytää puutteita koodista tarkasta sijainnista.
  • Sen voivat suorittaa koulutetut ohjelmistovakuutuskehittäjät, jotka ymmärtävät koodin täysin.
  • Lähdekoodi voidaan helposti ymmärtää muille tai tuleville kehittäjille
  • Sen avulla korjaukset voidaan kääntää nopeammin
  • Heikkouksia havaitaan aiemmin kehityksen elinkaaressa, mikä vähentää korjauskustannuksia.
  • Vähemmän vikoja myöhemmissä testeissä
  • Ainutlaatuisia vikoja havaitaan, joita ei voida tai ei voida havaita dynaamisten testien avulla

    • Koodi, jota ei voida saavuttaa

    • Vaihteleva käyttö (ilmoittamaton, käyttämätön)

    • Kutsumattomat toiminnot

    • Raja-arvorikkomukset

Staattisen koodianalyysin rajoitukset:

  • Se on aikaa vievää, jos se suoritetaan manuaalisesti.
  • Automatisoidut työkalut tuottavat vääriä positiivisia ja vääriä negatiivisia.
  • Koulutettua henkilöstöä ei ole tarpeeksi staattisen koodianalyysin perusteelliseen suorittamiseen.
  • Automatisoidut työkalut voivat antaa väärän turvallisuuden tunteen, että kaikkeen puututaan.
  • Automatisoidut työkalut vain niin hyviä kuin säännöt, joita he käyttävät skannaukseen.
  • Se ei löydä ajonaikaisessa ympäristössä käyttöön otettuja haavoittuvuuksia.


Mikä on dynaaminen analyysi?

Toisin kuin staattisessa analyysissä, jossa koodia ei suoriteta, dynaaminen analyysi perustuu järjestelmän suorittaminen , usein työkalujen avulla.

Wikipediasta dynaamisen ohjelma-analyysin määrittely :

Dynaaminen ohjelma-analyysi on tietokoneohjelmiston analyysi, joka suoritetaan suorittamalla kyseisestä ohjelmistosta rakennetut ohjelmat todelliselle tai virtuaaliselle prosessorille (analyysi, joka suoritetaan ilman ohjelmien suorittamista, tunnetaan staattisen koodin analyysinä). Dynaamiset ohjelmien analysointityökalut saattavat vaatia erityiskirjastojen lataamista tai jopa ohjelmakoodin uudelleen kääntämistä.


Yleisin dynaaminen analyysikäytäntö on Unit Testien suorittaminen koodia vastaan ​​virheiden löytämiseksi koodissa.

Dynaamisen koodianalyysin edut:

  • Se tunnistaa haavoittuvuudet ajonaikaisessa ympäristössä.
  • Sen avulla voidaan analysoida sovelluksia, joissa sinulla ei ole pääsyä varsinaiseen koodiin.
  • Se tunnistaa haavoittuvuudet, jotka ovat saattaneet olla vääriä negatiivisia staattisen koodin analyysissä.
  • Sen avulla voit vahvistaa staattisen koodin analyysin havainnot.
  • Se voidaan suorittaa mitä tahansa sovellusta vastaan.

Dynaamisen koodianalyysin rajoitukset:

  • Automatisoidut työkalut antavat väärän turvallisuuden tunteen, että kaikkeen puututaan.
  • Lähdekoodin täydellistä testausta ei voida taata
  • Automatisoidut työkalut tuottavat vääriä positiivisia ja vääriä negatiivisia.
  • Automatisoidut työkalut ovat vain yhtä hyviä kuin säännöt, joita ne käyttävät skannattaessa.
  • Haavoittuvuuden palauttaminen tarkkaan sijaintiin koodissa on vaikeampaa, ongelman korjaaminen kestää kauemmin.