testiranje toka podatkov pregled graf toka podatkov znacilnost metodologije oblikovanja programske opreme ima uporabno vrednost pri testnem oblikovanju slovar definicija objekta objekt je definiran ko ima dodeljeno novo vrednost je inicializiran oblikovan ali namescen ne pomesajte imena objekta ali lokacije spomina ki vsebuje njegovo vrednost z razlicnimi moznimi definicijami tega objekta preobremenjenost ime spremenljivke je preobremenjeno kadar jr uporabljena za razlicne definicije spremenljivke skozi cel program pri programiranju je glavna korist preobremenjenosti da prihrani del spomina v racunalniku spominska kapaciteta v testnih modelih ni ucunkovita preobremenjenost ker je zapletena in nicesar ne prihrani zahtevana izjava stavek v programskem jeziku vsebuje predpostavke ki so ovrednotene med potekom programa ce je predpostavka ustrezna se izvajanje nadaljuje neprekinjeno ce pa predpostavka ni ustrezna se lahko zgodi nekaj od nastetega kontrolo prevzame modul za manipuliranje z izjavami in ce doticna izjava ni sprejemljiva se program ustavi in kontrolo prevzame program za odkrivanje napak izjave ponavadi preverjajo povezave med vrednostmi spremenljivk kot npr x ali x y z izjave so ucinkoviti pripomocki za testiranje uporaba racunanja z objektom racunamo kadar ga uporabljamo za racunanje vrednosti drugega objekta uporaba predpostavke objekt ima predikatno uporabo kadar se uporablja kot predpostavka predpostavke x y in z so prikazane na primeru if x y z v nekaterih jezikih objekt lahko uporablja predpostavko in racunanje simultano ker je racunanje lahko vsebovano v predpostavki vendar nima pomena kreirati modele s simultano predpostavko in uporabo racunanja za testiranje delovanja programa razen ce je zapletenost prednost predpostavke v izjavah nimajo predikatne uporabne ker izjave ponavadi ne vplivajo na potek procesiranja ali izhodne vrednosti uporaba objekt je uporabljan ce je uporabljen v predpostavki in racunu vhodna tocka je vnosna tocka grafa pretoka podatkov pri katerem podatki vstopajo ime vstopnega objekta v tocko je ponavadi napisano v tocki sami ali pa pred tocko toda s konvencijami pravila je lahko doloceno da je napisano tudi na povezavah ki gredo iz te tocke primer konstante lahko jih obravnavamo kot vhodne podatke in se lahko oblikujejo kot vhodna tocka veliko napak nastane zaradi uporabe napacne konstante napacne vrednosti konstante ali popravljanja vrednosti konstant med racunanjem izhodna tocka je tocka grafa toka podatkov pri katerem podatki izstopajo shranitvena tocka je par tock za isti podatkovni objekt shranitvena tocka definira vrednost shranjenih spremenljivk npr na disku povratna fetch tocka definira vrednost spremenljivke v spominu shranitvene tocke so tezje razumljive ker v nadaljnem programiranju ni razvidno katera vrednost spremenljivke je uporabljena ali je to je shranjena vrednost na disku ali v ram u v aplikaciji na mrezi ki si deli datoteke uporabljamo imena kot ram value in disk value ki olajsajo razumljivost tocka procesiranja je tocka z eno ali vec vhodnimi in najmanj eno izhodno povezavo vhodne povezave dolocajo podatkovne objekte izhodne povezave pa racunajo funkcijo teh podatkovnih objektov vrednost povezave v grafih pretoka podatkov so vrednosti objektov povezane s tockami v katerih so te vrednosti izracunane v poenostavljenih grafih pretoka podatkov prikazanih v tej knjigi ima vsaka izhodna povezava tocke enako vrednost podatkovnega objekta v splosni uporabi grafov pretoka podatkov lahko s tocko prikazemo celo vrsto razlicnih izracunavanj in zato imamo lahko vec razlicnih objektov povezanih z izhodnimi povezavami najpogostejsa uporaba je namestitev imen objektov na izhodni povezavi teh tock pri taki uporabi jih neformalno imenujemo vrednosti izhodnih povezav podobno ker so izhodne povezave ene tocke vhodne povezave naslednje tocke jih imenujemo vrednost vhodne povezave predpostavka izbire podatkov je predpostavka katere vrednost se uporabi za izbor ene od vecih spremenljivk npr kazalec na zapis izbere podatkovni objekt na lokaciji zapisa na katerega kaze kazalec vedno imamo predpostavko izbire podatkov za tocko izbire podatkov tocka izbire podatkov je tocka kjer so vhodne povezave nadzorovane preko izbirne predpostavke vrednost izbere podatkovni objekt v povezavah z vhodno povezavo tocka podatkovne izbire racuna posebno funkcijo vrednosti vhodne povezave za uporabo pri izhodni vhodna povezava tocke podatkovne izbire je lahko dolocena s stanjem predpostavke ki izbira to vhodno povezavo kontrolna notranja povezava tocka podatkovne izbire ima lahko vhodno povezavo ki se uporablja izkljucno v predpostavki izbire podatkov splosno pravilo doloca kontrolo vhodnih povezav s crtkanimi crtami v nasem primeru izbira viv lahko temelji na vrednostih vseh vhodnih povezav outlink value max inlink values v tem primeru ni nobene kontrole notranje povezave v nasprotnem primeru pa izbira lahko tmelji na vrednosti kontrolne vhodne povezave ki doloci katera vhodna vrednost se bo uporabila outlink value select control var inlink values graf pretoka podatkov graf je sestavljen iz vhodne izhodne shranitvene tocke tocke podatkovne izbire povezav in lastnosti relacije in model splosno objekti tocke izracunana funkcija vhodnih povezav wages a taxable interest income b tax exempt interest income dividend income taxable refunds alimony received business income or loss other income total income wages taxable intrest income other income tocke od do so viri podatkov od teh tocke a in verjetno izhajajo iz drugega irs obrazca obravnavane bodo kot vnosi da bi imeli obvladljiv primer vrstica je izvrsilna tocka ki je prav tako odvisna od tock b in b katerih racunanje za zdaj prezremo skoraj vsaka vrstica v obrazcu odgovarja podatkovnemu objektu ki je vstopil brez prejsnjega racunanja in prihaja iz druge oblike ali je racunan kot del izvrsevanja obrazca lastnosti tocke tocke oznacimo s funkcijami vhodnih povezav ki jih racunajo to je lahko preprosto kot ime izhoda funkcije npr total income ali dejanske funkcije kot v formuli vrednosti povezave ni bistvenega pomena da dodamo vrednosti povezav ker je ta informacija ze dolocena z vrednostjo tock grafi pretoka podatkov lahko postanejo zasedeni zato je obicajno da oznacimo izhodne povezave z imeni objektov podatkov ki jih predstavljajo ce je tocka tocka izbire podatkov oznaci vhodne povezave z vrednostjo izbirne predpostavke povezane z vsako vhodno povezavo ekvivalenca grafa pretoka kontrole zgradba grafa pretoka kontrole ima enakovredno zgradbo v grafih pretoka podatkov obicajno procesiranje najbolj obicajno procesiranje je doloceno z eno tocko procesiranja brez ozira na vrstni red v katerem se procesiranje izvaja ce pisemo program v obicajnem programskem jeziku moramo izbrati dolocen vrstni red toda ta vrstni red lahko sami izberemo in ni bistvenega pomena za naso nalogo v grafu pretoka podatkov ne uporabljamo urejanja ki ni zahtevano seznam oznacevanja povezav je bolj primeren kot slikovna predstavitev grafa razlaga povezana s povezavo se nanasa na prvo tocko iz tockovnega para to olajsuje pisanje seznama tock in seznama povezav primer other income alimony received a b total ira distribution b taxable amount see your accountant a b taxable amount see your other accountant rental royalties etc farm income or loss unemployment compensation a b social security benefit b taxable social security benefit b tax exempt interest income dividend income other gains and losses from form taxable intrest income business income or loss wages capital gains or loss total income wages taxable intrest income tax exempt interest other income ni pomembno kako preuredimo vrstice v gornjem grafu povezave so dolocene zato vrstni red s katerimi jih zapisemo ne vpliva na procesiranje ali model vkljucili smo tocko b ki na izgled ne spada nikamor irs pa zeli to informacijo tudi ce je ne uporabljamo pri racunanju verjetno jih uporabljajo za racunanje necesa drugega if then else spodaj je predstavljena specifikacija za vrstico irs obrazca if line adjusted gross income is or less multiply by teh total number of exemptions claimed on line e if line is over see teh irs instructions for teh amount to enter spodaj je psevdo koda modela za to operacijo if agi line then line number exemptions else line instructions calculation naprej je predstavljen klasicen graf pretoka kontrole za to operacijo predicate node agi predicate node agi line number exemtions line instructions calculation spremenljivka line ni preobremenjena zakaj spodaj je prikazan graf pretoka podatkov za to operacijo e total number of exemptions k constant value of k constant value of total number of exemptions k adjusted gross income p instructions calculation data selector node if agi k p if agi k s tem modelom nismo zadovoljni ker so kontrole pomesane z racunanjem zapleten model nas lahko zmede zato je bolje ce dodamo nekaj povezav in tock ter stvari bolj razjasnimo iz cesar izhaja sledeci graf pretoka podatkov e total number of exemptions k constant value of total number of exemptions k p instructions calculation k constant value of adjusted gross income selector value data selctor node if agi k selector valule true p if agi k selector value false za primerjavo bi lahko skicirali grafe pretokov modeli pretoka podatkov izgledajo bolj zapleteni kot so v resnici vsebujejo le vec informacij kot jih imamo v modelu pretoka kontrole ker mora vsak podatkovni objekt iz nekod izhajati dobimo tudi dodatne podrobnosti zato dodamo dve tocki k in k zaradi konstante in dodali smo povezavo v prvem modelu pretoka podatkov v drugem modelu ker adjusted gross income mora iz nekod izhajati e povezava za total number of exemtions je bila dodana iz dolocenega razloga ce to dodatno informacijo odstranimo dobimo preprostejsi model kot je model pretoka kontrole total number of exemptions k p instructions calculations data selector node if agi k p if agi k dobro programiranje zahteva da sta konstanti k in k doloceni zgodaj v programu ali shranjeni v tabeli to je mnogo bolje kot zmeda raznovrstnih zneskov to je dobra oblika ker zmanjsuje verjetnost napak v kateri so domnevne vrednosti konstant razlicne dobra oblika programske opreme je pogosto tudi dobra za testno obliko if then if then zgradba v grafih pretoka podatkov je lahko dvoumnega pomena kadar se stanji ne skladata v grafih pretoka kontrole je manj dvoumnosti ker je naslednja izjava ze vsebovana vecina if then zgradb je bolje oblikovanih na nacin if then else kot sledi if predicate is true then x function else x null upostevajmo jasna dolocila kaj se zgodi s podatkovnim objektom ce predpostavka ni ustrezna na primer federal income tax withheld if any is from form s check bolj pravilno je lahko predstavljen s sledeco psevdo kodo in modelom pretoka podatkov paziti moramo na vrednosti kot sta npr nic in null ker ne pomenita isto na zadnjem primeru smo predstavili dve vhodni tocki box check in box uncheck v obeh primerih ima box doloceno vrednost podobno vrednost nic je vrednost null pa nima vrednosti pomeni nedefinirano vrednost poglejmo si naslednji stavek if x then sam joe vemo kaj poceti s spremenljivko sam ce je x ampak kaj ce je x obstajata dve moznosti lahko da sam nima vrednosti in je kreiran tukaj lahko pa obstaja kaksna prejsnja vrednost sam izracunana nekje drugje v grafu pretoka podatkov prva moznost ni tezavna zapisemo jo kot if x then sam joe else sam null tudi druga moznost ni tezavna in jo lahko zapisemo if x sam joe else sam old sam value in ponovno ne potrebujemo dvoumnega if then tezava pa lahko nastane ce se sam racuna na vec mestih katero vrednost naj uporabimo pri dolocilu false dobro vprasanje ki nima lahkega odgovora zgradba if then ni dvoumna v grafu pretoka kontrole ker te vrste grafi imajo dolocen vrstni red ponavadi v takih primerih ze obstaja vrednost v taki situaciji v grafih pretoka podatkov ki nimajo dolocenega vrstnega reda je vrednost dvoumna to je tudi glavni razlog da se if then zgradb cim bolj izogibamo ce je dvoumnost v modelu pride pri programiranju zelo rado do napak primer if then zgradbe z psevdo kode ta psevdo koda ni dvoumna v primeru ce vemo da okenca niso bila oznacena ker ne moremo biti prepricani da je koda brez napak bi bil boljsi model programerji bi lahko ugovarjali zaradi nepotrebne kompleksnosti ki ne jamci da bo koda vsebovala manj napak poleg tega tudi ni strukturirana tu gre za model ki poskusa biti nedvoumen tudi ce to terja vecjo zapletenost model pretoka podatkov za te akcije bi izgledal mogoce izgleda kot zapleten model vendar ni saj je definiranih pet razlicnih izhodov pri testiranju programa katerega namen je izvedba tega procesa moramo preveriti da je pravilno okence oznaceno kakor tudi da ostala okenca niso oznacena obenem pa mora biti oznaceno samo eno okence case selector ta zgradba v grafih pretoka podatkov je nadgrajevanja if then else zgradbe model pretoka podatkov za vrstico je vrstica predstavlja case selector odlocili smo se za uporabo spremenljivke filing status za prikaz predpostavke izbire saj so na ta nacin napisana navodila irs a ce bi se navodila nanasala na katero od okenc v vrsticah od do ki je bilo oznaceno bi kreirali spremenljivko box number v modelu vrstic od katerih vrednost bi postavili na stevilko ki bi odgovarjala oznacenemu okencu potem bi uporabili to vrednost za nadzor nad predpostavko izbire v vrstici okrajsave in bliznjice ne pozabimo da se ukvarjamo z modeli in ne s programsko opremo diagrami pretoka podatkov ki se uporabljajo v obliki so kreirani z razlicnimi nivoji podrobnosti na enak nacin bi morali biti kreirani modeli pretoka podatkov ki se uporabljajo v testni obliki npr ko delamo z datoteko lahko profitiramo ce imamo veliko razlicnih nivojev podrobnosti in veliko razlicnih modelov pretoka podatkov nivo datoteke obravnava celo datoteko kot en podatkovni objekt usmerjen je na operacije ki se ticejo cele datoteke in operacij med datotekami npr open odpri close zapri copy kopiraj compare primerjaj rename preimenuj delete izbrisi move premakni transmit prenesi merge spoji extract naredi izvlecek create oblikuj nivo zapisa ko pridemo skozi teste na nivoju datoteke smo lahko prepricani da imamo pravo datoteko pomembno je dobiti pravi zapis iz modela nivoja zapisa zanimive operacije potekajo vzporedno z nivojem datoteke add record dodaj zapis delete record brisi zapis copy record kopiraj zapis find record najdi zapis extract naredi izvlecek zapisa compare primerjaj zapis move premakni zapis nivo polja uposteva posamezna polja zapisa mozno je vec nivojev upostevajmo insert field vstavi polje remove field premakni polje change field value spremeni vrednost polja copy value kopiraj vrednost polja count fields prestej polja nivo procesiranja vcasih lahko zdruzimo nivo procesiranja z nivojem polja vendar to ni nujno v primeru ce so operacije na poljih ali je katera od operacij v procesiranju zapletena model procesiranja je lahko kreiran z vecimi nivoji podrobnosti skupine podatkov ce to zahteva aplikacija lahko grupiramo podatkovne objekte ki se procesirajo na podoben nacin tudi ce si niso povezani iz vidika aplikacije to lahko pomaga pri izdelavi modelov za veckratno uporabo to pomeni da je isti model lahko uporabljen za vec razlicnih vecinoma nepovezanih delov aplikacije ponovna uporaba pomeni dobro programiranje in je tudi uporabna testna oblika dobro programiranje za oblikovanje poenostavi proces modeliranja ker so oblikovalci vpeljaji hierarhijo v pretok podatkov kar se odraza v njihovem sodelovanju v procesiranju ce delimo modele na razlicne nivoje moramo oblikovati nove podatkovne objekte za razlicno specifikacijo potrebno jih je natancno definirati kot pri programiranju njihove atribute definicije itd ko so definirane psevdo spremenljivke postanejo spremenljivke za uporabo na visjem nivoju modela pretoka podatkov ko oblikujemo in uporabljamo skrajsane metode ne programiramo ali spreminjamo zahtev ampak delamo temelj ki je potreben za dobro testno organizacijo ce je aplikacija zapletena lahko pricakujemo da bodo testi podobni ce programska oprema vsebuje hierarhicno strukturo locevanje in komponente ki jih lahko veckrat uporabimo je test ustrezen vecina metod ki so dobre za oblikovanje programa so prav tako uporabne v testnem oblikovanju veliko vecja je moznost da naredimo slabo programsko opremo kot dobro ce hocemo uporabljati nestrukturirano testno oblikovanje da bi nasli napake smo predpostavili da je koda pravilna in oblika dobro strukturirana z uporabo strukturiranega modela povecujemo verjetnost da bo pozitivno testiranje pokrilo zahteve imamo tudi manj pristransko serijo preizkusov po kateri ustvarjamo negativne preizkuse na primer z locevanjem testiranja nivoja datoteke in nivoja polja je razvidno da obstaja moznost umazanih testov v katerih so ti nivoji pomesani oblike umazanih testov so bolj ozkoglede predstavljajo manj napak in lazje ocenjujejo delo delitev mesani pretok kontrole pretok podatkov zanke delitev graf pretoka podatkov ne vsebuje mnogo nebistvenih delitev ki so dolocene s programskim jezikom in racunalnisko strojno opremo toda nekatere delitve so se vedno bistvene in nekatere informacije o delitvi so primerne imamo stiri skupne vrste zaporednosti ki se lahko pojavijo v grafu pretoka podatkov primernost vendar ne bistvenost bistvenost sinhronizacija ponavljanje primernost ampak ne bistvenost imamo zaporedje operacij ki racunajo vrednosti z vmesnimi vrednostmi rabimo adjusted gross income za izracun davka adjusted gross income je odvisen od total income ki je odvisen od ostalih polj v koncni fazi so ta polja odvisna od vhodnih podatkov zdi se da je taka delitev bistvena vendar ni vsaka vrstica pri vrnitvi davka je lahko teoreticno izrazena direktno z vhodnimi podatki to pa ni primerno ker bi bila v tem primeru vsaka vrstica davcnega obrazca skupek mnozice vhodnih polj ta delitev je primerna ampak ne bistvena ce odstranimo vse primerne zaporednosti iz tipicnega grafa pretoka podatkov potem bi imeli samo vstopne in izstopne tocke kadar vidimo graf pretoka podatkov ki ima tocke med vhodnimi in izhodnimi tockami je treba pregledati te vmesne tocke da dolocimo ce so bistvene ali samo primerne ali lahko poenostavimo graf ali ga naredimo bolj pravilnega z odstranjevanjem nekaterih od teh primernih delitev in da izrazimo izhod bolj direktno z vhodnimi vrednostimi to je nasprotje tega kar smo naredili z vpeljavo psevdo spremenljivk in hierarhicnih delitev v odstavku bistvenost nekatere delitve so bistvene ne moremo berati datoteko preden jo kreiramo ali zapustiti datoteko kadar ni odprta moramo razumeti aplikacijo da vemo ce je delitev v grafu pretoka podatkov bistvena ali ne ne smemo odstraniti bistvenih delitev kajti v tem primeru bi spustili pomembne teste kakor tudi naredili mepotrebne teste sinhronizacija ce obstajajo hkratni procesi npr v mreznih aplikacijah ali deljenih mreznih sistemih tu pride do bistvene delitve problema in sinhronizirje na primer c a b ampak a in b prihajata iz razlicbnihmest rezultat sinhronizacije vodi do petih dodatnih testov ki se nanasajo na tistega ki prvi prispe in katerega bomo obravnavali v poglavju ce je takih primerov veliko model pretoka podatkov ni najboljsi in lahko premislimo o modelu pretoka kontrole ali pretoku transakcije izvrsevanaja namesto tega ponavljanje ce imamo izbirne tocke lahko izhodne vrednosti racunov ponovno uporabljamo v zgodnejsi tocki grafa pretoka podatkov ins tem naredimo zanko proces se ponavlja dokler niso dosezeni koncni pogoji zanke in kako z njimi ravnamo v zvezi z modelom pretoka podatkov je opisanov v delu mesani pretok kontrole in pretoka podatkov modeli pretoka kontrole in pretoka podatkov se ne mesajo dobro vsak model je razlicen izrez realnosti ki se osredotoci na nekate aspekte problema in ignorira ostale model je pot do strukture nasega misljenja z namenom da nas vodi do uporabnih testov ce je model prevec kompliciran nas lahko zmede toda kako naj ravnamo z bistvenimi delitvami brez modela pretoka podatkov tu so nekatere ideje vec kot en model naredimo locena modela pretoka kontrol in pretoka podatkkov vsak nas bo upamo pripeljal do razlicnih testov in s tem ne bo prislo do prevelikega prekrivanja postavimo model pretoka kontrole znotraj modela pretoka podatkov imamo iterativno proceduro v modelu ki jo obvladuje pretok podatkov na primer potrebn je poiskati datoteko da bi prislo do podatkov ki jih potem uporabimo v racunu iskanje datoteke obravnavamo kot samostojno operacijo znotraj modela pretoka podatkov zato uporabimo model pretoka kontrol postavimo model pretoka podatkov znotraj modela pretoka kontrole npr ponavljamo procesiranje na vsakem zapisu datoteke procesiranje modelira graf pretoka podatkov del pretoka podatkov vstavimo v model datoteke ali model pretoka kontrole ali model pretoka izvrsevanja datoteko obravnavamo kot model pretoka kontrol procesiranje pa kot model pretoka podatkov ko smo naredili testni primer nihce ne ve kako smo do njega prisli testni primer se sestoji iz zacetnih pogojev vhodnih podatkov in pricakovanih izhodnih podatkov zanke kakorkoli ze modeliramo problem in katerekoli zanke so bistvene ali ne moramo uporabiti testiranje zank tehnike iz poglavja na sreco nimamo velikokrat opravka z zankami v modelu pretoka podatkov razlikkovati moramo med bistvenimi in nebistvenimi zankami do nebistvenih zank pride zaradi narave programskega jezika ce bi radi dodali dva zapisa bi v vecini programskih jezikov to naredili z zanko zanka je nebistvena ker to lahko v paralelnem racunalniku naredimo to istocasno vecina zank ki jih najdemo v programski opremi so nebistvene bistvene zanke izvrsijo ponovne ali potencialne neskoncne procedure resevanje enacbe s ponavljocim procesom tak kot je newton raphsonova iteracija je dober primer iskanje in sortiranje datotek katerih dolzina je neomejena je naslednji primer vecina nedolocljivih zank je bistvenih v primeru bistvenih zank ki niso zelo komplicirane je najboljsi in najlazji nacin za vkljucitev zanke v model pretoka podatkov ta da zanko razvijemo pri modelu za trenutek ignorirajmo razliko med grafom pretoka kontrole in grafom pretoka podatkov tu je ponavljalni proces ki je odvisen od vhodne spremenljivke a b in c izracuna funkcijo x vsebuje pa tudi znacni stevec i ko smo izracunali prvi podatek x gre program do tock ki se imenujejo zanke kjer se odlocimo za nadaljevanje oz izhod iz programa kontrolna predpostavka je lahko funkcija x ali i ali oboje potrebujemo zacetno vrednost za x ker je izracun v tocki x odvisen od predhode vrednosti x to smo imenovali zacetna vrednost x potrebujemo tudi zacetno vrednost za ponoven racun l ne vemo ce koda resnicno vsebuje te zacetne vrednosti kot doloceni konstanti toda po logiki obstajajo izkusnje nam pravijo da so napake zacetnih vrednosti relativno pogoste prvi model me moti ni tako podatkovno pretocen podatkovno kot hocemo da je obstaja kompleksnost ki je skrita v tocki loop v kateri je najbolj pomembno kako so bile dolocene zacetne vrednosti naslednji model je bolj razumljiv dodali smo dve tocki za izbiro med zacetnimi vrednostimi x in i postavili smo tudi kontrolno povezavo med i in x da pokazemo kako program lahko izbira med zacetno vrednostjo x in sledeco vrednostjo x za primer lahko je izjava modela if i then pick xelse pick x v resnicnem primeru bi imeli vec informacij o pogojih za koncanje zank ter bi vecino tega razbili v tocke pretoka podatkov pogoj za prenehanje zanke lahko temelji na razliki med prehodno in sedanjo vrednostjo x in primerjano z majhno konstanto epsilon v sledecem modelu smo zanko dvakrat razvili tocka x izvede zacetno kalkulacijo osnovano na zacetni vrednosti x in l tocka x izracunava funkcijo ki temelji na konstantah a b in c z uporavo nove vrednosti x in i funkcija za x verjetno ni ista kot funkcija za x zaradi zacetnosti zanka je razvita zopet za tocko x ki ima verjetno isto funkcijo kot x lahko nadaljujemo razvijanje in kreiranje modelov z visjim iterecijskim stetjem ampak to ni dobra ideja kolikokrat naj razvijamo dvakrat to nam daje tri modele enega ki se ustavi pri x enega ki se ustavi pri x in enega ki se ustavi pri x to so trije loceni modeli kjer moramo razmisliti treh stvareh izhod po enem prehodu zanke izhod po drugem prehodu zanke pri testiranju zank z modelom pretoka podatkov nas najbolj skrbi moznost napak pri inicializaciji ali uporabi napacnih vrednosti iz prejsnje iteracije na primer tocka x namesto da uporabimo vrednost x programer uporabi x ali vrednost x obe teorija in praksa kazeta da eden ali dva prehoda cez zanko verjetno najdeta vse take napake tehnika splosno testna oblika in izvrsitev sta enaka kot model pretoka kontrol z nekaj manjsimi razlikami ki izhajajo iz grafa pretoka podatkov veckrat kot iz grafa pretoka kontrol v nadaljevanju predvidevamo da nimamo nobenih zank vedno preverite specifikacijo dolocite vhodne spremenljivke posebaj konstante vsako vhodno spremenljivko poimenujte in ji dolocite vhodno tocko ponovno napisite specifikacijo v enem stavku za funkcijo ki bo racunana nastejte funkcije zacnite s tistimi ki se nanasajo na vhodne spremenljivke potem nastejte funkcije ki so odvisne od vhodnih spremenljivk in od izhodov funkcij ki smo jih nasteli v cetrtem koraku nadaljujte z nastevanjem funkcij dokler ne obdelate vseh morali bi imeti seznam funkcij ki se nanasajo samo na vhodne spremenjivke na zacetku seznama ko pa se premikate po seznamu navzdol so funkcije vse bolj odvisne od vmesnega racunanja strogo urejanje je nasmiselno in nepotrebno preglejte vmesne funkcije funkcije ki se nanasajo na vhodne spremenljivke in izhodne spremenljivke ali na druge funkcije in preglejte ce je zaporedje bistveno ali le primerno ce je bistveno oznacite to tocko in tocke od katerih je to bistveno zaporedje odvisno ce ni bistveno lahko model poenostavimo tako da odstranimo vmesne tocke in izrazimo funkcijo direktno glede na vhodne spremenljivke ce izracunana funkcija ne postane bolj kompkeksna potem lahko odstranimo tocke in povezave model lahko poenostavimo tako da dodamo vmesne tocke za kompleksno racune da to naredis moras preveriti da je tvoja vmesna kalkulacija pravilna ce se da z prilagoditvijo izvorne kode in z dodajanjem trditvenega stavka sedaj imas serijo tock vsaka ima ime kjer vsaka predstavlja nacin procesiranja ki je za posameznika konceptualno najlazji izracun ali funkcija povezana z vsako ticko spremenljivke v tej funkciji poimenujejo tocke s katerimi je ta tocka povezana to so povezave s tem imamo model preverite model in delo nadaljujte z modelom pretoka kontrol obstajajo nekatere razlike v podrobnostih ki jih bomo videli v seledecih odstavkih najprej pa potrebujemo definicije podgraf to je del grafa ki se prilagaja pravilom grafa to so vhodne in izhodne tocke brez visecih povezav in nepovezanih tock izsek je podgraf grafa izbranega grede na dolocene kriterije glede na te kriterije ima podgraf vse lastnosti celotnega grafa za izbrane tocke in povezave weis weis ker imamo mnogo kriterijev imamo tudi mnogo razlicnih izsekov izsek pretoka podatkov pretok podatkov se nanasa na podatkovne objekte v nasem primeru ponavdi na izhodne tocke na splosno se izsek pretoka podatkov nanasa na dan objekt in podgraf pretoka podatkov ki je sestavljen iz vseh pretokov podatkov do katerih lahko pridemo iz te tocke ce se izsek nanasa na izhodno tocko potem vsebuje vse tocke ki lahko vplivajo na vrednost tega izhoda izberite testno pot to v bistvu niso poti ampak so izseki opisite izsek napovejte in zapisite pricakovan rezultat definirajte kriterij potrditve vertification za vsak test izvrsite teste potrdite rezultate vrednosti tock potrdite vrednosti vmesnih tock porocanje o hirearhiji clar rapp rapp schl weis weyu weiu a tehnologija testa pretoka podatkov je mocnejsa od tehnologije pretoka kontrole podatkov pravimo da je mocnejsa ker je sposobna izslediti vec napak so tudi bolj zmogljivi v pogledu v katerem nammodel pomaga kreirati vse teste ki so mozni pri testiranju pretoka kontrol nato pa samo nekatere zmogljivost pa vsekakor ni zastonj za bolj uspesna testiranja moramo narediti vec imamo vec dela z oblikovanjem testa pa tudi s preverjanjem rezultatov testa obstajajo boljse metode testiranja ki jih uporabljamo za grafe pretoka podatkov zajemanje vhodov izhodov vsako izhodno tocko upostevamo posamicno graf pretokov podatkov ima eno izhodno tocko za vsak izhodni podatek za vsako izhodno tocko uporabljamo serijo vhodnih vrednosti ki vplivajo na izhodne vrednosti pokaze se ocitna slabost te tehnike res je da zajamemo vhodne izhodne in verjetno nekaj vmesnih tock toda ce obstoja samo ena izbirna predpostavka bomo poskrbeli da je uporabljena samo ena vrednost ostale ne bodo testirane zanesljivost tega je premajhna da bi bil test uporaben vhodi izhodi vse predpostavke uporabiti moramo nekaj boj zmogljivega vztrajati moramo da se vse predpostavke vkljucno s predpostvkami pretoka kontrole za znake in ostalim zaporedjem testirajo z vsemi vednostimi in analogno case predpostavko primer izracunavamo vrednost x vendar je ne uporabimo ker jo kasneje preracunamo brez prejsnje uporabe vrednosti a v tem primeru niso vkljuceni izbiralci selektorji racunanje necesa in potem neuporaba rezultata je verjetno napaka ki lahko skodi drugim vrednostim vendar obstaja dolocena uporabnost nas model temelji na predvidoma pravilni inplemantaciji zahtev vendar testiramo implementacijo ki vsebuje napake vmesno racunanje katerega izhodna vrednost ni uporabljena je verjetno napaka v programu in skusali jo bomo najti ce smo preverili tocke predpostavk pretoka kontrole in izbiralca podatkov smo dobili nekaj boljsega kot testiranje pretoka kontrol zaradi sestavljenega problema vendar ta test ni tako ucinkovit kot testiranje pretoka podatkov delno zajetje tock vse definicije predhodne metode zajemajo nekatere tocke in povezave vendar ne zagotavljajo da bodo zajete vse tocke in povezave cilj nase strategije je vsaj prikazati tocke s katerimi racunamo v nasem modelu to imenujemo strategijo kompletne definicije ker se vsaka izracunana tocka v nasem modelu pretoka podatkov nanasa n adefinicijo ene spremenljivke vendar to ni zagotovilo za zajetje povezav zato to strategijo ne moremo primerjati z vhodno izhodno predpostavke strategijo oblikovali in izvrsili bomo dovolj testov dokler ne bomo prepricani da je vsaka izracunana tocka bila podvrzena testu potem bomo odgovorni za potrditev vmesnih izracunov kajti testiranje vsake izracunske tocke povzroci njeno potrditev vse tocke naslednji korak je zagotovitev zajetja vseh ne samo izracunskih tock to je strozji predpis kajti zagotavlja da so vse izbirne tocke in tocke pretoka kontrole zajete skupaj z izracskimitockami test ne zagotavlja npr da smo preverili vse moznosti za izbiralca in predpostavke pretoka kontrole potrebujemo nekaj mocnejsega zajetje povezav naslednji logicni korak je zajetje vseh povezav v grafu pretoka podatkov to odgovarja strategiji all uses kadarkoli se izvrsi izracun preverimo uporabo rezultata v procesih ki sledijo to seveda vkljucuje tudi vse vmesne izracune in ne samo koncne s tem se ne preverimo vsake mozne izvedbe programa ne preveri niti vseh nacinov pri katerih se definicija lahko uporabi kot ponarejena vse uporabe zanke obstajajo tudi ostale strategije testiranja pretoka podatkov ki jih tukaj ne bomo obravnavali v nasih modelih pretoka podatkov se bomo skusali izogniti uporabi zank vendar to vedno ni mogoce v primeru da imamo zanke razvijemo model in prilagodimo teste s tem da zajamemo povezave v nerazvitem modelu izbira osnovnega izseka imamo nekaj razlicnih situacij da premislimo o izbiri izseka ki je enakovredna za pot pretoka kontrole in diagrama pretoka podatkov kaj bi naredili je odvisno od tega kaj je v grafu pretoka podatkov brez izbiralca brez tock pretoka kontrol in brez zank samo pretok podatkov in izbiralci samo tocke predpodstavk pretoka kontrol predpostavke pretoka kontrol in izbiralci zanke primer pravi pretok podatkov to naredis za vsako tocko izstopa izberi tocko izstopa nato pa najdi vse tocke ki so povezane s to tocko dokler ne prides do vstopnih tock tega modela tako dobis izsek slice izrez razsek pretoka podatkov situacija je prikazana na sliki u u in u so vhodne spremenljivke a b in c pa predstavljajo niz vhodnih spremenljivk srednja mnozica vsebuje tocke racunanja u je odvisen le od vhodne spremenljivke a u je odvisen od vhodnih spremenljivk a in b u pa je odvisen od vhodne spremenljivke c imamo tri nize testov ki ustrezajo u u in u ce nimas izbirnih tock in tick pretoka kontrole potrebujes natanko en primer testa na spremenljivko pri tem pa je treba upostevati da bo vsak izsek slice verjetno obsegal razlicne tocke racunanja v racunski mnozici npr pricakovali bi da se bo izracun u ne bo delno prekrival z u in u u pa se verjetno bo prekrival s tockami racunanja u vendar ne v celoti primer samo pretok podatkov in izbirniki selektorji zacni z izsekom za vsako izhodno spremenljivko ko prides do tocke izbire mora vkljuciti vsak potencialni izbrani dogodek v tem izsekom za rezultat bomo dobili nadizsek saj bo vseboval mnogo alternativ vsak nadizsek nam bo podal niz testnih primerov upostevaj vsak nadizrez posamicno predvidevaj da je samo en izbirnik v izseku izberi vrednost za vsako vrednost izbirne predpostavke nato pa izloci vse pritoke podatkov z nadizsekom ki ne dolocajo te vrednosti izsek zasnovan na u vsebuje tri racunske mnozice niz podatkov a b c in d ter tocko izbire ce izberemo vrednost x ki je odvisna le od niza podatkov a inb izkljucimo niza podatkov c in d in racunsko mnozico y iz izseka nasprotno pa ce izberemo vrednost y izkljucimo niz a in racunsko mnozico x ker se vhodni nizi b c in d uporabljajo za izracun y in s tem tudi u ja v izseku predpostavimo da imamo v danem izseku dva ali vec izbirnih predpostavk tu gre zopet za dva primera ali se razvejajo ali se zdruzijo najprej bomo vzeli prvi primer ki je bolj preprost kjer se izbirni predpostavki razdelita zacnemo z razdelitvijo vseh izbirnih spremenljivk izberemovsako posamicno in dolocimo izseke za to spremenljivko prva izbirna predpostavka razdeli graf na vec izsekov vsak od njih pa bo dal niz testnih dogodkov v diagramu je prikazan izsek za w ki nam da le en testni dohodek in se eden za v ce sledimo v proti vstopni tocki pridemo do druge izbirne tocke ki se ponovno razdeli v dva dogodka in nam s tem da izsek za x ki vsebuje set vstopnih spremenljivk a b inc in se en niz za y ki vsebuje niz spremenljivk b c in d sedaj pa preidimo na zadnji primer v katerem se pretok podatkov zlije skupaj ce vzamemo izsek v na dnu izbirne tocke in sledimo izseku navzgor bomo prisli do naslednje izbirne tocke ki nas pripelje do iste izborne tocke x y kjer sta ponovno na voljo dve izbiri ali nas to pripelje do dodatnih dveh ali samo do enega dogodka to je odvisno od tega kako natancno zelimo testirati ce dolocimo le eno izbiro za w to pomeni samo en izsek x aliy pridemo do enega dodatnega testa bolj natancno in bolj drago testiranje bi zahtevalo uporabo obeh izsekov v tem primeru doda le en test vendar ce je mnogo izbirnikov zbranih v vsakem izseku je lahko razlika pri dostopih dramaticna primer predpostavke pretoka kontrole brez selektorjev ta primer obravnavam o enako kot selektorje zacnemo na dnu z izhodnimi spremenljivkami in oblikujemo izsek vendar obstaja razlika v tocki podatkovnega selektorja gre samo ena vhodna povezava v izsek to pomeni da vsaka vhodna povezava oblikuje nov izsek v tocki pretoka kontrole npr if then else ali case vsaka zunanja povezava izobllikuje nov izsek zato je verjetno lazje narediti izseke pretokov kontrole iz vhodov kot izhodov vendar se ukvarjamo z modeli pretoka podatkov in pretoki kontrole so le obcasni prikaz tega bi izgledal tako u izhod c in c primerjalni mnozici i in i podatkovna vira mnozic c in c ko nadaljujemo z oblikovanjem izsekov pridemo do tocke pretoka kontrole kar pomeni da lahko sledi le ena od dvehmoznosti to pomeni da se moramo odlociti za mnozico c ali c vsaka odlocitev pa sprozi test oba testa potrebujeta izhode iz mnozice b in skupino podatkov i odlocitev po kateri poti bo opravljeno testiranje pretoka kontrole izhaja iz izsekov v zacetni tocki oblikovanje izsekov pretoka kontrole v okviru diagrama pretoka podatkov je bolj zapletneo saj zelimo oblikovati izseke iz izhoda vendar nas prisotnost tock pretoka kontrole prisili da veckrat ponovimo postopek in izlocimo iz izsekov stvari ki smo jih lahko vkljucili ze prej ko se nismo vedeli da obstaja tocka pretoka kontrole preden to naredimo moramo preveriti ce je obstoj pretoka kontrole v modelu nujen v nasem zadnjem primeru ni bil to doloca aplikacija vendar ni pomembno kako je programirana pomemben je obseg v katerem model pravilno razume namen potrebe nic ne mores narediti ce so pretoki kontrole nujni ravno tako tisti ki oznacujejo usklajenoist izbiras lahko med bolj primernimi dobro je ce pametna tocka pretoka kontrole v nasem modelu odstrani podvojene pretoke podatkov slabse pa ce povzroci vecjo zapletenost in tako utezi oblikovanje izsekov primer mesane predpostavke pretokov kontrole in selektorji pretoka podatkov to je kombinacija prejsnjih dveh primerov izogibati se moramo mesanim modelom saj se zlahka zmedemo v nasprotju s programiranjem taksna zmeda ne povzroci napake v programu ampak zaradi nje porabimo vec casa in lahko oblikuje neuporabne ali neizvedljive teste ce imate mesan model s tockami pretoka kontrole in selektorji morate tocno oznaciti vsako vrsto tocke da se izognete ponovnim pregledom pri oblikovanju izsekov primer zanke modeli pretoka podatkov niso dobra osnova za zanke primeren pristop je celotno razvitje za vsak prehod zanke in vstavljanje selektorja podatkov za vsako vrednost ce izberes izvedbo treh primerov moras narediti primer brez zanke z enim prehodom zanke z dvema in s tremi prehodi zanke povecanje obcutljivosti vsak test se ujema z izsekom ce so izseki definirani pravilno potem moramo upostevati samo vhode ce zelimo povecati obcutljivost izseka to naredimo na podoben nacin kot pri pretokih kontrole lahko pa se vam zdi lazje zaceti z izhodi in koncati z vhodi ce v izseku ni nobenih tock pretoka kontrole tudi ni potrebno govoriti o povecanju obcutljivosti katerakoli sprejemljiva vrednost vhoda bo zadostovala ce obstajajo izvajalec in tocke pretoka kontrole dolocite najmanjso in najvecjo vrednost za vsak vhod ce so vrednosti v skupini napisite vse vrednosti posebej nadaljujte navzgor po vejah izseka oznacujte poti ki dosezejo vhode ne da bi sli skozi selektorja pretoka podatkov ali kontrole prezrete lahko te dele izseka saj ni veliko moznosti da bi jih potrebovali toliko casa se pomikajte po poteh da dosezete selektor za katerega ste se pravkar odlocili ta selektor pretoka kontrole ali podatkov vsebuje predpostavko za katero ste pravkar dolocili vrednost glede na izsek ta predpostavka zdaj vpliva na za vse vhodne vrednosti ki jh lahko dosezemo z oblikovanjem izsekov od te tocke naprej dolocite najobseznejso skupino vhodnih vrednosti ki ustrezajo predpostavki nadaljujte tako da vam vsaka nadaljna predpostavka pomeni naslednji izsek ce sta vec kot dve predpostavki na poti do izseka morate uporabiti simultane pogoje in vsaka kasnejsa predpostavka omeji mozne vhodne vrednosti obcutljivos je ponavadi laze povecati za pretoke podatkov saj vsebujejo relativno malo vmesnih tock in ponavadi ne potrebujete interpretacije predpostavk da bi izrazili stvari z izrazi vhodnih vrednosti v tem primeru naredite to na isti nacin kot za pretoke kontrole razlika je le v tem da imate opravka z izseki pretoka podatkov in ne z enojnimi potmi predvidevanje rezultata skoraj nemogoce je narediti model programa ki temelji na modelih pretoka podatkov saj vecina programskih jezikov ni podatkovno pretocna v modelu ne sme biti veliko pretokov kontrole zato je razpredelnica dobra odlocitev pri sestavljanju predvidevanj vsaka celica je ocitna tocka in omogoca direktne povezave pretoka podatkov s formulami v celici razpredelnica omogoca dober pretok podtkov in kot pri grafih pretoka podatkov prisotnost elementov pretoka kontrole povzroca stvari bolj zapletene potrditev poti ne potrebujemo potrditve poti ampak tocke ne dosezete celotne prednosti testiranja pretoka podatkov in ste enako podvrzeni morebitnim nakljucnim napakam ce ne preverite vmesnih izracunavanj vrednosti ali tocke boljse testne tehnike zahtevajo vec dela predvsem s preverjanjem vmesnih izracunavanj zato tudi o njih potrebujete predvidevanja moznost testiranja pomeni zmoznost pregledovanja vmesnih izracunavanj najlazje to naredimo pri trditvah in izredno jasnih izhodih ena prednosti objektno orientiranega programiranja je da s pravilnim skrivanjem informacij zmanjsamo moznost stranskih efektov in se tem dosezemo bolj robosten sistem skrivanje informacij pa ne pomeni da izvajalci testiranj ne smejo imeti dostopa do teh podatkov testiranje je tehten razlog za tako imenovane lastne podatke in nezajemanje skritih informacij ce testirate svojo lastno programsko opremo uporabljajte obilo trditev za testne tocke ce pa testirate programsko opremo koga drugega uporabite vse zmoznosti da ga prepricate da vstavi ustrezne testne tocke ali trditve ki jih lahko uporabite pomembnost aplikacije pokazatelj aplikacije aplikacije zajema skoraj vso programsko opremo ni priporocljivo uporabljati test pretoka podatkov za testiranje nizjih nivojev programske opreme ki ima veliko bistvenih pretokov kontrole nekatere naravne alpikacije vkljucujejo objektno orientirana programska oprema oop je primer pretoka podatkov in grafi pretoka podatkov so pogosto del oop razvojne metodologije ce uporabljate testiranje pretoka podatkov v ta namen morate vedeti da jim lahko zaupate in nadomestite vsakega s tocko nato pa preverite ce ste dobili pravi objekt in pravo sporocilo testiranje zdruzevanja v celoto glavni namen zdruzevanja ni dosezen ce komponente zdruzimo z delom to naj bi se zgodilo med testiranjem enote ampak ce so povezane pravilno in komunicirajo med sabo na pravilen nacin vsaka komponenta je oblikovana glede na tocko in graf pretoka podatkov je lahko klicno drevo call tree programa to je prikladno ker imamo priprave ki nam prikazejo klicno drevo vendar tako drevo ni dovolj ce obstajajo splosne spremenljivke moramo med njih vkljuciti pretoke podatkov razpredelnice razpredelnice so podobne popularnemu jeziku pretoka podatkov razpredelnice ne smemo obravnavati kot nepravo programiranje so zelo realene je za ljudi ki oblikujejo zapletene poslovne aplikacije a imajo malo priprav in tehnik za uporabo pri preverjanju predvidevanje programskih napak vse napake v programu ki jih bomo nasli pri testiranju pretoka kontrole se bodo pokazale tudi pri testiranju pretoka podatkov poskusamo se izogniti nepomembnim pretokom kontrole v modelih pretoka podatkov in predvidevamo da se programerji znajo izogniti preprostim programskim napakam v pretoku kontrole to so xx programske napake v obremenitvi programskih napak beiz kot so zacetna in napacna vrednost podvajevanje in prevzeta imena preobremenjenost napacna vsebina napac en tip posebnosti pretoka podatkov npr datoteka se prej zapre kot odpre omejitve testiranje pretoka podatkov ne bo boljse od vasega modela in model ne bo delujoc dokler se bo pojavljalo naslednje ne najdete manjkajoce zahteve nupravicene znacilnosti lahko najdete le ce se prepricate da ste preverili vsak izhod s testiranjem pretoka podatkov na visjem nivoju intergracije bomo prej odkrili napake testiranje pretokov podatkov lahko izgubi ucinkovitost ce programsko opremo in obliko testa naredi ena in ista oseba manj to vpliva na testiranje pretoka podatkov in testiranje pretoka kontrole saj sta drugacna vzorca sprememba vzorca pa spremeni izgled tudi ce jo izdela ena in ista oseba se vedno ste lahko slepi za nakljucne napake vendar je to veliko lazje opaziti vasi testi niso boljsi od vasih predvidevanj ne boste imeli veliko koristi od testiranja pretoka podatkov ce ne boste nasli nacina za preverjanje vmesnih tock avtomatizacija do leta ni bilo nobenih komercialnih orodij za podporo vedenjskemu testiranju pretoka podatkov sedaj obstaja veliko testnih orodij za podporo strukturiranemu testiranju pretokov podatkov v c in pascal jeziku fran horg kore kore lask ostr ostr wils povzetek testiranje pretoka podatkov je bolj uspesna tehnika kot testiranje pretoka kontrole temelji na definiranju modela pretoka podatkov in ta model uporablja kot osnovo za testno oblikovanje teste oblikujemo z izseki izhodnih tock v vhodne tocke izsekov vec zajemnih enot je definiranih in kot dopolnilo je razvijanje dvojnih zank kot minimum testiranje pretoka transakcij splosno graf pretoka transakcij se uporablja v sistemskem testiranju aplikacij in vecprocesne programske opreme ima atribute pretoka kontrole in podatkov slovar transakcija je enota procesnega dela znak transakcije je oznaka kot npr pika ki opisuje prisotnost transakcije v povezavi modela kontrolni zapis transakcije je hipoteticni ali trenutni zapis ki vsebuje podatke o transakciji ni potrebno da je trenutni zapis ceprav v vecini primerov je izraz zapis transakcije bomo uporabljali kot kontrolni zapis transakcije stanje transakcije predstavlja vrednosti vseh podatkov v kontrolnem zapisu transakcije ali njegovega ekvivalenta vcasih je stanje izrazeno z delom podatkovnega zapisa ki je pogosto celo stevilo tip transakcije je oznacba kot npr celo stevilo ki se uporablja za prepoznavanje razlicnih tipov transakcij izvorna tocka je tocka v modelu grafa pretoka transakcij pri kateri nas transakcija zacne zanimati je vhodna tocka v model grafa pretoka transakcij koncna tocka je tocka v modelu grafa pretoka transakcij pri kateri nas transakcija preneha zanimati je izhodna tocka iz modela grafa pretoka transakcij naloga vsaka naloga je v grafu pretoka transakcij prikazana s tocko tocka na veji je tocka pri kateri vhodna transakcija zavzame eno od vecih alternativnih izhodnih povezav predpostavka na veji je predpostavka ki nadzoruje katera izhodna povezava je v uporabi lahko temelji na vrednostih podatkov transakcij na kontrolnem zapisu transakcije ali je kombinacija tipa in stanja transakcije kontrolna vhodna povezava je vhodna povezava ki kontrolira katero izhodno povezavo tocke bo zavzela transakcija po moznosti neodvisno od vrednosti v zapisu tocka na veji s kontrlno vhodno povezavo je kot zelezniska kretnica predpostavka mora biti povezana s kontrolno vhodno povezavo ki je oznacena s crtkano crto sticiscna tocka transakcija ki vstopa preko katrekoli vhodne povezave v sticiscno tocko se bo pojavila kot izhodna povezava te sticiscne tocke isto velja za sticiscne tocke v grafih pretoka kontrole zacetna tocka je tocka v kateri vhodna transakcija povzroci vec kot eno izhodno transakcijo slika prikazuje kako vhodna transakcija imenovana mati povzroci nastanek transakcije imenovane hci hcerke imajo lastnosti ki jih vsaj delno podedujejo od starsev tocka delitve je tocka pri kateri vhodna transakcija povzroci nastanek vecih izhodnih transakcij in sama preneha obstajati transakcije ki nastanejo niso vedno identicne in imajo svoje lastnosti npr tip in stanje zdruzitvena tocka je tocka pri kateri se dve ali vec vhodnih transakcij zlije v novo izhodno transakcijo vhodne transakcije po zdruzitvi prenehajo obstajati absorpcijska tocka je tocka pri kateri ena od vhodnih transakcij imenovana plenilec vsrka ostale plen markovska tocka je tocka ki temelji na tipu in stanju vhodne transakcije in ne na poti po kateri transakcije dosezejo tocko markovski graf pretoka transakcij je graf pretoka transakcij v katerem za vse tocke velja da so markovske relacije in model splosno objekti tocke so koraki v procesiranju transakcije kot programski koraki vendar ne potrebujejo racunalnikov tocke predstavljajo akcije ki preoblikujejo vhodne transakcije v izhodne in ali spremenijo stanje vhodnih transakcij tocke lahko modelirajo programe pa tudi cloveska dejanja operacije na mrezi tocke imajo lahko svoj model ki je lahko model pretoka kontrole model pretoka podatkov ali kaksen drug ki je uporaben akcija procesne tocke je odvisna od podatkov ki so v zapisu vhodnih transakcij modeli procesiranja transakcij naj bi bili markovski objekti transakcije transakcija je prikazana s kontrolnim zapisom transakcije realnim ali hipotecnim ta zapis vsebuje vsaj tip in stanje transakcije ostale podatke pa vsebuje zapis transakcije interpretacija podatkov v zapisu transakcije ni odvisna od vrednosti v ostalih zapisih transakcij relacije povezav povezujejo tocki a in b s povezavo od a do b ce izhodna transakcija iz a vodi naravnost v b vrednost povezave nic ali vec znakov transakcije je lahko povezanih z eno povezavo vsak znak predstavlja transakcijo oznacevanje oznake skupina vseh znakov in z njimi povezanih stanj na vseh povezavah v dolocenem casu se imenuje oznacba grafa pretoka transakcij oznacba pomeni za graf pretoka transakcije isto kar predstavlja stanje za individualno transakcijo vrste povezava ki je lahko oznacena z vec kot enim znakom predstavlja vrsto to je lahko procesna vrsta lahko pa tudi predstavlja vrsto ljudi eni transakciji sledimo s pomocjo grafa pretoka transakcij ce ne obstajajo zacetna in razdelitvene tocke je to enako oznacevanju poti v grafu pretoka kontrole toda dve stvari to preprosto intrepretacijo zapleteta prisotnost vrste tocke zdruzitve in absorbcije stevilo znakov na vsaki povezavi je lahko neskoncno zato je lahko neskoncno tudi stevilo oznacb idealno bi bilo testirati grafe pretoka transakcij za vsa mozna oznacevanja vendar to skoraj ni mogoce vrste vse prave vrste so omejene to pomeni da imajo doloceno najvecjo zmogljivost sistemi ki niso pravilno testirani se lahko zrusijo ko presezejo to zmogljivost zmogljivost vrste je potrebno testirati ce obstaja vrsta mora tudi obstajati dolocilo vrste pravilo ki doloca vrstni red po katerem se bodo izvajale transakcije v procesu dolocila fifo first in first out transakcija ki prva vstopi v vrsto prva vstopi v proces to je najpreprostejse in najbolj pogosto uporabljeno dolocolo lifo last in first out transakcija ki se zadnja prikljuci vrsti prva vstopi v proces gre za procesno piramido pri kateri je zadnja vhodna transakcija postavljena na njen vrh in potem odstranjena z njega mnozica ko so izpolnjeni doloceni pogoji kot npr stevilo transakcij ali dolocen cas vstopijo v proces vse transakcije v vrsti nove transakcije spet gradijo vrsto med procesiranjem nakljucna strezba strezba se izvaja nakljucno temelji na verjetnostni porazdelitvi nad neko vrednostjo v zapisu kontrole transakcije prednostne vrste obstaja prioriteta za vsako transakcijo lahko je fiksna ali je odvisna od lastnosti transakcije npr starost vsaka prioriteta predstavlja loceno vrsto v okviru prioritete pa se strezba lahko odvija po nacelih fifo lifo mnozicna strezba vrste imajo lahko eno samo ali vec streznih mest poleg individualnegadolocila v vrsti lahko obstaja tudi dolocilo izbora streznika izraz preprosta vrsta bomo uporabljali za eno strezno mesto brez prioritete in fifo vrsto preprosta vrsta je lahko tudi takrat ko dolocolo ni dolocena pomembno je dolocilo fifo v prioritetni vrsti vsaka prioriteta je obravnavana kot fifo vrsta najvisja prioriteta najhitreje vstopi v proces nato naslednja itd ce vrsta ni preprosta se moramo prepricati da je dolocilo prioritet in izbira streznika pravilno doloceno zdruzitev in absorbcija moznost obstoja zdruzitvene in absorbcijske tocke predstavlja veliko novih testnih tezav potrebujemo sinhronizacijski test nove tezave so ali smo zdruzili pravilne tipe transakcij ali dobimo pravi izhod transakcije za absorpcijo plenilca in za zdruzitev hcer ce zelimo zdruziti transakciji a in b je potrebno testirati pet dodatnih moznosti a a pride v tocko b nikoli a b b pride v tocko a nikoli b c a pride v tocko pred b a b d b pride v tocko pred a b a e a in b prideta v tocko istocasno ab stevilo potrebnih testov raste hitro pri zdruzitvi vecih transakcij oblikovanje testa je lahko avtomatizirati tezko pa je doseci da se transakcije pridejo v dolocene tocke po dolocenem vrstnem redu zdruzevanje in absorbcija se veckrat pojavijo pri transakcijah ki so ze bile procesirane kot pa pri transakcijah ki pridejo od zunaj izvajanje testov je skoraj nemogoce ce njihovo razumevanje in njihove moznosti niso testirane ob vgradnji v sistem zanke zanke so lahko zelo problematicne vendar se pojavljajo bolj redko in so lahke in omejene najbolj pogosto zanko najdemo pri pretoku transakcij in se imenuje ponovitvena zanka ki jo dobimo po odkritju napake v vhodnem podatku podobne ponovitvene zanke najdemo pri komunikcijskih povezavah z ostalimi sistemi pogoni naprav itd vrste mnozicne strezbe ocitno vsebujejo zanko ki pojasni mnozice podobno vsak procesor ki mu streze vrsta je v zanki zato da lahko procesira naslednji zapis v vrsti in to pocne toliko casa dokler se vrsta ne izprazni take zanke morajo biti testirane pri individualnih procesorjih na nizjem nivoju zdruzitve in testiranja zarisce in hierarhicni modeli model pretoka transakcij se lahko uporablja na vec nivojih podrobnosti vse do kode vendar to ni priporocljivo tocke v grafu pretoka transakcij ni nujno da predstavljajo operacijo besedo procesiranje uporabljamo kot splosni pomen ki vkljucuje vse manipulacije s podatki lahko s pomocjo racunalnika cloveka ali ostalih sistemov model pretoka transakcij se ponavadi uporablja kot visokonivojski model njegova najbolj pogosta uporaba je testiranje sistemov operacije komponent naj bi bile preverjene s testiranjem komponent ponavadi v prvi fazi zdruzitve kako boste locili zapletene operacije na komponente ki jih boste prikazali v modelu pretoka transakcij je vasa odlocitev upostevati pa morate nekaj stvari komponente modela imajo vmesnike skozi katere poteka transfer podatkov globalni podatki zadostujejo zahtevanemu komponente ne komunicirajo razen preko vmesnikov ce imate take komponente jih grupirajte in naredite model kot eno enoto obnasanje komponent je doloceno s tipom in stanjem transakcije obnasanje procesorja ni odvisno od prejsnje zgodovine transakcije razen ce je ta zgodovina odrazena v tipu in stanju transakcije potem je individualni proces markovski pravilno obnasanje procesorja lahko preverimo s pregledom izhodnih transakcij in z njim povezanimi zapisi iz vsakega procesa v modelu mozno je pomensko testiranje komponent v ustreznem testnem okolju poudarek pri testiranju pretoka transakcij ni na pravilnem delovanju individualnega procesa ampak celega sistema posebej pa na pravilnosti delovanja vmesnikov pravilnosti transakcij vodenju vrste in dolocilu ce ni fifo zdruzevanju absorbciji razdelitvi zacetku sinhronizaciji simultanosti oblikovanju in unicenju transakcij podvajanju transakcij in izgubi tehnika splosno predvidevajmo da nimamo zank v transakciji ce imamo zanke upamo da je mozno njihovo testiranje v okviru podmodela ki vsebuje zanko uporabiti bomo morali tehnike testiranja zank iz poglavja za vse zanke ki jih ne bomo mogli testirati na nizjem nivoju preverjanje specifikacije identifikacija in imenovanje vseh transakcij ki jih zahteva sistem za obdelavo z normalnimi transakcijami ne bi smelo biti problemov ker je vse zapisano v specifikaciji problemi so ponavadi s transakcijami ki so obsezne ampak ne jasne sledijo primeri transakcij ki pogosto manjkajo v specifikaciji vendar morajo biti v modelu a sprejetje prejem zavrnitev b posebna transakcija za instalacijo in preverjanje c posebna transakcija za diagnozo operacij d transakcija prisotnih transakcij e transakcija ki se uporablja pri izobrazevanju cloveka f prvotna ali ponovna transakcija za vse zunanje vmesnike g transakcija ki se uporablja pri sistemih ponovne vzpostavitve h transakcija ki se uporablja pri merjenju sistemskega ucinka i transakcija ki se uporablja za testiranje sistemske varnosti j transakcija ki se uporablja v protokolih ostalih transakcij k transakcija ki se uporablja za poizvedbe o stanju drugih transakcij l odgovori na poizvedbe o stanju transakcij m transakcije ki so nastale pri uporabi sistema ponovne vzpostavitve n transakcija ponovne vzpostavitve iz zunanjih sistemov dolocanje hierarhije tipa transakcije ki vkljucuje vse o transakcijah opisanih v koraku ponavadi se lahko uporablja ista hierarhija ki jo uporabljajo razvijalci zato so komunikacije lazje dolocanje stanja za vsak tip transakcije stanja naj bi odgovarjala zaporedju procesiranja ki se ujema s tipom transakcije ce so stanja preprosto zaporedje stevil kot korak korak korak izhod potem bo seznam zadostoval ce je obnasanje prikazano prevec zapleteno bo potrebno uporabiti model koncnega stanja dolocitev transakcij se pricne vstopa v sistem se konca zapusca sistem se spaja vsrka razcepi itd dolocitev hipoteticnega zapisa kontrole transakcije za vsak tip transakcije zapis mora vsebovati najmanj tip transakcije in stanje za zunanje transakcije kot tudi tiste ki jih procesirajo ostali sistemi ali ljudje je potrebno dolociti primeren hipoteticni zapis identifikacija vseh vrst dolocitev za vsako vrsto izvor od kod prihaja transakcija dolocilo vrste prioriteta brez dolocila serija proti nadaljevanju preveriti je treba mejo kontrole za vse vrste ki imajo omejeno kapaciteto identifikacija procesnih komponent ni nujno da programske opreme grupiranje komponent glede na nacelo iz poglavja lahko da bo potrebno na novo definirati ponovimo tipe transakcij spojiti tipe transakcij odstraniti vrste itd za vsako komponento definirano v koraku se je treba dolociti nacin testiranja ceprav ni nujno da realne komponente delujejo na ta nacin locimo razdelitvene zacetne toke in spojitvene absorpcijske tocke od povezanih procesnih tock s tem da vstavimo razdelitveno zacetno tocko za procesno tocko in spojitveno absorpcijsko tocko pred procesno tocko po tem imamo mnozico tock in povezav ki dolocajo vse pretoke transakcijm ki jih je potrebno testirati potrditev modela z uporabo modela programa v primernem programskem jeziku to je lahko ucinkovito pri modelu pretoka transakcije ker so ponavadi veliki tipicni sistem transakcije procesiranja ima mnogo preprostih transakcij z mnogo mislimo tisoce s preproste mislimo da so veje sticisca razdelitve zacetki spajanja in absorpcije redke izberite testne poti ki se nanasajo na poti in izseke izseke naredimo bolj obcutljive predvidimo izide dolocitev kriterijev veljavnosti izvrsimo teste preverimo izid preverimo vrednosti v vseh vmesne tockah hierarhija pregledovanja vedno obstaja vec kriterijev za pregled delovanja od najpreprostejsega tudi manj ucunkovitega in cenejsega do najmocnejsega ki pa je tudi drazji izvor izhod zacetek konec pregleda delovanja potrebno je izvrsiti dovolj testov da zagotovimo pregled vsakega izvora in zacetka posamezne transakcije in da preverimo da so se vse izhodne transakcije tudi tiste ki se zacnejo v sistemu producirale po logiki je potrebno zagotoviti da se vsaka vrstica kode testira na komponentnem nivoju pregled tocke pregled tocke kot tak nima pomena ker samo potrdi ugotovitve do katerih smo prisli s testiranjem modela na niizjem nivoju pregled povezav s pregledom povezav ne potrdimo samo pravilnost posamezne tocke ampak tudi njihovo sodelovanje brez pregleda povezav v resnici sploh nismo naredili sistemskega testiranja s tem zagotovimo pravilno procesiranje vsake transakcije kakor tudi to da se v vsakem koraku procesirajo prave transakcije izseki definicija izsek je skoraj identicena definiciji izseka pretoka podatkov iz poglavja ce imamo samo razvejitvene in sticiscne tocke se izsek ujema z vhodno izhodnega potjo modela izbira testne poti in ali izseka upostevatu moramo vec razlicnih moznosti glede na to ce pot ali izsek vsebuje zacetne razdelitvene in ali spojitvene absorpcijske tocke v vseh primerih predpostavimo da ni zank ali pa da so v podmodelih ker je model pretoka transakcij ponavadi sestavljen iz vecih manjsih podmodelov obstaja moznost da bi bilo za nekatere podmodele bolje da bi bili narejeni kot modeli pretoka kontrol ali modeli pretoka podatkov ceprav smo se odlocili za uporabo modela pretoka transakcij sinhronizacijski testi kadarkoli se dve ali vec transakcij spojita ali pa ena absorbira drugo moramo izvesti sinhronizacijski test v primeru da lahko dokazemo da je mozen samo dolocen vrstni red nam ni potrebno testirati ostalih moznosti sistem bi moral delovati pravilno v vseh primerih kar pomeni da se ne sesuje ali pa pokvari ali izgubi podatke ampak zavrne nepopolne transakcije seveda z obvestilom v praksi ni potrebno preveriti vseh komuniciranj spojitvene tocke z drugo tocko ki se nahaja nizje v izseku stevilo testov narasca eksponentno vendar ni dokazov nobene da zahtevnejsi sinhronizacijski testi produktivni testi vrste vsako vrsto ki ni enostavna bi morali testirati z mnozico testov ce ima tocka eno vhodno povezavo ki predstavlja eno vrsto in obstaja moznost da to vrsto opravlja komponenta ki jo tocka predstavlja potem je nasa prednostna naloga testiranja vrste v sklopu testiranja komponente v primeru spojitvene absorpcijske ali sticiscne tocke vec vhodnih povezav potem izvedemo teste vrste na komponentnem nivoju in jih ponavljamo v procesu testiranja sistema testi ki jih potrebujemo so odvisni od dolocil vrste in dolocil izbire streznika povecanje obcutljivosti rezultat povecanja obcutljivosti je razlicen pri testiranju pretoka transakcij kot pri testiranju pretoka podatkov ali kontrol lahko se zgodi da ne najdemo podatkov ki bi povzrocili da transakcija sledi doloceni poti problem sam takorekoc kreira transakcijo ki to naredi in jo tudi vstavi v sistem