strnjen pregled prvotno logicno testiranje motivirano s strojno opremo koncno stanje modela stroja je bil odlicen model za testiranje menu vodene aplikacije slovar zunanji najprej potrebni izrazi aplikacija vedenje korist prednost okvara znak zaprta datoteka pregled podatek sestava oblikovanje strojna oprema datoteka funkcijska tipka celo stevilo naloziti logika doslednost lsi menu menu vrstica okence dolocitev mesta spomin sporocilo metoda miskapritisk na misko ms dos objektna usmerjenost programska oprema odprta datoteka operacijski sistem serijska vztopna iztopna odprtina mehanicen simbolicno najti in odstraniti napako windows okna notranji najprej potrebni izrazi testiranje vedenja nakljucna natancnost pravilnost podrocje podrocno testiranje grafikon vlozek povezava zavarovanje povezave seznam povezave obremenitev povezave vzorec model vozel zavarovanje vozla obremenitev vozla neveljaven izlozek pot stanje mocna povezava sintakticno testiranje vrednost sistema stanje stanja so odvisna od vozlov vhodni dogodek je izrazit ponavljajoc dogodek ali doloceno zaporedje dogodkov vlozki koncnega stanja modelov rajsi zadevajo nadzor kot podatke vlozki rajsi spremenijo vedenje sistema kot pa samo izdelajo razlicne izlozke vhodno sifriranje vsakemu dogodku damo lahko ime ali stevilko to pomeni da je vsak dogodek lahko shranjen v cela stevila ali v niz znakov vedenje koncnega stanja masine se ne spremeni s spreminjanjem vhodnega sifriranja vhodni znaki je niz jasnih imen ali vrednosti vhodnega sifriranja stevilo vhodnih zankov sifriranje vnosa dolocimo s celimi stevili od do n kar je zelo jasen vhodni dogodek predvidevamo da ni vrzeli med temi stevilkami v vecini modelov je stevilo vhodnih simbolov majhna ponavadi pod vecja stevila se lahko vodijo vendar pa obicajno ne brez orodij stanje kode stanja so lahko ostevilcena stanja imajo pogonski operacijski pomen vedenje koncnega stanja strija se ne spreminja s spreminjanjem stanja sifriranja obicajno stanja v vsakem trenutku je sistem v enem stanju obicajnem prvotno stanje ponavadi je to stanje sistema ki je vaznejse od izlozka stevec stanja dejansko namrscen spomin ki drzi stanja kod obicajnega stanja in je ponavadi neznacen medtem ko je programski stevec racunalnika dolocen stevec stanja stevilo stanj stevec stanja ima max vrednost ce ni vrzeli med kodami stanj potem je max vrednost stevila stanj v modelu kot z vhodnimi simboli je stevilo stanj v modelu ponavadi majhno pod vecji modeli lahko delajo s primernimi orodji koncno stanje stroja koncno stanje stroja je sestavljeno iz stanj prehodov vhodov izhodov prehodi sistem odgovarja vhodnemu dogodku kot rezultat se lahko spremeni stanje to imenujemo prehod stanja ali prehod sistem prenasa sporocilo drugemu sistemu enoten prehod ne ozancuje sprememb stanja to je povezava iz stanja nazaj v to stanje izhod je lahko zdruzen s prehodom izhodno sifriranje izhod je lahko zdruzen s prehodom izhodna akcija je vpeljana kot rezultat izmenjave stanja izhodne akcije so lahko razvrscena v cela stevila izhodni dogodek sistem lahko naredi izlozek kot rezultat spremembe stanja to je enako iuzhodnemu celemu stevilu kot npr izhodna koda izhodni dogodki so lahko oznaceni s preobremenjenostjo povezav sledec znak slash nepomemben izlozek domnevno nepomemben dogodek da nic ne delamo dosegljivo stanje a stanje b je dosegljivo iz stanja a ce je tukaj zaporedje vlozkov tako da ko zacnemo iz stanja a bo model koncal v stanju b to pomeni da ima grafikon stanja pot iz a v b stanje nedosegljivo stanje stanje je nedosegljivo iz drugih stanj se posebej iz prvotnega stanja ce niso dosegljivi nedosegljiva stanja pomenijo ponavadi okvaro mocno povezan vecino stanj je med seboj mocno povezanih ce ni okvar zopet namestiti resetirati poseben vlozek ki sili prenos v prvotno stanje iz kateregakoli stanja niz prvotnega stanja je niz stanj s sledecimi lastnostmi vsebuje protna stanja niz prvotnega stanja je lahko ali pa ne mocno povezan ko je enkrat narejen prenos iz niza v stanje ki ni v tem nizu se je nemogoce vrniti v niz prvotnega stanja dobri programi imajo priskrbljeno pot za vritev v prvotno stanje kombinacija v windowsih control alt delete delovno stanje kjer je narejenih vecina testiranj delovni niz prvotnega stanja stanje vdelovnem nizu se lahko imenuje prvotno stanje to ni pravo prvotno stanje modela toda operativno pogonsko se tako obnasa niz izhodnega stanja tipicen primer je izhodno zaporedje za program popolnoma specificiran koncno stanje stroja je popolnoma specificirano ce in samo ce vsaka kombinacija vhodne kode ali kode stanja tu je specificiran prehod in in specificiran izhod menu vodena programska oprama programska oprema ali nacin delovanja programske opreme v katerem je osnovni namen ucinkovito izbiranje moznosti iz menijev prvotno stanje obhodov je zaporedje prehodov iz stanja a v stanje b in nazaj v stanje a povezave in model splosna nacela vozli vozli oznacujejo stanja aktiven meni nakaze da smo v tem stanju povezave povezave oznacujejo prehode obremenjenost povezav vnos kode imamo bogato vhodno kodirno zgradbo v windows operacijskem sistemu tukaj je nekaj nacinov kako zazenemo menije da povzrocimo stanje spremembe izbiranje z misko druge tockovne naprave alt tipka funkcijske tipke smerne tipke cursor keys vsaka od the metod ima razlicno vhodno kodiranje pretvorba za kar sem naredil vhodno kodo je pogosto narejena z operacijskim sistemom ce je to vas primer potem lahko jo ignoriramo razen ce ne testiramo operacijskega sistema ce aplikacija kakorkoli naredi sifriranje potem je to potrebno testirati ce ima aplikacija neka razlicnih vhodnih enot in ce jih programska oprema direktno upravlja naj bi se za vsako napravo prettehtalo ali naj bi imelo loceno vhodno kodiranje ki mora biti potrjeno imamo prvotno stanje prvotno stanje v katerem noben menu na menu baru ni izbran je vec nacinov kako se vrniti nazaj v prvotno stanje iz vecine manijev kot tipka alt ali esc v vecini stanj so samostojni prenosi skoraj vsaka navadna tipka lahko naredi samostojen prenos v prvotnem stanju ko si v enem od odprtih menijev so nekatere obicajne tipke aktivne obremenitve povezave ogledali si bomo model vesoljske ladje enterprise ima tri nastavitve voznje voznja nevtralno mirovanje in nazaj ladja ima tri mozna stanja premikanje naprej ustaviti se in premikanje nazaj kombinacij nastavitve voznje in stanj ladje je model in grafikon sta mocno povrzana ker iz stanje povezano zdrugim stanjem najamanj z eno potjo izbrana sta dva faktorja pozicija kontrole in premikanje ladje ker so pri vsakem faktorju izbrane tri moznosti nam da to kombinacij povezave so med vlozki in stanji la`je je na splo no dokazati teoreti~no o to~kasto obte`enih modelih kot o vezno obte`enih modelih in od tod njihovo prevladovanje v raziskovalnih papirjih toda ko je treba graditi prakti~no orodje v katerih so grafi prestavljeni kot povezani listi ali v uporabljenih to~kasto spremenljivih algoritmih glej beiz je vezno obte`eni model jasno prednosten prehodne tabele modeli v grafi~ni obliki so u~e~i bolje kot delujo~i orodja lahko se uporabi predstavitev povezava papir kot z katerikolim ostalim grafom in zares pogosto vidimo modele kon~na stanja predstavljene na ta na~in v oblikovnih dokumentih druga mo`nost je uporaba tabelaste reprezentacije imamo lahko n x n tabel kjer je n tevilo stanj in v vsakem vhodu vstavimo vhodno izhodno kombinacijo primerno temu vhodu lahko bi toda ne bomo zaradi tabele za tipi~ni software ker bi bila ve~inoma prazna namesto tega uporabimo tabelo stanje prenos ki se tudi kli~ejo stanjske tabele na kratko tabela stanje ima eno vrstico za vsako stanje in en stolpec za vsak vhod pravzaprav so dve tabele obe z isto zasnovo tabela stanje in izhodno tabelo vhod v tabelo stanje prenos je naslednje stanje vhod v izhodno tabelo je primerna izhodna koda ~e je katera za ta prenos v~asih je ustrezno zdru`iti dve tabele s tem da damo naslednje stanje in izhodne podatke v celico kot v naslednje stanje izhodno kodo tukaj je tabela stanje za enterprise vodilo stran ozna~il sem nemogo~e celice kombinacije stanje vhod z ifriranjem so nemogo~a to je v pravilno izvedenemu sistemu v tem primeru so nekateri prenosi nemogo~i ker to je na~in fizi~nega dela ostali vhodi kot r d in d r so nemogo~i zaradi na~ina delovanja strojne opreme kontrolni vodnik toda poglej probleme in na koncu tega poglavja nisem dolo~il izhode kaj naj bi bili izhodi za enterprise model mogo~e aktivirana ~rpalka za gorivo zagon razlika med pritiskom naprej in nazaj bi bilo lahko kateri pritiskalec gorivnih valjev upognjen ali tog je odprt pumpe za gorivo in zagon se morajo aktivirati za oba pritiska smerno torej nekatere izhodne funkcije bi mogo~e usmerile preve~ izhodnih prehodov v stanju testiranja se koncetriramo na to da imamo pravilno stanje in prenose in potem na izhode za manj nenavaden primer pogledamo na menujski model tam je veliko prostora in menujev v katerih mi odpiramo in zapiramo datoteke mi naj bi testirali odpiranje in zapiranje datotek seveda toda enkrat so datoteke odprte pravilno in mi smo dobili zaupanje v to ni potrebno ponovno testirati odpiranje datoteke v zvezi isto je vsaki prenos v kateri bi lahko zavzel prostor vgnezdeni stroji ravno prikazana tabela je komplicirana ima vnosov stanj in vhodov primer mizni menu je e bolj zakompliciran pre tel sem opcij na menujski ~rti glede na samo te menujske opcije ki se aktivirajo z normalnim klju~em od alfabetskih ~rk plus numeri~nih ali skupno vhodnih kod je bilo uporabljeno posamezna tabela za predstavitev bi bila x vhodov lahko bio zgradili eno veliko tabelo toda ne moremo ker preve~ vhodov preve~ prlilo`nosti za testiranje oblikovnih okvar preve~ praznih vhodov ve~ okvarnih prilo`nosti preve~ nemogo~ih stanj vnos kombinacij obstaja bolj a pot bolj a pot je uporaba vgnezdenih strojev to je ve~ina kar delajo ljudje intuitivno kontrolna menijksa slika na windowsih ima tri izbire na vrhnji stopnji kontrolna menu katla control menu box nastavitve settings in pomo~ help lahko zgradimo tiri stanjski stroj z enim stanjem za vsak od treh menujev in eno stanje v katerem ni aktiviran nobeden menu zgradimo model za te stopnje in razi ~emo vse poti katere prestavimo od menuja do menuja aktiviranje menujev deaktiviranje menujev in tako naprej toda brez izbiranja in delovanja karkoli na menujih za vsakega od teh menujev kreiramo lo~eno kon~no stanje modela ki razi ~e kako ta meni dela in kako so izbire v njem narejene podobno za ikonsko izbiro v prvotno stanje se ne prika`ejo menuji osnovnega modela stran nadaljujo~ z na im primerom vgnezdenim strojem pojdimo na settings menu na najve~ji zgornji nivo sedaj imamo novi model z slede~imi izbirami color fonts ports mouse desktop keyboard printers international date time enhanced drivers sound in exit pod~rtana ~rka nakazuje klju~ kateri se mora vtipkati da izberemo to to~ko torej z manevriranjem okoli ta meni zahteva drugi model e mi izberemo izbiro mi tipi~no aktiviramo e drugi menu z izbirami in zaradi tega e drugi model in tako naprej vgnezdeni stroji so edina prakti~na pot ki jo imamo pri soo~anju z kompliciranimi stroji e pogledate tipi~no oblikovan dokument osnovan na kon~nih stanjih strojih boste videli kaj dobri oblikovalci tudi delajo gnezdijo njihove oblikovane modele kot rezultat njihova implementacija im enako gnezdenje prakti~no re~eno brez podpore orodja je zelo te`ko se soo~it z tabelami stanj ki imajo ve~ kot nekaj sto vhodov to ni veliko deset stanj in dvajset vnosnih kod veliki stroji z tiso~imi vhodi se rutinsko uporabljajo v softwareske telefonske izmenjave toda nekateri od tabel vzamejo na stotine delovnih let da se zgodi testira in odstrani napako urediti model mo`nost napak pri kreiranju modela je visoko v praksi je veliko investicij v stanjske strojne modele morate lo~iti med okvaro in modelom v testih kreiranih z uporabo modela in v sistemu ceneje se je znebiti modelirnih okvar preden oblikuje teste kot pa da jih najde med testiranjem tukaj so nekatere stvari ki jih poi ~emo v modelu in kako jih tudi najti dobra novica je ta da obstaja teorija o tak nih modelih algoritmih osnovanih na slede~ih teorijah in v ve~ini primerih na algoritmih osnovana orodja slaba novica je ta da je teorija pod podro~jem te knjige in algoritmov ko so implementirana kot orodja skoraj vedno se nana ajo na hardware in morajo biti prilagojena za uporabo v softwareskih modelih celota in slo`nost koliko vnosnih simbolov koliko stanj produkt teh dveh tevil imenovano stanjski simboli~ni produkt je tevilo vhodov v tabelo stanj mora biti eden in samo eden prehod na naslednje stanje za vsak vhod v tabeli ni~ ve~ ni~ manj e manjka kateri vhod je to nejasnost v modelih e ima kateri vnos ve~ kot en prehod dolo~en to je nasprotje program ne more biti oboje nasproten ali nekompleten vedno bo naredil nekaj v vsakem stanju za vsak vnos in samo eno stvar nekatera nasprotja so opolzka ker pomenijo da va stroj je navsezadnje dvakrat ve~ji kot si mislil sam vnos kodiranja e se vnos kodiranja spreminja od stanja do stanja ste dobili okvaro v na em modelu ali obupno obliko to pomeni da stanje tabelne velikosti ni fiksirano ne morete prakti~no analizirati robe minimalni stroji vi kreirate model v katerem sta dve nastavitvi ki imata razli~na imena toda identi~ne izhodne akcije in analogne prehode recimo da imamo dve stanji a in b kot vsak vnos v zaporedju od a nadaljuje to~no izhodno zaporedje ~e se je za~elo od b e je tako potem ni nobene poti da nepoobla ~enec lahko pove dve stanji narazen kljub razlikam in njihovim imenom dve stanji so ekvivalentni in se lahko spojijo ista ideja se lahko sklicuje na nastavitve od stanj lahko bi o~istili model z spajanjem vsemi ekvivaletnimi stanji obstajajo mehani~ne poti kako se to po~ne glej beiz nemo~ne povezave modeli stanj za software katerih delovanja stanja niso dovolj mo~no povezana so skoraj vedno ali modelirne napake ali oblikovne okvare kako ob~utite program ki ima menuje ki ne morejo obstajati brez zapiranja sistema lahko dolo~ite to ro~no za majhne modele za velike modele kjer so algoritmi pod podro~jem te knjige podobno tam so algoritmi za iskanje nedostopnih stanj ali nastavitev nedostopnih stanj glej beiz delni algoritmi tehnika splo no predpis za testiranje oblikovanja sledi poti prej njega poglavja identificiranje vnosa kaj so oddaljeni vnosni dogodki ki jih nameravate modelirati dajte vsakemu dogodku ime in ga karakterizirajte primer dolo~imo prihajajo~e sporo~ilo ki pripada specifi~ni vhodni domeni fiksirano zaporedje vhodov vsaka vhodna mo`nost ne pripada modelu dr`ite majhno razdaljo tevilnih vhodnih dogodkov e g s in s definiraj vhodno kodiranje kreirali ste vhodno kodiranje uporabljeno v va em model lahko se ujema ali ne k primerljivem kodiranju ki so ga uporabljali programerji ne vklju~uje robe ki je narejeno z softwareom ki ga testirate na primer ~e operacijski sistem skrbi za spreminjanje pozicije mi ke in klika na to~ko izbora na meniju ne vklju~uje to v va em modelu predvideva da vnos pride k vam prekodiran z operacijskim sistemom recimo morate testirati vnos enkodirnega procesa ~e je to del programske implementacije identifikacija stanj stanja so pogosto kreirana kot produkt faktorjev e je tako identificiramo faktorje in realiziramo da bo tam enako stanje za vsako kombinacijo faktorjev katerih produkt raste zelo hitro in vgnezdeni modeli naj bi se pokazali preglej stanja ki si jih identificiral in jim daj sistemska imena soo~ili naj bi se z ducatom ne tiso~e stanj definiraj stanjsko kodiranje e oblikovalci uporabljajo softwearsko implementacijo kon~nega stanja stroja beiz tam naj bi bil pravo stanje kodirnega procesa in stanjski tevec e je tako stanje kodirnega procesa naj bi bilo testirano toda bi bilo zelo te`ko v contekstu ~istega vedenjskega testiranja e tam ni oblikovno eksplicitnih kon~nih stanj potem stanja kodiramo kot pregled va ega modela in ni potrebno kot del softweara e vedno morate ovrednotiti pravilnost v smislu pregleda va ega modela definiraj izhodne dogodke samo najbolj preprosti modeli imajo lepe enojne izhodne dogodke ki se ujemajo direktno recimo izhodno enojni zna~aj ve~ kot to izhodni dogodki se ujemajo sestavljajo v zaporedju akcij idemntificiraj podobna zaporedja v vgnezdenih modelih izhodni dogodek je aktivacija naslednjega modela spodaj v hiearhiji daj vsakemu izhodnemu dogodku ime ne glede na to ali je preprosto ali zaporedje definiraj izhodno kodiranje e ima obliko kon~nih stanj potem bi lahko programerji imeli izhodno kodiranje za testiranje te`ko bi bilo tudi narediti v kontextu vedenjskega obna anja vendar morate ovrednotiti da izhodno dekodiranje katera potem vse je samo lastninski model dela zares in se ujema s tem kar se res dogaja grajenje urejanje tabele stanj in izhodne tabele to je najni`ji del celotnega dela najve~ ~asa potro imo in najve~ napak se pripeti oblikuj svoj test imate trivrste testov za oblikovanje a vhodno kodiranje vrednotenje texta b izhodni vrednostni text in © stanjski paralelni vrednostni text prva dva sta testa va ega modela zadnji je test softwarea in va model ti objektivi in kako jih dose~i so opisani v sekciji odspodaj pogon testov vsak test naj bi startal od za~etnega stanja naredil bi tudi pot razli~nih stanj da bi dobil drugo stanje in potem se vrnil na za~etno stanje za vsak vnos je treba potrditi prehod izhod to naj ne bi bilo navadno ponavadi nekatera podpora oblike je potrebna glej odsek spodaj tu so nekateri testi za enterprise ns ns vedno je dobro opazovati sistem ko ni~ ne dela ns rs ns ns ds ns ns rs rb nb db ds ns ns ds df nf rf rs ns ns rs rb rb nb db ds ns ns ds df df nf rf rs ns vsak test starta na za~etnem stanju ns od za~etnega stanja gre tekst do ciljnega stanja po kraj i poti in se vrne nazaj na za~etno stanje testi so dodani kot je potrebno za zagotovitev povezave vsak test se gradi na prej njih preprostih testih enkrat ko ste izbrali skupino kritih poti je potrebno vnosno kodo za vsak prehod greste nazaj skozi vnosno kodiranje da se najde trenutni vnos in naprej skozi izhodno kodiranje da se najdejo detajli izhodne akcije ~e je katera zgledalo naj bi veliko dela in tudi je lahko toda ni tehni~nih temeljev o tem ti testi so osnovani na drobnih primerih bolj kot na poskusih da bi teste optimizirali sprememba nekaj del kot `e iz testov do testov in vsak test bi bil lahko osnovan na prej njih testih v katerih pravzaprav imate zaupanje to pribli`ek kreira veliko podbne redundance v testih tod je zajam~ena kaj ovrednotiti ovrednotiti vhodno kodiranje ali va e modelirne ideje vhodnega kreiranja se ujemajo s tem kar je izpolnjeno e se razlikujejo kar je napa~no model ali software kako boste vrednotili je odvisno na tem kaj kodirate e so vnosi numeri~ni potem bi lahko uporabili podro~je testiranja za potrditev vnosnega kodiranja e je znakovna vez potem sintaksa testiranja ali zato drugi model stanja eno ali drugo pot ki jo morate potrditi je ujemanje med modelom ideje vnosa dogodka in softwersko razlo`iti vsa nasprotja ovrednotiti izhodno kodiranje so naj bi bili odnosni malo oddaljeni izhodni dogodki ali akcijska zaporedja vsakemu od teh damo ime kodirani izhod if pomeni odpri datoteko nalo`i podatke zapri datoteko poro~aj nazaj potem mora potrditi vse kar se zgodi in to kar se zgodi v tem redu mogo~e mora izvesti vmesne ra~unske korake datote~ne aktivirane loge uporabiti simboli~ni razhro ~evalnik toda karkoli boste naredili morate potrditi da se akcije va e izhodne kode ujemajo z zaporednimi akcijami v realnem software in ~e ne razlo`i vsako nasprotje ali ste na za~etnem stanju tehni~no re~eno v tej knjigi se dozdeva da je na vsezadnje eno za~etno stanje in da je to mogo~e dobil tam tam naj bi bilo nekaj za~etnih stanj v kompliciranem sistemu naprimer za~etno stanje je na`alost za samstojngea uporabnika enako kot za mre`nega operaterja lahko za~nete testirati test samo ~e niste v za~etnem stanju in to vi veste software vam pove da navsezadnje ni dovolj biti v za~etnem stanju kar bi lahko bila velika okvara kar mi i ~emo za~etno stanje ima lahko last kot na primer katere datoteke so odprte izvori uporabljeni program aktiviran in tako potrdite to e je tam nastavljeno za~etno stanje kot korist ali nalo`eno zaporedje potem morate potrditi vsako stanje in prehod v teh nastavitvenih stanj to je lahko te`ko ~e nimate oblikovne podpore ker tako zaporedje je pogosto je avtomati~no oblika korak je zelo uporabna testna pomo~ lahko dose`ete vsako izhodno stanje tipi~no tam ni ene ampak nekaj izhodnih stanj ali nastavitev izhodnih stanj stanja ki so enkrat vnesena bodo uspe no zavzela izvajanje izven modela o~itno je stanje v katerem lahko zaprete program ki ga testirate toda ni vedno tako preprosto na primer ~e izberem to da bi rad zaprel besedni procesor sam vpra a za potrditev e potrdi to kar ho~emo za izhod in imamo katerikoli odprto datoteko katero ni bilo prej sortirana program potem vpra a ~e `elim shraniti spremembe to ni obi~ajna nastavitev izhodnih stanj ovrednotenje stanj ali naj bi bila vsa stanja prisotna namen opravljanja te poti do ciljnega stanja je prikazati da vsa stanja obstajajo in so dostopna mora seveda imeti pozitivno mnenje znanje o stanju ves ~as ponavadi je to mogo~e pri testiranju softwera e posebno ~e je tam eksplicitni tevec stanja in ~e so oblikovalci mislili o testiranju e nimate mnenj za identifikacijo stanj testiranje je e vedno mogo~e toda je mnogo bolj te`ko in za podro~jem te knjige ali obstajajo dodatna stanja to je te`ko dolo~iti oboje teoreti~no in operacijsko hevristi~ni opis sekcije odspodaj kakorkoli ponavadi najde dodatna stanja ~e obstajajo potrdi vsak prehod tam je potencialno izhodno zdru`enje z vsakim prehodom bolj natan~no tam je izhod vsakega prehoda prehod se sestoji iz dveh stvari iz novega stanja in izhodov ~e je kateri e je tam ni~ti izhod zdru`en z prehodom ki mora biti potrjena definirali ste kodno stanje kar pomeni da imate natan~ne karakteristike ki bodo brezprimerno identificirala stanja potrdimo vsako komponento stanja dekodiranja lahko ste preslepjeni zaradi mo`nosti dodatnih stanj o ~emer bomo razpravljali v naslednjih sekciji podobno morate potrditi vsak izhod definiran v va em modelu izhodnega kodiranja e posebno nultega izhoda poskrbite da se ni~ ne zgodi v ni~tem izhodu e kon~ate v pravilnem stanju in ste imeli pravilne izhode vklju~ujejo ni~ti zato prehod potem je dobra stava da je bil prehod pravilen kaj pa o dodatnih stanjih splo ni problem kako odkriti dodatno stanje v kon~nem stanju recimo kot izpolnjen hardware je te`ko prednostno in pod podro~jem te knjige karkoli v testiranju softwera se nam ni treba sovbadati s splo nim problemom ampak z preprostimi za gotovo je eno da se nam lahko dozdevajo stvari ki se ne morejo dati v splo en primer kot poznavanja kaj je v stanju za druge problem je poenostavljen z naravo stanj okvar in softwareom ko imamo dodatno stanje v softwareu redko eno ali dve dodatni stanji toda ve~ tipi~nih dvojnih tevilnih stanj mi pri~akujemo ali celo krat tevilna stanja dodatna stanja v softwareu prihajajo iz skritih kon~nih vedenjskih stanj en dodatni prispevek k vedenjskim stanjem podvojuje tevilo stanj naslednja prisodoba prika`e zgodbo spodnje kon~no stanje stroja je eno za katero mi mislimo da imamo karkoli zaradi okvar ali zaradi na ih modelov je bilo nekompletno tam je dodaten faktor v prostoru za katerega mi nismo vedeli na nekateri to~ki zaradi aktiviranih okvar med eno od na ih testnih poti namesto izdelovati prehode od a do b mi pravzaprav delamo prehod od a do b v paralelnem prostoru od hiper prostora na `alost v softwaru je redkoma samo eno vzporedno vesolje tod tiso~e ali milione drugih e so vsi ti vzporedni v vsakem spo tovanju shrani faktor ki je povzro~il kreacijo dodatnih stanj potem na`alost bomo mi odkrili ~e bo to zaradi enakega razumskega tevila testov toda potem skozi tam je napaka ki je kodljiva karkoli ~e dodani prostor stanj stroja se razlikuje vedenjsko ~e tudi v manj ih na~inih lahko najdemo zakaj obremenjevati se spra ujete povsem tem je samo majhna ne kodljiva vedenska razlika ki jo zlahka toleliramo dobro vpra anje bi si zaslu`ilo odgovor kot sem ravnokar rekel eno vzporedno vesolje kot milion v ve~ini teh vesolj so majhna nasprotja zares potrebna ne kodljivo tolerantna toda v mnogih vesoljih so okvare simptomi fatalni vedno sem bil sposoben promocirati tenko ne kodljivo vedensko razliko v fatalno okvaro ne morete dobiti razvijalcev povzro~iteljev o ne kodljivih simpotmih e poro~ate da ekran utripa ali da mi kin kurzor se premika ko se ne bi smel bodo odskomignili toda ~e lahko ustanovite podobne vedenjske spremembe ki naj bi povzro~ile sesutje in to delate s ponavljanjem boste dobili drugo pozornost vi povzro~ate okvare eksperimentalno igrajte se z vrednostnimi parametri e g dol`ina datoteke kontrolne kode opcije itd kar ne bi smelo vplivat na prehod in pogledate ~e lahko pove~ate vedenjska nasprotja recimo kako premakniti kurzor mi ke naprej ali kako narediti da bo ekran blisknil dvakrat probajte med vrsticami ki nagla ajo vedenjske razlike in pred koncem boste na li zelo natan~ene okoli ~ine ki bodo povzro~ile fatalni simptom nekaj ur ponavljajo~ega testiranja in nekaj previdnega opazovanja na tipi~nih pc aplikacijah recimo bo nagradilo z sesutjem ali raztrtgana podatatkovna baza bodite prepri~ani da imamo dobro ozadje in shranjene ugodnosti skozi na~in kako najti dodatno stanje v hiperprostoru je ponavljati vsaki test natan~no naredite pot od za~etnega stanja do ciljnega stanja in nazaj na za~etno stanje brez uporabe reset komande ~e se da potem primerjajte vse primerne komponente stanj recimo da so odprte datoteke izvori v uporabi okenjska stanja itd po testu in pred testom testiranje se potem ponovi to~no in vsak izhod od vsakegha prehoda se primerja na s prej njim in vsaka ponovitev je zabele`ena vsaka vedenjska deviacija karkoli tudi ~e je ne kodljiva vam pove da imate dodatna stanja ta opis po nekaterih mnenjih ne garantira da boste na li dodatna stanja ~e obstajajo ker na splo no podobno vedenje je lahko odkrto samo z zavzemanjem razli~nih poti od za~etnega stanja do kon~nega stanja ponavljajo~e testiranje ni najbolj e kar lahko naredimo toda nazadnje kar moramo e ne ponavljamo testov je na`alost da boste odkrili okvaro ideja o preciznih ponavljajo~ih testih naj ne bi prepovedala testiranje osnovano na vedenju kon~nih stanj s ponavljanjem vsakega testa je to izvrstna ideja ker okvare ki povzro~ajo neza`eljena kon~na stanja vedenja ne vedo kak no testno tehniko mi uporabljamo kritje hiearhije kot z vsem testiranjem tehnike obstaja tudi kritje hiearhije zapletena krinka nam skoraj ni~ ne pove kar je samo ve~ ~e je ta software bil testiran na ni`jem nivoju e g skupno testiranje od oblikovalc je res da bo zapletna krinka je bil dose`en centralno bistvo v kon~nih stanjih testiranja so prehodi testirati prehode moramo potrditi stanja zapletena krinka torej bomo dozdevali da kot minimum kot z najve~ testnimi tehnikami bomo li skozi link prehod krinko je kaj pod krinko tega linka veliko vse pod poglavjem te knjige toda bolj pomembno pod potrebami ve~ine ljudi ki testirajo in uporabljajo to tehniko obstaja kritje hiearhije osnovano na vedno dalj ih zaporedjih testiranja kjer se dol`ina testnega zaporedja meri z tevilom prehodov ali enako vnosnih simbolo celotno literaturo od testnih na~inov za kon~na stanja strojev obstajajo bilo je razvito originalno za strojno logi~no testiranje ~eprav vam ne bom govoril o teh tehnikah zavzelo bi celotno knjigo vam lahko dam nekaj vpogledov v okoli ~ine ki naredijo podobno tehniko bistveno naredili smo tri bistvene dozdevke v uporabi testiranja kon~nih stanj na~inov za software ponavadi vemoza stanje v katerem smo pred in po prehodu na splo no podobno pri testiranju je vedenje celotnih okoli ~inah ni mo`nosti da bi vedeli da je to sprejeto z opazovanjem vedenja e g izhodi v nekaterih softwareskih testnih situacijah kot pri testiranju protokola v katerem nimate nobene informacije o notranjih stanjih o sisitemih z katerimi vi komunicirate recimo ni mo`nosti da bi vedeli notranje stanje sistema pod testom e je problem pri dobivanju informacij o stanju potem osnovne tehnike te knjige ne bodo zadostovale bolj i pristop je oblikovati software tako da je ta informacija dostopna glej beiz izhodne akcije v hardwareu so nagnjene k temu d aso preproste kot je izhodni puls na dolo~eni `ici toda je veliko veljavnih prehodov ki bi lahko povzro~ili da bo ta puls na tej `ici oddajan zaradi tega ni lahko povedat da ste imeli pravilni izhod naklju~en pravilnost je pravilo ne pa izjema v softwareu so izhodne akcije zapletene in pogosto enake prehodom zato ker so zapletene je lahko povedati od ene do druge ~e so ekvivalentne od pulsev na liniji kar bi lahko bilo primer za kontrolo softwarea ali za protokole potem je testna naloga veliko bolj te`avna in lahko ste zadeli meje osnovnih na~inov te knjige glede na naravo napak za katere ni re~eno da jih mi i ~emo lahko bi iskali napako v specifikacijah to je problemti~no in ni posebno za testiranje kon~nih stanj e so raziskovalci naredili veliko dela v implementaciji napa~nega stroja kon~nih stanj potem ne bomo na li nobenih testnih tehnik v njem na a domneva je da dojema model pravilen in da so napake v implementaciji softwarea takega modela najljub a napaka v softwareu ni napa~no stanje ali napa~en prehod tukaj ali tam ampak veliki efekti kot na primer celotno paralelno kon~nih stanj strojev katerih so povzro~ila skrita stanja spremenljivk kot preprost primer program je oblikovan da shranjuje povratne informacije vsakih nekaj sekund tako ~e pride do sesutja sistema bo povrnil z uporabo backup datotek recimo da bo program zagotovo zbrisal te podatke na normalnem izhodu zbri e re itvene datoteke toda pusti nespremenjena spremenljiva odlo~ilna stanja naslednji ~as se program po`ene namerava se zopet povrniti ker mu je tako re~eno toda zahtevana povrnitev datotek ni tam sesutje sesutje piskanje piskanje en napa~en byte podatkov mo`nih vesolj ena bitna beseda je bilione teh e ste pikolovski o pisanju tenkih vedenjskih razlikah potem boste vedeli v katerem vesolju ste senzibilizacija in izidne napovedi ni nobene senzibilizacije ali izidne napovedne izdaje kot na primer za testiranja kon~nih stanj vi ob~utite z izdajanjem komand ali vhodov ki povzro~ajo `elejeni prehod vi napoveste izid pri delanju va ega izhodnega kodiranja nobena od teh nalog ni nepomembena vrednost dela ampak je direktno naprej in tam ni vpletenih nobenih posebnih tehnik najve~ja napaka ljudi ki testirajo v tem spo tovanju je da niso dovolj pikolovski resni~no morate definirati v skrajnih detajlih to ni lahko storiti kakorkoli z primernim komercialnim orodjem kot naprimer capture playback orodje o katerim govorimo v poglavju deset najbolj pomembna uporaba testiranja kon~nih stanj ni v za~etnem testiranju softwarea ampak v retestiranju softwarea po spremembah med vzdr`evanjem za potrditev teh stvari ki naj se ne bi spreminjale v takem primeru prej nji zagon testov proizvede potrebne vhode senzibilizacija in izide tetje stanj najbolj pomembna stvar ki jo ~lovek ki jo testira lahko naredi e posebno neodvisn tak ~lovek je dobiti natan~no tevilo stanj in tevilo vhodnih kod in iz tega velikost njihovih produktov stanjski simboli~ni produkt programerji ki ne razmi ljajo o vedenjskih kon~nih stanj implementirajo implicitna kon~na stanja strojev z bilonom in trilionom vnosnih kod ne morejo se pravilno testirati ne sedaj ne nikoli iz perspektive ljudi ki testirajo kot odpadni software je zelo lahko vdreti vednje kon~no stanje je osnovano na nekaj faktorjev ki postanejo veliki hitro glej problem za nekoga ki ima odprte o~i kot eden ~asovni oblikovalec sem se nau~il da moram narediti formalne anlize od katerikoli kon~nih stanj z stanjskim simbolom katerih produkt je celo tudi ~e je bila potisnjenja do mej moje intuitivne oblikovalske sposobnosti ko dobimo kon~no stanje stroj z produktom na stotitine pravilnosti je delo nekaj mesecev tam je veliko dovoljenja v stanjih in prehodih formalna anliza pod obmo~jem te knjige je obvezen stroji z produkti na tiso~e imajo trdne investicije merjene v delu nekaj let ali stoletij ne nekaj kar lahko naredite intuitivno te nastavitve ki so perspetivne in niso razumske lahko testirate sistem in doli~ite vedenjsko stanje kije osnovano na tirih faktorjih z in mo`nostmi za vsako posebej in dolo~a da mo`ne vnose po kodiranju se sestoji iz diskretnih akcij produkt teh tevil je kot tester bi lahko zahtevali na vpogled v dokumentacijo za vsak na tiso~e od teh prehodov e ni dostopno da se software ne da testirati toda zelo lahko se da vdreti oblikovalci bi lahko imeli implemetirana vgnezdene stroje seveda in upamo da delajo ravno to e je tako imate ve~ est preprostej ih strojev za testirati najti vrednost stanjskega simbolnega produkta za netestirane stroje je najla`je in najbolj produktivn astvar ki jo lahko naredite v testiranju kon~nih stanj delati to takoj vam pove ~e ta software ne bo testiran primerljivo in zaradi tega bo enostavno za vdreti podpiranje spretnosti in testnosti to je tam kjer se programerji lahko in tudi naj bi se nau~ili njihovo pla~o mo~no se prepiram s programerji naj uporabljajo eksplicitna kon~na stanja strojev in njihovo implementacijo e g vodenje tabel ~e je stsnjski simbolni produkt je ve~je kot in tako glej beiz kako to narediti e je pravilno narejeno vzdol` z dobrim oblikovanjem ki je bilo dobro analizirano in zaradi tega na`alost tudi okvarljiv nekaj prednosti z pomo~jo testne pomembnosti eksplicitni stanjski tevec tam je sam deklarirana spremenljika ali spomiska lokacija ki definira stanje vsak ~as je dostopno in se lahko posname teko~e stanje je vedno znano reset master in specificirato stanje so razli~ne resetne opcije kot master reset do kon~nega stanja to bi lahko imelo opcije kot a kot totalni reset vse je postavljeno na za~etek b resetirati samo stanje spremeni se samo stanjski tevec toda ne stanje teh datotek in tako © resetirati dolo~eno stanje reset bi lahko bil po teno dovr en in imel veliko parametrov ki diktirajo to~no kaj razen stanjskega tevca s e spremeni dobra resetna spretnost je pomemba in velikih stanjskih strojev kjer smo dobili dolo~eno stanje bi lahko druga~e zavzelo dolgo pot skozi veliko drugih stanj operacija korak oblika to je sposobnost itis skozi stanjska grafa en prehod na ~as in za izhodne sestavljanje akcije en izhodni dogodek na ~as pauza je nujna po vsakem prehodu torej ~e se test izvaja ro~no tester lahko potrdi kaj se je zgodilo ~e se test izvr i automati~no orodje lahko posname enako prehodna sled to je sledni posnetek vsakega izvr enega prehoda kar pomeni vhodno kodo ki za~ne prehod trenutno stanje stanje po prehodu izhodna koda eksplicitno vhodno tabelsko kodiranje eksplicitni vnosni kodirni mehanizem obstaja lep e je ~e je zdru`eno v tabeli vhodno kodiranje se kompletno lo~i od podzaporednim procesiranjem eksplicitno izhodno tabelsko kodiranje eksplicitno izhodno kodiranje obstaja to bi lahko bila tabela ki definira kaj podrutinske poklicati ali druge mehanizmeki so izolirani od ostalih procesiranja eksplicitno stanje prehodne tabele eksplicitno kon~no stanje implementacije ima vedno eksplicitno prehodno tabelo lep a stvar o takih tabelah je to ~e je prehodna napaka najdena je lahko popraviti te prednosti so najbolje grajene v softwareu od za~etka ker jih te`ko da se ponovno ujemajo o~itno take spretnosti potrebujejo posebno operacijske oblike in komande katerih uporaba neavtoriziranih uporabnikov bo preganjana aplikacijske uslu nosti pokazatelji aplikacij avri baue wilk tukaj so skupne situacije ki pokli~ejo testiranje kon~nih stanj strojev in ali aplikacije v katerih ta tehnika se pogosto uporablja munu vodila software oblikovalci komercialnih menujskih vodilnih softwarea rutinsko uporabljajo kon~na stanja strojne oblikovalce za njihove menuje tudi uporabljajo kon~na stanja testiranja da lahko preverijo pravilnost njihove menujske strukture objektno orientiran software kon~no stanjski model je skupen ve~ina objektno orientiranih oblikovnih vzorcev pravilno testiranje na~inov vsebuje pravilno testiranju stanjskega vedenja kon~nega stanja testiranja je o~itno protokoli rzgovor o protokolnem testiranju je pod podro~jem te knjige je literatura na predmet od vseh domneva znanje kon~nih stanj testnih na~inov chow holz sari sidh vodila naprave ve~ina naprav ima kon~no vedenjsko stanje in ve~ina vodil vsebuje kon~no stanje stroja oblikovni hardware naloge so pravilno narejene in nara ~ajo~e softwearsko narejeno to ni samo elektronika toda tudi kor mehani~ne in elektromehani~ne naprave lanek v scientific american gibb pozicije microprocesorjev in software in lahkih prehodih electri~ni brivniki kilobyta automobilske mo~ne vlake k kodnih linij tv kilobytev pomemben del vedenja od takega softwarskih prevajalcev direktno v vedenjska kon~na stanja in talacija softwarea softwarska instalacija in konfiguracija softwarea pogosto razstavlajo vedenjska kon~na stanja in so lahko testirana produktivno softwareska podpora in pridobitev ta software ima pomembno vedenjska kon~na stanja nara ~ujo~e mi imamo datoteko ali mre`o serverjev z dvojnimi procesorji podobeni sistemi so bili testirani z kon~nimi stanjskimi modeli `e dolg ~as okvarne domneve ne veliko domnev ki smo jih naredili okvarah kot domneve ki smo jih naredili o softwareu ki razstavljajo vedenjska kon~na stanja ad hoc kon~na stanjski stroji programer ne more realizirati da je bistveno stanjsko vedenje v programu kot posledica ni nobenih analiz nezadostno testiranje in veliko veliko okvar kodiranje okvar vhodnih kod izhodnih kod ali stanjskih kod ali eksplicitna implicitna e je vhodno kodiranje implicitno potem protislovno kodiranje od stanja do stanja je zelo verjetno napa~ni izhod to bi lahko bila izhodna kodirna napaka ali ~e tam ni eksplicitnega kodirnega izhoda potem se kli~e napa~na podrutina recimo nesumljivo vedenjsko stanje obse`na irjenje dodanih stanj ki je povzro~eno z neautoriziranimi komponentami stanja vedenja kri`anje mre`nih mej implementacija uporabljenih mre` kon~nih stanj strojev toda zaradi okvar ali ad hoc slabega oblikovanja mre`ne meje se obidejo model na desni prikazuje mre`enje nekaj kon~nih stanj strojev vsaka kepica v setu stanj e g menu e mi dovolimo prehod od stanj v x recimo do stanja v y potem celotno mre`enje je pokvarjeno in dejstvo celotnega vedenja je ~e ni bilo mre`nih nasploh so ostale poti doseganja podobnih mre`nih mejnih kri`i ~ toda morajo biti previdno implementirano mre`no mejno kri`anje je kot to skupna okvara ki se pogosto lahko najde z kon~nimi stanjem testiranja ste kdaj uporabljali meni vodilo paket ki ste ga sami na li v meniju ki niste izbrali in vpra ali kako sem prispel sem omejitve in svarila veliki stanjski grafi tehnike opisane v tej knjig so osredoto~ene za skromna stanjske grafe stanjski simbolni produkt med stotinami za velike nemre`ne stanjske grafe kot te uporabljene v telefonskem izmenjavanju kontrol z produktom merjenem v tiso~ih ~asih od tiso~ih so tipi prehodnih poti opisani tukaj preve~ drago za voditi tudi ~e je celoten test oblikovan in izvr itev je avtomati~na to je slaba novica dobra novica je da ljudje ki se soo~ajo rutinsko kot naprimer z velikmi stroji ki imajo orodja in izku nje za uporabo najbolj nepravih tehnik ki so pod podro~jem te knjige e nimate izku enj in orodij ne bi smeli se igrati z podobnimi kon~nimi stanjskimi stroji mre`ni modeli nasproti mre nimi sistemi razumski model uporabe mre`nih modelov recimo ker nemre`na implementacije imajo lahko bilione stanj vi zgradite lep mre`ni model toda dejanski softweare ni mre`en va model zavzema samo del aktualnega vedenja in povezavo ki pokriva model brez pomenskih zagotovitev katera povezava krije kon~na vedenjska stanja sistema va model je samo podnastavitev aktualnega vedenja in dobro vedenjsko podnastavitev na tem torej vsi va i testi naredijo software vseeno je veliko okvar ki pridejo na dan orodje ki vam pove katera pravzaprav stanja in prehodi so bili v bistvu izvr ena podobna orodja so u~insko nemogo~a dokler ni tam eksplicitnega kon~nega stanja stroja ki je implementiran v katerem primeru vi imate lastno krivdo kot testerker niste pogledali v zahtevkih da bi videli ~e je bilo pravzaprav mre`no kot va model ali ~e ni bil brez podpore podpiranje pripomo~kev in testnih vidikov je opisano v odlomku so nagnjena k izdelovanju testiranja razumsko in u~inkovito podalj ek katerega podpira kot obstaja je tudi mera kako lahko ali kako te`ko bo predvajati kon~na stanja testiranja in kako u~inkovito bodo testi naleteli na okvaro avtomatizacija in orodja kot vedno v oddelku avtomatizacije je dobra novica in slaba novica dobra novica je da oblikovni test avtomatizacije za kon~na stanja strojev testiranja je bil pre tudiran `e let in veliko u~inkovitih algoritmov je pri lo iz teh tudijev slaba novica je ta da so skoraj vsa raziskovanja bila usmerjenana hardwaresko logi~no testiranje kon~nih stanj strojev izjema se pojavi kot protokolno testiranje za katerega hardwearski model je mogo~e u~inkovit orodja kot ta ponavadi so integrirana v mejo lsi oblikovnih sistemov in kot tako ni sprejemljivo za softwareskega testerja propagadno usmerjena softwarska testna oblikovna orodja obstajajo post toda so e vedno okrnjena ve~ina softwareskih razvojnih organizacij ki imajo razlog narediti veliko kon~nih stanjskih testnih strojev razvijajo ustrezna orodja matt zato ker ta orodja jim dajejo pomembno prednost publicirajo rezultate ali ne naredijo orodja dostopna outsiderjem vsota kon~ni stanjski stroj model je osnovni model testiranja primerno ve~ina razli~nih vrst softwera za~ne se z definiranjem stanja prehod tabele ki vklju~uje vsako vhodno stanje vhodnih simbolskih kombinacij tipi~no ve~ina modelov bo tudi zahtevala vhodno in izhodno kodiranje povezava prehod kritje je minimalni razumski tesntni objektiv z razumsko spretnostjo kot ekspliciten tevec stanj in reseti preprosta pot bo zadostovala da najde najve~ okvar najbolj pomembna stvar ki jo tester lahko naredi je dolo~iti stanjski simbolni produkt in iz tega zakonita mera testiranja je mo`na druga najbolj pomemb stvar ki jo lahko tester naredi je to natan~no ponoviti vsak test ne samo kon~na stanja testev ampak vsak test pod zavzetek ponovitev sistema in zabele`iti tudi osnovno vedenske spremembe v redu v zavzetju skritih vedenjskih kon~nih stanj okvar samo razvojni kviz definiraj kompletno dolo~en stanjksi graf trenutno stanje izhodno stanje kon~no stanje stroj skrtito kon~no stanjsko vedenje za~etno stanje za~etna nastavitev stanj vhodno kodiranje vnosni dogodek vnosni simbol vnosni tevilski simbol izolirano stanje menujski vodilni software mre`ni stroji ni~ti vnos tevilo stanj izhodno kodiranje izhodni dogodek izhodna tebela dosegljivo stanje reset samo prehod stanjski prehod stanjska prehodna tebela mo~no povezane pot prehodne stanje prehod nedostopno stanje delujo~a stanja zopet naredi enterprise model pod domnevo da tri vodila kontrole so dogovorjena v trikotnikubolj kot v vrsti zaradi klingon helmsmen raje kot pot in klingons ponavadi dobiti kar ho~emo to je slede~i dodatni vnos so mogo~i d r r d zakoni fizike kakorkoli ne spremeni za klingone oblikuje nov set testov a dodaj vla~ilno vodilo w k enterpriseu lahko greste v vla~ilno vodilo od katerekoli pozicije d n r toda u~inek je vedno tak da se premakne v smer naprej vla~ilno vodilo ne poslu a newtonovega zakona torej ~e ste se premaknili nazaj ko je bilo vla~ilno vodilo zaposleno lahko greste direktno v polo`al naprej brez da bi se prej ustavljali ko vla~ilno vozilo nezaposleno boste se na li z vodilskim vzvodom v polo`aju kot je bil preden je vla~ilno vodilo bilo zaposleno toda se je premikalo naprej naredite model in oblikujte teste b kot a toda za klington zastavo spklchutrgr hrngrtch laforge izbolj a vla~ilna vodila tako da potem ko je nezaposlen zopet dobi prenos naprej nazaj stop kot je prvo zaposleno vla~ilno vodilo naredite model in oblikujte teste e delate v lupini okenskega okolja naredite model za najvi je menuje tega okolja in po`enite teste ki ste jih oblikovali v formalni smeri bi uporabil veliko menujskih vodilnih primerov kot bi lahko osnoval na ra~unalnikih in ali operacijskih sistemih dostopnih za tudente enterprise in toyota problemi kakorkoli so oblikovani da ilustrirajo postopno nara ~ajo~e modelno kompleksnost moja toyotina sokol je pogonsko vozlio in na menjalniku ima naslednje prestavne vzvode r n sl obstaja tudi drugi vzvod za preklop iz kolesnega pogona na pogon samo enih koles ter sklopka in zavore poglejmo si nekaj pravil o vo`nji s tem avtomobilom a prestavljati je potrebno iz neutralnega polo`aja tako da so aktulane prestavne poteze n n n r n sl n r r n n r n n izbiramo lahko izmed dveh mo`nosti wd wd and wd wd sklopka je lahko zaposlena ven ali nezaposlena noter podobno velja za zavoro lahko opustite sklopko ~e je na ali opustite ~e je ven isto stori z zavorami b lahko prestavite od katerekoli prestave razen sl super low v neutralno brez uporabe sklopke sl n potrebuje sklopko c morate uporabiti sklopko za prestavljanje od neutralne do katerikoli prestave d nemorete prestaviti v sl razen ~e ste v wd e lahko prestavite wd wd ali wd wd brez uporabe sklopke razen ~e ste v sl toda morate mirovati ali se pomikati naprej f vsak prehod prestave normalna ali vodilna izbira je mo`na z ali brez sklopke ~e ste ustavljeni g e greste nazaj in v r reverse nazaj prestavi lahko prestavite v prvo ali drugo prestavo to je r n r n h s prestavljanjem prestav ne sme biti ve~ kot dve poziciji stran v vsako smer to je slede~a stanja so mo`na n n n n n n n n n n n n n in tako naprej vedno lahko prestavite od prestave k samemu sebi vkljujujo~e r in sl z ali brez uporabe sklopke dokler ne greste na neutralno naprimer toda ne n i prepovedana prestavne akcije e g n r naj ne bi bilo poiskusilo po tem mi vemo da tudi najbolj i prenos je lahko vlomljen z uporabo j lahko delate eno stvar isto~asno to je ne preu~ite isto~asno prehajanje prestavnega prehoda izbira vodila sklopke in zavore ali eno ali dve isto~asno definiraj vnosno kodirno shemo oblikuj stanjsko tabelo ki nakazuje vse mogo~e prehode oblikuj kritni test uporabi nekaj skupnih smiselnih v va em oblikovnem testu in si zabele`ite kateri testi so potencialno nevarni in ali uni~evalni za avto objektivno je dobiti razumsko hitri set u~inkovitih testov z uporabo poti stanj brez uni~evanja prenosov v procesu ne poskusite oblikovati resni~no minimalno testno nastavitev ker je to teoreti~no te`ak problem tukaj so nekatere nara ~ujo~e bolj te`ki modeli na katerih treba delati vo`nja na dveh kolesih ne najni`je samo tri prestave naprej kot z tirim prestavam naprej kot z petimi prestavami naprej dvo tiri pogon ne najni`je tri prestave naprej isto kot z tirimi prestavami naprej kot z petimi prestavami naprej dvo tiri pogon najni`ji tri prestave naprej kot z tirmi prestavami naprej kot z petimi prestavami naprej katerikoli pod pri~akovanimi katere lahko prestavite navzgor tri prestave nazaj e g n toda navzdol samo naslednja prestava e g n navodilo vnosno kodiranje ne potrebuje odzivanja na posamezni vnosni dogodek toda lahko ozna~i zaporedje dogodkov kot npr ozna~eno n n mre`ni stroji stanja in ali vnosi so kar naredite iz njih ne izena~ite g g z g n g g je katerikola prestava niso enake orodja in avtomatizacija tools and automation povzetek syinopsis povzetek je uporaben pri izbiri ustreznega cloveka za testiranje orodja avtomatizacije pregled razlage testa orodja in dolgorocne napovedi za testiranje seznam besed vocabulary zunanji potrebni termini od produkta skladisce spomina koda kompilator podatki popaceni podatki zanesljivost urejevalnik izvedbeni cas false formalne metode vroca linija nadziranje oviranje interpretiranje testatura strojna oprema incialke vzdrezevanje lokacija spomina ojacevalec mreza objektna koda orientacija objektnega programiranja procesi produkta program programer smartdrv ekran programska oprema izvirna koda izvajalec spekulacij true uporabnik crkovni procesor notranji potrebni termini glusilci duplikatne poti poti uporabniki obrambni sistem testno obnasanje hrosc klicno drevo racunski predikator komponenta kontrolni potek podatkovni potek testno podrocje okolje napake zunanja inteakcija input instrumentacija testno strnjevanje link model autput predikator strukturni test sintaksni test sistem test oblikovanega programske napake skriptni test tester osnovni test potrditev obvezna avtomatizacija the automation imperative free hend mill nomu pere voge v tem delu ni moj predlog prepricati bralca v obvezno testiranje avtomatizacije kajti ce ne verjame vanjo ne bo bral te knjige namen je v povezovanju argumentov ki upravicujejo investiranje v test tehnologije najbolj zalostno pa je da clovek dela za mizo nekaj kar bi lahko bilo avtomatizirano sam cas nas prisiljuje k temu da priznavamo uporabo racunalnika to je tudi tisto zaradi cesar test avtomatizacije obstaja same spremembe so se dogajale ze v preteklem stoletju tako se morajo tudi sedaj razmere ki nas spremljajo bi morale upostevati argumente za test avtomatizacije kajti uporaba argumentov je preprosta testni prirocnik je slabo izvrsljiv lastni opis je zmedeno mucenje z dovrsitvijo kar vodi v zmanjsanje zaupanja prirocnikov test izvrsitve ne deluje manual test execution doesn't work prvi mit je da verjamemo da testni prirocnik deluje imamo odlicno statistiko o tipkarskih napakah od samega zacetka tipkanja profesionalni tipkarji lahko izracunajo tri napake na tipkovnih udarcev to lahko izkljucimo z obnovitvijo kljuca med tem ko drugi operater preverja prevega tipicni primer testa vsebuje karakteristik nedobri tipkarji nimajo prave podpore treniranega operaterja nakljucno moramo prikazovati da izvrsitev testa ima vsaj eno napako tipkovni operater za katerega je vertifikacija avtomatizirana je vidnen v testnem prirocniku izvrsitev prirocnikovega testa vodi do padca zaupanja manual test execution leads to false confidence izvrsitev testa ni prevec zanimivo cloveska narava taka kot je poiskusa izenaciti dovrsenost s silo kar je se najbolj znacilno za zahodno kulturo delamo tako trdo da moramo imeti dobro testiranje programske napake ne ozirajo na clovekov trud testni prirocnik mora biti efektiven cemu bi delali drugace tako trdo zanesljivost zahteva avtomatizirano testiranje dependability requirements demands automated testing sam opravim operacij na disku v dolocenem dnevu enostavno je videti smartdrv s komando na koncu dneva napake pa so zahvaljujoc strojni opremi in operacijskemu sistemu ignorirane napake pa so razumljive v povezavi z doloceno izgubo podatkov ker ce bi morale biti odpravljene bi microsoft moral izdelati testnih motorjev ki bi delovali ur na dan in izvedli testov na sekundo za priblizno miljone let uporabniki so odvisni od nas vse sloni na popolni testni avtomatizaciji tudi z avtomatizacijo uporabnikova odvisnost ne more biti ocenjena clovestvo ne more izvajati brez ciljno testne vzorce ki so potrebni za ocenitev programske opreme kajti ne moremo se obnasati brez ciljno kolikokrat je test zagnan how many times is a test run test je zagnan nestetokrat ce imamo dober test test ki najde programsko napako potem je zagnan nestetokrat vsaj trikrat je zagan da je najden pravi test isti postopek velja pri odkrivanju programske napake in tako naprej do konca ce je testiranje uspesno potem test dvigne povprecje odkritja programskih napak skozi vse programe o tem ni trdne statistike moja izkusnja je z papirnim trakom myler kjer je izvedba avtomatizacije zelo draga krat drazja od normalnega papirnega traka ker normalni papirni trak ne more konstantno ponavljati operacij trakni bralec zahteva okoli do ponovitev vzdrzevanje sveta it's a maintenance world pigo casovni razvoj programskega procesa ni v kreaciji in testiranju nove kode ampak v vzdrzljivosti obstojece kode veliko programskih produktov okoli je vzdrzljivih manj kot kod je modificiranih na tipicni ciklus to je navadno prevedeno v zahtevani komplet obsezen regresiven test napreden test testira nove razlage ali ekvivalenten test testira nespremenjene razlage sta pozrtvovalna koliko stane prirocnikov test what does manual testing realy cost cena prirocnikovega testa je skoraj nedolocljiva ker informacije potrebujejo tocno dolocitev obstoja po tem ko je testne izvedba narejena vendar lahko dolocimo vsebino dela ko vidimo koliko posebnosti je testiranih potrebujemo celotni delovni sestevek ukljucujoc uporabnikove stroske stroske vroce linije in tako naprej ce poteka vse po pravilih so navadno organizacije sokirane nad realnimi stroski testnega prirocnika osnovna orodna oprema a basic tool kit splosno general poglavje ni namenjeno razlagi pregleda na testnim orodjem to bi zavzelo celo knjigo za pregled priporocam naslednje fstc grah daic marc in sqet razvoj orodja poteka tako hitro da je nemogoce knjizno slediti razvoju le te ga namen tega poglavja je postaviti orodja v obetavna in za diskusijo pomembno tehnicno razlago iz katere lahko razberemo komercialna orodja ali razvijemo svoje obseg orodij coverage tools knjiga obravnava testno obnasanje kako lahko vemo da je nase testiranje bilo uspesno testno obnasanje temelji na modelu programske opreme kljucni del pregleda je ta da je model pravilno izrazen v dejanski programski opremi ce smo testirali vse dele nasega modela in smo pozabili testirati kode potem je nas model pomankljiv predlog strukturnega obsega orodja je da nam pokaze objektivno in kvantitativno mero koliko programske opreme smo dejansko testirali mora biti vsak test tehnicno vsebuje decimalni obseg ki je izmerljiv kjer ima tehnika duplikat moramo uporabiti primerno strukturo orodja kjer pa ni strukturnega dvojnika moramo zapisati dolociti kateri test pokriva obstaja zelo veliko virov strukturnega obsega orodja za vec informacij o komercialnem orodju priporocam orodne vodice grah daic marc in sque kontrolni potek obsega control flow coverage najsibkejsa oblika je stanje obsega kode katera je tu neuporabna orodja na trgu merijo kontrolni potek izvornega obsega to pa ni dovolj zagotovljeno bi moralo biti vsaj pokritje te veje v praksi se posebno pri jezikih kot je c jezik ki podpira sestavne napovednike je bil dolgo znan kot gola veja ki je nezadostna in mora biti vsaj enkrat testirana z true in false vrednostjo veliko komercialnih orodij preskrbi vse tri decimalne obsege izvirno kodno stanje izvirno kodno vejo in izvirno pogojno kritje kode kontrolni potek obsega orodja dela avtomaticno prilagojeno izvoru kode v odvisnosti od stanja instrumentov ki je nato izvrsen dokumentu katerega deli in deli programa so bili dejansko testirani zavedati se morate omejitev katere vsa ta dolocena orodja a razlicni kompilatorji different compilers obseg orodij je izrazen ali ustrezen zaradi testa orodja kompilatorja in delujocega kompilatorja ki sta pogosto narejena v razlicnih organizacijah ki se pokazejo kot razlike v projektnih kodah zaradi varnosti se testi ponavljajo b gornja meja obsega upper limit on size obseg orodij je danes omejeno v kodne segmente med in linijami virov kod z narascajocim obsegom pa se pojavljajo tudi vecje verjetnosti pogostejsih napak c pogojne veja stanja conditional branch hadling kompilatorji se razvijajo pocasi in tudi sam razvoj je dolocen to pomeni da je mozno pokriti vse predikatorje true false z moderno optimizacijo kompilatorjev in strojne opreme ne obstaja garancija za resnicnost obsega orodij predikatorji so lahko preverjeni testno vendar ne v praksi d umeten test okolja artificial test enviroment testno orodje po naravi nalaga umetno okolje pravilno obansanje prekinitev zank spomina in mnogo drugih sistemskih operacij delajo v realnosti obnavljanje testov v realnem okolju je premisljeno obseg bloka profil block coverage kako lahko merimo obseg kode za sistem ki vsebuje par miljonov byt ov ob spoznanju da je testni obseg orodja omejen lahko uporabimo obseg blokovnega orodja ali profil profil ne potrdi interpretacijo izvedbe kot normalni obseg orodja ampak je samo zapisan v spomin ki je ali pa ni izvrsen iz prakticnega vidika je dobro zapisovanje stanja izvora in predikator je izveden profili lahko proizvedejo obseg podatkov za posamezne byt e posamezna objektna navodila obseg objekta je lahko narejen za vsako izvajanje v nekaterih primerih so rezultati zelo precizni vendar nevspodbudni zaradi tega ker sistem prezivi vecino svojega casa v lastenem merjenju ta nacin se imenuje determinantni obseg alternativni nacin je primer periodicnega izvajanja to se imenuje statisticni obseg prednost statisticnega obsega je da je test okolja realen in je lahko popravljen analiticno nastala skoda povzroci na tisoce testov da dobi statisticno pomemben izracun dotok podatkov in drugi obsegi orodja data flow and other coverage tools ceprav je dotok podatkov testiran in definiran v mejah testnega obnasanja so tu odgovarjajoci strukturni koncepti in povezave obsega orodij tu so orodja ki merijo vse uporabnike vse definicije vse dele fran horg kore ostr noben od teh ni bil dosegljiv na trgu v letu test izvajanja avtomatizacije test execution automation prva prioriteta mora biti dana izvedbi testa avtomatizacije kajti tudi skromna oblika avtomatizacije proizvaja veliko stevilo testov kateri so brez izvedbe avtomatizacije neuporabni v vecini sistemov in razvoju okolja programske opreme je mozna avtomaticna izvedba testa sto procentna izvedba avtomatizacije je verjetno zazeljena samo pri izgradnji robotov glavni test izvedbe avtomatizacije orodja je v testiranju gonilnika najbolj popularna oblika tega testiranja je v capture playback orodju obicajen vendar napacen prvi pristop an obvious but bad first approach najbolj obicajen prvi pristop pri izvedbi testa avtomatizacije je napisati vec kod napisan je poseben program kjer so znotraj kod vstavljeni vsi testni podatki kriteriji validacije in vse ostalo test gonilnika driver test je sposoben izvesti test avtomatizirano conk holt panz kompletna zagonska datoteka mora imeti razlago test gonilnika je v treh fazah nastavitev izvedba in dokoncnost primerna struktura obsega orodja je lahko del kompleta a nastavitvena faza setup phase vsebuje strojno programsko konfiguracijo kajti drugace ne moremo pognati okolja primerni so strojni in programski elementi zahtevana je nastavitev dostopa do podatkovnih struktur zacetni instrumenti in obseg orodij b izvedbena faza execution phase ponovna nastavitev je za vsak test brez katerega orodje ne more zahtevati avtomatizerane izvedbe orodja za vsak test obremenitev in kontrola inputa c dokoncna faza postmortem phase vsebuje primeren vertificiran kriterijski test testi porocil vsebujejo napake v izjemah primerjava dejanskega rezultata z predikatnim rezultatom je dosezena z uporabo dobre primerjalne metode faze izvedbe podatkov za obseg orodja preverjanje preostanka tudi od produkta fazne kontrole za odstranitev testnih napak zavzetje ponovitev capture playback imenuje se tudi zavzetje ponovitev ali zapis ponovitev tukaj je vec komercialnih zapi ponovitev orodij naprodaj kot katerih koli drugih avtomatiziranih orodij testiral sem zavzetje ponovitev in tudi test izvedbe avtomatizacije kot tudi oblikovni avtomatizerani test ker sluzita v obeh kondenzatorjih to je osnovno orodje in tudi najboljsa pot za dosego prenosa iz rocnega do avtomatizeranega testa zavzetje ponovitveno orodje dela v dveh fazah zavzemna faza in ponovitvena faza v fazi ponovitve je samo test gonilnika faza zavzetja pa je opisana v naslednjem poglavju namen testa avtomatizacije namen testa avtomatizacije test design automation naft cilj tega testa je zmanjsati napor zadovoljitve testnega ustvarjanja obseg ki je ali ni reklamno orodje zdruzeno z razlicnimi tehnicnimi diskusijami v tej knjigi je tertiran v orodju in avtomatizaciji v vsakem poglavju in tu ne bo ponovljen zadostno je reci da vsaka tehnicna diskusija v tej knjigi lahko podpira primerno orodje ali je vsaj materialno podprta zavzetje ponovitev capture playback zavzetje ponovitveno orodje je oblika testa avtomatizacije orodja kajti zavzetje je slucajen input tipkarska napaka in tako dalje in programska opreme odgovori na ta nacin izoblikuje testno besedilo ki lahko dela med ponovitveno fazo zavzetje ponovitveno orodje je lahko enostavno ali dovrseno in lahko zavzame in ponovi vse iz posamezne tipkarske napake od skrata do skrata ki ga prikaze ekran pomembnost zavzetje ponovitev je pogosto najlazja pot za prevod iz rocnega testiranja do avtomatiziranega testiranja zavzetje ponovitev je se mocnejse oblikovno avtomatizirano orodje ko uporabljamo povezavo z tekstnim urediteljem ce pogledamo v serijo testov najdemo najpomembnejse znacilnosti ali inpute ki so identicni iz testa do testa in tu je tudi malo sprememb v inputih in rezultatih od testa do testa mozno je pognati posamezni kompliceran pregled in potem oblikovati testne variante z urejevalnikom ce test izvede odkritje programske napake ga test odpravi z urejevalnikom in lahko smo prepricani da se ne bo pojavil v naslednjem pogonu to je navadno lahko izvedeno za vecino izvedb z testov zavzetje ponovitveno orodje je neuporabno brez urejevalnega testa vecnamenski generatorji multistrategy generators od leta je bilo na trgu samo en vecnamenski test generatorja t idei posamezna strategija generatorja sloni na hevristicnem podrocju testiranj sintaksnega testiranja inputnih kombinacij nakljucnih inputih in drugih dobrih in slabih tehnikah navodilo za prodajno testno izbiranje hints for test vendor selection poglavje je namenjeno vrednotenju orodja in izbiri nekaterih pomembnih stvari ki jih moramo vedeti o vrednotenju orodja in prodaji prehranjevanje s pasjo hrano eating your own dog food izraz sem prvic slisal od microsoft ovega predstavnika roger sherman a ce prodajas pasjo hrano jo moras jesti ker drugace pluvas v lastno skledo ni receno da ti je njen okus vsec vendar pa si preprican v njeno zdravost vprasajte perspektivnega orodnega prodajalca ce uporablja test tudi sam ce se bo ob vprasanju zgrozil odidite ker ce sam ne verjame v lastni produkt kako boste potem vi verjeli vanj kako napasti how it fits testno orodje ne deluje samo razen ce ni testno orodje strnjeno v sioko programsko razvojno okolje in zdruzitveno orodje ter metodologije ne smete ceniti samo dobre lastnosti orodja ampak morate tudi upostevati zadovoljitve ki jih v vasem okolju dosezete z orodjem podpora support ne pricakujte prostovoljne podpore od prodajanega orodja vendar pa lahko kupite podporo za posteno ceno testno orodje je lahko komplicirano posebno se orodje ki sloni na lastni metodi videl sem ze prekinitev prodaje odlicne testne opreme ker so zeleli prodajati samo orodje in ne podpore pri tem pa se niso zavedali da je samo orodje brez podpore nekoristno ne pustite se zapeljati don't entrap yourself podajam vam zalosten vendar resnicen scenarij organizacije investirajo v testno orodje obstaja predanost kvaliteti na vseh ravneh organizaje organizacije so zeljne znanja in polne entuziazma vsak razvijalec in preiskusevalec dobi licencno kopijo orodja leto kasneje se jih vprasa kdo se vedno uporablja orodje kljub zacetnemu navdusenju je koncni rezultat le organizacije se ne zavedajo casa ki je potreben da se naucijo uporabe orodja in osnov ter doseci uporabnost le te ga to knjigo lahko predelate v enem semestru ali pa v intezivnem dnevnem tecaju vendar pa to se ne pomeni da bo brez prakse dosezen uspeh brez prakse metode ne bodo nikoli dosegle pravega pomena pri vasem delu prihodnost testiranja the future of testing splosno v testiranje ne verjamem in tudi nikoli ne bom vendar pa bi rad letel z programsko opremo ki je bila pravilno testirana verjamem v neodvisnost testiranja ne pa v neodvisnost testnih grup v splosnem ne slepim samega sebe cemu ne verjamem v testiranje why and how i don't believe in testing testiranje je nasa zadnja obramba pred programskimi napakami in ne prva v primeru da je programska napaka bila najdena pomeni pomankljivost v nasi dosedanji programski opremi preprecevanje programskih napak je cenejse kot samo odkritje le teh kot preiskusevalci si moramo prizadevati da se postavimo v posel prezentiranja zascitnih metod programskih napak in zgodnjega odkrivanja napak z metodami kot so temeljite analize prototipi analiticni modeli formalne metode in nadzor namen testiranja je v odkritju programske napake pred zacetkom dela ker drugace programske napake ne podlezejo metodam odkritja ko kompilatorji odstranijo sintakticne napake z lista programskih napak bo novo orodje odstranilo dolocene programske napake na podrocju testerjev objektno orientirano programiranje in izpopolnjeni operacijski sistem obljubljata sposobnost odstranjevanja veliko stevilo programskih napak formalne metode lahko zmanjsajo ali odstranijo programske napake vendar pa zaradi nadleznosti in zvijacnosti programskih napak se testiranje se vedno ohranja pricakujem da bodo izboljsave na podrocju testiranja se uspesnejse zakaj in kako ne verjamem v neodvisnost testiranja why and how i don't believe in independent testing glavni del neodvisnega testiranja ni taksen kot smo pricakovali pred leti verjamemo da je takrat bilo neodvisno testiranje upraviceno z objektivnostjo le neodvisna testna skupina je lahko objektivna to je slab argument ki ga ne vidimo v inziniringu potrebujemo neodvisne analize za izgradnjo strukturne oblike ker nasi inzinirji ne morejo izvajati primerne analize zgodovinsko gledano ni bistvo testiranja v njegovi neodvisnosti ampak v prezivetju in zasciti naprav za testiranje vzrok obstoja neodvisnih testnih skupin je v zasciti naprav za testiranje kateri so dobri razlogi za obstoj neodvisne testne skupine zascita naprav za testiranje in oskrba z objektivnostjo to protect testers and provide objectivity pregled skozi to fazo nam pove katere organizacije morajo doseci kvalitetno stopnjo to je se posebej pomembno ce je ukazovalec kvalitete zelo visok neodvisna testna skupina je lahko razresljiva in spuscena v razvoj organizacije kjer je kvaliteta predmet vsakekega poslovanja zunanja podoba testiranja configuration compatibility testing produkti ki morajo delovati na razlicnih nivojih in razlicnih okoljih so lahko v korist neodvisni testni organizaciji za razvijalca so tesko razumljive razlicice programske opreme in siroki specificni problemi zunanjih podob pogostokrat neodvisne testne skupine resijo probleme zunanjih podob vendar te skupine opravljajo razlicne teste kot pa tisti ki jih razvijajo preiskus in proizvodnja testiranja performance and throughput testing za vecino programske opreme ni to najvaznejsi rezultat ker sta preiskus in proizvodnja dolocena z stvarmi ki niso v rokah proizvajalca ampak se nahaja v operacijskem sistemu kjer sta preiskus in proizvodnja pomembna je to najbolje prepustiti specialistom ki imajo podporo analiticnega modela mrezno testiranje network testing to je zelo specializerana oblika in konfiguracija testnega problema programska oprema ki dela v mrezi ima naknadno zapletenost ki zahteva znanje protokolov tako je za razvijalce tezko biti produkt in mrezni ekspert v tem primeru so lahko ucinkovite testne skupine neobicajno je imeti nekaj stopenj mreznega testiranja ki ne morejo biti izvedene v razlicnih organizacijah v koncnem pogledu neodvisno testiranje je zopet drugacno od razvijalcev lokalizacija localization produkti se pojavljajo v razlicnih verzijah za razlicne jezike odvisno za katero dezelo gre ali katero industrijo skupine odgovorne za tako delo prilagajajo neodvisne teste za specificne namene rizicno zmanjsanje in kriticno zivljenje programske opreme risk reduction and life critical software ko jeclovesko zivljenje postalo potencialno za obsezno legalno odkritje napak razumnosti je lahko zacelo narekovati neodvisnim testnim skupinam ker je to edini nacin za zagotovitev objektivnosti kakorkoli testiranje ne sme biti samo nakljucje ponovitev prvotnih testov ampak si mora prizadevati da razisce potencialno nevarne situacije prihodnost testiranja the future of testing moja upanja za testiranje testiranje postalo standardni del razvoja programske opreme se neizobrazenemu kadru izobrazba programerjev nudi tri ravni izobrazbe uvajanje v testiranje introductory testing posrednisko testiranje intermediate testing napredovanje v testiranju advanced testing ohranjanje sozitja med sedanjo programsko opremo in razvojem vedno bolj zapletene programske opreme razvoj programske opreme testnega orodja naj bi zavzelo svoje mesto v industriji testno orodje postalo naj bi del nasega poslovanja lastni preizkus znanja self evaluation quiz definicija zavzetje ponovitev zunanja podoba preizkus zdruzljivosti pravilno vzdrzevanje metricni obseg orodni obseg deterministicna metoda gonilnik izvedbene faze gonilnik dokoncne faze gonilnik nastavitvene faze hranjenje z lastno hrano ustrezno testiranje pocasno vrednotenje lokalizacija vzdrzevanje testiranje mreze napredno vzdrzevanje regresivno testiranje pametne primerjave statisticne metode strukturni obseg testiranje gonilnika proizvodnja testiranja dodatek a obracun davcnih oblik income tax forms oblika izracuna je v tem dodatku bila proizvedena od turbo tax za windows in je bila ponatisnjena z dovoljenjem od intuit inc njen namen je olajsanje pri delu