Статычны аналіз супраць дынамічнага аналізу пры тэставанні праграмнага забеспячэння



Што такое статычны аналіз?

Статычны аналіз не прадугледжвае дынамічнага выканання выпрабаванага праграмнага забеспячэння і можа выявіць магчымыя дэфекты на ранняй стадыі, перад запускам праграмы.

Статычны аналіз праводзіцца пасля кадавання і перад выкананнем модульных тэстаў.

Статычны аналіз можа быць зроблены машынай для аўтаматычнага 'праходжання' па зыходным кодзе і выяўлення невыкананых правілаў. Класічны прыклад - кампілятар, які знаходзіць лексічныя, сінтаксічныя і нават некаторыя сэнсавыя памылкі.


Статычны аналіз можа быць выкананы і чалавекам, які праглядае код, каб пераканацца, што для пабудовы праграмы выкарыстоўваюцца належныя стандарты і ўмовы кадавання. Часта гэта называецца аглядам кода, і гэта робіцца незалежным распрацоўшчыкам, акрамя распрацоўшчыка, які напісаў код.

Статычны аналіз таксама выкарыстоўваецца, каб прымусіць распрацоўшчыкаў не выкарыстоўваць рызыкоўныя альбо памылковыя часткі мовы праграмавання, усталёўваючы правілы, якія нельга выкарыстоўваць.


Калі распрацоўшчыкі праводзяць аналіз кода, яны звычайна шукаюць

  • Радкі кода
  • Частата каментарыяў
  • Правільнае гнездаванне
  • Колькасць выклікаў функцый
  • Цыкламатычная складанасць
  • Можаце таксама праверыць адзінкавыя тэсты

Атрыбуты якасці, якія могуць быць у цэнтры ўвагі статычнага аналізу:

  • Надзейнасць
  • Рамонтнасць
  • Правяральнасць
  • Паўторнае выкарыстанне
  • Партатыўнасць
  • Эфектыўнасць


Якія перавагі статычнага аналізу?

Галоўная перавага статычнага аналізу ў тым, што ён выяўляе праблемы з кодам да таго, як ён будзе гатовы да інтэграцыі і далейшага тэсціравання.

Перавагі статычнага аналізу кода:


  • Ён можа знайсці слабыя месцы ў кодзе ў дакладным месцы.
  • Яго могуць праводзіць навучаныя распрацоўшчыкі праграмнага забеспячэння, якія цалкам разумеюць код.
  • Іншыя альбо будучыя распрацоўшчыкі могуць лёгка зразумець зыходны код
  • Гэта дазваляе хутчэй разгарнуцца для выпраўлення
  • Слабыя бакі выяўляюцца раней у жыццёвым цыкле распрацоўкі, зніжаючы выдаткі на іх выпраўленне.
  • Менш дэфектаў у наступных выпрабаваннях
  • Выяўляюцца ўнікальныя дэфекты, якія немагчыма альбо наўрад ці можна выявіць пры дапамозе дынамічных тэстаў

    • Недаступны код

    • Пераменнае выкарыстанне (незаяўленае, нявыкарыстанае)

    • Не выкліканыя функцыі

    • Парушэнні памежнага значэння

Абмежаванні статычнага аналізу кода:

  • Гэта займае шмат часу, калі праводзіцца ўручную.
  • Аўтаматызаваныя інструменты ствараюць ілжывыя спрацоўванні і ілжывыя адмоўныя.
  • Для стараннага правядзення статычнага аналізу кода недастаткова падрыхтаванага персаналу.
  • Аўтаматызаваныя інструменты могуць даць ілжывае адчуванне бяспекі таго, што ўсё вырашаецца.
  • Аўтаматызаваныя інструменты настолькі ж добрыя, наколькі правілы яны выкарыстоўваюць для сканавання.
  • Ён не знаходзіць уразлівасцяў, укаранёных у асяроддзі выканання.


Што такое дынамічны аналіз?

У адрозненне ад статычнага аналізу, дзе код не выконваецца, дынамічны аналіз заснаваны на выкананне сістэмы , часта выкарыстоўваючы інструменты.

З Вікіпедыі вызначэнне дынамічнага аналізу праграмы :

Дынамічны аналіз праграм - гэта аналіз камп'ютэрнага праграмнага забеспячэння, які выконваецца з дапамогай выканання праграм, пабудаваных з гэтага праграмнага забеспячэння, на рэальным альбо віртуальным працэсары (аналіз, які выконваецца без выканання праграм, вядомы як статычны аналіз кода). Інструменты дынамічнага аналізу праграм могуць запатрабаваць загрузкі спецыяльных бібліятэк альбо нават перакампіляцыі праграмнага кода.


Самай распаўсюджанай практыкай дынамічнага аналізу з'яўляецца выкананне модульных тэстаў супраць кода, каб знайсці якія-небудзь памылкі ў кодзе.

Перавагі дынамічнага аналізу кода:

  • Ён вызначае ўразлівасці ў асяроддзі выканання.
  • Гэта дазваляе правесці аналіз прыкладанняў, у якіх вы не маеце доступу да сапраўднага кода.
  • Ён ідэнтыфікуе ўразлівасці, якія маглі быць ілжыва-адмоўнымі падчас статычнага аналізу кода.
  • Гэта дазваляе праверыць вынікі статычнага аналізу кода.
  • Гэта можа быць праведзена супраць любой заяўкі.

Абмежаванні дынамічнага аналізу кода:

  • Аўтаматызаваныя інструменты ствараюць ілжывае адчуванне бяспекі таго, што ўсё вырашаецца.
  • Не магу гарантаваць поўны ахоп зыходнага кода пры тэставанні
  • Аўтаматызаваныя інструменты ствараюць ілжывыя спрацоўванні і ілжывыя адмоўныя.
  • Аўтаматызаваныя інструменты настолькі ж добрыя, наколькі правілы яны выкарыстоўваюць для сканавання.
  • Складаней адсачыць уразлівасць да дакладнага месцазнаходжання ў кодзе, каб выправіць праблему.