Испитивање квалитета

Врсте тестирања софтвера

Врсте тестирања софтвера
Стратегија тестирања сваког софтверског производа је различита. Морамо да размотримо пословне циљеве и / или сврху софтвера пре него што развијемо стратегију тестирања софтвера. На пример, софтвер који лети у авиону, а који контролише безбедност мотора и лета, има другачији пословни контекст од вирусне платформе за размену видео снимака на Интернету за децу. За авионски софтвер је веома важно да се апсолутно све дефинише и верификује. Брзи развој и промена нових карактеристика није приоритет. За вирусну видео платформу, предузећу су потребне иновације, брзина и брзо побољшање, што је много важније од загарантоване валидације система. Сваки контекст је различит и постоји много различитих пракси за тестирање софтвера. Изградња стратегије испитивања састојаће се од мешавине одговарајућих врста испитивања са списка могућих врста испитивања, који су категорисани у наставку. У овом чланку ћемо навести различите врсте тестирања софтвера.

Јединствено тестирање

Јединствено тестирање је тестирање извршено на појединачној функцији, класи или модулу независно од тестирања потпуно функционалног софтвера. Користећи оквир за јединствено тестирање, програмер може да креира тест случајеве са улазом и очекиваним излазом. Када имате стотине, хиљаде или десетине хиљада јединица примера за велики софтверски пројекат, осигурава да све појединачне јединице раде како се очекује док настављате да мењате код. Приликом промене јединице која има тест случајеве, тест случајеве за тај модул треба проучити и утврдити да ли су потребни нови тест случајеви, да ли се променио излаз или се тренутни тест случајеви могу уклонити као више неважни. Стварање великог обима јединичних тестова је најлакши начин да се постигне велика покривеност тест примером за базу софтверског кода, али неће осигурати да коначни производ ради као систем како се очекује.

Функционално испитивање

Функционално тестирање је најчешћи облик тестирања. Када се људи позивају на тестирање софтвера без много детаља, често мисле на функционално тестирање. Функционално тестирање ће проверити примарне функције софтверског рада како се очекује. Могао би се написати план испитивања који би описао све функционалне тестове који ће се тестирати, што одговара главним карактеристикама и могућностима софтвера. Примарно тестирање функционалности биће „срећан пут ” тестирање, које не покушава да разбије софтвер или га користи у било којим изазовним сценаријима. Ово би требало да буде апсолутни минимум за тестирање било ког софтверског пројекта.

Испитивање интеграције

Након јединственог тестирања и функционалног испитивања, може постојати неколико модула или читав систем који још увек није тестиран у целини. Или можда постоје компоненте које су углавном независне, али се повремено користе заједно. Било када временске компоненте или модули се тестирају независно, али не као целовит систем, тада би требало извршити интеграционо тестирање како би се компоненте компонената заједно провериле као радни систем према захтевима и очекивањима корисника.

Тестирање напрезања

Размислите о тестирању отпорности на стрес као да тестирате свемирски шатл или авион. Шта значи ставити свој софтвер или систем под „СТРЕС“? Стрес није ништа друго до интензивно оптерећење одређене врсте које ће највероватније покварити ваш систем. Ово би могло бити слично „тестирању учитавања“ у смислу стављања вашег система у високу истовременост са многим корисницима који приступају систему. Али наглашавање система може се догодити и на другим векторима. На пример, покретање фирмвера на хардверској компоненти када је хардвер физички оштећен и ради у деградираном режиму. Стрес је јединствен за све врсте софтвера, а системи и дизајнирање тестова отпорности на стрес треба да буду узети у обзир који су природни или неприродни узроци највероватније стрес вашег софтвера или система.

Испитивање оптерећења

Испитивање оптерећења је специфична врста стресног испитивања, као што је горе речено, при чему се велики број истовремених корисничких веза и приступа аутоматизује да би се генерисала симулација ефекта великог броја аутентичних корисника који истовремено приступају вашем софтверском систему. Циљ је открити колико корисника може истовремено приступити вашем систему, а да вам се софтверски систем не поквари. Ако ваш систем може лако да поднесе нормалан промет од 10.000 корисника, шта ће се догодити ако ваша веб локација или софтвер постане виралан и прикупи милион корисника? Хоће ли ово бити неочекивано „ЛОАД“ разбити вашу веб страницу или систем? Тестирање оптерећења ће то симулирати, тако да вам је угодно будуће повећање броја корисника јер знате да ваш систем може да поднесе повећано оптерећење.

Тестирање перформанси

Људи могу постати потпуно фрустрирани и очајавати када софтвер не испуњава њихове захтеве у погледу перформанси. Учинак, генерално, значи колико брзо се важне функције могу извршити. Што су функције сложеније и динамичније у систему, то важније и не очигледније постаје тестирање његових перформанси, узмимо основни пример, Виндовс или Линук оперативни систем. Оперативни систем је изузетно сложен софтверски производ, а тестирање перформанси на његовом систему могло би укључивати брзину и време функционисања као што је покретање, инсталирање апликације, тражење датотеке, покретање прорачуна на ГПУ-у и / или било који други милиони акција које се могу извршити. При одабиру случајева испитивања перформанси треба водити рачуна како би се осигурало да су тестиране карактеристике перформанси важне и које могу довести до квара.

Испитивање скалабилности

Тестирање на преносном рачунару је добро, али не баш довољно добро када градите друштвену мрежу, систем е-поште или суперрачунарски софтвер. Када је предвиђено да ваш софтвер буде распоређен на 1000 сервера, који сви функционишу јединствено, тада локално тестирање на једном систему неће открити грешке које се јављају када је софтвер постављен „У размерама“ на стотинама хиљада примера. У стварности, ваше тестирање вероватно никада неће моћи да се изврши у пуној мери пре пуштања у производњу, јер би било прескупо и непрактично направити тест систем са 1000 сервера који коштају милионе долара. Због тога се испитивање скалабилности врши на више сервера, али обично не на пуном броју производних сервера да би се покушало открити неке недостатке који би могли бити пронађени док се ваши системи користе на већој инфраструктури.

Испитивање статичке анализе

Статичка анализа је тестирање које се врши прегледом софтверског кода, а да се заправо не покрене. Да бисте радили статичку анализу, углавном бисте користили алат, има их много, један познати алат је Цоверити. Статичку анализу је лако покренути пре објављивања софтвера и може пронаћи многе проблеме са квалитетом у коду који се могу решити пре издавања. Могу се наћи грешке у меморији, грешке у руковању типом података, преусмеравање нултог показивача, неиницијализоване променљиве и још много недостатака. Језици попут Ц и Ц ++ имају велику корист од статичке анализе јер језици пружају велику слободу програмерима у замену за велику снагу, али то такође може створити велике грешке и грешке које се могу пронаћи коришћењем тестирања статичке анализе.

Испитивање убризгавања квара

Неке услове грешке је врло тешко симулирати или покренути, стога софтвер може бити дизајниран за вештачко убризгавање проблема или квара у систем без природног квара. Сврха испитивања убризгавања квара је да се види како софтвер обрађује ове неочекиване грешке. Да ли грациозно реагује на ситуацију, пада ли или даје неочекиване и непредвидиве проблематичне резултате? На пример, рецимо да имамо банкарски систем и да постоји модул за интерни пренос средстава са РАЧУНА А на РАЧУН Б. Међутим, ова операција преноса позива се тек након што је систем већ потврдио да су ти рачуни постојали пре позивања операције преноса. Иако претпостављамо да оба рачуна постоје, операција преноса има случај неуспеха када један циљни или изворни рачун не постоји и да може довести до грешке. Будући да у нормалним околностима никада не добијемо ову грешку због претходног тестирања улаза, па да бисмо верификовали понашање система када пренос не успије због непостојећег рачуна, у систем убацујемо лажну грешку која враћа непостојећи рачун за пренос и тестирајте како остатак система реагује у том случају. Веома је важно да је код убризгавања квара доступан само у сценаријима тестирања и не пушта се у производњу, где би могао створити хаос.

Тестирање прекорачења меморије

Када користи језике попут Ц или Ц ++, програмер има велику одговорност да се директно обрати меморији, што може довести до фаталних грешака у софтверу ако се направе грешке. На пример, ако је показивач неваљан и ако се на њега не поставља референца, софтвер ће се срушити. Ако се меморија додели објекту, а затим се низ копира преко меморијског простора објекта, референцирање објекта може проузроковати пад или чак неодређено погрешно понашање. Стога је од кључне важности употреба алата за покушај хватања грешака у приступу меморији у софтверу који користи језике попут Ц или Ц ++, који могу имати ове потенцијалне проблеме. Алати који могу да изврше ову врсту тестирања укључују отворени извор Валгринд или власничке алате попут ПурифиПлус. Ови алати могу спасити дан када није јасно зашто се софтвер руши или се лоше понаша и директно указују на локацију у коду која има грешку. Супер, тачно?

Испитивање граничних случајева

Лако је направити грешке у кодирању када сте на ономе што се назива границом. На пример, банкарска аутоматизована благајна каже да можете подићи највише 300 долара. Дакле, замислите да је кодер приликом израде овог захтева написао следећи код:

Ако (амт < 300)
стартВитхдравл ()

елсе
грешка („Можете повући% с“, амт);

Можете ли уочити грешку? Корисник који покуша да подигне 300 УСД добиће грешку јер није мања од 300 УСД. Ово је грешка. Стога се гранично испитивање врши природно. Границе захтева тада осигуравају да софтвер са обе стране границе и границе функционише исправно.

Фузз тестирање

Генерирање улаза у софтвер велике брзине може произвести што више могућих комбинација уноса, чак и ако су те комбинације уноса потпуна глупост и стварни корисник их никада не би испоручио. Ова врста фузз тестирања може пронаћи грешке и сигурносне рањивости које нису пронађене на други начин због великог обима улазних података и сценарија који се брзо тестирају без ручног генерисања тест случајева.

Истраживачко испитивање

Затворите очи и замислите шта значи реч „Истражити“. Ви посматрате и испитујете систем како бисте сазнали како он заиста функционише. Замислите да нову столну столицу примите поштом и она има 28 делова у одвојеним пластичним кесама без упутстава. Морате истражити свој нови долазак да бисте схватили како функционише и како је састављен. Са овим духом можете постати истраживачки испитивач. Нећете имати добро дефинисан план испитивања случајева. Истражит ћете и истражити свој софтвер тражећи ствари због којих изговарате дивну ријеч: „ЗАНИМЉИВО!”. Након учења, даље истражујете и проналазите начине да разбијете софтвер на који дизајнери нису ни помислили, а затим доставите извештај који детаљно описује бројне лоше претпоставке, грешке и ризике у софтверу. Сазнајте више о овоме у књизи под називом Екплоре Ит.

Пенетрација тестирање

У свету софтверске сигурности тестирање пенетрације је једно од примарних средстава тестирања. Сви системи, било биолошки, физички или софтверски, имају границе и границе. Ове границе треба да омогуће улазак само одређених порука, људи или компоненти у систем. Конкретније, размотримо систем банкарства на мрежи који користи аутентификацију корисника за улазак на локацију. Ако се локација може хакирати и ући у позадину без одговарајуће потврде идентитета, то би био продор, који треба заштитити од. Циљ тестирања пенетрације је употреба познатих и експерименталних техника за заобилажење нормалне безбедносне границе софтверског система или веб странице. Тестирање пенетрације често укључује проверу свих портова који слушају и покушај уласка у систем путем отвореног порта. Остале уобичајене технике укључују убризгавање СКЛ-а или пуцање лозинке.

Регресија тестирање

Након што имате радни софтвер који је постављен на терену, пресудно је спречити увођење грешака у функционалност која је већ радила. Сврха развоја софтвера је повећати способност вашег производа, увести грешке или узроковати престанак рада старе функционалности, која се назива РЕГРЕСИЈА. Регресија је грешка или квар који је уведен када је претходно функција радила како се очекивало. Ништа не може покварити репутацију вашег софтвера или бренда брже од увођења грешака у регресију у ваш софтвер и ако стварни корисници пронађу ове грешке након издања.

Случајеви регресивног тестирања и планови испитивања треба да се граде око основне функције која треба да настави да ради како би корисници имали добро искуство са вашом апликацијом. Све основне функције вашег софтвера за које корисници очекују да раде на одређени начин требале би да имају регресијски тест случај који се може извршити како би се спречило прекидање функционалности новог издања. Ово може бити од 50 до 50 000 тест случајева који покривају основну функционалност вашег софтвера или апликације.

Испитивање пресјека изворног кода

Грешка је уведена у софтвер, али није очигледно која је верзија издања увела нову грешку. Замислите да је било 50 софтверских извршавања од задњег познатог времена када је софтвер радио без грешке, до сада када ..

Испитивање локализације

Замислите временску апликацију која приказује тренутно и пројектовано време на вашој локацији, као и опис временских услова. Први део тестирања локализације је осигурати да се тачни језик, абецеда и знакови правилно прикажу, у зависности од геолокације корисника. Апликација у Уједињеном Краљевству треба да буде приказана на енглеском језику са латиничним словима; иста апликација у Кини требала би бити приказана кинеским словима на кинеском језику. Ако се изврше детаљнија испитивања локализације, шири спектар људи са различитих локација ће се повезати са апликацијом.

Испитивање приступачности

Неки од грађана у нашој заједници имају инвалидитет и зато могу имати проблема са коришћењем софтвера који се креира, па се тестирање приступачности врши како би се осигурало да популације са инвалидитетом и даље могу приступити функционалности система. На пример, ако претпоставимо да је 1% популације слепо за боје, а наш софтверски интерфејс претпоставља да корисници могу да разликују црвену од зелене, али они слепи за боје НЕ МОГУ разликовати. Стога ће добро софтверски интерфејс имати додатне знакове изван боје како би указао на значење. Остали сценарији, осим испитивања слепоће у боји, такође би били укључени у тестирање приступачности софтвера, као што су потпуно визуелно слепило, глувоћа и многи други сценарији. Добар софтверски производ треба да буде доступан максималном проценту потенцијалних корисника.

Испитивање надоградње

Једноставне апликације на телефону, оперативни системи попут Убунту, Виндовс или Линук Минт и софтвер који покреће нуклеарне подморнице захтевају честу надоградњу. Сам процес надоградње могао би да унесе грешке и недостатке који не би постојали при новој инсталацији, јер је стање околине било другачије, а процес увођења новог софтвера поврх старог могао је да унесе грешке. Узмимо једноставан пример, имамо лаптоп који ради на Убунту 18.04, а ми желимо да надоградимо на Убунту 20.04. Ово је другачији поступак инсталирања оперативног система од директног чишћења чврстог диска и инсталирања Убунту-а 20.04. Стога, након што је софтвер инсталиран или било која од његових изведених функција, можда неће радити 100% како се очекивало или исто као када је софтвер био ново инсталиран. Дакле, прво бисмо требали размотрити тестирање саме надоградње у многим различитим случајевима и сценаријима како бисмо осигурали да надоградња функционише до краја. Затим морамо размотрити и тестирање стварног система након надоградње како бисмо осигурали да је софтвер постављен и да функционише како се очекивало. Не бисмо поновили све тестове свеже инсталираног система, што би било губљење времена, али добро ћемо размислити са својим знањем о томе шта МОЖЕМ да разбијемо током надоградње и стратешки додамо тестове за те функције.

Тестирање црне кутије и беле кутије

Црна кутија и бела кутија су мање специфичне методологије испитивања и више врста категоризације испитивања. У основи, тестирање црне кутије, које претпоставља да тестер не зна ништа о унутрашњем раду софтвера и прави план испитивања и случајеве који систем само гледају споља како би верификовали његову функцију. Тестирање беле кутије раде софтверске архитекте које разумеју унутрашњи рад софтверског система и дизајнирају случајеве са знањем шта би могло, шта би требало, а шта би вероватно могло да се сломи. Тестирање црне и беле кутије вероватно ће открити различите врсте недостатака.

Блогови и чланци о тестирању софтвера

Тестирање софтвера је динамично поље, и мноштво занимљивих публикација и чланака који ажурирају заједницу о савременом размишљању о тестирању софтвера. Сви можемо имати користи од овог знања. Ево примера занимљивих чланака из различитих извора на блогу које бисте можда желели да пратите:

Производи за тестирање софтвера

Већина драгоцених задатака тестирања може се аутоматизовати, па не би требало да чуди да је употреба алата и производа за извршавање безбројних задатака осигурања квалитета софтвера добра идеја. У наставку ћемо навести неке важне и изузетно вредне софтверске алате за тестирање софтвера које можете истражити и видети да ли вам могу помоћи.

ЈУнит

За тестирање софтвера заснованог на Јави, ЈУнит нуди свеобухватан пакет за јединствено и функционално тестирање кода који је прилагођен Јава окружењу.

Селен

За тестирање веб апликација, Селениум пружа могућност аутоматизације интеракција са веб прегледачима, укључујући испитивање компатибилности са више прегледача. Ово је водећа инфраструктура за тестирање за аутоматизацију веб тестирања.

Краставац

Оквир тестирања вођен понашањем омогућава пословним корисницима, менаџерима производа и програмерима да објасне очекивану функционалност на природном језику, а затим дефинишу то понашање у тест случајевима. Ово чини читљивији тест случајеви и јасно мапирање очекиване корисничке функционалности.

Прочистити

Пронађите цурење меморије и оштећења меморије током извођења извршавањем софтвера помоћу уграђеног инструмента Пурифи Плус који прати употребу ваше меморије и указује на грешке у коду које није лако пронаћи без инструментације.

Валгринд

Алати отвореног кода који ће извршити ваш софтвер и омогућити вам интеракцију с њим, истовремено указујући на извештај о грешци код грешака у кодирању, попут цурења меморије и оштећења. Нема потребе за поновним компајлирањем или додавањем инструмената у процес компајлирања, јер Валгринд има интелигенцију да динамички разуме ваш машински код и неприметно убризга инструментацију како би пронашао грешке у кодирању и помогао вам да побољшате свој код.

Покривеност

Алат за статичку анализу који ће пронаћи грешке у кодирању у вашем софтверу пре него што уопште преведете и покренете свој код. Покривање може пронаћи сигурносне рањивости, кршења конвенција кодирања, као и грешке и недостатке које ваш компајлер неће пронаћи. Може се наћи мртви код, неиницијализоване променљиве и хиљаде других врста недостатака. Витално је очистити код статичком анализом пре пуштања у производњу.

ЈМетер

Оквир отвореног кода за тестирање перформанси оријентисан ка програмерима заснованим на Јави, отуда и Ј у називу. Тестирање веб страница је један од главних случајева употребе ЈМетер-а, поред тестирања перформанси база података, система поште и многих других апликација заснованих на серверу.

Метасплоит

За тестирање сигурности и пенетрације, Метасплоит је генерички оквир са хиљадама карактеристика и могућности. Користите интерактивну конзолу за приступ унапред кодираним експлоатацијама и покушајте да верификујете сигурност своје апликације.

Академска истраживања о тестирању софтвера

Закључак

Улога софтвера у друштву наставља да расте, а истовремено светски софтвер постаје сложенији. Да би свет функционисао, морамо имати методе и стратегије за тестирање и потврђивање софтвера који креирамо извршавањем функција којима је намењен. За сваки сложени софтверски систем треба да постоје стратегија тестирања и план тестирања како би се наставило валидирати функционалност софтвера како се наставља побољшавати и пружати његову функцију.

Како приказати ОСД прекривач у целом екрану Линук апликација и игара
Играње игара преко целог екрана или коришћење апликација у режиму целог екрана без ометања може вам одсећи релевантне системске информације видљиве на...
Топ 5 карата за хватање игара
Сви смо видели и волели стримовање играња на ИоуТубе-у. ПевДиеПие, Јакесептицие и Маркиплиер само су неки од најбољих играча који су зарадили милионе ...
Како развити игру на Линуку
Пре деценију, није много корисника Линука предвидело да ће њихов омиљени оперативни систем једног дана бити популарна платформа за играње комерцијални...