kontrolni tok testiranja kratka vsebina graf kontrolnega toka vsebuje osnovni model testa uporabimo ga za kreiranje modelov razlienih delov irs form kjer je precej zapleteno delo za testiranje nazadnje se model uporabi za oblikovanje osnovnih povezav testov besednjak vsebuje externe izraze in interne notranje izraze logiene pogoje izrazi zavzamejo logieno vrednost true pravilno ali false napaeno izbrane pogoje izraz nam ponudi vee kot dve mozni alternetivi od katere izberemo eno logieni in izraz a in b morata biti resniena da je izraz a b resnieen logieni ali ta je vedno inkluzivni logieni ne obrne vrednost izraza sestavljeni pogoj in ali ne neodvisni pogoji izbira je neodvisna soodvisni pogoji in dopolnilni del dve izjavi imata razlieni vrednosti ee je ena pravilno je druga napaeno in obratno povezave in model splosno alle clar eber howd krau pete seeisee zaporedje izvajanja korakov se bo izvrsilo ee se bo izvrsil vsak del zaporedja ee ni napak primer form modeliramo lahko na vee naeinov z enkratnim seeiseem ki vsebuje vse objekte po delih seeise a b ali vsakega posebej enter wages salaries tips a enter taxable interest income b enter tax exempt interest income enter divident income enter taxable refunds credits or offsets of state and income taxes enter alimony received enter business income or loss enter capital gain or loss enter other gains and losses graf modelov b a b povezave linki mu sledi primer kaze da za vsako seeisee uporabimo toeno en korak seeisee sledi seeisee seeiseu sledi itd izjavno seeisee seeisee z dvema ali vee izhodi z izjavno vrednostjo to pomeni pravilno napaeno~ za logiene pogoje in ena od moznih alternativ za izbrane pogoje v procesu se izbere le eno od moznih alternativ procesno seeisee b' »check box b« t b f pogojno seeisee »starsi te obravnavajo naslednje seeisee kot odvisnega« v modelu primer ta stavek lahko modeliramo v prikazanem grafu izbirno seeisee to je seeisee z vee kot dvema izhodoma oba z izbirno vrednostjo je izbirno seeisee predstavitev povezav je bolj priroena in kaze vee podrobnosti »standar or itemized deduction « itemized standard goto schedule a line »checked box a or b « true false goto page »checked box c « true false select alternatives single joint return qualified widower separate returns head of household deduction deduction deduction deduction deduction continue with rest of the model povezovalno seeisee seeisee z dvema ali vee povezavami v prejsnjem primeru sta to seeisei in komentar tega modela seeisee je pogojno seeisee uporablja besedo ali~ to ni logieni ali ta pot signalizira izjavo pogoj seeisea je sestavljeni pogoj kjer je inkluzivni ali pogoj je zelo zanimiv ker uporablja besedo toda~ za start pogoja vee podrobnosti modela za to seeisee checked box a true false checked box b true false in se bolj podrobno cecked box a true false cecked box b true false cecked box b false originalni model se izboljsa ker je izpostavljena kompleksnost sestavljenih pogojev in bomo najbrz odkrili vee tezav prva izboljsava modela je lahko slepilo za napake saj je ta naklonjena pogojem seeisea drugi model je boljsi bolj celovit in predvidevamo da boljse odkriva napake pogoj za linijo c je sestavljen in ali ali je inkluzivni ker ti ponudi tri moznosti eden od izbranih vrednosti seeisea je skrit pod ali~ ni logieni ali to je pot prikazovanja vzporednih povezav in dodani izbranih vrenosti seeisee in sta vsebovani v modelu z posebnimi zakonitostmi lahko bi vsebovali neke podrobnosti vendar jih ne ker je za seeisee ze doloeeno da gre na seznam a kateri bo vstopil iz vee razlienih mest model seeisea smo izbrali na isti naein seeisea in niso temeljnega pomena lahko si proces predstavljamo brez njih kot sledi »standard or itemized deduction « itemized goto sched a l standard »checked box a or b « true goto page false »checked box c « true ded false select alternatives single ded join return ded widower ded separate returns ded head household ded continue with rest of the model ta model je ekvivalenten toda ne tako uporaben tezje razumljiv in povezave so preobremenjene z informacijo bolje je uporabiti vee seeise in povezav zaradi jasnosti ta model ne prevzame nie iz programa ki izvaja ta proces modeliranje sestavljenih pogojev sestavljeni pogoji so varljivi ker skrivajo kompleksnost so pa dobri za testiranje vedno lahko odkrijete skrite sestavljene pogoje za primer a b ali c naredimo drevo pogojev z vsemi moznimi vejami za dva pogoja stiri veje za tri osem vej in za n pomoznih pogojev vej graf predstavlja prvi korak t c f b t a c f t b c f c t f vrstni red pogojev ni pomemben naslednji korak je da povezemo izhid primera pravilno~ z seeiseem pravilno~ in izhod primera napaeno~ z seeiseem napaeno~ samo seeisee z sestavljenim pogojem a in b ali c zamenjamo z vee podrobnostmi modela in to nam pokaze vse pogojne dele mogoee mislite da je zgornji c odveeen ker se ne glede na vrednost pogoja vedno konea na pravilno~ pogoj ni odveeen ker bo deloval le ee ne bo napak v izvajanju le s testiranjem vseh primerov se bomo preprieali da ni napak lahko se tudi ognete testiranju vendar je to dobro le tedaj kadar menimo da je testiranje slabo in bi zgresili veliko napak naslednja moznost modeliranja je uporaba tabele namesto drevesa uporabimo posamezno seeisee za sestavljeni pogoj in naredimo notacijo vseh primerov v tabeli katere testiramo ponavadi uporabimo tabelo za sestavljene pogoje z vee kot tremi pogoji pozor ne pozabi na moznost da ima tvoj model napake naein izvajanja splosno namen testa in izvrsitev je sestavljena iz sledeeih korakov raziskati potrebo in jo analizirati biti mora toeno doloeena do vseh podrobnosti prepisimo specifikacijo kot zaporedje kratkih stavkov posebno pozornost posvetimo pogojem razbijte sestavljene pogoje na zaporedje preprostih glejte na izbrana seeisea in dokumente kot preprost spisek prenesi vse in e ki niso del pogojev namesto tega prekinite stavke na sredi stevilo stavkov je unikatno to bo vase ime seeisea zgradite model preverite model vase delo je kot programerjevo nagnjeno k napakam izberite testno pot izberite obeutljivo testno pot to je taka da ee ni napak se program za izbrane vhodne vrednosti do konca izvrsi napovejte in posnemite prieakovane rezultate za vsak test definirajte potrjene kriterije za vsak test izvedite teste potrdite izhode potrdite pot gradnja modela kot primer za ilustracijo bomo uporabili linije od do od irs form originalna specifikacija je dodatek a ja za lazjo pot bomo vsak korak komentirali korak raziskati potrebo in jo potrditi ni veliko za narediti ker prieakujemo da bo to naredil irs je to jalovo upanje korak prepisimo specifikacijo jaz sem jo prepisal uporabljajoe svojo osebno kodo z uporabe le te je stanje jasno uporabljam povezovalni spisek notacijo ker je tako lazje risem majhne grafe da se preprieam da pravilno uporabljam pogoje opisal bom neka moznosti da boste videli kaj sem mislil veliki grafi te zbegajo medtem ko ti srednji in mali grafi pomagajo videti logieno pravilnost a input adjusted gross income a a set checkmark count to zero a a if or older a if not or older a a increment checkmark count a a if blind a if not blind a a increment checkmark count a a if spouse is or older logieno je model precej zapleten ee bi bil nas model za ves potem bi bil v soodnosu z vrsticami upostevajoe polnenje stanja v realnem modelu bo drugaee pogojna izjava bo imela prednost pred naslednjo ki sprasuje se odloeimo za poroko ali ostanemo samec z otrokom ~ ee je odgovor pravilno~ izvrsite seeisea a do a sicer preskoeite na seeisee a da bi model obdrzali v neki razumni velikosti bomo ignorirali realnost in predvidevali da to n bo vplivalo na delo a if spouse is not or older a a increment checkmark count a a if spouse is blind a if spouse is not blind a a increment checkmark count seeisee a je odveeen ker se zanasamo na ukaz checkmark count radi bi se preprieali da imamo vsaj eno seeisee za vsako navedbo v specifikaciji b b if your parents can claim you predicate node c parents can't claim you b c check box b c c married file separately sestavljeni pogoj ee se boste drzali instrukcij irs boste nasli veliko logienih modelov tu je model razelenjen do komponent moznih je vee podobnih modelov na grafu sem eno stvar zgresil pozabil sem moznost loeitve s soprogom ki ni naveden toda ima dvojni status torej moram iti nazaj in dodati pogojno seeisee c zopet mi je pomagala skica c c not married file separately c c spouse does not itemizes c spouse itemizes c c dual status alien not dual status alien c check box c c not dual status alien c dual status alien did you itemize did not itemize seeisee ponuja zelo zanimivo situacijo izgleda kot da je seeisee vendar ni tak primer imenujemo transakcijski razcep poglavje ee sledimo navodilom moramo sedaj narediti dvoje kalkulacij za standardno in podrobno sklepanje use schedule a line did not check box a did check box a checked box b did not check box kaj pa oseba ki je stara ali vee in ali slepa in eigar starsi ali kdorkoli lahko zahtevajo odvisnost je to vsebovano v modelu standard deduction from instructions checked box c did not check box c standard deduction single head of household married filing join return married filing separately standard deduction standard deduction standard deduction standard deduction dummy node for clarity standard greater than itemized standard not greater than itemized use standard use itemized substract line from line line line exemptions from instructions line line greater than zero zero enter zero on line tax table povrsno pogledano izgleda kot pet medsebojno povezanih moznosti spisek taks b stopnja razporeda taks c razpored d d form ali e form ee pogledamo slednji dve vidimo da sta lahko dodatna dva vhoda in priblizno prve tri opcije to je primer kreacije uporabnega modela za ta primer ki ga tretiramo kot pet loeenih opcij tax rate schedule schedule c form form s tu bi morali vstaviti v vsoto forme ker mora vsak otrok imeti polje v katerega vnasa obresti in dividende tax from tax table tax from tax rate schedule tax from schedule c tax from form tax from form s additional taxes from form no additional taxes from form enter zero form tax enter zero additional taxes for line additional taxes from form no additional taxes from form add taxes from form to line na ta naein sem torej modeliral zato ker se mi zdi da so takse lahko v obliki form ali ali obeh take stvari niso nikoli oeitne in jih moramo raziskati do nothing add lines and grizljivo gradnja modela navidezno preproste specifikacije vzame veliko easa vsi komentarji skice grafi toda to ni slaba poteza nekdo vam je kasneje lahko hvalezen z vajo in izkusnjami boste kasneje to opravili v dveh ali treh urah razen ee ne boste delali veliko raziskav notacijo sem spremenil po svoje graf na strani ima format node name action node name predicate value kasnejsi format pa node name node name action or predicate value coment povezave so boljse v slednji notaciji medtem ko je prva blizja originalu ni pomembno kakse format uporabljate izberite enega ki ima vse potrebne podatke in vam je vsee in se ga drzite se en vzrok da to ni programiranje ker nisem uporablal strukturne konstrukcije je moj model poln goto jev in podobnih reei danes je vse omejeno toeno na strukturno konstrukcijo jaz imam rad goto je in druge druge nestrukturne reei ker sem s specifikacijo blizje naravnemu jeziku veeina naravnih jezikov je nestrukturnih ee se prevee drzimo dreves if then elses lahko ustvarimo polno napak izbira testne poti splosno z zmanjsanjem stevila testov nie ne pridobimo bolje je poiskusiti veekrat za prejsnji primer bi zadostovalo testov lahko pa jih naredimo tudi vee ee testiramo bolj direktno izbira poti in obeutljivosti sta pogosto opravljeni hkrati pot gradimo po segmentih zaeensi z vstopi seeise in nadaljujemo do izhodov vsak segment zaenemo v toeki kjer se kontrolni tok razide in nadaljujemo dokler se zopet ne zdruzi primer a a a c pot gradimo v tem vrstnem redu z kombinacijo poprej izbranih segmentov lahko kombinirate pot le ee je v segmentu enojno seeisee za vsak pogoj postavimo izbiro pravilno napaeno kar razcepi pot ki jo gradimo za seeisei in a ni izbire vsi nasi testi se morajo zaeeti z a prvi pogoj je pri a tu lahko izberemo med pravilno napaeno kar nas pripelje do dveh vej testa a a a t a a a a a f a naslednji pogoj je pri a slep ta je neodvisen od prejsnjega pogoja a ali vee torej se zopet pot razcepi vendar ni potrebno dodajati teste za sedaj bomo rekli da so pravilni primeri v a in napaeni v a dobimo a a a t a a t a a a a a f a f a v seeiseu a sprasujemo ee je soprog star ali hitrejsi in v a ee je slep ko gledamo te prve stiri pogoje opazimo da je skupno moznih poti ee bi zeleli bi lahko stestirali vseh kombinacij toda to bi bila slaba poteza poskusali bi testirati maloverjetne napake samo dve poti sta potrebni doseei povezavo za seeisei in b katero bomo vzeli vsaka je dobra pot od do b steje od nie do stiri meni je vsee ideja o testiranju logike v kateri je soprog slep in nad a a a t a a t a a t a a t a a b a a a f a f a f a f a b naslednji pogoj je b prvie sem naredil napako in sedaj imam problem nisem gledal dovolj naprej da bi videl da bo ta pogoj blokiral oeeta v segmentu dve moznosti za ta segment sta b b t b c in b b f c ne morem predvidevati katera kombinacija se bo blokirala kasneje zato sem skreiral stiri moznosti kasneje bomo brisali nepotrebne poti sledi b a a a t a a t a a t a a t a a b t b c b a a a t a a t a a t a a t a a b f c b a a a f a f a f a f a b t c b a a a f a f a f a f a b f c naslednji segment je c v tem segmentu je pet moznih poti in vse potrebujemo za povezavo to so c c f c t c c c t c t c c c t c f c t c c c f c f c c t c f c f hiter pregled je priporoeljiv jaz gledam stiri pogoje c c c in c po prejsnji listi da se preprieam da se pojavita za vsak pogoj oba t~ in f~ pravilno napaeno v samem segmentu testa c b a a a t a a t a a t a a t a a b t b c f c t c c b a a a t a a t a a t a a t a a b t b c t c t c c b a a a t a a t a a t a a t a a b t b c t c f c t c c b a a a t a a t a a t a a t a a b t b c f c f c b a a a t a a t a a t a a t a a b t b c t c f c f c b a a a t a a t a a t a a t a a b f c f c t c c b a a a t a a t a a t a a t a a b f c t c c b a a a t a a t a a t a a t a a b f c f c t c c b a a a t a a t a a t a a t a a b f c f c f c b a a a t a a t a a t a a t a a b f c t c f c f c b a a a f a f a f a f a b t b c f c t c c b a a a f a f a f a f a b t b c t c t c c b a a a f a f a f a f a b t b c t c f c t c c b a a a f a f a f a f a b t b c f c f c b a a a f a f a f a f a b t b c t c f c f c b a a a f a f a f a f a b f c f c t c c b a a a f a f a f a f a b f c t c t c c b a a a f a f a f a f a b f c t c f c t c c b a a a f a f a f a f a b f c f c f c b a a a f a f a f a f a b f c t c f c f za seeisee skozi obstaja osem moznih poti d t d f t d f f t d f f f t d f f f f single d f f f f head d f f f f joint d f f f f separate ee nadaljujemo z kombinacijami bomo dobili primerov kombinacij z osmimi od skupno primerov za proueitev poti bomo izloeili z odstranjevanjem kombinacij ki ne morejo biti izloeene zaradi taksnih ali drugaenih utemeljitev skreirana je bila tabela imi vrsticami in osmimi stolpci v vrsticah nastopajo vrednosti od c b a do c b a v stolpcih pa od d do d a napaka na preseeiseu pomeni da podroeje oziroma skatla ni bila preverjena zato ta pot ne more potekati skozi preseeisee c v tem primeru procesor najde katero podroeje vsebuje c to so primeri c c in c ti ne morejo biti kombinirani z d in d b nasprotno prava pot na preseeiseu pomeni da je bilo podroeje c pregledano kar pomeni da pot lahko poteka skozi preseeisee c zaradi tega d ne moremo kombinirati z c in c a ee je bilo podroeje b preverjeno potem ne more zavzeti napaene poti skozi preseeisee v tem primeru vrednosti d in d ne moreta biti izkljueeni ee je bilo izloeeno preseeisee b b nasprotno ee podroeje b b ni preverjeno prava pot ne more potekati skozi preseeisee d in ne more biti kombinirano z nobeno potjo ki poteka skozi b a ee je podroeje a preverjeno potem sta lahko vrednosti d in d izloeeni podroeje a je preverjeno v preseeiseih a a a in a podroeje a ne more biti kombinirano z d in d b nasprotno ee podroeje a ni preverjeno potem tudi podroeje d ne more biti uporabljeno a podroeja od c b a do c b a s preseeiseem c ne morejo biti v kombinaciji z d b nasprotno pa c ali c ne moreta biti kombinirana z d podroeja c t c ne morejo biti kombinirana z podroeji d ali d s tem sicer nismo pridobili veliko vendar pa smo izloeili od skupno moznosti a primeri z c f c in c ne morejo biti kombinirani z t d na ta naein smo izloeili se osem moznosti b zaradi nasprotujoeih razlogov podroeje c ne more biti kombinirano z podroeji d in d segment d d d d d d d d c b a xxxx xxxx xxxx xxxx xxxx xxxx c b a xxxx xxxx xxxx xxxx xxxx xxxx xxxx c b a xxxx xxxx xxxx xxxx xxxx xxxx xxxx c b a xxxx xxxx xxxx xxxx xxxx xxxx c b a xxxx xxxx xxxx xxxx xxxx xxxx xxxx c b a xxxx xxxx xxxx xxxx xxxx xxxx c b a xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx c b a xxxx xxxx xxxx xxxx xxxx xxxx c b a xxxx xxxx xxxx xxxx xxxx xxxx xxxx c b a xxxx xxxx xxxx xxxx xxxx xxxx c b a xxxx xxxx xxxx xxxx xxxx xxxx xxxx c b a xxxx xxxx xxxx xxxx xxxx xxxx c b a xxxx xxxx xxxx xxxx xxxx xxxx xxxx c b a xxxx xxxx xxxx xxxx xxxx xxxx c b a xxxx xxxx xxxx xxxx xxxx xxxx xxxx c b a xxxx xxxx xxxx xxxx xxxx xxxx c a b xxxx xxxx xxxx xxxx xxxx xxxx c b a xxxx xxxx xxxx xxxx xxxx xxxx xxxx c b a xxxx xxxx xxxx xxxx c b a xxxx xxxx xxxx xxxx xxxx xxxx xxxx zdaj lahko nadaljujemo z generiranjem poti ee pogledamo v neoznaeena podroeja v tabeli vidimo da ni nobenih moznost za d d d in d ta podroeja morajo biti kombinirana posamezno z c b a c b a c b a in c b a d c b a a a f a f a f a f a b f c f c f f f f f single d c b a a a f a f a f a f a b f c f c f f f f f head d c b a a a f a f a f a f a b f c f c f f f f f joint d c b a a a f a f a f a f a b f c t c f c f f f f f separate tako imamo tri moznosti za d mi bomo vzeli moznost c d c b a a a f a f a f a f a b f c f c t c f f f t v tej toeki smo ze vkljueili a b c c d d in d d se lahko kombinira le z kombinacijama b a d c b a a a f a f a f a f a b t c t c f c t c f f t zdaj moramo vkljueiti a c d in d d ne moremo kombinirati z c zato ga moramo kombinirati z c b a d c b a a a a t a a t a a t a a b f c t c f c t c f t in koneno lahko zakljueimo z d c b a a a t a a t a f a t a a t a a b t b c f c t c t ko imate moznosti kot sta d in d izberite kombinacijo ki temelji na eni od naslednjih kriterijev pogostost okvare kako tezko je kombinacijo analizirati koliko raziskav je potrebno za odstranitev problemov oziroma tezav za vajo napravite izbiro poti skozi seeisee do do seeisea imamo osem preizkusenj preseeisee bo testirano enkrat preseeisee dvakrat preseeisee pa ne bo testirano moj eas za selekcijo poti je bil sedem ur mogoee sem sam bolj izkusen kot vi vendar pa tudi vi ne bi smeli imeti prevelikih tezav tudi sami bi morali biti sposobni delo opraviti v priblizno enakem easu obeutljivost splosno obeutljivost iskanje izhodnih vrednosti ki bodo povzroeile izbiro poti v modelu obeutljivost procedure je odvisna od predpostavk ki pripadajo doloeeni poti v primeru da so predpostavke veeinoma logiene kot so bile v prejsnjem poglavju se obeutljivost in selekcija poti izvajata hkrati do drugaene procedure pride v primeru ko so predpostavke numeriene znanje aplikacij je bolj pomembno kot obeutljivost algoritmov ee imate probleme z obeutljivostjo poti je verjetno da imate enega od naslednjih problemov a pot je nedosegljiva b model ima napake c specifikacija ima napake preverite ali imate kaksno od teh napak se preden zapravite nekaj ur nepotrebnega dela logiena obeutljivost to je pregled kaj smo morali narediti za izbiro poti razdeli model na podroeja ki se zaenejo in koneajo z enim preseeiseem v primeru so podane vrednosti a a a a a a b b c c preveri podroeja in predikacije ki so med seboj povezane oziroma podobne to poeni z dvema podroejema na enkrat naredi seznam podroeij ki imajo podobne predikacije napravi seznam moznih podpoti za vsako podroeje ki ne vsebuje zanke vzemi katerakoli dva podroeja z povezanimi predpostavkami tudi ee te povezave niso neposredne s tem da zaenes s pari podroeij ki imajo identiene predpostavke s pomoejo protislovja je potrebno izloeiti nedosegljive poti predvidimo da so predpostavke v prvem podroeju pravilne v drugem pa napaene nato predpostavite da so prve predpostavke napaene in izloeite podpoti v drugem podroeju kjer so predpostavke pravilne nadaljujte toeko z zdruzevanjem poti in izloeevanjem kombinacij ko boste zdruzevali podroeja se bodo kreirala veeja podroeja zdaj imate niz veejih podroeij ki so med seboj nepovezana kar pomeni da lahko izberete podpot kateregakoli podroeja neodvisno od drugih podroeij zdruzujte podroeja z kombiniranjem poti in razvrseanjem razumnih kombinacij vedi da se stevilo testov ne poveeuje s tem ko zdruzujes podroeja nadaljujte dokler ne koneate celotnega niza poti obeutljivost ne bi smela biti samo enosmerna pojdite po poti ko dosezete predpostavko specificirajte vhodne podatke ki bodo predpostavke oznaeile z napaenim ali pravilnim mogoee boste morali pri tem uporabiti tehnike ki so predstavljene v naslednjem poglavju obeutljivost algebre obrazlozitev predpostavk predpostavka je obrazlozena ko je izrazena v smislu vhodnih vrednosti obrazlozitev je specifiena za posamezno pot primer za to poglavje je seznam delovnih plose za razpored a linije glej dodatek a model ki ga obravnavamo ni popolen ampak vsebuje samo preseeisea ki jih bomo upostevali input al input al input al input al input al input al input al input al w al al al al al al al al input al input al g w al al al al g w al al al al al al al al al al al al g w al al al al al al al al g if w if al al al al al al al al g drugi primer predpostavk predstavlja razlago le teh ker je obeutljivost izvedena za posamezno pot smo zadnji stavek lahko preertali izbrali bomo pot ki se izloea v desetem stavku postopek nadaljujemo po modelu if al al al al al al al al g al al al al al al al al g input al if separate if joint w w w w w al if w if w if al w al if al al al al al al al al al g if al al al al al al al al al g wl al al al al al al al al g wl al al al al al al al al al al al al al al al al g razlozene oblike predpostavko navedene poti so al al al al al al al al g separate returns al ta primer je enostaven ker so tri predpostavke popolnoma samostojne kar je v splosnem redek pojav ponavadi vidimo vhodne vrednosti ki se pojavijo v veeih predpostavkah kar je zelo pomembno je tudi da v praksi sreeas veliko vee pogojev kot jih je bilo prikazanih v primerih eden od pogojev za vhodne vrednosti je tudi ta da morajo biti vhodne vrednosti veeje ali pa vsaj enake nie naslednja pomembna toeka pri obeutljivosti je poiskati niz vhodnih vrednosti ki bodo zadovoljile predpostavke za izbrano pot v zadnjem primeru je pot preprosta al al al al al al al al g separate returns al v najslabsem primeru bomo morali resiti niz enaeb da bomo prisli do vrednosti ki izrazajo obeutljivost ponavadi je to samo odvisno od izbire vhodnih vrednosti pri prvih razlozenih predpostavkah za primer si predstavljajte niz razlozenih predpostavk ki bi bile primerne za izbrano pot al al al al al al al al al al al al al al vedeti morate da so neenakosti urejene tako da vse potekajo v isti smeri najprej izberite vrednosti za katerokoli vhodno spremenjivko s katero se boste resili enaeb v nasem primeru je to vrednost al nato to vrednost zamenjajte z drugo formulo al al al al al al al al al al al vrednost al lahko poveeujemo toliko easa da bo veeje od al to storimo na naslednji naein al al al al al al al al al al al al al al ko poenostavimo in zdruzimo dobimo al al al al al al al al ko zdruzimo ti dve enaebi dobimo al al al al al al vse enaebe smo zdruzili v eno samo enaebo kjer lahko sami izberemo vrednosti ponavadi lahko izvedemo obeutljivost brez raeunjanja enaeb tako da uporabimo matrike naslednji pristop pri resevanju problema je uporaba lotus ki problem resi na lep naein se vee ta naein dovoljuje uporabo kombinacije logienih in algeberskih predpostavk izhodne predpostavke naslednji korak pri testiranju so izhodne predpostavke za vsako izbrano pot obstojeei testi priblizno programskega razvoja se danes uporablja za vzdrzevanje veeina testov in programskega dela se izvaja na popravilu obstojeee programske opreme to pomeni da se vee kot sedanjih testov ne razlikuje od prejsnjih verzij stari programi veeina starih programov ne potrebuje celotne prenove tako da lahko stari programi sluzijo kot ogrodje sistema prejsnje verzije eeprav se je sistem predpisov oziroma koda nekoliko spremenila dajo stare verzije se vedno zadovoljive rezultate za veeino testov v najslabsem primeru bodo spremembe zajele le nekaj komponent prototipi in modeli programov mozno je zgraditi dovolj podroben prototip s katerim bomo zagotovili prieakovane izhodne vrednosti slabe strani prototipov pa se izkazejo v tem da so le ti pogosto prepoeasni preveliki ali pa ne morejo delovati v doloeenih specifienih razmerah ee ne morete izdelati podrobnega prototipa poskusajte narediti model programa to ni isto kot programiranje dejanskega programa ker tu ne skrbite za doloeene probleme kot so dostop do baze podatkov vhodi izhodi je pa izdelava modela programa zelo smoterna in sluzi kot ogrodje pravega programa delujoei programi v resnici lahko pri testiranju uporabite tudi delujoei program ki vam sluzi kot ogrodje sistema ponavadi pa je vendarle lazje preverjati vrednosti z simulacijo samega raeunalnika to se posebej pride do izraza ee lahko preverimo srednje vrednosti preverjanje poti preverjaje poti je potrebno zaradi moznosti nakljuenih napak potrebno je povedati da je preverjanje poti v ernih skatlah tezje ker tu testiranja temeljijo na opazovanju obnasanja modelov edini naein s katerim se lahko preveri obnasanje poti je pregled pravilnosti srednjih vrednosti predvsem pa tistih ki koneajo v kontrolnih predpostavkah pri preverjanju poti ni potrebno preveriti vsak raeun oziroma formulo v veeini modelov ki smo jih obravnavali smo velikodusno dodajali povezave in preseeisea da smo dosegli jasnost modela tako npr v modelu na strani preseeisea in sploh niso bistvena za sam model graf ki sledi to samo potrjuje t f chk box a t instructions f chk box b t f single chk box c t head f joint separate vsak del preseeisea ki ne predstavlja niti stik preseeisea niti predpostavko je lahko zamenjan s posameznim preseeiseem ta primer je precej enostaven vse kar morate preveriti je ali je posamezna vrednost povezave na izbrani poti enaka vrednosti same povezave primer med seeisei bi lahko bilo veliko raeunanja v tem primeru lahko preverimo samo posamezno vrednost da ugotovimo ali je bila povezava preekana ali ne proueevanje aplikacij pokazatelji aplikacij kontrolni testi obnasanja se nanasajo in vplivajo na skoraj vso programsko opremo to je osnovna tehnika njihova uporabnost se izkaze predvsem na manjsih programih ki so sestavni deli kaksnih veejih programov predvidevanje okvar veeina napak se pokaze kot kontrolne napake kar pomeni da le te lahko odkrijemo z ustreznim kontrolnim testiranjem pogosto mislimo da so napake ki smo jih odkrili pri testiranju direktno povezane z kontrolnimi predpostavkami tak primer je npr uporaba znaka namesto vse te raeunalniske napake so lahko odkrite s to tehniko vendar pa ta ni najboljsa boljsa naeina za odkrivanje napak sta domain testing in data flow testing avtomatizacija in sredstva sama klasiena testiranja niso podprta z nobenimi sredstvi kar pa ne bi mogli trditi za testiranja struktur ta sredstva lahko izkoristite z dejanjskim programiranjem modelov v programskih jezikih kot so c pascal ali basic kaksen je namen modela vsekakor model ni isto kot samo testiranje dejanskega programa to je program ki mora biti testiran z mnogimi orodji testiranje modela ne moremo enaeiti z realno programsko opremo eeprav je to dejansko njegova naloga toda tu se pojavi se vprasanje eiseenja in preverjanja testov model se uporablja kot orodje za oblikovanje testov ki bodo pomagali pri izbiri poti in pa kot orodje za realno programsko opremo v primeru da naredite delujoei model lahko uporabite za testiranje komercialna testna orodja kar vam bo pri delu moeno pomagalo kratek povzetek testiranje obnasanj je bilo prikazano kot osnovni model black box testiranja to je osnova za vsa druga testiranja testiranja se zaenejo z oblikovanjem kontrolnih grafov pri vsem tem je pomembno da model razdelite na posamezna podroeja ki se zaenejo in koneajo z posameznimi preseeisei in kazejo katere predpostavke so povezane s posameznimi podroeji v modelu izberite dovolj poti tako da v modelu zagotovite povezave skozi celotno delo ne pozabite moznost napak zato sodelujte z programerji in preverjajte vmesne rezultate predpostavkam dajte visoko prioriteto vendar pa ne dajte vee kot ene vrednosti na posamezno povezavo v grafu povzetek zaneno testiranje je hevristiena tehnika ki naj bi se uporabljala v zvezi z mnogimi drugimi testnimi metodami ker kot kazejo izkosnje zanke mnogokrat spremljajo napake tehnike obravnavane v tem poglavju se uporabljajo kadar so zanke v grafu kot graf kontrolnega toka graf prenosnega toka ali sintaktieni graf slovar zanka ponavljajoe proces repetativen iterativen del grafienega modela ki ima zanko to je ponavljajoee ime vozla na najmanj eni poti zaneni stevec stevec ponovitev zanke kolikokrat se zanka ponovi ne mesajte te vrednosti s koneno vrednostjo kontrolno zanene spremenljivke ee le ta obstaja zamenjava teh dveh vrednosti je obieajen vir napak deterministiena zanka zanka katere iteracijski stevec je znan pred izvajanjem zanke nedeterministiena zanka zanka katere iteracijski stevec ni znan pred izvajanjem zanke ali zanka katere iteracijski stevec je doloeen v sami zanki zaneni kontrolni vozel vozel z vsaj dvema vezema enkrat se bo zanka izvedla drugie ne vozel » « v grfu je zaneni kontrolni vozel zaneni izhodni vozel vozel ki predstavlja pogoj z vsaj eno vrednostjo ki bo povzroeila da se vozel ne bo izvedel zanka ima lahko vee izhodnih vozlev zaneni vhodni vozel vozel skozi katerega se vstopi v zanko zanka ima lahko vee takih vozlev zaneni kontrolni pogoj pogoj v zanenem kontrolnem vozlu katerega vrednost doloea ali se bo zanka izvedla ali ne zanena kontrolna spremenljivka katera koli vrednost v zanenem kontrolnem pogoju ki bo vplivala ali se bo zanka izvedla ali ne pred testna zanka zanka v kateri je zaneni kontrolni pogoj doloeen ze pred izvedbo zanke proces ni procesa po testna zanka zanka v kateri je zaneni kontrolni pogoj doloeen po izvedbi zanke ni procesa proces mesana testna zanka zanka v kateri je zaneni kontrolni pogoj lahko doloeen pred ali po izvedbi zanke proces proces vgnezdene zanke dve ali vee zank ki so vgnezdene ee je ena cela zanka v celoti vsebovana v drugi zanki relacije in model splosno black box testiranja skrbijo za obnasanje modela ne za njegovo strukturo nasi so modeli obnasanja ki lahko ali pa tudi ne ustrezajo zankam programske opreme ki jo testiramo ee gledamo prevee nataneno v programsko opremo da bi izvedeli kaksna je zanka lahko naredimo isto napako kot jo je naredil programer v sledeeih zanenih modelih boste opazili da ne uporabljamo strukturiranih programskih konstrukcij kot for in while ampak eksplicitne predikacije in goto opravka imamo z modeli ne s kodo strukturiranih zanenih konstrukcij ne uporabljamo zato ker imajo prevee balasta ki pa je odvisen od programskega jezika veasih celo od prevajalnika to velja predvsem v primerih pred po in mesanih testnih zankah ta balast pripelje do napak v kodi in testnem designu relacije v teh modelih si »toeno sledijo« stvari bodo ilustrirane v modelih kontrolnega toka zaneno testiranje velja tudi za mnoge druge modele npr sintaktieno testiranje kjer so kljub temu da so objekti in relacije drugaeni testni principi enaki deterministiene zanke v teh zankah je stevilo ponovitev zanke znano ze pred izvedbo prvega stavka v zanki in tu ni nobenega procesa v zanki ki bi povzroeil da bi se stevilo ponovitev spremenilo loop control nmax loop process loop control nmax loop control loop control loop control nmax continue with the rest of the model to je primer po testne zanke spremenljivka loop control je lahko uporabljena v procesu ni pa misljeno da bi se njena vrednost v procesu spremenila vozel » « je vhodno zaneni vozel vozel » « pa je izhodni in kontrolni zaneni vozel zanena kontrolna spremenljivka je loop control katere maksimalna vrednost je proces pa se izvede x sledi deterministiena zanka s pred testom loop control nmax loop control nmax loop control nmax loop process loop control loop control continue with the rest of the model naslednji primer je mesana testna zanka loop control nmax processing loop control nmax loop control nmax b processing loop control loop control continue with the rest of the model vrednost zanene kontrolne sprenemljivke je za a in b proces razliena mesanih testnih zank naj bi se izogibali v specifikacijah modelih in v programski opremi ker so podvrzene napakam en razlog za strukturirane zanene konstrukte je izogibanje napakam ki nastanejo v mesano testnih zankah v gradnji modelov se trudite uporabljati eiste pred ali po testne zanke in uporabite mesane ee so zahtevane ee so mesane testne zanke zahtevane morajo biti zaradi potencialnih napak nataneno stestirane deterministiene zanke naj bi se uporabljale v vseh naslednjih primerih kjer je ze vnaprej znano stevilo ponovitev zanke kopiranje datotek z znanim stevilom zapisov procesiranje plaeilnih list dodajanje stolpca stevil polnenje polja s stevili prenos datoteke z znano dolzino nedeterministiene zanke nedeterministiene zanke se razlikujejo od deterministienih ker je stevilo ponovitev zanke tu neznano dokler se zanka ne izvede obstajajo tri poti vrednost je neznana procesiranje v zanki spremeni zaneno kontrolno spremenljivko ee obstaja pogoj znan v zanki povzroei da se zanka predeasno zakljuei read next record process record not end of file eof eof cintinue with rest of model v zgornjem grafu ne vemo koliko zapisov ima datoteka zato se proces nadaljuje vse dokler zapis ne dobi vrednosti eof ta primer pa ima nekaj pomanjklivosti ee datoteka vsebuje samo eof zapis se bo procesiranje izvedlo z verjetno napaenimi rezultati ee pa datoteka sploh nima zapisov se bo zanka neprestano izvajala loop control nmax loop control nmax loop control nmax loop process loop control loop control int rand loop control loop control cintinue with rest of model bistvo pri tem je da ne moremo doloeiti kdaj se bo zanka koneala ee se bo pa eeprav se zdi da se uporablja deterministiena konstrukcija je le ta nedeterministiena loop control nmax loop control nmax loop control nmax loop process field value field value loop control loop control loop control nmax cintinue with rest of model eeprav se zdi zgornji graf deterministiena zanka ta ni ee je vrednost v vozlu » « enaka le ta povzroei da se zanka konea ee vrednost polja ni enaka se zanka ponavlja vse do vrednosti nmax v obeh primerih je zanka deterministiena da se to naredi nam ni potrebno spreminjati zanene kontrolne spremenljivke naslednji graf naredi to brez spreminjanja loop control nmax loop control nmax loop control nmax loop process field value field value loop control loop control cintinue with rest of model procesi z nedeterministienimi zankami vsebujejo sortiranje n polj iskanje datoteke sprejemanje datoteke po komunikacijski liniji resevanje simultanih enaeb spajanje dveh datotek nedeterministiene zanke so bolj podvrzene napakam kot deterministiene zanke in jih je potrebno zato bolj temeljito stestirati v strukturiranih programskih jezikih je for zgradba namenjena deterministienim zankam while in do pa nedeterministienim zankam for zanka ima doloeeno zaneno kontrolno spremenljivko while zanka pa ne ker so for zanke lahko nedeterministiene in while zanke lahko deterministiene veeina programerjev verjame da je razlika zgolj stilska to pa vodi do napak kjer so nedeterministieni procesi izvrseni z deterministienimi konstrukti in obratno oboje pomeni priloznost za napake vgnezdene zanke vgnezdene zanke so problematiene vsebujejo namree obieajne napake posameznih zank in pa tudi napake na katere naletita zanki pri izvrsitvenih pogojih outer loop control outermax inner loop control innermax inner loop process inner loop control innermax inner loop control inner loop control inner loop process outer loop process outer loop count outermax outer loop control outer loop control outer loop count outermax continue with the rest of model nestrukturirane strasne zanke strasne zanke pomeni kadar so skoki iz ali v zanko problem z mesano testnimi zankami je da zaneni vhodni vozel za prvo ponovitev ni isti kot za naslednje ponovitve »strasne zanke« so obieajne v starejsih asemblerskih programih in starejsih programskih jezikih za strasne zanke dobri testi ne obstajajo kako jih obvladujemo je odvisno od kod izhajajo poskusamo jih premodelirati v strukturirane zanke lahko pa so tudi ustrezen model aplikacijskega obnasanje model eloveskega obnasanja primer telefoniranje digit count digit max digit count digit max digit count digit count digit count digit max exit loop get digit go on with model veasih se tej vrsti zank ne moremo izogniti zato pa moramo biti toliko bolj pozorni in take zanke testirati bolj temeljito saj so bolj nagnjene k nepravilnim izvedbam tehnike stroge testne vrednosti preuei splosen deterministieni model loop control strtval itermax upperval loop control itermax loop control itermax loop process loop control loop control increrval continue with the rest of the model v zanki nastopajo tri stevila startval zaeetna vrednost zanene kontrolne spremenljivke upperval konena vrednost zanene kontrolne spremenljivke increval vrednost katera se bo ob vsakem izvajanju zanke odstela od zanene kontrolne spremenljivke stroge testne vrednosti so kombinacija treh stevil ki skusajo pokazati nagnjenost k napakam splosni testi primerni za razliene vrste zank sledijo v naslednjih poglavjih bypass vrednost ki bo povzroeila takojsen izhod iz zanke once vrednost ki bo povzroeila da se bo zanka izvedla toeno x twice vrednost ki bo povzroeila da se bo zanka izvedla toeno x typical tipieno stevilo ponovitev maximum maksimalno stevilo dovoljenih ponovitev max zanka se bo izvedla x vee kot dovoljuje maksimum max zanka se bo izvedla x manj kot dovoljuje maksimum min zahtevani minimum min zanka se bo izvedla x manj kot zahteva minimum null obravnavan spodaj negative obravnavan spodaj govorimo o stevilu ponovitev zanke in ne o vrednosti zanenih kontrolnih spremenljivk na primer for i to step zanka ne bo izvedena x ampak le x zato ker se zanena kontrolna spremenljivka veea za vsakie ko se zanka izvede mnogi prejsnji primeri se lahko prekrivajo ee je minimalna vrednost potem min negative min bypass min once ee je minimalna vrednost min bypass min once min twice null se lahko izkaze ekvivalenten bypass u namesto enajstih prikazanih testov lahko skreiramo le sedem testov ki pa temeljijo na povezavah deterministiene zanke obdelujemo plaeilno listo programska oprema dovoljuje najmanj enega in najvee zaposlenih po danih podatkih smo dobili bypass ni zaposlenih once en zaposlen twice dva zaposlena typical zaposlenih maximum zaposlenih max zaposlenih max zaposlenih min en zaposlen redundaneni primer min ni zaposlenih redundaneni primer null ni zaposlenih redundaneni primer negative negativno stevilo zaposlenih nekateri primeri zasluzijo vee pozornosti bypass ni zaposlenih takih primerov naj ne bi bilo programska oprema ne zmore takega podatka paket za izraeun plaeilne liste naj bi uporabljale razliene organizacije podatki o zaposlenih se niso vpisani ne prieakujemo da bi programska oprema procesiral plaeilne liste za namisljene zaposlene ko testiramo nismo plaeani da bi bili prijazni ali razumevajoei ali celo senzibilni nastaviti moramo vse mozne situacije in prieakujemo lahko da se bo programska oprema primerno odzvala pri zaposlenih se plaeilna lista ne bo izvajala once en zaposlen pogledamo za posebno prazno plaeilno listo podvojeno ali da se bo izraeunala le plaeilna lista twice dva zaposlena pogosto odkritje predvsem v mesanih testnih zankah manjka drugi zaposleni dve plaeilni listi za drugega zaposlenega typical neugodno za odkrivanje napak ee pa testiranja ne opravimo bomo delezni kritik pri iskanju napak je redko ueinkovito vendar poslovno pametno maximum vsi testi ki vsebujejo maksimum so dragi posebno ee so tu se vgnezdene zanke ee je podatkov mnogo in programer vnaprej vidi zeljo po testiranju bo skreiral moznost spreminjanja maksimuma testiranja maximum isto kot pri bypass u ne prieakujemo da bi se program procesiral x vee kot imamo maksimum to pa se lahko pojavi slueajno ali pa namerno negative ee vnesemo stevilo zaposlenih in s tem pozenemo proces program pa lahko iz dobrih ali slabih namenov zavrne vnos kar pa nujno ne pomeni da se proces ni izvedel ker so te napake poljubne in neobeutljive moramo uporabljati prav take teste nedeterministiene zanke iseemo datoteko neznane dolzine v doloeenem polju ki je lahko kjer koli v datoteki ali pa je sploh ni imamo dva rezultata velikost datoteke in kje v datoteki se polje lahko najde dva pogoja nadzorujeta obnasanje zanke ena isee in raziskuje naslednji zapis druga pa povzroei da se po najdenem polju zanka zakljuei prvo opravimo z velikostjo datoteke potem pa se s tem kje v datoteki je bilo polje najdeno bypass datoteka brez zapisov zeljeno polje ne more biti najdeno once datoteka iz enega polja twice datoteka iz dveh polj typical datotek iz desetih polj maximum uredimo da je maksimalna dolzina datoteke ki jo testiramo polj maximum datoteka iz petdesetih polj maximum datoteka iz enainpetdesetih polj moje mnenje za primere max za programsko opremo ni misljeno da bi operirala z vee kot zapisi ee je to res nedeterministiena zanka je dolzina datoteke znana sele ko se odkrije zapis eof ee se zanka odvija na tak naein ni prave poti da bi prepreeili zapisov dolgo datoteko nasprotno ee je predolga datoteka zavrnjena ze pred procesiranjem mora biti dolzina datoteke znana in zanka v resnici ni deterministiena samo toeka v kateri bo procesiranje zapustilo zanko ni znana maksimalna vrednost neznana in nerazpoznavna ni nieesar kar bi oviralo maksimalno vrednost uporabiti moramo max predeasno prenehanje imamo pomembno deterministieno zanko ki se lahko predeasno prekine kje pa je neznano max nima pomena lahko pa pomaga da najdemo zeljeni podatek na zadnjem zapisu procesiranje kontrolne spremenljivke lahko se pojavi v deterministienih kot tudi v nedeterministienih zankah stevilo zapisov je znano delamo nakljuene kontrole na vsakih zapisov s tem pa pridemo za konec datoteke potem poskusimo se z max primeri vgnezdene zanke vgnezdene zanke bi morale biti testirane kot samostojne zanke notranjo zanko nastavimo na tipiene vrednosti in jo pozenemo skozi kritiene toeke glede na zunanjo zanko nato pa se obratno notranjo zanko testiramo s kombinacijo testov bypass zero null one two in max za notranjo zanko zunanjo pa s bypass zero null one two in max za zunanjo zanko vse skupaj pomeni testov cenitev aplikacije indikatorji aplikcije testiral naj bi se vsak graf z zankami z izjemo finite state machine grafov ki vsebujejo prevee zank in domain testing kjer naredijo zanke model neueinkovit predpostavljnje napak opazujemo le empirieno kjer se ponavljajoei procesi tezko pravilno pozenejo in se tezje ustavijo omejitve in opomini napake zank se veeinoma pojavijo nizje stopenjski programski opremi mnogo napak bo odkril operacijski sistem ali prevajalnik avtomatizacija in orodje ne potrebujemo nobenega posebnega orodja povzetek zaneno testiranje je hevristiena tehnika ki temelji na izkusnjah programerjev z napakami zank tehnike testiranja opisane v tem poglavju so ueinkovite za veeino modelov z zankami vrednosti z testiranje temeljijo na stevilu ponovitev zanke min min min typical max max in max in kombinacijah teh vrednosti