КампутарыПраграмнае забеспячэнне

Тэставанне праграм - працэс выяўлення памылак у праграмным прадукце

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

Што называюць тэставаннем?

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

эфектыўнасць

Тое, наколькі добра і хутка знаходзяцца памылкі, істотным чынам ўплывае на кошт і працягласць распрацоўкі праграмнага забеспячэння неабходнага якасці. Так, нягледзячы на тое, што тэстары атрымліваюць заработную плату ў некалькі разоў меншую, чым праграмісты, кошт іх паслуг звычайна дасягае 30 - 40% ад кошту ўсяго праекта. Гэта адбываецца з-за колькасці асабовага складу, паколькі шукаць памылку - гэта незвычайны і даволі цяжкі працэс. Але нават калі праграмнае забеспячэнне прайшло самавітае колькасць тэстаў, то няма 100% гарантыі, што памылак не будзе. Проста невядома, калі яны выявяцца. Каб стымуляваць тэстараў выбіраць тыпы праверкі, якія з большай верагоднасцю знойдуць памылку, прымяняюцца розныя сродкі матывацыі: як маральныя, так і матэрыяльныя.

Падыход да працы

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

Што такое тэст?

Гэта немалаважны аспект дзейнасці правяраючага, які неабходны для паспяховага выяўлення недахопаў праграмнага кода. Яны неабходны для таго, каб кантраляваць правільнасць прыкладання. Што ўваходзіць у тэст? Ён складаецца іх пачатковых дадзеных і значэнняў, якія павінны атрымацца як выніковыя (або прамежкавыя). Для таго каб больш паспяхова выяўляць праблемы і неадпаведнасці, тэсты неабходна складаць пасля таго, як быў распрацаваны алгарытм, але не пачалося праграмаванне. Прычым пажадана выкарыстоўваць некалькі падыходаў пры разліку неабходных дадзеных. У такім выпадку расце верагоднасць выяўлення памылкі дзякуючы таму, што можна даследаваць код з іншага пункту гледжання. Комплексна тэсты павінны забяспечваць праверку знешніх эфектаў гатовага праграмнага вырабы, а таксама яго алгарытмаў працы. Асаблівую цікавасць прадастаўляюць гранічныя і звод выпадкі. Так, у практыцы дзейнасці з памылкамі часта можна выявіць, што цыкл працуе на адзін раз менш або больш, чым было запланавана. Таксама важным з'яўляецца тэставанне кампутара, дзякуючы якому можна праверыць адпаведнасць жаданага выніку на розных машынах. Гэта неабходна для таго, каб пераканацца, што праграмнае забеспячэнне зможа працаваць на ўсіх ЭВМ. Акрамя таго, тэставанне кампутара, на якім будзе выконвацца распрацоўка, з'яўляецца важным пры стварэнні мультиплатформенных распрацовак.

Мастацтва пошуку памылак

Праграмы часта нацэлены на працу з велізарным масівам дадзеных. Няўжо яго неабходна ствараць цалкам? Няма. Шырокае распаўсюджанне набыла практыка «мініяцюрызацыі» праграмы. У дадзеным выпадку адбываецца разумнае скарачэнне аб'ёму дадзеных у параўнанні з тым, што павінна выкарыстоўвацца. Давайце разгледзім такі прыклад: ёсць праграма, у якой ствараецца матрыца памерам 50x50. Іншымі словамі - неабходна ўручную ўвесці 2500 тысячы значэнняў. Гэта, вядома, магчыма, але зойме вельмі шмат часу. Але каб праверыць працаздольнасць, праграмны прадукт атрымлівае матрыцу, памернасць якой складае 5x5. Для гэтага трэба будзе ўвесці ўжо 25 значэнняў. Калі ў дадзеным выпадку назіраецца нармальная, беспамылковая праца, то гэта значыць, што ўсё ў парадку. Хоць і тут існуюць падводныя камяні, якія складаюцца ў тым, што пры мініяцюрызацыі адбываецца сітуацыя, у выніку якой змены становяцца няяўныя і часова знікаюць. Таксама вельмі рэдка, але ўсё ж здараецца і такое, што з'яўляюцца новыя памылкі.

пераследваюцца мэты

Тэставанне ПА не з'яўляецца лёгкім справай з-за таго, што гэты працэс не паддаецца фармалізацыі ў поўным аб'ёме. Вялікія праграмы амаль ніколі не маюць неабходны дакладным эталонам. Таму ў якасці арыентыру выкарыстоўваюць шэраг ускосных дадзеных, якія, праўда, не могуць цалкам адлюстроўваць характарыстыкі і функцыі праграмных распрацовак, што адладжваць. Прычым яны павінны быць падабраныя такім чынам, каб правільны вынік вылічаўся яшчэ да таго, як праграмны прадукт будзе тэсціравалі. Калі гэтага не зрабіць загадзя, то ўзнікае спакуса лічыць усё прыблізна, і калі машынны вынік патрапіць у меркаваны дыяпазон, то будзе прынята памылковае рашэнне, што ўсё правільна.

Праверка ў розных умовах

Як правіла, тэставанне праграм адбываецца ў аб'ёмах, якія неабходныя для мінімальнай праверкі функцыянальнасці ў абмежаваных межах. Дзейнасць вядзецца са змяненнем параметраў, а таксама ўмоў іх працы. Працэс тэставання можна падзяліць на тры этапы:

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

Тэставанне ПА: віды

Ствараць праграмнае забеспячэнне без памылак вельмі цяжка. Гэта патрабуе значнага колькасці часу. Каб атрымаць добры прадукт часта ўжываюцца два выгляду тэставання: «Альфа» і «Бэта». Што яны сабой уяўляюць? Калі кажуць пра альфа-тэставанні, то пад ім маюць на ўвазе праверку, якую праводзіць сам штат распрацоўнікаў у «лабараторных» умовах. Гэта апошні этап праверкі перад тым, як праграма будзе перададзена канчатковым карыстачам. Таму распрацоўнікі імкнуцца разгарнуцца па максімуму. Для лёгкасці працы дадзеныя могуць пратакаліраваць, каб ствараць храналогію праблем і іх ліквідацыі. Пад бэта-тэставаннем разумеюць пастаўку праграмнага забеспячэння абмежаванаму колу карыстальнікаў, каб яны змаглі поэксплуатировать праграму і выявіць прапушчаныя памылкі. Асаблівасцю ў дадзеным выпадку з'яўляецца тое, што часта ПА выкарыстоўваецца не па сваім мэтавым прызначэнні. Дзякуючы гэтаму няспраўнасці будуць выяўляцца там, дзе раней нічога не было заўважана. Гэта цалкам нармальна і перажываць з гэтай нагоды не трэба.

завяршэнне тэставання

Калі папярэднія этапы былі паспяхова завершаны, то застаецца правесці прыёмачны тэст. Ён у дадзеным выпадку станавіцца просты фармальнасцю. Падчас гэтай праверкі адбываецца пацверджанне, што ніякіх дадатковых праблем не знойдзена і праграмнае забеспячэнне можна выпускаць на рынак. Чым вялікую важнасць будзе мець канчатковы вынік, тым ўважлівей павінна праводзіцца праверка. Неабходна сачыць за тым, каб усе этапы былі пройдзены паспяхова. Вось так выглядае працэс тэставання ў цэлым. А цяпер давайце паглыбімся ў тэхнічныя дэталі і пагаворым аб такіх карысных інструментах, як тэставыя праграмы. Што яны сабой уяўляюць і ў якіх выпадках выкарыстоўваюцца?

аўтаматызаванае тэставанне

Раней лічылася, што дынамічны аналіз распрацаванага ПА - гэта занадта цяжкі падыход, які неэфектыўна выкарыстаць для выяўлення дэфектаў. Але з-за павелічэння складанасці і аб'ёму праграм з'явіўся супрацьлеглы погляд. Аўтаматычнае тэставанне ўжываецца там, дзе самымі важнымі прыярытэтамі з'яўляецца працаздольнасць і бяспека. І яны павінны быць пры любых ўваходных дадзеных. У якасці прыкладу праграм, для якіх мэтазгодным з'яўляецца такое тэставанне, можна прывесці наступныя: сеткавыя пратаколы, вэб-сервер, sandboxing. Мы далей разгледзім некалькі узораў, якія можна выкарыстоўваць для такой дзейнасці. Калі цікавяць бясплатныя праграмы тэставання, то сярод іх якасныя знайсці даволі складана. Але існуюць ўзламаныя «пірацкія» версіі добра зарэкамендавалі сябе праектаў, таму можна звярнуцца да іх паслуг.

Avalanche

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

KLEE

Гэта добрая праграма для тэставання памяці. Яна можа перахопліваць прыкладна 50 сістэмных выклікаў і вялікая колькасць віртуальных працэсаў, такім чынам, выконваецца паралельна і асобна. Але ў цэлым праграма не шукае асобныя падазроныя месцы, а апрацоўвае максімальна магчымая колькасць кода і праводзіць аналіз выкарыстоўваюцца шляхоў перадачы дадзеных. З-за гэтага час тэставання праграмы залежыць ад памеру аб'екта. Пры праверцы стаўка зроблена на сімвалічныя працэсы. Яны з'яўляюцца адным з магчымых шляхоў выканання задач у праграме, якая правяраецца. Дзякуючы паралельнай працы можна аналізаваць вялікую колькасць варыянтаў працы доследнага прыкладання. Для кожнага шляху пасля заканчэння яго тэставання захоўваюцца наборы ўваходных дадзеных, з якіх пачыналася праверка. Варта адзначыць, што тэставанне праграм з дапамогай KLEE дапамагае выяўляць вялікую колькасць адхіленняў, якіх не павінна быць. Яна можа знайсці праблемы нават у прыкладаннях, якія распрацоўваюцца дзесяцігоддзямі.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 be.delachieve.com. Theme powered by WordPress.