Proqram Testində Statik Analiz və Dinamik Analiz



Statik analiz nədir?

Statik analiz, sınaqdan keçirilən proqramın heç bir dinamik icrasını əhatə etmir və proqramı işə salmadan əvvəl mümkün olan qüsurları aşkar edə bilər.

Statik analiz kodlaşdırmadan sonra və vahid testlərini həyata keçirmədən əvvəl aparılır.

Statik analiz mənbə kodunu avtomatik olaraq 'gəzmək' və uyğun olmayan qaydaları aşkar etmək üçün bir maşın tərəfindən edilə bilər. Klassik nümunə leksik, sintaktik və hətta bəzi semantik səhvlər tapan bir tərtibçidir.


Statik analiz, proqramı qurmaq üçün uyğun kodlaşdırma standartları və konvensiyalarından istifadə edilməsini təmin etmək üçün kodu nəzərdən keçirəcək bir şəxs tərəfindən də edilə bilər. Buna tez-tez Kod İncelemesi deyilir və kod yazan geliştiricidən başqa birisi olan bir inkişafçı tərəfindən edilir.

Statik analiz, istifadəçiləri istifadə edilməməsi lazım olan qaydaları təyin edərək proqramlaşdırma dilinin riskli və ya arabir hissələrini istifadə etməməyə məcbur etmək üçün də istifadə olunur.


Geliştiricilər kod analizini apardıqda ümumiyyətlə axtarırlar

  • Kod xətləri
  • Şərh tezliyi
  • Düzgün yuva
  • Funksiya zənglərinin sayı
  • Siklomatik mürəkkəblik
  • Vahid testlərini də yoxlaya bilər

Statik analizin mərkəzində ola biləcək keyfiyyət xüsusiyyətləri:

  • Etibarlılıq
  • Qoruma
  • Sınaq qabiliyyəti
  • Yenidən istifadə
  • Taşınabilirlik
  • Effektivlik


Statik analizin üstünlükləri nələrdir?

Statik analizin əsas üstünlüyü ondan ibarətdir ki, inteqrasiya və daha çox sınaq üçün hazır olmadan kodla bağlı problemlər tapsın.

Statik kod analizinin üstünlükləri:


  • Kodda zəif tərəfləri dəqiq yerdə tapa bilər.
  • Kodu tam başa düşən təlim keçmiş proqram təminatı inkişaf etdiriciləri tərəfindən aparıla bilər.
  • Mənbə kodu digər və ya gələcək inkişaf etdiricilər tərəfindən asanlıqla başa düşülə bilər
  • Düzəlişlər üçün daha sürətli bir şəkildə dönməyə imkan verir
  • İnkişafın həyat dövründə zəif cəhətlər əvvəllər aşkar edilir və bu, düzəltmək üçün xərcləri azaldır.
  • Sonrakı testlərdə daha az qüsur
  • Dinamik testlərdən istifadə edərək aşkarlana bilməyən və ya çətinliklə aşkarlanmayan unikal qüsurlar aşkar edilir

    • Əlçatmaz kod

    • Dəyişən istifadə (elan olunmamış, istifadə olunmamış)

    • Çağırılmamış funksiyalar

    • Sərhəd pozuntuları

Statik kod təhlili məhdudiyyətləri:

  • Əllə aparılsa çox vaxt aparır.
  • Avtomatlaşdırılmış alətlər yanlış pozitivlər və yanlış neqativlər istehsal edir.
  • Statik kod analizini hərtərəfli aparmaq üçün kifayət qədər təlim keçmiş kadr yoxdur.
  • Avtomatlaşdırılmış alətlər hər şeyin həll olunduğuna dair saxta bir təhlükəsizlik hissi təmin edə bilər.
  • Avtomatlaşdırılmış alətlər yalnız taramaq üçün istifadə etdikləri qaydalar qədər yaxşıdır.
  • İşləmə müddətində təqdim olunan zəiflikləri tapmır.


Dinamik Analiz nədir?

Kodun yerinə yetirilmədiyi Statik Analizdən fərqli olaraq, dinamik analiz sistem icrası , tez-tez alətlərdən istifadə.

Wikipedia’dan dinamik proqram analizinin tərifi :

Dinamik proqram analizi, bu proqramdan həqiqi və ya virtual prosessorda qurulmuş proqramların icrası ilə həyata keçirilən kompüter proqramının analizidir (proqram icra edilmədən aparılan analiz statik kod analizi kimi tanınır). Dinamik proqram təhlili vasitələri xüsusi kitabxanaların yüklənməsini və ya proqram kodunun yenidən tərtib edilməsini tələb edə bilər.


Ən çox yayılmış dinamik analiz praktikası, koddakı səhvləri tapmaq üçün kod testlərini həyata keçirməkdir.

Dinamik kod analizinin üstünlükləri:

  • İşləmə müddəti zəifliklərini müəyyənləşdirir.
  • Həqiqi kodu əldə edə bilmədiyiniz tətbiqetmələrin analizinə imkan verir.
  • Statik kod analizində yalnış neqativlər ola bilən boşluqları müəyyənləşdirir.
  • Statik kod analiz nəticələrini təsdiqləməyinizə imkan verir.
  • Hər hansı bir tətbiqə qarşı aparıla bilər.

Dinamik kod təhlili məhdudiyyətləri:

  • Avtomatlaşdırılmış alətlər hər şeyin həll olunduğuna dair saxta bir təhlükəsizlik hissi verir.
  • Mənbə kodunun tam test əhatə dairəsini təmin edə bilməz
  • Avtomatlaşdırılmış alətlər yanlış pozitivlər və yanlış neqativlər istehsal edir.
  • Avtomatlaşdırılmış alətlər yalnız taramaq üçün istifadə etdikləri qaydalar qədər yaxşıdır.
  • Problemi düzəltmək üçün daha uzun vaxt apararaq zəifliyi koddakı dəqiq yerə qaytarmaq daha çətindir.