7.3.4. RozŸleåovanie vstupnej mno§iny ------------------------------------- Z kladnou myçlienkou met¢dy rozŸleåovania vstupnej mno§iny je rozŸlenenie vstupnej mno§iny na dom‚ny, pre prvky ktorìch je spr vanie sa programu identick‚. Testovacia mno§ina m“§e byœ potom redukovan  na jeden reprezentat¡vny prvok pre ka§d£ identifikovan£ dom‚nu. Na vytvorenie dom‚n vstupnnìch £dajov je mo§n‚ pou§iœ vìpoŸtov‚ cesty v strome vyhodnocovania programu. VìpoŸtov  cesta v strome vyhodnocovania pozost va z mo§nìch tokov riadenia pri spracov van¡ vstupnìch £dajov. Ka§d  cesta v strome spracovania reprezentuje dom‚nu vo vstupnìch £dajoch a çpecifick£ vìpoŸtov£ funkciu. Podmienky vetvenia definuj£ hranice dom‚n mno§iny vstupnìch £dajov. Symbolick‚ vyhodnotenie predik tov vetvenia m“§e byœ vyu§it‚ pre konçtrukciu rozŸlenenia vstupnej mno§iny na dom‚ny. Testovanie pomocou rozŸlenenia vstupnej mno§iny by malo identifikovaœ nasledovn‚ typy chìb: vìpoŸtov‚ chyby, chyby vìberu vìpoŸtovej cesty vo vyhodnocovacom strome (predik ty pre vetvenie s£ nekorektn‚) a chyby vznikaj£ce z neexistencie vìpoŸtovìch ciest vo vìpoŸtovom strome (s danou alternat¡vou sa nepoŸ¡talo). V praxi sa vyu§¡va viacero vari ci¡ popisovanej met¢dy, ktorìm sa budeme venovaœ podrobnejçie. Analìza ciest v strome vyhodnocovania a testovanie -------------------------------------------------- Testovanie na z klade rozŸlenenia vstupnej mno§iny vych dza z vìberu jednej testovacej hodnoty pre ka§d£ dom‚nu vstupnej mno§iny. Dom‚ny vstupnej mno§iny sa pri tejto vari cii vytv raj£ na z klade identifik cie vìpoŸtovìch ciest v programe. V praxi vçak program m“§e obsahovaœ ve–mi ve–kì, resp. i nekoneŸnì, poŸet mo§nìch vìpoŸtovìch ciest. Pri danej met¢de testovania je preto potrebn‚ vych dzaœ z podmno§iny vçetkìch vìpoŸtovìch ciest. Pre ich vìber je mo§n‚ pou§iœ napr. metriky pokrytia. Medzi najzn mejçie pou§¡van‚ metriky patria pokrytie vetven¡, pokrytie rozhodovac¡ch blokov a pokrytie vetven¡. Tieto metriky umo§åuj£ kvantifikovaœ rozsah programu, ktorì je danìm testovan¡m overenì a tìm aj pravdepodobnosœ, §e vyskytuj£ce sa chyby bud£ identifikovan‚. Pou§itie popisovanej met¢dy vçak nar §a na probl‚m, §e urŸenie vìpoŸtovìch ciest pre –ubovo–nì program a vìber testovac¡ch £dajov pre overenie danej cesty je pre –ubovo–nì program nerieçite–nì. Obmedzen¡m vlastnost¡ programovacieho jazyka je vçak mo§n‚ zvoliœ koneŸn‚ podmno§iny vstupnìch £dajov pre identifik ciu vybranìch typov chìb. Dom‚nov  analìza ---------------- Pri dom‚novej analìze sa chyby pre zvolen£ dom‚nu identifikuj£ vìberom testovac¡ch £dajov pri alebo na hranici medzi susednìmi dom‚nami vstupnìch hodn“t. Predpokladom pou§itia dom‚novej analìze je linearita a s£vislosœ vstupn‚ho priestoru, neexistencia koincidenŸnej korektnosti programu a interpret cia predik tov vo forme jednoduchìch line rnych nerovnost¡. Existuje nieko–ko vari ci¡ dom‚novej analìzy. Pri testovan¡ programov s dvojrozmernou vstupnou dom‚nou, tzn. s dvoma vstupnìmi premennìmi, je mo§n‚ zvoliœ dva vstupy pri hranici zvn£tra analyzovanej dom‚ny (ON) a jeden vstup bezprostredne mimo hran¡c tejto dom‚ny (OFF) v susednej dom‚ne. Dva ON vstupy s£ zvolen‚ tak, aby le§ali bl¡zko koncov hran¡c vstupnej dom‚ny. Vstup OFF by mal byœ zvolenì tak, aby jeho projekcia le§ala v strede medzi ON vstupmi. Popisovan  2 k 1 strat‚gia m“§e byœ na n-rozmerov do N k 1 strat‚gii. Pr¡klad vo–by testovac¡ch vstupov pre strat‚giu 2 k 1 je ilustrovanì na OBR.7.4. OBR.7.4. strat‚gia 2 k 1 Alternat¡vou k strat‚gii 2 ku 1 je strat‚gia 2 ku 2 (2 ON a 2 OFF), resp. jej zovçeobecnenie N ku N a E ku E, kde E reprezentuje poŸet hr n tvoriacich hranicu danej dom‚ny. V strat‚gii 2 ku 2 sa vyberaj£ 2 ON vstupy na okrajoch hranice v analyzovanej dom‚ne a 2 OFF vstupy na okrajoch hranice mimo analzyovanej dom‚ny. Strat‚gia 2 ku 2 nie je schopn  identifikovaœ vçetky chyby vìberu vìpoŸtovej cesty. Strat‚gia E ku E umo§nuje vìber najlepçej mno§iny testovac¡ch vstupov, ktor  je citliv  na zmeny tvaru vstupnej dom‚ny. Nevìhodou vçak je, §e vy§aduje vysok‚ mno§stvo testovac¡ch vstupov. Nevìhodou dom‚novej analìzy je predpoklad linearity predik tov a œa§kosti pre vìber testovac¡ch vstupov pre programy s viacerìmi vstupnìmi premennìmi. Dom‚nov  analìza sa s£streÔuje na identifik cii chìb spojenìch s vìberom vìpoŸtovej cesty. Z tohoto d“vodu je potrebn  jej kombin cia s inìmi testovac¡mi met¢dami. Experimenty s testovan¡m pomocou rozŸleåovania vstupnej mno§iny uk zali, §e je mo§n‚ identifikovaœ 75% vìpoŸtovìch chìb a 33% chìb vìberu vìpoŸtovej cesty. 7.3.5. FunkŸn‚ testovanie ------------------------- FunkŸn‚ testovanie predstavuje pr¡stup zalo§enì na poh–ade na n vrh programu ako na abstraktn£ specifik ciu po§iadaviek a n vrhu. FunkŸn‚ testovanie mo§no rozdeliœ na dva kroky. Prvìm je dekompoz¡cia programu na z kladn‚ funkŸn‚ jednotky zalo§en  na met¢de funkŸnej abstrakcie pou§itej z roveå pri n vrhu programu. Druhìm krokom je generovanie £dajov potrebnìch nez visl‚ pre testovanie jednotlivìch funkŸnìch blokov. FunkŸn  abstrakcia predstavuje strat‚giu, v ktorej s£ programy ch pan‚ ako hierarchie abstraktnìch funkci¡. Ka§d  funkcia m“§e byœ z roveå ch pan  ako kompoz¡cia funkci¡ na ni§çej £rovni abstrakcie. Vytvoren  hierarchia funkci¡ je pou§¡van  pre identifik ciu jednotlivìch testovanìch funkci¡ a ich n sledn‚ samostatn‚ testovanie. Hierarchia funkci¡ obsahuje dva z kladn‚ typy funkci¡: po§iadavkov‚ funkcie a n vrhov‚ funkcie. Po§iadavkov‚ funkcie opisuj£ oŸak van‚ spr vanie programu a m“§u byœ identifikovan‚ analìzou po§iadaviek v çpecifik cii programu. Vlastn  realiz cia po§iadavkovej funkcie m“§e vy§adovaœ zavedenie Ôalç¡ch funkci¡, nazìvanìch n vrhov‚ funkcie. N vrhov‚ funkcie m“§u byœ nazìvan‚ vçeobecn‚ alebo detailn‚, pod–a vçeobecnosti spr vania, ktor‚ implementuj£. N vrhov‚ funkcie sa neodv dzaj£ priamo od po§iadaviek v çpecifik ci¡, ale od sp“sobu sp’åania tìchto po§iadaviek. V d tovej abstrakcii je mo§n‚ modelovaœ strukt£ru £dajov hierarchiou abstraktnìch d tovìch typov, z ktorìch ka§dì predstavuje mno§inu hodn“t. Mno§ina pr¡pustnìch hodn“t pre vstupy a vìstupy programu je taktie§ çpecifikovan  pomocou abstraktnìch £dajovìch typov. Mno§ina mo§nìch hodn“t premennej sa nazìva dom‚na premennej. Najd“le§itejç¡mi ka§dej dom‚ny s£ extr‚mne a çpeci lne hodnoty. Extr‚mne hodnoty s£ tie, ktor‚ le§ia na hraniciach pr¡sliçnej dom‚ny. æpeci lne hodnoty maj£ speci lne matematick‚ vlastnosti, napr. nula, ve–mi mla  alebo ve–k  hodnota. Kombin cia hodn“t dom‚ny premennìch predstavuje probl‚m s kombinaŸnou expl¢ziou. Program s k vstupnìmi premennìmi, z m kktorìch ka§d  m“§e maœ m hodn“t, predstavuje k mo§nìch vstupov. Z tohoto d“vodu je potrebn‚ h–adaœ efekt¡vnejçie pr¡stupy ku kombin cii typickìch hodn“t pre redukciu rozsahu testovacej mno§iny. Vysledky s pou§it¡m funkŸnej analìzy ukazuj£, §e £speçnosœ testovania pomocou tejto met¢dy je pomerne vysok . Pre danì pr¡pad bolo zo 42 zn mych chìb v programe identifikovanìch 38 (20 v po§iadavkovìch funkci ch, 9 vo vçeobecnìch n vrhovìch funkci ch, 9 v detailnìch n vrhovìch funkci ch, z Ÿoho 4 boli odhalen‚ pomocou d tovej abstrakcie). 7.3.6. N hodn‚ testovanie ------------------------- N hodn‚ testovanie predstavuje jednu z mo§nìch pou§it¡ strat‚gie testovania Ÿiernej sktinky. Program je testovanì n hodnìm vìberov vstupov z mno§iny vçetkìch pr¡pustnìch vstupov programu. T to met¢da pova§uje testovanie programov za vzorkovanie programu za £Ÿelom zistenia chyby. V„Ÿçina existuj£cich techn¡k n hodn‚ho testovania sa sna§¡ o zvìçenie pravdepodobnosti identifik cie chyby vybranìch vzoriek vstupov. V s£Ÿasnosti vçak neexistuje met¢da, ktor  by zaruŸila korektnosœ testovan‚ho programu. Mieru korektnosti testovan‚ho programu je v tomto pr¡pade mo§n‚ definovaœ ako pomer nespr vnych testov ku poŸtu vçetkìch testov. Vìber vstupov je mo§n‚ vykon vaœ n hodne, alebo na z klade proced£ry zalo§enej na pravdepodobnostnej distrib£cii vstupnìch sekvenci¡. Takìto pr¡stup umo§åuje modelovaœ funkŸnosœ programu v re lnej prev dzke a umo§åuje odhadn£œ tzv. "operaŸn£ spo–ahlivosœ". 7.3.7. Testovanie zalo§en‚ na gramatik ch ----------------------------------------- Tento pr¡stup k testovaniu je vhodnì pre syst‚my, ktorìch spr vanie je mo§n‚ op¡saœ pomocou koneŸn‚ho automatu. Hlavnìmi komponentami testovacej strat‚gie s£ Procesor Jazyka Po§iadaviek (RLP), Gener tor Testovac¡ch Pl nov (TPG) a Automatickì Vykon vaŸ Testov (ATE). Vstupom RLP je form lny opis syst‚mu, ktorì sa m  testovaœ. Vìstupov je matica stavovìch prechodov, ktor  je reprezent ciou koneŸn‚ho automatu. KeÔ§e sa predpoklad  odhalenie nekonzistenci¡ u§ RLP, mo§no koneŸnì automat reprezentovanì maticou stavovìch prechodov pova§ovaœ za deterministickì. Dosiahnute–nosœ ka§d‚ho stavu je mo§n‚ overiœ vytvoren¡m tranzit¡vneho uz veru. Pou§it¡m vìsledkov te¢rie automatov je mo§n‚ pre danì koneŸnì automat zostrojiœ regul rnu gramatiku, ktor  popisuje jazyk akceptovanì danìm automatom. T£to gramatiku je mo§n‚ ruŸne rozç¡riœ o popisy çpecif¡k jednotlivìych stavovìch prechodov a indik ciou pozorovate–nìch vìstupov koneŸn‚ho automatu (tieto vìstupy musia byœ termin lnymi symbolmi). Regul rna gramatika je vstupom pre TPG. Vìstupom TPG je mno§ina testovac¡ch skriptov, z ktorìch ka§dì obsahuje sekvenciu vstupov a sekvenciu oŸak vanìch vìstupov. ATE vykon  ka§dì skript a vytv ra çtatistiku o spr van¡ testovan‚ho syst‚mu. 7.3.8. Testovanie veden‚ tokmi £dajov ------------------------------------- V tomto pr¡stupe je program program analyzovanì pomocou vytv rania zmysluplnìch v„zieb medzi programovìmi premennìmi. Testovacia strat‚gia je definovan  v pojmoch ciest d tovìch transform ci¡ pre niektor‚, resp. vçetky, pogramov‚ premenn‚. Inform cia o toku riadenia v programe je vyu§¡van  na vìber mno§iny d tovìch transform ci¡, ktor‚ je potrebn‚ vykonaœ. Rozdiel oproti predch dzaj£cim pr¡stupom k testovaniu je v tom, §e predch dzaj£ce strat‚gie vych dzali z tokov riadenia, zatia– co popisovan  strat‚gia vych dza z tokov £dajov. Premenn  je sa nazìva pou§¡van  (definovan ) v inçtrukcii I, ak je premenn  v tejto inçtrukcii referencovan , (je jej priraden  nov  hodnota). Defin¡cia premennej v inçtrukcii I sa nazìva §iv , ak existuje tok riadenia z miesta, kde je premenn  definovan , k inçtrukcii I takì, §e na tekto ceste nie je hodnota danej premennej modifikovan . Argumenty inçtrukcie I s£ tie premenn‚, ktor‚ inçtrukcia pou§¡va pre vykonanie po§adovan‚ho vìpoŸtu. Element rny d tovì kontext inçtrukcie je n-tica defin¡ci¡ vçetkìch premennìch, ktor‚ s£ argumentami inçtrukcie pri vykon van¡ danej vìpoŸtovej cesty. D tovì kontext inçtrukcie je mno§ina vçetkìch jej element rnych d tovìch kontextov. Blok v programe je mo§n‚ definovaœ ako sekvenciu inçtrukci¡, ktor‚ sa vykon vaj£ ako jeden celok. Z h–adiska testovania je vìhodnejçie pracovaœ s blokmi ako s jednotlivìmi inçtrukciami. Z tohoto d“vodu je pojem §ivosti premennej na £roveå blokov. Protip¢lom argumentov a vìsledkov inçtrukci¡ s£ vvstupn‚ a vìstupn‚ premenn‚ v blokoch. Premenn  na nazìva vstupnou (vìstupnou), ak je t to premenn  pou§¡van  sk“r ako je definovan  (samozrejme, ak je definovan ) v r mmci bloku. Cesta v programe sa nazìva chybovo-senzit¡vna, ak je mo§n‚ (v§dy) detekovaœ pri jej vykonan¡. Testovacia strat‚gia sa potom nazìva zmyslupln , ak garantuje vykonanie aspoå jednej chybovo-senzit¡vnej cesty. Testovanie veden‚ tokmi £dajov m  viacero alternat¡v. Niektor‚ z nich pop¡çeme podrobnejçie. Blokov‚ testovanie ------------------ Podstatou blokov‚ho testovania je testovania ka§dej n-tice defin¡ci¡ pre ka§dì kontext vçetkìch blokov v programe. Pre kompletn‚ testovanie blokov je nevyhnutn‚ vytvoriœ mno§inu vçetkìch vìpoŸtovìch ciest, ktor‚ aktivuj£ vçetky element rne d tov‚ kontexty v bloku. Analyz tor d tovìch tokov umo§åuje n jsœ uplnì test. Nevìhodou blokv‚ho testovania je skutoŸnosœ, §e bloly s£ analyzovan‚ a testovan‚ nezz visle. Strat‚gia definiŸn‚ho stromu ---------------------------- Strat‚gia definiŸn‚ho stromu sa sna§¡ odstr niœ nevìhody blokov‚ho testovania. Program tor çpecifikuje mno§inu premennìm, ktor‚ pre neho maj£ vìznam, namiesto inçtrukci¡, ktor‚ tieto premenn‚ definuj£. Tieto premenn‚ s£ vo v„Ÿç¡ne pr¡padov vìstupn‚ premenn‚ programu. V Ôalçom kroku s£ defin¡cie definovanìch premennìch preh–ad van‚ sp„tne od vìstupu. Preh–ad vanie je ukonŸen‚ ak sa jedn  o vstup (kontext prv‚ho bloku), alebo je identifikovan‚ cyklick‚ pou§¡vanie kontextu. Podobne ako v predch dzaj£cej met¢de je pre ka§d£ enticu definiŸn‚ho stromu s£ generovan‚ testovacie vstupy. Testovanie d tov‚ho priestoru ----------------------------- T to met¢da je ve–mi podobn‚ strat‚gii definiŸn‚ho stromu. Na rozdiel od nej vçak prech dza defin¡cie vçetkìch £dajovìch elementov, tzn. premennìch aj konçt nt. Pou§itie testovac¡ch met¢d zalo§enìch na t kovìch tokoch je obtia§nejçie ako pou§itie met¢d zalo§enìch na tokoch riadenia. Vyplìva to zo skutoŸnosti, §e identifik cia d tovìch kontextov v zlo§itejç¡ch programoch je komplikovan  a nezaob¡de sa bez pou§itia podpornìch softv‚rovìch prostriedkov. 7.3.9. Testovanie syst‚mov pracuj£cich v re lnom Ÿase ----------------------------------------------------- Programy pracuj£ce v re lnom Ÿase je mo§n‚ definovaœ ako programy, ktor‚ s£ v neust lej interakcii s externìmi zariadeniami alebo objektami. T to interakcia je charakterizovan  jej trvalosœou a potrebou odozvy v presne definovanìch Ÿasovìch intervaloch. Typickìmi charakteristikou syst‚mov pracuj£cich v re lnom Ÿase (SR¬) s£ nasledovn‚: - mno§stvo modulov, z ktorìch syst‚m pozost va a ktor‚ treba testovaœ a integrovaœ - rovnak  testovacia postupnosœ a m lo zmenenìm Ÿasovan¡m m“§e generovaœ odliçn‚ vìstupy - inherentn  logick  zlo§itosœ SR¬, tzn. mno§stvo rozhodovac¡ch blokov - mno§stvo modkulov zdie–aj£cich ten istì poŸ¡taŸ v tom istom Ÿase - mnoho modulov "n hodne" spr¡stupåuj£cich pam„œ, Ÿo komplikuje izol ciu identifikovanìch probl‚mov a lokaliz ciu chìb PoŸ¡taŸe, na ktorìch prebieha testovanie SR¬ mo§no rozdeliœ na hostite–sk‚ poŸ¡taŸe a cie–ov‚ poŸ¡taŸe. Cie–ovì poŸ¡taŸ predstavuje poŸ¡taŸ pou§¡vanì na prev dzkovanie SR¬. Vo v„Ÿçine pr¡padov to bìva çpeci lny poŸ¡taŸ so çpeci lnou architekt£rou. Hostite–skì poŸ¡taŸ je poŸ¡taŸ, na ktorom prebieha vìvoj SR¬. Na tento £Ÿel sa pou§¡va komerŸne be§ne dostupnì poŸ¡taŸ vybavenì speci lnym prostred¡m pre vìvoj cie–ovej aplik cie. Charakteristick‚ f zy testovania SR¬ mo§no definovaœ ako testovanie na hostite–skom poŸ¡taŸi a testovanie na cie–ovom poŸ¡taŸi. élohou testovania na hostite–skom poŸ¡taŸi je odhalenie chìb v jednotlivìch moduloch vytv ran‚ho syst‚mu. Na testovanie m“§e byœ preto pou§it  v„Ÿçina z u§ pop¡sanìch testovac¡ch techn¡k. Testovanie £pln‚ho syst‚mu na hostite–skom poŸ¡taŸi je zriedkavosœou. V tomto pr¡pade sa vy§aduje existencia simul tora cie–ov‚ho prostredia s mo§nosœou riadenia sledovan‚ho procesu. Pri testovan¡ na cie–ovom poŸ¡taŸi prebieha najsk“r testovanie modulov. N sledne prebieha integraŸn‚ testovanie, pri ktorom sa Ÿastokr t pou§¡va simul tor prostredia. Tetsovanie cel‚ho syst‚mu sa vykon va ve–mi Ÿasto v cie–ovom operaŸnom prostred¡, tzn. za pou§itia skutoŸnìch vvstupnìch £dajov. Testovanie SR¬ vy§aduje generovanie ve–k‚ho poŸtu testovac¡ch vstupov. KeÔ§e pou§itie n hodn‚ho sp“sobu generovania vstupov je pomerne efekt¡vne, Ÿasto sa pou§¡vaj£ tieto techniky. V praxi testovania SR¬ nie je definovan  jednotn  testovacia metodika. Ka§dì v„Ÿçi projekt pou§¡va vlastnì çpecifickì pr¡stup. Pre porovnanie pop¡çeme nieko–ko projektov. Adapt¡vne testovanie -------------------- Adapt¡vne testovanie je automatizovan  technika testovania, pri ktorej sa pou§¡va adapt¡vny tester pozost vaj£ci z testovan‚ho procesu a simul tora prostredia. Testovacie d ta su vyberan‚ na z klade krit‚ri¡ vìkonnosti syst‚mu a pre generovanie testovac¡ch vstupov, koncentr ciu a redukciu d t sa vyu§¡vaj£ automatick‚ techniky. Vìkonov‚ krit‚ria urŸuj£ce akceptovate–n‚ vìkonov‚ hranice sa pou§¡vaj£ na vìber testovac¡ch vstupov. Pre tieto £Ÿely je mo§n‚ rozŸleniœ vstupnì priestor syst‚mu na akceptovate–n‚ a neakceptovate–n‚ dom‚ny spr vania. Tento pr¡stup umo§åuje realiz ciu analìzy citlivosti na zaœa§enie. Adapt¡vne testovanie sa vykon va a§ pokia– nie je dosiahnutì bod na hranici zaœa§enia. Testovanie mikroprocesorov‚ho riadiaceho a kontroln‚ho softv‚ru --------------------------------------------------------------- T to technika vych dza zo skutoŸnosti, §e mikroprocesorov‚ SR¬ monitoruj£ce pr¡rodn‚ procesy spravidla spracov vaj£ spojit‚ funkcie. Inherentn  spojitosœ spracov vanìch funkci¡ vy§aduje spojitosœ, vstupov, vìstupov, alebo aj vstupov aj vìstupov. Testovacia strat‚gia je zalo§en  identifik cii potenci lnych chìb pomocou zmien jedn‚ho (alebo viacerìch) hodn“t vstupn‚ho parametra cez cel£ dom‚nu, spravidla zameraj£c sa na najnevìznamnejçiu hodnotu. S£Ÿasne sa meria jedne (alebo viac) vìstupnìch parametrov a porovn va sa s automaticky vypoŸ¡tanou krivkou. Potenci lnymi chybami s£ v tomto pr¡pade rie chyby, ktor‚ rezultuj£ k odchìlke od tejto krivky. Krivka je vypoŸ¡tavan  z bezprostredne predch dzaj£cej hodnoty vìstupu, zmeny hodnoty a rìchlosti tejto zmeny. T to met¢da teda predikuje bud£ce spr vanie sa syst‚mu z predch dzaj£ceho spr vania sa a identifikuje tiie chyby, pre ktor‚ s£ vìstupy nepredikovate–n‚. Testovanie jadrovìch zariaden¡ ------------------------------ Po zak¢dovan¡ softv‚ru prebieha statick  analìza k¢du. Potom je k¢d testovanì na testovac¡ch vstupoch. Testovacie vstupy s£ vyberan‚ na z klade analìzy k¢du a çpecifik cie, alebo z odhadu çtatistick‚ho rozdelenia vstupnìch £dajov. Po tìchto testoch je syst‚m testovanì v podmienkach re lneho Ÿasu vykonan¡m testov vych dzaj£cich zo çpecifik cie a testov vych dzaj£cich z konkr‚tnej aplik cie. V testoch vych dzaj£cich zo çpecifik cie s£ pokryt‚ vçetky mo§n‚ pr¡pady vstupov vyplìvaj£ce zo çpecifik cie syst‚mu. Za tìmto £Ÿelom sa analyzuje çpecifik cia a identifikuj£ sa element rne podmienky, tzn. podmienky ako podmienky, kde teplota presiahne medzn£ hodnotu. Potom sa vyberie podmno§ina mo§nìch kombin ci¡ element rnych podmienok ako vìsledok statickej analìzy zalo§enej na segment cii a internej çtrukt£re algoritmu. T to podmno§ina je n sledne transformovan  do rozhodovacej tabu–ky (nazìvanej kombinaŸn  tabu–ka), v ktorej st’pce zodpovedaj£ jednotlivìch testovac¡m vzork m. Pri testoch vych dzaj£cich z aplik cie sa ako testovacie d ta vyu§¡vaj£ najŸastejçie sa opakuj£ce a kritick‚ situ cie. Tieto testy maj£ zaruŸiœ spr vnu funkciu syst‚mu poŸas be§nej prev dzky a v kritickìch situ ci ch. Testovania NASA programu Space Shuttle -------------------------------------- PoŸas vìvoja syst‚mu boli jednotliv‚ moduly syst‚mu testovan‚ nez visle. Po zavêçen¡ vìvojov‚ho cyklu bol syst‚m odovzdanì organiz cii, ktor  mala vykonaœ jeho verifik ciu. T to organiz cia bola nez visl  na organiz cii, ktor  syst‚m vyv¡jala. Pracovn¡ci verifikuj£cej organiz cie sa podie–ali na vìvoji syst‚mu a na rev¡zi ch k¢du. PoŸas tejto f zy boli navrhnut‚ z kladn‚ postupy pre tvorby testovac¡ch vzoriek. Verifik cia syst‚mu bola rozdelen  na dve f zy: podrobn‚ testovanie a prev dzkov‚ testovanie. Pre £Ÿely detailn‚ho testovania bola çpecifik cia po§oadaviek rozdelen  do funkŸnìch celkov. Za n vrh testovacieho pl nu pre ka§d£ po§iadavku a dostatoŸn‚ho poŸtu kombin ci¡ vìpoŸtovìch ciest bol zodpovednì samostatnì analytik. Naviac bolo pl novan‚ overovanie jednotlivìch po§iadaviek zalo§en‚ na analìze spr vania sa syst‚mu riadenia letu. Podrobn‚ testovanie, ktor‚ nasledovalo po schv len¡ pl nu testovania, obsahovalo explicitn‚ testovanie vçetkìch po§iadaviek obsiahnutìch v çpecifik cii, explicitn‚ testovanie vstupno-vìstupnej kompatibility modulov a vykonanie jednotlivìch testov v cie–ovom operaŸnom prostred¡. Ka§dì test, ktorì odhalil chybu bol opakovanì aj na zmenenom (opravenom) programe. Prev dzkov‚ testovanie bolo zameran‚ na testovanie syst‚mu za norm lnych prev dzkovìch podmienok, za "zmysluplnìch chìb" a nieko–kìch vìznamne odliçnìch kritickìch situ ci¡. Testovacie vstupy boli vyberan‚ tak, aby selekt¡vne zaœa§ili vybran‚ komponenty syst‚mu. 7.3.10. Òalçie strat‚gie pre tvorbu spo–ahliv‚ho softv‚ru --------------------------------------------------------- Mimo formalizovanìch metodol¢gi¡ testovania existuj£ heuristick‚ doporuŸenia a n vody ako zvìçiœ spo–ahlivosœ vyv¡jan‚ho softv‚ru. Tieto zahråuj£ pou§itie nez vislìch organiz ci¡ na testovanie softv‚ru, organiz ciu pracovnìych t¡mov pre za £Ÿelom zefekt¡vnenia vyu§¡vania –udskìch zdrojov a n vrh pomocou hierarchickej dekompoz¡cie. Nez visl‚ testovacie organiz cie -------------------------------- Jednìm z Ÿasto pou§¡vanìch pr¡stupov k zvyçovaniu spo–ahlivosti softv‚ru je vyu§itie naz vislìch testovac¡ch organiz ci¡. Tieto organiz cie nez visle na organiz cii vyv¡jaj£cej syst‚m vykon vaj£ analìzu po§iadaviek na syst‚m, vytv raj£ pl ny testovania syst‚mu a vyhodnocuj£ prev dzkov‚ vlastnosti vytvoren‚ho syst‚mu vzh–adom k jeho çpecifik cii. Nez vislosœ testovac¡ch organiz ci¡ na vìvojovej organiz cii je z kladnìm predpokladom neskreslen‚ho a nez visl‚ho testovania a hodnotenia syst‚mu. Tieto organiz cie s£ najŸastejçie externìmi kontraktormi v projektoch. T¡movì vìvoj ------------ Metodiky t¡mov‚ho vìvoja syst‚mov s£ urŸen‚ pre zaruŸenie jednoduhçej komunik cie vo vìvojovej organiz cii (t¡me) a umo§nuj£ koncentr ciu kolekt¡vnych ment lnych zdrojov na rieçenì probl‚m. Met¢da t¡mu hlavn‚ho program tora vyvinut  IBM bola jednou z prvìch met¢d organizuj£cich t¡mov£ pr cu. Pracovnì t¡m pozost va s hlavn‚ho a z lo§nìch program torov. Hlavnì program tor je zodpovednì za n vrh, k¢dovanie a integr ciu najvyççej riadiacej çtrukt£ry a k–£Ÿovìch Ÿast¡ t¡mov‚ho produktu. Z lo§nì program tori s£ zodpovedn¡ za jednotliv‚ Ÿasti, ktor‚ im hlavnì program tor zad . Vçeobecn‚ charakteristiky t¡movej pr ce vo vçetkìch existuj£cich metodik ch zahråuj£ verifik ciu a valid ciu spoloŸn‚ho produktu, definovan‚ sp“soby komunik cie a jasnì sp“sob integr cie vìsledkov jednotlivìch Ÿlenov do spoloŸn‚ho produktu. KonçtrukŸn‚ met¢dy ------------------ KonçtrukŸn‚ met¢dy pre n vrh a programovanie vy§aduj£ aplik ciu çtrukt£rovanìch techn¡k. Tieto techniky zahråuj£ strukt£rovanì n vrh (hierarchick£ dekompoz¡ciu) zalo§enì na vyu§¡van¡ formalizovanìch princ¡pov (napr. modularita, abstrakcia, uniformita, efekt¡vnosœ, spo–ahlivosœ). Pou§itie çtrukt£rovanìch met¢d umo§åuje vylepçiœ testovate–nosœ syst‚mu a vykon vaœ verifik ciu a valid ciu paralelne s n vrhovìmi procesmi. V praxi sa pou§¡va viacero podpornìch prostriedkov (napr. CASE), ktor‚ umo§åuj£ identifikovaœ chybn‚ alebo "slab‚" miesta n vrhu, ktor‚ je nutn‚ prepracovaœ. 7.4. Prostriedky pre podporu testovania --------------------------------------- Pou§itie techn¡k systematick‚ho testovania Ÿasto vy§aduje automatizovan£ podporu. Mnoho techn¡k vy§aduje mno§stvo "papierovej" pr ce, ako urŸenie verifikaŸnìch podmienok, urŸenie pou§itia premennej v d tovej analìze, n vrh mno§stva testovac¡ch vstupov, vykonanie a vyhodnotenie mno§stva testov atÔ. Tieto oper cie s£ Ÿasovo n roŸn‚ a s£ potenci lnym zdrojom chìb. V tomto pr¡pade je mo§n‚ vyu§iœ speci lne podporn‚ prostriedky, ktor‚ analytika pri testovan¡ odbremeåuj£ od Ÿasti pr ce. Testovac¡ prostriedok je mo§n‚ definovaœ ako program, ktorì implementuje jednu alebo viac z vymenovanìch funkci¡. Vçeobecn‚ charakteristiky testovac¡ch prostriedkov s£: - vçeobecn‚ interfejsy poskytuj£ mo§nosœ vari cie testovac¡ch po§iadaviek a testovan‚ho programmu - zdielate–nosœ umo§åuje pou§itie prostriedko çirçou komunitou pou§¡vate–ov - viacn sobn  pou§ite–nosœ znamen  d’§ku §ivotn‚ho cyklu prostriedku v„Ÿçiu ako §ivotnì cyklus nieko–kìch testovanìch aplik ci¡ (testovac¡ prostriedok mus¡ "pre§iœ" syst‚m, pre ktorì bol vytv ranì) Testovacie prostriedky je mo§n‚ rozdeliœ do dvoch z kladnìch skup¡n, na z klade typu prev dzanej analìzy: statick‚ analytick‚ prostriedky a dynamick‚ analytick‚ prostriedky. Mno§stvo prostriedkov pou§¡va i kombin ciu uvedenìch analytickìch techn¡k. Naviac existuje skupina prostriedkov, ktor‚ nevykon vaj£ ani priame testovanie, ani nepou§¡vaj£ çpecifick£ testovaciu techniku. T to skupina predstavuje podporn‚ prostriedky. 7.4.1. Statick‚ analytick‚ prostriedky -------------------------------------- Statick‚ analytick‚ prostriedky vykon vaj£ limitovan£ analìzu programov. Vstupmi s£ po§iadavky, n vrhov‚ dokumenty a k¢d syst‚mu. Tieto prostriedky uveden‚ dokumenty analyzuj£, bez ich skutoŸn‚ho vykonania. Z kladn‚ funkcie statickìch analytickìch prostriedkov mo§no sumarizovaœ nasledovne: Prehliadka k¢du predstavuje podrobn£ analìzu k¢du programu za £Ÿelom urŸenia, Ÿi boli, resp. neboli pou§it‚ programovacie metodol¢gie a pravidl . Typick‚ pravidl  predstavuj£ postup na z klade çtrukt£rovan‚ho n vrhu a k¢dovania, pou§itie portabilnìch podmno§¡n programovacieho jazyka, pou§itie çtandardnìch k¢dovac¡ch form tov atÔ. Prostriedky realizuj£ce t£to funkciu sa nazìvaj£ auditory k¢du. Testovanie konzistencie znamen  urŸenie, Ÿi jednotliv‚ Ÿasti textu programu s£ interne konzistentn‚. Pod konzistenciou sa rozumie konzistencia so çpecifik ciou a pou§¡vaj£ jednotn£ not ciu a terminol¢giu. H–adanie vz jomnìch referenci¡ predstavuje vytv ranie slovn¡kov reprezentuj£cich vzœahy medzi entitami na z klade ich logickìch mien. Prostriedky tohoto druhu s£ spravidla s£Ÿasœou kompil torov vyçç¡ch programovac¡ch jazykov a ladiacich prostriedkov. Analìza interfejsov predstavuje analìzu konzistencie medzi interfejsami jednotlivìch programovìch elementov. Typickìm pr¡kladom je kontrola parametrov proced£r a £plnosti COMMON blokov. Analìza vstupno-vìstupnìch çpecifik ci¡ predstavuje prostriedok pre generovanie vstupnìch d t. Analìza d tovìch tokov m  svoj p¢vod v optimaliz cii kompil torov. Pozost va z grafickej analìzy (sekvenŸnìch) d tovìch defin¡ci¡ a referencie urŸuj£ce ohraniŸenia, ktor‚ m“§xu byœ kladen‚ na d ta na r“znych miestach zdrojov‚ho programu. H–adanie chìb sl£§i na identifik ciu rozporov, ich d“le§itosti a mo§nìch d“sledkov. Typov  analìza znamen  urŸenie korektn‚ho pou§itia pomenovanìch d t a oper ci¡. Typov  analìza sa obvykle pou§¡va na urŸenie Ÿi dom‚na hodn“t (funkci¡) viazanìch k entite je pou§¡van  spr vnym sp“sobom. Analìza rosahov znamen  urŸenie, Ÿi fyzick‚ dimenzie definovan‚ pre entitu s£ korektne definovan‚ a pou§¡van‚. Statick‚ analyz tory je mo§n‚ charakterizovaœ ako programu, ktor‚ analyzuj£ zdrojovì text programov za £Ÿelom identifik cie chìb a nebezpeŸnìch konçtrukci¡ bez toho, aby k¢d vgykonali. V„Ÿçina statickìch analyz torov vych dza z techn¡k analìzy d tovìch tokov. Umo§åuj£ overovaœ glob lne aspekty programovej logiky, syntaktick‚ chyby, stìl programovania a konzistenciu interfejsov. Inform cie poskytovan‚ statickìmi analyz tormi zahråuj£: - chybov‚ spr vy o syntaktickìch chyb ch - poŸet vìskytov pr¡kazov v zdrojovom k¢de pod–a ich typu - mapy vz jomnìch referenci¡ pou§itia identifik torov - analìza sp“sobu pou§itia identifik torov v ka§dom pr¡kaze (d tovì zdroj a cie–, volaj£ci parameter, nepou§¡vanì "dummy" parameter) - proced£ry a funkcie volan‚ ka§dìm podprogramom - nenainicializovan‚ premenn‚ - premenn  s priradenou hodnotou, ktor  sa nikde nevyu§¡va - izolovan‚ Ÿasti k¢du, ktor‚ nem“§u byœ vykonan‚ pri §iadne kombin cii vstupnìch £dajov - odchìlky od k¢dovac¡ch çtandardov (jazykovìch a internìch pre dan£ organiz ciu) - nespr vne pou§¡vanie glob lnych a spoloŸnìch premennìch, zoznamov parametrov (nespr vny poŸet parametrov, typov  nezhoda, nenainicializovan‚ vstupn‚ parametre, vìstupn‚ parametre s nepriradenou hodnotou, vìstupn‚ parametre bez Ôalçieho pou§itia vo volaj£com programe, nepou§it‚ parametre atÔ.). Statick‚ analyz tory obvykle pozost vaj£ zo çtyroch z kladnìch komponentov: jazykovì procesor, datab za, analyz tor chìb a gener tor vìstupnìch zost v. Jazykovì procesor pozost va z lexik lneho analyz tora a analyzœora syntaxe. Jazykovì procesor program rozdel¡ do modulov (hlavnì program, podprogramy), Ôalej na pr¡kazy a ich komponenty. Datab za sl£§i na uchov vanie znaŸn‚ho mno§stva inform ci¡ odvodenìch pro lexik lnej a syntaktickej analìze programu. V datab ze je ulo§en  vn£torn  reprezent cia analyzovan‚ho programu. Analyz tor chìb vykon va analìzu vn£tornej reprezent cie programu na z klade po§iadaviek analytika, priŸom generuje inform cie pre vìstupn£ zostavu. Rozdiely medzi jednotlivìmi statickìmi analyz tormi spoŸ¡vaj£ v rozsahu analìzy chìb a vo flexibikite povelov‚ho jazyka analyz tora chìb. Gener tor vìstupnìch zost v generuje inform cie pre analytika na z klade chybovìch alebo inìch inform ci¡ uchov vanìch v datab ze. S£Ÿasnì trend smeruje k interakt¡vnemu pr¡stupu k statickej analìze programov. 7.4.2. Dynamick‚ analytick‚ prostriedky --------------------------------------- Dynamick‚ analytick‚ prostriedky s£ prostriedky, ktor‚ zhroma§duj£ a analyzuj£ inform cie na z klade vykon vania testovan‚ho programu. V r mci dynamickej analìzy sa vykon vaj£ nasledovn‚ oper cie: Analìza pokrytia znamen  stanovenie urŸenie miery aktiv cie struktur lnych elementov programu na urŸenie adekv tnosti preveden‚ho testu. Prostriedok sa nazìva analyz tor pokrytia. Trasovanie znamen  vytvorenie hist¢rie vykon vania programu. Trasovanie sa m“§e Ôalej deliœ na trasovanie vìpoŸtovej cesty, trasovanie tokov logiky spracovania, trasovanie d tovìch tokov a trasovanie nastavenìch bodov preruçenia. Prostriedok sa nazìva trasovaŸ. Analìza zaœa§enia (tuning) spoŸ¡va v urŸen¡, ktor‚ Ÿasti programy boli vykon van‚ najŸastejçie. Simul cia reprezentuje urŸit‚ vlastnosti spr vania sa fyzick‚ho alebo abstraktn‚ho syst‚mu pomocou poŸ¡taŸa. Analìza Ÿasovania znamen  urŸenie skutoŸn‚ho spotrebovan‚ho CPU Ÿasu potrebn‚ho pre vykonanie pre programu alebo jeho Ÿast¡. Analìza vyu§¡vania zdrojov znamen  analìzu vyu§¡vania hardv‚rovìch a softv‚rovìch syst‚movìch prostriedkov. Symbolick‚ vykon vanie predstavuje rekonçtrukciu logiky a vìpoŸtu pre dan£ vìpoŸtov£ cetu prostredn¡ctvom vykonania cesty so symbolickìmi d tami namiesto skutoŸnìch. Prostriedok sa nazìva symbolickì vyhodnocovaŸ. Overovanie platnosti tvrden¡ definovanìch pou§¡vate–om o vzœahu medzi jednotlivìmi elementami programu. Tvrdenie mo§no reprezentovaœ logickìm vìrazom çpecifikuj£cim podmienku alebo vzœah medzi programovìmi premennìmi. Overovanie m“§e byœ vykonan‚ na symbolickej £rovni, alebo pro vykon van¡ programu. Vyhodnocovanie ohraniŸen¡ predstavuje generovanie a/alebo rieçenie vstupnìch alebo vìstupnìch ohraniŸen¡ na dok zanie korektnosti programu. T to funkcia bìva Ÿasœou symbolickìch vyhodnocovaŸom alebo automatickìch gener torov testovac¡ch d t. 7.4.2.1. Symbolick‚ vyhodnocovaŸe --------------------------------- Symbolick‚ vyhodnocovaŸe s£ programy, ktor‚ umo§åuj£ priraÔovaœ symbolick‚ hodnoty vstupom a programovìm premennì a algebraicky spracov vaœ tieto hodnoty na z klade vìrazov, v ktorìch sa zodpovedaj£ce premenn‚ vyskytuj£. Jednotliv‚ oper cie v programe sa vykon vaj£ symbolicky a vìstupn‚ hodnoty s£ symbolick‚ vìrazy, obsahuj£ce vstupn‚ premenn‚. P“vodnìm pou§it¡m symbolickìch vyhodnocovaŸom bola podpora generovania testovac¡ch vstupov. Sekund rne aplik cia zahråuj£ symbolick‚ ladenie, analìzu vìpoŸtovìch ciest, identifik ciu nedosiahnute–nìch Ÿast¡ k¢du, chyby poruçenia hran¡c pol¡ a potenci lne podteŸenia a preteŸenia rozsahov hodn“t premennìch. Podstata Ÿinnosti symbolick‚ho vyhodnocovaŸa spoŸ¡va v syntaktickej analìze, vìbere vìpoŸtovej cesty, symbolick‚ho vykonania vìpoŸtovej cesty, zjednoduçovania ohraniŸen¡ a rieçenia nerovnost¡. ætrukt£ra spracovania inform ci¡ v symbolickom vyhodnocovaŸi je ilustrovan  na OBR.7.5. OBR.7.5. syst‚movì tok v symbolickom vyhodnocovaŸi Syntaktickì analyz tor transformuje zdrojovì program do jeho internej reprezent cie. T to reprezent cia je kombinovan  s hodnotami premennìch uchov vanìch v çpecializovanom s£bore a je symbolicky vykon van  pod–a urŸenej vìpoŸtovej cesty. Vìber cesty sa vykon va na z klade rozhodnut¡ pou§¡vate–a (analytika). V pr¡pade, §e predik t , na z klade ktor‚ho sa vykon va vetvenie nie je mo§n‚ vyhodnotiœ na true alebo false, m“§e pou§¡vate– zvoliœ vykon van£ alternat¡vu, alebo syst‚m vykon  automaticky obe alternat¡vy. PoŸas vykon vania vìpoŸtovej cesty sa premenn‚ a ohraniŸenia (predik ty alebo nerovnosti) priebe§ne zjednoçuj£. Ka§d‚ ohraniŸenie generovan‚ syst‚mom poŸas symbolick‚ho vykon vania vìpoŸtovej cesty sa testuje na konzistenciu s existuj£cimi ohraniŸeniami v s£bore ohraniŸen¡. Ak je ohraniŸenie nekonzistentn‚, cesta je "nepriechodn ". Ak je ohraniŸenie konzistentn‚, symbolick‚ vykon vanie vìpoŸtovej cesty m“§e pokraŸovaœ. Povykonan¡ vìpoŸtovej cesty je vìsledkom vìstup, ktorì symbolicky vyjadruje vzœah medzi symbolickìmi vstupmi syst‚mu a vìstupmi pre dan£ vìpoŸtov£ cestu. K vìstupom sa via§e ohraniŸenie, na z klade ktor‚ho bol mo§nì prechod danou vìpoŸtovou cestou. Tieto ohraniŸenia m“§u byœ n sledne vyu§it‚ pri rozde–ovan¡ dom‚ny vstupnìch hodn“t. 7.4.2.2. Gener tory testovac¡ch d t ----------------------------------- Gener tor testovac¡ch d t je prostriedok, ktorì pom ha pou§¡vate–ovi (analytikovi) pri generovan¡ testovac¡ch £dajov pre analyzovanì program alebo modul. Cie–om je presunutie znaŸn‚ho mno§stva tejto pr ce na podpornì syst‚m a odstr nenie subjektivity v generovan¡ testovac¡ch £dajov. Gener tory testovac¡ch d t je mo§n‚ rozdeliœ do troch kateg¢ri¡: gener tory vych dzaj£ce z vìpoŸtovìch ciest, gener tory vych dzaj£ce z d tovìch çpecifik ci¡ a gener tory n hodnìch vstupov. Gener tory vych dzaj£ce z vìpoŸtovìch ciest ------------------------------------------- Jednìm z mo§nìch a najrozç¡renejçie pou§¡vanìch pr¡stupov ku generovaniu testovac¡ch £dajov je vìber vstupov z dom‚n viazanìch k jednotlivìm vìpoŸtovìm cest m. Vstupy s£ vyberan‚ za £Ÿelom vykonania vybranìch vìpoŸtovìch ciest v programe. ¬innosœ gener torov pracuj£cich na popisovanom princ¡pe pozost va za 4 hlavnìch krokov - konçtrukcia digrafu - vìber vìpoŸtovej cesty - symbolick‚ vykonanie vybranej vìpoŸtovej cesty - generovanie testovac¡ch d t Z kladnìm rozdielom medzi jednotlivìmi syst‚mami vyu§¡vaj£cimi uveden£ techniku je v sp“sobe vìbere vìpoŸtovìch ciest a v sp“sobe identifik cie "nepriechodnosti" ciest. Òalç¡mi rozdielmi bìvaj£ schopnosti symbolick‚ho vyhodnocovania a zjednoduçovania algebraickìch vìrazov. Konçtrukcia digrafu programu. Zdrojovì program je predspracovanì za £Ÿelom vytvorenia digrafu reprezentuj£ceho tok riadenia v programe. Z roveå sa zhrova§duj£ dalçie inform cie vyu§¡van‚ v nasleduj£cej analìze. Vìber vìpoŸtovej cesty. Vìber vìpoŸtovej cesty s£vis¡ so zvolenìmi krit‚riami. Tetsovac¡mi krit‚riami m“§e byœ napr. pokrytie vìpoŸtovìch ciest, pokrytie pr¡kazov a pokrytie vetven¡. Vìber vìpoŸtovej cesty sa m“§e realizovaœ manu lne alebo automaticky, staticky alebo dynamicky. Manu lny dynamickì vìber vy§aduje , aby pou§¡vate– vyberal Ôalç¡ pr¡kaz v§dy, ak sa identifikuje potreba rozhodovania, tzn. vetvenie v programe. Takìto pr¡stup je ve–mi œa§kop dny, neefekt¡vny a obtia§ny. Manu lny statickì vìber vy§aduje, aby pou§¡vate– definoval vìpoŸtov‚ cesty pred vlastnì vykonan¡m analìzy. Pou§¡vate– vçak m“§e vybraœ ve–kì poŸet vìpoŸtovìch ciest, ktor‚ nie je mo§n‚ vykonaœ (s£ "nepriechodn‚"). Automatickì statickì vìber umo§åuje automaticky vybraœ vìpoŸtov‚ cesty pre vlastnìm procesom symbolick‚ho vykon vania. Tetnto pr¡stup je zalo§enì na grafickej reprezent cii programu a bez dodatoŸnej s‚mantickej inform cie m  rovnak‚ nedostatky ako predch dzaj£ce met¢dy. Automatickì vìber vçetkìch ciest vy§aduje vyhodnotenie vçetkìch vykonate–nìch vìpoŸtovìch ciest. Nevìhodou tohoto pr¡stupu je zaplavenie pou§¡vate–a ve–kìm mno§stvom generovanìch vìpoŸtovìch ciest. PoŸet vìpoŸtovìch ciest bìva obvykle ve–kì a d’§ka cesty je obvykle neohraniŸen . V„Ÿçina existuj£cich syst‚mov vyber  vìpoŸtov‚ cesty na z klade nasledovnìch krit‚ri¡: - pou§¡vate– vopred çpecifikuje vçetky vìpoŸtovv‚ cesty, ktor‚ sa maj£ analyzovaœ - pou§¡vate– vopred çpecifikuje maxim lnu d’§ku vìpoŸtovìch ciest a maxim lny poŸet opakovan¡ cyklov, ktor‚ maj£ byœ analyzovan‚ - pou§¡vate– interakt¡vne vyber  analyzovan£ vìpoŸtov£ cestu a vykon va ju pr¡kaz po pr¡kaze - vìber vìpoŸtovìch ciest je vykon vanì automaticky syst‚mom na z klade definovan‚ho rozsahu pokrytia Symbolick‚ vykonanie. Po vìbere vìpoŸtovej cesty sa pou§¡va symbolick‚ vykonanie cesty pre generovanie ohraniŸen¡ pre dan£ vìpoŸtov£ cestu. OhraniŸenie vìpoŸtovej cesty pozost va z rovnost¡ a nerovnost¡ popisuj£cich vstupn‚ premenn‚. Vstupy sp’åaj£ce tieto ohraniŸenia bud£ spracovan‚ danou vìpoŸtovou cestou. Generovanie testovac¡ch £dajov. Tento krok spoŸ¡va vo vìbere vstupnìch d t, ktor‚ poved£ k vykonaiu çpecifikovanej vìpoŸtovej cesty. V„Ÿçina syst‚mov vyu§¡va techniky line rneho programovania pre n jdenie numerickìch rieçen¡ pre ohraniŸenia vìpoŸtovej cesty. Je vçak mo§n‚ pou§iœ i met¢du pokusu a omylu, alebo n hodn‚ gener tory. Gener tory vych dzaj£ce z d tovìch çpecifik ci¡ ----------------------------------------------- Gener tory tohoto typu asistuj£ pri tvorbe testovac¡ch vstupov tak, §e poskytuj£ jazyk çpecifik cie d t umo§åuj£ci pop¡saœ vstupn‚ d ta programu. Z nich sa potom generuje s£bor testovac¡ch vstupov. Gener tory s£borov predstavuj£ spacifickì pr¡pad syst‚mov d tovìch çpecifik ci¡. Umo§åuj£ generovaœ s£bory testovac¡ch d t na z klade pou§itia çpeci lnych povelovìch jazykov na popis d tovej çtrukt£ry s£borov. Zatia– Ÿo gener tory testovac¡ch d t sa zameriavaj£ najm„ na hodnoty testovac¡ch vstupov aktivuj£cich çpecifick‚ vìpoŸtov‚ cesty, gener tory s£borov sa zameriavaj£ viac na formu çtrukt£ry s£borov a v niektorìch pr¡padoch taktie§ generovan¡m typickìch obsahov vybranìch polo§iek vo vytv ranìch s£boroch. Gener tory n hodnìch vstupov ---------------------------- Testovacie vstupy s£ generovan‚ jednoduchìm vìberom n hodnej hodnoty dom‚ny ka§dej vstupnej premennej. Pre zmyslupln‚ generovanie n hodnìch vstupov je potrebn‚ £daje vyberaœ jednak z dom‚ny danej vìpoŸtovej cesty, no taktie§ vyberaœ viacero vìpoŸtovìch ciest. Pokia– sa zvol¡ norm lne rozdelenie, je met¢da ekvivalentn  testovaniu pomocou Ÿiernej skrinky. Hlavnou vìhodou n hodn‚ho testovania je jeho jednoduchosœ. Je to z roveå i najjednoduhç¡ proces ako potlaŸiœ z vislosœ od testovan‚ho programu. 7.2.4.3. Inçtrument tory programov ---------------------------------- Inçtrument tory programov zhroma§duj£ d ta z¡skavan‚ poŸas vykon vania programu za £Ÿelom odhalenia våutorn‚ho spr vania sa programu a jeho prev dzkovìch vlastnost¡. Zhroma§dovanie d t je mo§n‚ dosahovaœ vkladan¡m monitorovac¡ch pr¡kazov do zrojov‚ho k¢du programu. Inçtrumentaliz cia je z kladnìm prostriedkom dynamickej analìzy umo§åuj£cim detekciu chìb, ktor‚ nie je mo§n‚ alebo nie je efekt¡vne identifikovaœ statickou analìzou. Hlavn‚ pou§itie inçtrumentaliz cie v testovan¡ je mo§n‚ rozdeliœ do troch skup¡n: Analìza pokrytia. UrŸenie a z¡skavanie hodn“t spojenìch s aktiv ciou çtruktur lnych elementov programu je pou§¡van‚ na urŸenie adekv tnosti preveden‚ho testu. Tieto inform cie s£ n sledne vyu§¡van‚ na vyhodnotenie £speçnosti vykonan‚ho testovania a na n vrh lepçej mno§iny testovac¡ch vstupov umo§åuj£cej lepçie pokrytie testovan‚ho programu. Monitorovanie a analìza pravdivosti tvrden¡. Za £Ÿelom podpory ladenia je inçtrumentaliz cia pou§¡van  k sledovaniu zmien hodn“t premennìch. Òalç¡m pou§it¡m inçtrumentaliz cie je vkladanie pr¡kazov testuj£cich splnenie podmienky (tvrdenia) na urŸitom mieste programu. Tvrdenie je v tomto zmysle mo§n‚ pova§ovaœ za podmienku alebo rel ciu viazan£ na hodnotu programovej premennej, ktor  sa do programu vklad  vo forme koment ra. Techniky overovania splnenia tvrden¡ umo§åuj£ vyjadriœ po§iadavky na valid ciu, ktor‚ zobrazuj£ oŸak van‚ spr vanie programu. Detekcia anom li¡ d tovìch tokov. Inçtrument cia d tovìch tokov sl£§i na zaznamen vanie minim lnych a maxim lnych hodn“t ka§dej premennej, rovnako ako na zaznamen vanie poruçen¡ definovan‚ho rozsahu hodn“t premennej. Pri kombin ci¡ s tabu–kami stavovìch prechodov je mo§n‚ detekovaœ chyby spojen‚ s referencovan¡m neinicializovanìch premennìch a premennìch s priradenou hodnotou, ktor‚ sa nevyu§¡vaj£. Hoci tieto chyby je mo§n‚ detekovaœ taktie§ statickìmi met¢dami, pou§itie inçtrument cie je Ÿastokr t efekt¡vnejçie. Inçtrument cia toti§ poskytuje po§adovan‚ inform cie ako ved–ajç¡ produkt procesu testovania. Programov‚ inçtrument tori je mo§n‚ klasifikovaœ do nasledovnìch kateg¢ri¡: - verifik tori dynamick‚ho vykon vania - inçtrument tori s vn£tornou metrikou - overovaŸe tvrden¡ Verifik tori dynamick‚ho vykon vania ------------------------------------ Syst‚my tohoto druhu s£ castokr t nazìvan‚ taktie§ analyz tori pokrytia alebo syst‚my automatickej verifik cie. Dynamick‚ verifik tori s£ programy, ktor‚ vyhodnocuj£ efekt¡vnosœ jednotlivìch testov v zmysle merania stupåa, akìm danì test vykon va (aktivuje) jednotliv‚ casti testovan‚ho programu. Z¡skavanie inform ci¡ je vykon van‚ za z klade vkladania poŸ¡tadiel na strategick‚ miesta v zdrojovom k¢de. Pokrytie danìm testom je interpretovan‚ ako poŸet vykonan¡ urŸitej Ÿasti programu v priebehu testu. Program je rozŸlenenì na segmenty reprezentuj£ce mo§n‚ cesty medzi jednotlivìmi rozhodovac¡mi pr¡kazmi.. Do ka§dej cesty sa vlo§¡ poŸ¡tadlo, ktor‚ r ta frekvenciu vykon vania danej cesty. Po modifik cii programu post-procesor analyzuje zhroma§den‚ £daje a prezentuje vìsledok ako relat¡vne pokrytie programu, zoznam nepokrytìch Ÿast¡ atÔ. Probl‚mom pri analìze pokrytia ost va minimaliz cia poŸtu poŸ¡tadiel, ktor‚ je potrebn‚ zaviesœ do programu pre dostatoŸn‚ generovanie inform ci¡ pre post-procesor. Inçtrument tori s vn£tornou metrikou ------------------------------------ Tieto syst‚my s£ urŸen‚ k inçtrument cii programov za £Ÿelom z¡skania inform ci¡ o internom spr van¡ programov. Pou§¡vate– specifikuje zoznam premennìch a rozsa inçtrument cie v çpeci lnom povelovom jazyku. Syst‚m potom automaticky vklad  sledovacie pr¡kazy do programu. Inçtrument tori s vn£tornou metrikou poskytuj£ vçeobecnejçie inform cie ako verifik tori dynamick‚ho vykon vania. Typick‚ inform cie predstavuj£ poŸet aktiv ci¡, inici lna, koneŸn , maxim lna, minim lna a priemern  hodnota premennìch, poŸet kladnìch a z pornìch vyhodnoten¡ podmienky v pr¡kaze vetvenia, rozsah £dajov pres£vanìch vstupnìmi a vìstupnìmi pr¡kazmi. Vìhodou prostriedkov tohoto typu je zruzumite–nosœ poskytovanìch inform ci¡. R‚§ia aplik cie tohoto pêistupu je vçak pomerne vysok  (50-200% na pr¡pravu a 50% na spracovanie vìsledkov). OverovaŸe tvrden¡ ----------------- OverovaŸe tvrden¡ s£ programy ktor‚ transformuj£ tvrdenia do modifik ci¡ zdrojov‚ho k¢du generuj£ce varovania pri poruçen¡ podmienky reprezentovanej danì tcrden¡m. Tvrdenia definovan‚ ako koment re v programe s£ automaticky nahraden‚ k¢dom testuj£cim ich platnosœ. Hlavnou vìhodou automatick‚ho overovania tvrden¡ je mo§nosœ ich odstr nenia po zisten¡ ich nepotrebnosti. Overovanie tvrden¡ sa pou§¡va pre valid ciu programov, detekciu chìb a dynamick£ kontrolu kritickìch parametrov (hodnota, rozsah). Poskytovan‚ mo§nosti syst‚mov pre overovanie pravdivosti tvrden¡ s£ sirçie ako u çtandardnìch programovac¡ch jazykov. Program tor m“§e definovaœ tvrdenie o stave spracovania viazan‚ na –ubovo–n£ Ÿasœ programu alebo £dajovej çtrukt£ry. Po ukonŸen¡ testovania definovan‚ tvrdenia nemaj£ §iaden vplyv na fukkŸnosœ programu, preto§e s£ ch pan‚ ako koment re. Z kladn£ Ÿinnosœ overovaŸov pravdivosti tvrden¡ je mo§n‚ rozdeliœ do troch f z: F za predspracovanie. Hlavnou Ÿinnosœou v tejto f ze je vkladanie zodpovedaj£cich inçtrukci¡ do zdrojov‚ho programu. V syst‚moch s vn£tornou metrikou je modifikovan  taktie§ vykon vacia datab ze a do k¢du s£ vkladan‚ "sondy" (pr¡kazy z¡skavaj£ce po§adovan‚ inform cie). OverovaŸe pravdivosti tvrden¡ testuj£, Ÿi je dan‚ tvrdenie akt¡vne a tvrdenie sa nahrad¡ zodpovedaj£cou postupnosœou inçtrukci¡. V pr¡pade verifik torov dynamick‚ho vykon vania je program spracovanì syntaktickìm analyz torom pred vkladan¡m sond. F za kompil cie a vykon vania. Modifikovanì program sa skompiluje a vykon va. V pr¡pade syst‚mov s vn£tornou metrikou sa aktualizuje datab za. V pr¡pade syst‚mu pre overovanie pravdivosti tvrden¡ sa testuje podmienka splnenia tvrdenia a pr¡padn‚ poruçenie tvrdenia sa zaznamen va. F za dodatoŸn‚ho spracovania. ætatistiky z¡skan‚ poŸas vykon vania sa navia§u na pr¡kazy zdrojov‚ho programu a generuje sa anotovanì listing a sumariz cia vìsledkov. Pre syst‚m verifik cie vyhodnocovania sa generuje mapa pokrytia. Pr¡kladom pou§itia prostriedkov tohoto typu m“§e byœ syst‚m PET (Program Evaluator and Tester). Pr¡klady defin¡cie monitorovania premennej a defin¡cie tvrdenia v pr¡kazovom jazyku s£ ilustrovan‚ na OBR.7.6. OBR.7.6. pr¡klad pr¡kazov‚ho jazyka syst‚mu PET 7.2.4.4. MutaŸn‚ testovacie prostriedky --------------------------------------- Syst‚my pre mut ciu programov s£ interakt¡vne podporn‚ prostriedky umo§åuj£ce urŸovaœ mutaŸn‚ sk¢re dan‚ho programu. MutaŸn‚ sk¢re je Ÿ¡slo z intervalu <0,1> definuj£ce kvalitu testovac¡ch £dajov. Technika programovej mut cie predpoklad , §e testovan‚ programy boli vytvoren‚ sk£senìmi ("kompetentnìmi") program tormi. Tieto programy, ak nie s£ korektn‚, s£ "skoro" korektn‚. Znamen  to, §e nekorektnì program je "mutantom" korektn‚ho programu a obsahuje iba jednoduch‚ chyby. MutaŸnì analyz tor podrob¡ program P, ktorì je korektnì na testovacej mno§ine D, aplik cii s‚rie mutantnìch oper torov, ktor‚ vytv raj£ mutanty iba m lo sa odliçuj£ce od P. Mutovan‚ programy s£ potom vykonan‚ z testovac¡mi £dajmi z D. Ak vçetky mutanty d vaj£ nespr vne vìsledky (tzn. "umr£"), testovacia mno§ina D je pravdepodobne adekv tna. Ak vçak aspoå jeden mutant d  spr vny vìsledok (bude "§iœ"), potom §iv‚ mutanty s£ funkŸne ekvivalentn‚ s P, tzn. testovacia mno§ina je neadekv tna. V tomto pr¡pade je potrebn‚ mno§inu D analyzovaœ vzh–adom k §ivìm mutantom. V pr¡pade §e D sa uk zala ako adekv nta, v programe P m“§u existovaœ zlo§itejçie chyby, ktor‚ nie je mo§n‚ vytvoriœ jednoduchou aplik ciou mutaŸnìch oper torov. Toto vçak je vzh–adom na efekt viazanosti dosœ nepravdepodobn‚. Efekt viazanosti tvrd¡, §e testovacie d ta p“sobiace smrœ jednoduchìch mutantov s£ tak‚ senzit¡vne, §e s ve–kou pravdepodobnosœou sp“sobia smrœ i zlo§itejç¡ch mutantov. Existuje i vari cia mut cia nazìvan  slab  mut cia. V tejto met¢de s£ podmienky "zab¡jaj£ce" mutanty modifikovan‚ tak, aby sa zvìçila efekt¡vnosœ testovania. V s£Ÿasnosti existuje viavero mutaŸnìch prostriedkov pre FORTRAN a COBOL. ætatistick‚ inform cie poskytovan‚ pou§¡vate–ovi zahråuj£ nasledovn‚: - vìsledky vykon vania programu nad testovac¡mi £dajmi - spr vy o inçtrument cii (poŸet vykonanìch riadkov, atÔ.) - identifik ctory testov - hrub‚ poŸty §ivìch a mêtvych mutantov - sp“sob identifik cie zlyhania mutantu (nespr vny vìstup, nespr vna Ÿinnosœ atÔ.) - zoznam §ivìch mutantov - zoznam mêtvych mutantov - vybrat‚ mutanty (n hodne, pod–a typu, atÔ.) - zoznamy ekvivalentnìch mutantov - pr¡kazy pre daklar ciu ekvivalencie mutantov - grafick‚ reprezent cia §ivìch a mêtvych mutantov - gener tory spr v o testovan¡ - pr¡kazy pre vìber/oznaŸenie dostupnìch mutaŸnìch oper torov - pr¡kazy pre urŸenie percentu lneho mno§stva vykonanìch mutantov - pr¡kazy pre automatick‚ detekovanie ekvivalentnìch mutantov - predik ty pre porovn vanie vìstupov mutantov - pr¡kazy pre vìber Ÿast¡ programov‚ho k¢du na testovanie - archivaŸn‚ pr¡kazy OperaŸnì tok mutaŸneho analyz tora a z kladn‚ cinoosti s£ ilustrovan‚ na OBR.7.7. OBR.7.7. - operaŸnì tok mutaŸn‚ho analyz tora Vo f ze predspracovania sa testovanì program transformuje do vn£tornej formy, z¡ska sa testovacia mno§ina a vytvoria sa desckripcie mutantov. Pou§¡vate– potom m“§e vykonaœ testovanì program nad testovac¡mi £dajmi a manu lne, alebo pomocou naprogramovanej analìzy z¡skaœ vìsledky testov. PoŸas mutaŸnej f zy s£ deskripcie mutantov vyu§it‚ k vykonaniu zodpovedaj£cich zmien v zdrojovom k¢de. V z vereŸnej f ze sa vìsledky testov sumarizuj£ a generuj£ sa vìstupn‚ zostavy. Organiz cia mutaŸn‚ho syst‚mu je ilustrovan  na OBR.7.8. OBR.7.8. - organiz cia mutaŸn‚ho analyz tora. Pri generovan¡ mutantov sa vyu§¡va pomerne çirok  sk la "çtandardnìch" mutantov. Najpou§¡vanejçie (tzn. poskytovan‚ v„Ÿçinou mutaŸnìch syst‚mov) mutaŸn‚ oper tory pre jazyk FORTRAN s£ nasledovn‚ (analogicky je mo§n‚ vytvoriœ mutaŸn‚ oper tory pre l£bovo–nì programovac¡ jazyk): 1. z mena konçtanty 2. z mena skal rnej premennej 3. z mena konçtanty za skal rnu premenn£ 4. z mena skal rnej premennej za konçtantu 5. z mena referencie po–a za konçtantu 6. z mena referencie po–a za skal rnu premenn£ 7. z mena konçtanty za referenciu po–a 8. z mena skal rnej premennej za referenciu po–a 9. z mena referencie po–a za referenciu po–a 10. z mena zdrojovej konçtanty 11. zmena d tov‚ho pr¡kazu 12. z mena mena po–a za porovnate–n‚ pole 13. z mena aritmetick‚ho oper tora 14. z mena relaŸneho oper tora 15. z mena logickej spojky 16. zavedenie absol£tnej hodnoty 17. zavedenie un rneho oper tora 18. z mena pr¡kazu 19. zruçenie pr¡kazu 20. z mena pr¡kazu RETURN 21. z mena cie–a GOTO pr¡kazu 22. z mena END v DO pr¡kaze (cyklus) Mnoh‚ mutaŸn‚ syst‚my umo§åuj£ zaviesœ tvrdenia do programu. Pri vykon van¡ mutantu je mo§n‚ platnosœ tìchto tvrden¡ testovaœ a "zabiœ" mutanta bezprostredne po zisten¡ odchìlky. Nevìhodou mutaŸnìch analyz torov je skutoŸnosœ, §e poŸet mutantov rastie z rozsahom testovan‚ho programu neline rne. V tomto pr¡pade je vçak mo§n‚ vyu§iœ r“zne vylepçenia a heuristiky umo§åuj£ce obmedziœ jednak rozsah generovanìch mutantov, ako aj zefekt¡vnenie identifik cie mêtvych mutantov. Na z klade vykonanìch experimentov sa odhaduje potrebnì rozsah testovania 1000 riadkov‚ho programu vo FORTRANe na 5 Ÿloveko-dn¡. T to hodnota je ni§çia ako pri manu lnom laden¡ programu zodpovedaj£cej ve–kosti. Pou§itie mutaŸnìch analyz torov vy§aduje vìkonnì procesor a rozsiahlu extern£ pam„œ. PoŸet mutantov pre program m“§e dosahovaœ i nieko–ko mili¢nov. Preto Ÿas potrebnì pre mutaŸn‚ testovanie m“§e prevìçiœ pr¡pustn£ dobu. Vo v„Ÿçine pr¡padov vçak doch dza k "pretestovaniu" programu a pre generovanie kvalitnìch testovac¡ch £dajov obyŸajne postaŸuje iba relat¡vne mal  vzorka mutantov.