ČVUT FEL Katedra telekomunikační techniky, K Radek Mařík Strukturované testování 17.
|
|
- Monika Dostálová
- před 5 lety
- Počet zobrazení:
Transkript
1 Strukturované testování Radek Mařík ČVUT FEL Katedra telekomunikační techniky, K října 2017 Radek Mařík Strukturované testování 17. října / 55
2 Obsah 1 Návrh testů řízené modelem Principy 2 Testování cest Princip Kritéria pokrytí 3 Úvod Grafové modely softwaru Překlad specifikace do grafu Testování datového toku Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
3 Návrh testů řízené modelem Principy Návrh testů řízené modelem (MDTD) [AO08] angl. Model Driven Test Design matematiku provádí jeden návrhář testů tradiční testeři a programátoři se soutředí na 1 nalezení hodnot, 2 automatizaci testů, 3 běh testů, 4 vyhodnocení testů. Jako v tradičním inženýrství, inženýr konstruuje modely s pomocí kalkulu, potom předá pokyny tesařům, elektrikářům, technikům, apod. Testeři nejsou matematici! Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
4 Návrh testů řízené modelem Principy Návrh testů řízené modelem [AO10] Radek Mařík Strukturované testování 17. října / 55
5 Návrh testů řízené modelem Principy Návrh testů řízené modelem - kroky [AO10] Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
6 Návrh testů řízené modelem Principy Návrh testů řízené modelem - aktivity [AO10] Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
7 Návrh testů řízené modelem Principy Návrh testů řízené modelem - příklad(1) [AO10] Softwarový artefakt - Java funkce /* Return index of node n at * the first position it * appears, * -1 if it is not present. */ public int indexof (Node n) { for (int i=0; i < path.size(); i++) if(path.get(i).equals(n)) return i; return -1; } Řídicí tok 5 return i = 0 i < path.size() 3 if 4 return i Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
8 Návrh testů řízené modelem Principy Návrh testů řízené modelem - příklad(2) [AO10] Řídicí tok 5 return i = 0 i < path.size() 3 if 4 return i Hrany Počáteční uzel: 1 Koncové uzly: 4, 5 Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
9 Návrh testů řízené modelem Principy Návrh testů řízené modelem - příklad(3) [AO10] Řídicí tok 1 2 i = 0 i < path.size() 3 if 6 požadavků na pokrytí páru hran 1 [1, 2, 3] 2 [1, 2, 5] 3 [2, 3, 4] 4 [2, 3, 2] 5 [3, 2, 3] 6 [3, 2, 5] 5 return -1 4 return i Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
10 Návrh testů řízené modelem Principy Návrh testů řízené modelem - příklad(4) [AO10] Řídicí tok 1 i = 0 2 i < path.size() 3 if Testovací cesty [1, 2, 5] [1, 2, 3, 2, 5] [1, 2, 3, 2, 3, 4] 5 return -1 4 return i Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
11 Návrh testů řízené modelem Principy Model vady&selhání [AO08] K tomu, aby selhání bylo zpozorováno, je potřeba splnit 3 podmínky: 1 Dosažitelnost Místa mající vady musí být dosažitelná. 2 Infekce Program se musí dostat do nesprávného stavu. 3 Propagace Infekční stav musí ovlivnit nějaký nesprávný výstup programu. Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
12 Návrh testů řízené modelem Principy Pozorovatelnost a řiditelnost [AO08] Pozorovatelnost softwaru Jak snadné je pozorovat chování programu vzhledem k jeho výstupům, ke změnám prostředí, jiného hardwaru a softwarových komponent. Software operující s hardwarem, databázemi, či vzdálenými soubory má nízkou porozovatelnost. Řiditelnost softwaru Jak je snadné ovládnout program potřebnými vstupy, tj. hodnotami, operacemi, či chováním. Snadné je řídit software vstupy z klávesnice. Hůře se zadávají vstupy ze senzorů nebo distribuovaného softwaru. Abstrakce dat redukuje řiditelnost i pozorovatelnost. Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
13 Návrh testů řízené modelem Principy Změny v přístupu k testování [AO08] Tradiční testování zdůrazňovalo testovací metody dle fází. testování jednotek, komponent, integrační, systémové. Moderní metody jsou založeny na strukturách a kritéríıch. grafy, logické výrazy, syntax, prostor vstupů. Návrh testů je de-facto stejný ve všech fázích. Liší se pouze ve způsobu vytvoření modelů. výběru hodnot a automatizování běhu testů. Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
14 Návrh testů řízené modelem Principy Moderní návrh testů [AO08] Základní postup. 1 definuj model softwaru, 2 nalezni způsob jeho pokrytí. Testovací požadavky: specifické věci, které musí být splněny nebo pokryty během testování. Testovací kritérium: množina pravidel a proces, které definují testovací požadavky výběru hodnot a automatizování běhu testů. Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
15 Návrh testů řízené modelem Principy Možnosti modelování softwaru [AO08] 1 Grafy 2 Logické výrazy ( not X or not Y ) and A and B 3 Charakterizace vstupních domén: A : {0, 1, > 1} B : {600, 700, 800} C : {swe, cs, isa, infs} 4 Syntaktické struktury if (x > y) then z = x y; else z = 2 x; end if Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
16 Testování cest Princip Testování cest [KFN93] Cesta je sekvence operací, které se provedou od začátku běhu programu do jeho ukončení, tzv. úplná cesta Část cesty je sekvence operací z jednoho místa programu do jiného místa. Kritéria pokrytí specifikují třídu cest, které by se měly provést v rámci testování. Typicky redukují množství testů na rozumnou proveditelnou úroveň. Testování provedené podle těchto kritéríı se nazývá testování cest. Critérium adekvátnosti testů (EN test adequacy criterion)... je predikát, který vrací true nebo false for pár program, testsuite. Obvykle vyjádřeno ve formě pravidla: např. všechny příkazy musí být pokryty Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
17 Testování cest Princip Testování cest - příklad [KFN93] IF (A>B and C==5) THEN do SOMETHING SET D=5 (a) A>B and C==5 (SOMETHING is done, then D is set to 5) (b) A>B and C!=5 (SOMETHING is not done, D is set to 5) (c) A<=B and C==5 (SOMETHING is not done, D is set to 5) (d) A<=B and C!=5 (SOMETHING is not done, D is set to 5) Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
18 Testování cest Kritéria pokrytí Pokrytí řádek požaduje provedení každé řádky kódu alespoň jednou. Nejslabší kritérium. Tester může pokrýt všechny tři řádky kódu případem (a). Pokrytí větví znamená, že podmínka každého větvení musí alespoň jednou být pravdivá a alespoň jednou nepravdivá. Toto pokrytí vyžaduje otestování všech řádek a všech větví. Tester může použít případ (a) a jakýkoliv další ze zbývajících tří. Pokrytí podmínek zkontroluje všechny možné způsoby, za kterých daná podmínka (pokrytí i individuálních podmínek) je pravdivá či nepravdivá. Vyžaduje všechny čtyři případy. Požadováno americkou armádou a letectvím. Úplné pokrytí cest vyžaduje provedení všech možných různých úplných cest. Radek Mařík (radek.marik@fel.cvut.cz) V praxi je neproveditelné. Strukturované testování 17. října / 55 Kritéria pokrytí [KFN93]
19 Testování cest Testování složených podmínek Kritéria pokrytí Mějme výraz ((((a b) c) d) e) Potřebujeme 13 testů, abychom pokryli všechny možné kombinace. V obecném případě čeĺıme kombinatorické explozi. Nepraktické. Test a b c d e (1) True - True - True (2) False True True - True (3) True - False True True (4) False True False True True (5) False False - True True (6) True - True - False (7) False True True - False (8) True - False True False (9) False True False True False (10) False False - True False (11) True - False False - (12) False True False False - (13) False False - False - Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
20 Testování cest Kritéria pokrytí Pokrytí rozhodnutí modifikovaných podmínek EN Modified Condition Decision Coverage (MCDC Testing) Testování důležitých kombinací podmínek, vyhnutí se kombinatorické explozi. Kombinace je důležitá, jestliže se pro každou základní podmínku prokáže její nezávislý vliv na výsledek rozhodnutí. Pro každou základní podmínku C potřebujeme dva testovací případy T 1 a T 2. Hodnoty všech vyhodnocených podmínek s vyjímkou C jsou ty samé. Složená podmínka se jako celek ohodnotí True pro T 1 a False pro T 2. Dobrá balance mezi hloubkou testování a počtem testů a proto se široce používá. Pro N proměnných stačí vytvořit N + 1 testovacích případů. Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
21 Testování MCDC Testování cest Kritéria pokrytí Mějme výraz ((((a b) c) d) e) Potřebujeme 6 testů, abychom pokryli MCDC kombinace. Podtržené hodnoty nezávisle ovlivňují hodnotu rozhodnutí. Ten samý test může pokrývat hodnoty několika základních podmínek. Testovací případ (1) pokrývá hodnotu True pro základní podmínky a, c a e. Test a b c d e Rozhodnutí (1) True - True - True True (2) False True True - True True (3) True - False True True True (6) True - True - False False (11) True - False False - False (13) False False - False - False Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
22 Úvod Grafy a relace [Bei95] Grafy jsou hlavním koncepčním nástrojem testování: grafy toku řízení, grafy toku dat, stromy závislosti volání funkcí, grafy konečných automatů, grafy toku transakcí. Relace: vybraná asociace mezi objekty, A, B... objekty,,,... relace, A B Příklad: akce A je následovaná akcí B. Uzel: objekty grafu reprezentované kroužky, Jméno uzlu: každý uzel má jednoznačnou identitu nebo jméno, Atributy uzlu: vlastnosti uzlu. Příklady: stav programu, hodnota proměnné. Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
23 Úvod Hrany grafu [Bei95] Hrana: šipka nebo čára spojující dva uzly vyjadřující danou relaci mezi těmito uzly. Jméno hrany: každá hrana má jednoznačnou identitu nebo jméno. pár jmen obou uzlů, speciální jméno, Atributy hran: vlastnosti hran. Příklady: exekuční čas programu podél specifické cesty, pravděpodobnost provedení dané cesty, fakt o výběru určitého datového objektu. Orientovaná hrana: používaná pro asymetrické relace. Příklad: A je následováno B. Většina modelů testování používá orientované hrany. Neorientovaná hrana: hrana označující symetrickou relaci. Paralelní hrany: dvě či více hran mezi jedním párem uzlů. Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
24 Úvod Terminologie teorie grafu [Bei95] Graf: je kolekce uzlů, jmen uzlů, atributů uzlů, hran, jmen hran, atributů hran a relací mezi uzly. Orientovaný graf: všechny hrany jsou orientované. Neorientovaný graf: všechny hrany jsou neorientované. Vstupní hrana: hrana, která míří do uzlu (hlava šipky). Výstupní hrana: hrana opouštějící uzel (ocas šipky). Počáteční uzel: uzel nemající vstupní hrany. Koncový uzel: uzel nemající výstupní hrany. Uzel větvění: uzel se dvěma a více výstupními hranami. Příklad: CASE příkaz nebo IF-THEN-ELSE příkaz. Cesta: sekvence hran spojující dva uzly. Příklad: Při testování chování se pracuje s cestami modelem, který popisuje chování softwaru. Takové cesty mohou nebo nemusí korespondovat cestám implementací programu. Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
25 Úvod Cesty grafu [Bei95] Proveditelná cesta: cesta, pro níž existují vstupní hodnoty takové, že běh programu bude sledovat danou cestu. Neproveditelná cesta: cesta, pro níž neexistují množina vstupních hodnot, která by umožňila postupovat programem podél této cesty. Cesta start-stop: cesta vedoucí od počátečního uzlu do koncového uzlu. Segment cesty: obvykle cesta, která není cestou start-stop. Jméno cesty: jména uzlů podél cesty, jména hran podél cesty, Délka cesty: počet uzlů dané cesty, počet hran dané cesty. Smyčka: jakákoliv cesta, která navštíví nějaký uzel alespoň dvakrát. Cesta bez smyček: cesta nemající smyčku. Radek Mařík Strukturované testování 17. října / 55
26 Úvod Reprezentace grafů [Bei95] Graf Matice (tabulka) 30 Seznam 22 7: 10 10: 14, 22 14: 22: 14, 25 25: 30 30: Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
27 Grafové modely softwaru Obecné principy testování [Bei95] Výstavba modelu (grafu) 1 objekty, o které se zajímáme (uzly). 2 relace, které by měly existovat mezi uzly. 3 které objekty mají vztah s jinými (hrany). 4 vlastnosti asociované s hranami: atributy hran. Návrh testovacích případů podle modelu 1 definuj graf, 2 definuj relace, 3 navrhni testy pro pokrytí uzlů (testy potvrzující přítomnost uzlů). 4 navrhni testy pro pokrytí hran (testy potvrzující všechny požadované hrany a žádné jiné). 5 otestuj všechny atributy. 6 navrhni testy smyček. Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
28 Grafové modely softwaru Metoda hlavních cest [AO08] 1 Jednoduchá cesta... cesta z n i do n j, na které se žádný uzel neobjevuje více jak jedenkrát s vyjímkou, že počáteční a koncový uzel mohou být identické. 2 Hlavní cesta... cesta z n i do n j je hlavní, jestliže je to jednoduchá cesta a není žádnou vlastní podcestou jakékoliv jiné jednoduché cesty (tj. je maximální). 3 Procházka... Testovací cesta p prochází podcestu q, jestliže q je podcestou p. 4 Procházka s vedlejšími výlety... Testovací cesta p prochází podcestu q s vedlejšími výlety, jestliže každá hrana v q je také v p v tom samém pořadí. 1 vedlejší výlet s vrací do stejného uzlu. 5 Procházka s objížd kami... Testovací cesta p prochází podcestu q s objížd kami, jestliže každý uzel v q je také v p v tom samém pořadí. 1 nevrátí se do výchozího uzlu objíždky. Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
29 Grafové modely softwaru Konstrukce testových cest [AO08] Procházení nejlepšího úsiĺı 1 Množina TR tour je podmožina všech testovacích požadavků, pro které lze vytvořit procházku. 2 Množina TR sidetrip je podmožina všech testovacích požadavků, pro které lze vytvořit procházku s vedlejším výletem. 3 Množina T testových cest splňuje procházení nejlepšího úsiĺı, jestliže pro každou cestu p TR tour existuje cesta v T, která prochází p přímo, a pro každou cestu p TR sidetrip existuje cesta v T, která prochází p přímo nebo vedlejším výletem. Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
30 Grafové modely softwaru Nalezení hlavních cest [AO08] Princip algoritmu 1 Nalezni cesty délky 0 (uzly). 2 Kombinuj cesty délky 0 do cest délky 1 (hrany). 3 Kombinuj cesty délky 1 do cest délky 2. 4 atd. Označení 1!... cesta nemůže být prodloužena 2 *... cesta tvoří smyčku Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
31 Grafové modely softwaru Návrh testovacích případů podle modelu - příklad 1 [AO08] Model Délka 0 1 [0] 2 [1] 3 [2] 4 [3] 5 [4] 6 [5] 7 [6]! Délka 1 8 [0, 1] 9 [0, 4] 10 [1, 2] 11 [1, 5] 12 [2, 3] 13 [3, 1] 14 [4, 4] * 15 [4, 6]! 16 [5, 6]! Délka 2 17 [0, 1, 2] 18 [0, 1, 5] 19 [0, 4, 6]! 20 [1, 2, 3] 21 [1, 5, 6]! 22 [2, 3, 1] 23 [3, 1, 2] 24 [3, 1, 5] Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
32 Grafové modely softwaru Návrh testovacích případů podle modelu - příklad 2 [AO08] Model Délka 2 17 [0, 1, 2] Délka 3 25 [0, 1, 2, 3]! 26 [0, 1, 5, 6]! 3 18 [0, 1, 5] 27 [1, 2, 3, 1] * [0, 4, 6]! 28 [2, 3, 1, 2] * 2 20 [1, 2, 3] 29 [2, 3, 1, 5] [1, 5, 6]! 30 [3, 1, 2, 3] * 22 [2, 3, 1] 31 [3, 1, 5, 6]! 6 23 [3, 1, 2] 24 [3, 1, 5] Délka 4 32 [2, 3, 1, 5, 6]! Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
33 Grafové modely softwaru Návrh testovacích případů podle modelu - příklad 3 [AO08] Po eliminaci podcest jiných jednoduchých cest Model Hlavní cesty 14 [4, 4] * 19 [0, 4, 6]! 25 [0, 1, 2, 3]! 26 [0, 1, 5, 6]! 27 [1, 2, 3, 1] * 28 [2, 3, 1, 2] * 30 [3, 1, 2, 3] * 32 [2, 3, 1, 5, 6]! Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
34 Grafové modely softwaru Návrh testovacích případů podle modelu - příklad 4 [AO08] Konstrukce testovacích cest Existuje spousta algoritmů. 1 Inženýrský cit - malé soubory dat 2 Od nejdelších hlavních cest, jejich kombinování do testovacích cest. Model Hlavní cesty 14 [4, 4] * 19 [0, 4, 6]! 25 [0, 1, 2, 3]! 26 [0, 1, 5, 6]! 27 [1, 2, 3, 1] * 28 [2, 3, 1, 2] * 30 [3, 1, 2, 3] * 32 [2, 3, 1, 5, 6]! Testovací cesty 1 25, 27, 32 [0, 1, 2, 3, 1, 5, 6] 2 30, 28 [0, 1, 2, 3, 1, 2, 3, 1, 5, 6] 3 26 [0, 1, 5, 6] 4 19 [0, 4, 6] 5 14 [0, 4, 4, 6] Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
35 Překlad specifikace do grafu Predikáty řízení toku [Bei95] Příklady: výpočet daně z příjmu fyzických osob (smíchané USA a ČR formuláře) logický predikát: věta nebo výraz, který nabývá logické hodnoty TRUE nebo FALSE. Příklad: Váš rodič Vás může prohlásit za vyživované dítě na přiznání k dani z příjmů fyzických osob. výběrový predikát: výraz, který nabývá více než dvou hodnot určených k výběru jedné z mnoha variant. Příklad: Zaškrtni pouze poĺıčko - (1) svobodný, (2) ženatý vyplňující společné přiznání, (3) ženatý vyplňující oddělené přiznání, (4) hlava domácnosti, (5) vdovec. složený predikát: logický výraz zahrnující více logických predikátů spojených spojkami AND, OR, nebo NOT. Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
36 Překlad specifikace do grafu Závislost řídicích predikátů [Bei95] nezávislé predikáty: dva nebo více predikátů podél cesty jsou nezávislé, pokud jejich pravdivostní hodnoty mohou být nastaveny nezávisle. korelované predikáty: dva nebo více predikátů podél cesty jsou korelované, pokud pravdivostní hodnota jednoho z nich omezuje pravdivostní hodnoty ostatních predikátů podél cesty. Příklad: daný predikát se objeví dvakrát podél cesty. komplementární segmenty cest: dva segmenty, pokud ty samé predikáty nacházející se na těchto segmentech mají na jednom segmentu hodnotu TRUE a na druhém FALSE. Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
37 Překlad specifikace do grafu Graf toku řízení [Bei95] objekty (uzly): sekvence kroku zpracování taková, že pokud se zpracuje jeden krok sekvence, budou provedeny i všechny zbývající kroky této sekvence (předpoklad nepřítomnosti pochybení) Příklad: Tax Form 1040 (USA) 7: (enter) příjmy, výplaty, spropitné. 8a: (enter) daněné úroky. 9: (enter) příjmy z dividend relace (hrany): je přímo následován čím Příklad: Tax Form : 8a 8a: 9 Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
38 Překlad specifikace do grafu Predikátový uzel [Bei95] Definice Uzel s dvěma čí více výstupními hranami, každá hrana nesoucí atribut s hodnotou predikátu. Příklad Tax Form 1040: Jestliže Vás Váš rodič může prohlásit za vyživované dítě, pak zaškrtněte poĺıčko 33b, jinak poĺıčko 33b nezaškrtávejte. 33b Váš rodič Vás může prohlásit za závislého (predikátový uzel) 33b zaškrtni poĺıčko 33b (procesní uzel) 33b: 33b (T), 34(F) 33b : 34 Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
39 Překlad specifikace do grafu Další speciální uzle [Bei95] výběrový uzel: uzel s více než dvěma výstupními hranami každou ohodnocenou hodnotou výběru. spojovací uzel: uzel s dvěma a více vstupními hranami. Příklad (řádka 34, formulář 1040): Zadej větší z následujících hodnot: bud srážku daně z Rozvahy A řádky 29 NEBO standardní srážku podle rodinného stavu. Avšak jestliže jste zaškrtl jedno z poĺıček na řádce 33a nebo b, pokračujte v určení standardní srážky podle instrukcí. Jestliže jste zaškrtl poĺıčko 33c, Vaše standardní srážka je nula. 1 svobodný = $3,800, 2 ženatý/vdaná vyplňující společně = $6,350, 3 vdovec =$6,350, 4 ženatý/vdaná vyplňující odděleně = $3,175, 5 hlava domácnosti = $5,600. Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
40 Překlad specifikace do grafu Příklad výběrového a spojovacího uzlu [Bei95] 34 Standardní nebo položkovaná srážka? 34.1 Rozvaha A, řádka zaškrtni 33a nebo 33b 34.4 zaškrtnuto 33c? 34.5 vyběr variantu (výběrový uzel) 34.8 srážka = $6,350 (spojkový uzel) 34: 34.1(položky), 34.2(standard) 34.2: 34.3(T), 34.4(F) 34.4: 34.5(F), 34.6(T) 34.5: 34.7(svobodný), 34.8(společně, vdovec),... Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
41 Překlad specifikace do grafu Složené predikáty [Bei95] Složené predikáty jsou ošidné, nebot skrývají komplexitu. Je správné je testovat, protože v nich programátoři dělají často chyby. Vždy lze složený predikát expandovat, aby se odhlalila složitost. n pomocných predikátoru vede na 2 n větví. Musí se uvažovat všech 2 n případů. Případy nejsou redudantní, protože složený predikát bude pracovat jenom tehdy, pokud v implementace neobsahuje chybu. Příklad: A&B OR C A: B.1(T), B.2(F) B.1: C.1(T), C.2(F) B.2: C.3(T), C.4(F) C.1: TRUE(T,F) C.2: TRUE(T), FALSE(F) C.3: TRUE(T), FALSE(F) C.4: TRUE(T), FALSE(F) Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
42 Testování datového toku Princip [AO08] Cíle a terminologie Tok datových hodnot: testy zajišt ující, že hodnoty vzniklé na jednom místě jsou použity správně na jiných místech. Definice def : místo, kde je hodnota proměnné uložena do paměti. Užití use: místo, kde se přistupuje k hodnotě proměnné. DU páry def use: asociace určující přenosy hodnot. Formalizace V... množina proměnných asociované se softwarovým artefaktem. def (n) (def (e))... podmnožina množiny proměnných V, které jsou definovány uzlem n (hranou e). use(n) (use(e))... podmnožina množiny proměnných V, které jsou použity v uzlu n (na hraně e). V programech asociace s uzly. V stavových diagramech i asociace s hranami. Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
43 Testování datového toku Příklad 1 [AO08] Model parameters(subject, pattern) NOTFOUND = -1 isub = 0 rtnindex = NOTFOUND ispat = false subjectlen = subject.length patternlen = pattern.length isub+patternlen-1<subjectlen && ispat == false isub+patternlen-1>=subjectlen ispat!= false return(rtnindex) subject[isub]==pattern[0] isub++ break ipat>=patternlen subject[isub+ipat]!=patern[ipat] rtnindex = NOTFOUND ispat = false subject[isub]==pattern[0] rtnindex = isub ispat = true ipat = 1 ipat<patternlen 7 subject[isub+ipat]==patern[opat] 9 ipat++ Množiny def (n) a use(n) def (1) = {subject, pattern} def (2) = {NOTFOUND, isub, rtnindex, ispat, subjectlen, patternlen} use(2) = {subject, pattern} use(3, 11) = use(3, 4) = {ispat, isub, subjectlen, patternlen} use(4, 10) = use(4, 5) = {isub, subject, pattern} def (5) = {rtnindex, ipat, ispat} use(5) = {isub} use(6, 10) = use(6, 7) = {ipat, patternlen} use(7, 8) = use(7, 9) = {isub, subject, pattern, ipat} def (8) = {rtnindex, ispat} use(8) = {NOTFOUND} def (9) = {ipat} use(9) = {ipat} def (10) = {isub} use(10) = {isub} use(11) = {rtnindex} Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
44 Testování datového toku DU testy [AO08] DU cesty Cesta z l i do l j je def -čistá vzhledem k proměnné v, jestliže pro každý uzel n k a každou hranu e k na této cestě, k i a k j, v def (n k ) a v def (e k ). def proměnné v v l i dosahuje použití v l j. du-cesta: vzhledem k proměnné v je jednoduchá cesta, která je def -čistá vzhledem k v z uzlu n i, v def (n i ), do uzlu n j, v use(n j ). du(n i, v): je množina všech du-cest vzhledem k proměnné v, která začíná v uzlu n i. du(n i, n j, v): je množina všech du-cest vzhledem k proměnné v, která začíná v uzlu n i a končí v uzlu n j. du(n i, v) = nj du(n i, n j, v) Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
45 Testování datového toku Příklad 2 [AO08] Model parameters(subject, pattern) NOTFOUND = -1 isub = 0 rtnindex = NOTFOUND ispat = false subjectlen = subject.length patternlen = pattern.length isub+patternlen-1<subjectlen && ispat == false isub+patternlen-1>=subjectlen ispat!= false return(rtnindex) subject[isub]==pattern[0] isub ipat>=patternlen subject[isub+ipat]!=patern[ipat] break rtnindex = NOTFOUND ispat = false subject[isub]==pattern[0] rtnindex = isub ispat = true ipat = 1 ipat<patternlen 7 subject[isub+ipat]==patern[opat] 9 ipat++ DU cesty uzly: 2, 5, 10 hrany: (3, 4), (3, 11), (4, 5), (4, 10), (7, 8), (7, 9) def -cesty a def -páry du(10, isub) = {[10, 3, 4], [10, 3, 4, 5], [10, 3, 4, 5, 6, 7, 8], = [10, 3, 4, 5, 6, 7, 9], [10, 3, 4, 5, 6, 10], = [10, 3, 4, 5, 6, 7, 8, 10], [10, 3, 4, 10], = [10, 3, 11]} du(10, 4, isub) = {[10, 3, 4]} du(10, 5, isub) = {[10, 3, 4, 5]} du(10, 8, isub) = {[10,, 3, 4, 5, 6, 7, 8]} du(10, 9, isub) = {[10, 3, 4, 5, 6, 7, 9]} du(10, 10, isub) = {[10, 3, 4, 5, 6, 10], [10, 3, 4, 10], = [10, 3, 4, 5, 6, 7, 8, 10]} du(10, 11, isub) = {[10, 3, 11]} Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
46 Testování datového toku DU kritéria [AO08] Vedlejší výlety se vyžadují def -čisté vzhledem k dané proměnné. Hlavní kritéria pokrytí pro datové toky Kritérium všech definic (All-Defs Coverage, ADC)TR obsahuje nejméně jednu cestu d S pro alespoň jednu du-cestu množiny S = du(n, v). Kritérium všech užití (All-Uses Coverage, AUC)TR obsahuje nejméně jednu cestu d S pro každý du-pár množiny S = du(n i, n j, v). Kritérium všech du-cest (All-du-Paths Coverage, ADUPC)TR obsahuje všechny cesty d S pro každý du-pár množiny S = du(n i, n j, v). Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
47 Testování datového toku Rozdíly mezi kritérii [AO08] Model 0 def(0) = {X} DU cesty 1 use(4) = {X} use(5) = {X} Všechny definice: 1 {[0, 1, 3, 4]} Všechna užití: 1 [0, 1, 3, 4], 2 [0, 1, 3, 5] Všechny du-cesty: 1 [0, 1, 3, 4], 2 [0, 1, 3, 5], 3 [0, 2, 3, 4], 4 [0, 2, 3, 5] Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
48 Literatura I Testování datového toku Paul Ammann and Jeff Offutt. Introduction to Software Testing. Cambridge University Press, Cambridge, UK, first edition, February ISBN Paul Ammann and Jeff Offutt. Introduction to software testing, powerpoint slides, August Boris Beizer. Black-Box Testing, Techniques for Functional Testing of Software and Systems. John Wiley & Sons, Inc., New York, Cem Kaner, Jack Falk, and Hung Quoc Nguyen. Testing Computer Software. International Thomson Computer Press, second edition, Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října / 55
Obsah. October 2, Polymorfizmus. Typologie testování. Problém polymorfizmu. Vady/Anomálie. Vazební sekvence ČVUT FEL, K13132
OO testování Radek Mařík ČVUT FEL, K13132 October 2, 2014 Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, 2014 1 / 55 Obsah 1 Kĺıčové OO vlastnosti Dědičnost Řízení přístupu Polymorfizmus 2 Testování
Testování a verifikace softwaru
Testování a verifikace softwaru Radek Mařík ČVUT FEL Katedra telekomunikační techniky, K13132 4. října 2017 Radek Mařík (radek.marik@fel.cvut.cz) Testování a verifikace softwaru 4. října 2017 1 / 6 Vize
Vývoj řízený testy Test Driven Development
Vývoj řízený testy Test Driven Development Richard Salač, Ondřej Lanč Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze 23. - 30. 10. 2012 Obsah 1 Testování 2 Klasický přístup
Úvod do teorie grafů
Úvod do teorie grafů Neorientovaný graf G = (V,E,I) V množina uzlů (vrcholů) - vertices E množina hran - edges I incidence incidence je zobrazení, buď: funkce: I: E V x V relace: I E V V incidence přiřadí
TÉMATICKÝ OKRUH Softwarové inženýrství
TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího
Datové typy a struktury
atové typy a struktury Jednoduché datové typy oolean = logická hodnota (true / false) K uložení stačí 1 bit často celé slovo (1 byte) haracter = znak Pro 8-bitový SII kód stačí 1 byte (256 možností) Pro
Stromy, haldy, prioritní fronty
Stromy, haldy, prioritní fronty prof. Ing. Pavel Tvrdík CSc. Katedra počítačů FEL České vysoké učení technické DSA, ZS 2008/9, Přednáška 6 http://service.felk.cvut.cz/courses/x36dsa/ prof. Pavel Tvrdík
Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model
Databázové systémy Tomáš Skopal - relační model * relační kalkuly Osnova přednášky relační kalkuly doménový n-ticový Relační kalkuly využití aparátu predikátové logiky 1. řádu pro dotazování rozšíření
CA CZ, s.r.o. May 21, Radek Mařík Testování konečných automatů May 21, / 36
Testování konečných automatů Radek Mařík CA CZ, s.r.o. May 21, 2010 Radek Mařík (radek.marik@ca.com) Testování konečných automatů May 21, 2010 1 / 36 Obsah 1 Konečný automat - základy 2 Neformální přístup
Vzdálenost uzlů v neorientovaném grafu
Vzdálenosti a grafy Vzdálenost uzlů v neorientovaném grafu Je dán neorientovaný neohodnocený graf G = (V,E,I) vzdálenost uzlů u a v v neorientovaném souvislém grafu G je délka nejkratší cesty spojující
Algoritmizace a programování
Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu
Program a životní cyklus programu
Program a životní cyklus programu Program algoritmus zapsaný formálně, srozumitelně pro počítač program se skládá z elementárních kroků Elementární kroky mohou být: instrukce operačního kódu počítače příkazy
Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program
Denotační sémantika programovacího jazyka doc. Dr. Ing. Miroslav Beneš katedra informatiky, A-1007 59 732 4213 Obsah přednášky Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup
Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7
Pascal Katedra aplikované kybernetiky Ing. Miroslav Vavroušek Verze 7 Proměnné Proměnná uchovává nějakou informaci potřebnou pro práci programu. Má ve svém oboru platnosti unikátní jméno. (Připadne, musí
Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.
Modely datové Existují různé úrovně pohledu na data. Nejvyšší úroveň je úroveň, která zachycuje pouze vztahy a struktury dat samotných. Konceptuální model - E-R model. Další úrovní je logická úroveň Databázové
Základní datové struktury III: Stromy, haldy
Základní datové struktury III: Stromy, haldy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní
EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI
EVROPSKÝ SOCIÁLNÍ FOND Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI Úvod do PHP PHP Personal Home Page Hypertext Preprocessor jazyk na tvorbu dokumentů přípona: *.php skript je součást HTML stránky!
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti MI-SOC: 11 METODY VERIFIKACE SYSTÉMŮ NA ČIPU Hana Kubátov vá doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta 1 informačních
Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.
Grafy doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Grafy 104 / 309 Osnova přednášky Grafy
Grafové algoritmy. Programovací techniky
Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být
Informační systémy 2008/2009. Radim Farana. Obsah. Nástroje business modelování. Business modelling, základní nástroje a metody business modelování.
3 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Business modelling, základní nástroje a metody business modelování.
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti MI-SOC: 2 METODY VERIFIKACE SYSTÉMŮ NA ČIPU II doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii
Úvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
6 Příkazy řízení toku
6 Příkazy řízení toku Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům pro řízení toku programu. Pro všechny tyto základní
Usuzování za neurčitosti
Usuzování za neurčitosti 25.11.2014 8-1 Usuzování za neurčitosti Hypotetické usuzování a zpětná indukce Míry postačitelnosti a nezbytnosti Kombinace důkazů Šíření pravděpodobnosti v inferenčních sítích
Modelování informačních systémů s využitím jazyka UML. Jaroslav Šmarda
Modelování informačních systémů s využitím jazyka UML Jaroslav Šmarda Využití jazyka UML při vývoji IS na příkladu jednoduché aplikace pro evidenci knih Model IS Modelování případů užití Diagram případů
Algoritmus Minimax. Tomáš Kühr. Projektový seminář 1
Projektový seminář 1 Základní pojmy Tah = přemístění figury hráče na tahu odpovídající pravidlům dané hry. Při tahu může být manipulováno i s figurami soupeře, pokud to odpovídá pravidlům hry (např. odstranění
Dolování asociačních pravidel
Dolování asociačních pravidel Miloš Trávníček UIFS FIT VUT v Brně Obsah přednášky 1. Proces získávání znalostí 2. Asociační pravidla 3. Dolování asociačních pravidel 4. Algoritmy pro dolování asociačních
Funkce, podmíněný příkaz if-else, příkaz cyklu for
Funkce, podmíněný příkaz if-else, příkaz cyklu for Definice funkce Funkce je pojmenovaná část programu, kterou lze dále zavolat v jiné části programu. V Pythonu je definována klíčovým slovem def. Za tímto
Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.
Stromy Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2018, B6B36DSA 01/2018, Lekce 9 https://cw.fel.cvut.cz/wiki/courses/b6b36dsa/start
Základní pojmy teorie grafů [Graph theory]
Část I Základní pojmy teorie grafů [Graph theory] V matematice grafem obvykle rozumíme grafické znázornění funkční závislosti. Pro tento předmět je však podstatnější pohled jiný. V teorii grafů rozumíme
Algoritmizace. 1. Úvod. Algoritmus
1. Úvod Algoritmizace V dnešní době již počítače pronikly snad do všech oblastí lidské činnosti, využívají se k řešení nejrůznějších úkolů. Postup, který je v počítači prováděn nějakým programem se nazývá
1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018
ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018 Informační technologie 1 - Doporučená doba zpracování: 40 minut 1) Termín DCL v relačně databázové technologii
Grafové algoritmy. Programovací techniky
Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být
Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr
Seminář z IVT Algoritmizace Slovanské gymnázium Olomouc Tomáš Kühr Algoritmizace - o čem to je? Zatím jsme se zabývali především tím, jak určitý postup zapsat v konkrétním programovacím jazyce (např. C#)
Interpret jazyka IFJ2011
Dokumentace projektu Interpret jazyka IFJ2011 Tým číslo 093, varianta b/3/i: 20 % bodů: Cupák Michal (xcupak04) vedoucí týmu 20 % bodů: Číž Miloslav (xcizmi00) 20 % bodů: Černá Tereza (xcerna01) 20 % bodů:
Programovací jazyk Pascal
Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce
Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy
Stromy úvod Stromy Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy Neorientovaný strom Orientovaný strom Kořenový orientovaný
Řídicí struktury. alg3 1
Řídicí struktury Řídicí struktura je programová konstrukce, která se skládá z dílčích příkazů a předepisuje pro ně způsob provedení Tři druhy řídicích struktur: posloupnost, předepisující postupné provedení
Testování software. Jaroslav Žáček
Testování software Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Testování Obsáhlá disciplína, existuje spoustu pohledů Problém při nastavení míry kvality Kvalita: Schopnost objektu být
2. lekce Algoritmus, cyklus Miroslav Jílek
2. lekce Algoritmus, cyklus Miroslav Jílek 1/36 Algoritmus 2/36 Algoritmus je konečná posloupnost operací, která dává řešení skupiny problémů 3/36 Algoritmus je konečná posloupnost operací, která dává
Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2014
Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 204 Zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia
2. Konceptuální model dat, E-R konceptuální model
2. Konceptuální model dat, E-R konceptuální model Úvod Databázový model souhrn prostředků, pojmů a metod, jak na logické úrovni popsat data a jejich strukturu výsledkem je databázové schéma. Databázové
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 1/41 Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! 2/41 Základní příkazy
10. Techniky formální verifikace a validace
Fakulta informačních technologií MI-NFA, zimní semestr 2011/2012 Jan Schmidt EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI 10. Techniky formální verifikace a validace 1 Simulace není
Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44
Algoritmizace a programování Ak. rok 2012/2013 vbp 1. ze 44 Vladimír Beneš Petrovický K101 katedra matematiky, statistiky a informačních technologií vedoucí katedry E-mail: vbenes@bivs.cz Telefon: 251
Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.
Přednáška 7 Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu. 1 Příkaz expr výraz Celočíselná aritmetika I Zašle na standardní výstup vyhodnocení výrazu
2. Systémová analýza SA návrhová část projektu = příručka projektu - systémový přístup k analýze problémů, nejdůležitější etapa projektu - podrobné st
1. IŘS, definice, třídění, projekt, životní cyklus IŘS systémy na zpracování získaných (naměřených) informací a jejich využití pro řízení IŘS : a) IS informační systémy systémy sběru a zpracování dat (hromadné),
Základy informatiky. Teorie grafů. Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová
Základy informatiky Teorie grafů Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová Obsah přednášky Barvení mapy Teorie grafů Definice Uzly a hrany Typy grafů Cesty, cykly, souvislost grafů Barvení mapy
Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,
[161014-1204 ] 11 2.1.35 Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i, kde i = 0, 1,..., takto: p 0 q právě tehdy, když bud p, q F nebo p, q F. Dokud i+1 i konstruujeme p
Výroková a predikátová logika - III
Výroková a predikátová logika - III Petr Gregor KTIML MFF UK ZS 2017/2018 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - III ZS 2017/2018 1 / 16 2-SAT 2-SAT Výrok je v k-cnf, je-li v CNF a
1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Dynamické programování Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Rozděl a panuj (divide-and-conquer) Rozděl (Divide): Rozděl problém na několik podproblémů tak, aby tyto podproblémy odpovídaly původnímu
ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ
ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2/2, Lekce Evropský sociální fond Praha & EU: Investujeme
Databázové systémy BIK-DBS
Databázové systémy BIK-DBS Ing. Ivan Halaška katedra softwarového inženýrství ČVUT FIT Thákurova 9, m.č. T9:311 ivan.halaska@fit.cvut.cz Kapitola Relační model dat 1 3. Relační model dat (Codd 1970) Formální
PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze
PROHLEDÁVÁNÍ GRAFŮ Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 4 Evropský sociální fond Praha & EU: Investujeme do
Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:
Plán předmětu Název předmětu: Algoritmizace a programování (PAAPK) Školní rok: 2007/2008 Forma studia: Kombinovaná Studijní obory: DP, DI, PSDPI, OŽPD Ročník: I Semestr: II. (letní) Typ předmětu: povinný
IB111 Programování a algoritmizace. Objektově orientované programování (OOP)
IB111 Programování a algoritmizace Objektově orientované programování (OOP) OP a OOP Objekt Kombinuje data a funkce a poskytuje určité rozhraní. OP = objektové programování Vše musí být objekty Např. Smalltalk,
Základy informatiky. 07 Teorie grafů. Kačmařík/Szturcová/Děrgel/Rapant
Základy informatiky 07 Teorie grafů Kačmařík/Szturcová/Děrgel/Rapant Obsah přednášky barvení mapy teorie grafů definice uzly a hrany typy grafů cesty, cykly, souvislost grafů Barvení mapy Kolik barev je
1 Nejkratší cesta grafem
Bakalářské zkoušky (příklady otázek) podzim 2014 1 Nejkratší cesta grafem 1. Uvažujte graf s kladným ohodnocením hran (délka). Definujte formálně problém hledání nejkratší cesty mezi dvěma uzly tohoto
Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false
Logické operace Datový typ bool může nabýt hodnot: o true o false Relační operátory pravda, 1, nepravda, 0, hodnoty všech primitivních datových typů (int, double ) jsou uspořádané lze je porovnávat binární
Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy
Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Procesor Procesorem je objekt, který vykonává algoritmem popisovanou
Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.
Kapitola Reprezentace grafu V kapitole?? jsme se dozvěděli, co to jsou grafy a k čemu jsou dobré. rzo budeme chtít napsat nějaký program, který s grafy pracuje. le jak si takový graf uložit do počítače?
5 Orientované grafy, Toky v sítích
Petr Hliněný, FI MU Brno, 205 / 9 FI: IB000: Toky v sítích 5 Orientované grafy, Toky v sítích Nyní se budeme zabývat typem sít ových úloh, ve kterých není podstatná délka hran a spojení, nýbž jejich propustnost
2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.
Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus
Analýza toku dat. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 15. listopad, 2012
Překladače 2 Analýza toku dat Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci 15. listopad, 2012 Petr Krajča (UP) KMI/PRKL2: Přednáška I. 15. listopad, 2012 1 / 33 Lokální analýza: živost
5 Rekurze a zásobník. Rekurzivní volání metody
5 Rekurze a zásobník Při volání metody z metody main() se do zásobníku uloží aktivační záznam obsahující - parametry - návratovou adresu, tedy adresu, kde bude program pokračovat v metodě main () po skončení
Základní datové struktury
Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013
Implementace LL(1) překladů
Překladače, přednáška č. 6 Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 30. října 2007 Postup Programujeme syntaktickou analýzu: 1 Navrhneme vhodnou LL(1) gramatiku
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti LEXIKÁLNÍ ANALÝZA Kód ve vstupním jazyku Lexikální analyzátor
14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka
Metody tvorby ontologií a sémantický web Martin Malčík, Rostislav Miarka Obsah Reprezentace znalostí Ontologie a sémantický web Tvorba ontologií Hierarchie znalostí (D.R.Tobin) Data jakékoliv znakové řetězce
Algoritmy. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 15. dubna / 39
Algoritmy Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 15. dubna 2018 1/ 39 Algoritmy Příklad: Popis algoritmu pomocí pseudokódu: Algoritmus 1: Algoritmus pro nalezení největšího prvku v poli 1 Find-Max(A,n):
Základy algoritmizace. Hašování
Základy algoritmizace Hašování Problematika hašování Hašování - nástroj na jednoduchý způsob "zakódování vstupních dat. Vstupní data jsou zpracována hašovací funkcí jsou jistým způsobem komprimována. Relativně
Analýza a Návrh. Analýza
Analysis & Design Návrh nebo Design? Design = návrh Není vytváření použitelného uživatelského prostředí (pouze malinká podmnožina celého návrhu) Často takto omezeně chápáno studenty nedokáží si představit,
Programování v C++, 2. cvičení
Programování v C++, 2. cvičení 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 Operátory new a delete 2 3 Operátory new a delete minule
Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:
Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury
NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze
NEJKRATŠÍ CESTY I Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 7 Evropský sociální fond Praha & EU: Investujeme do vaší
Funkce - opakování. Funkce může přijímat parametry na vstupu a může vracet parametry na výstupu.
ZAL 3. cvičení 2016 Funkce - opakování Funkce může přijímat parametry na vstupu a může vracet parametry na výstupu. Délka funkce by měla být rozumná. Tipněte si co je rozumná délka funkce. V Pythonu se
Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b
Výrazy a operátory i = 2 i = 2; to je výraz to je příkaz 4. Operátory Unární - unární a unární + Např.: +5-5 -8.345 -a +b - unární ++ - inkrement - zvýší hodnotu proměnné o 1 - unární -- - dekrement -
zswi/pc-testování.d 10. května 2003 1
zswi/pc-testování.d 10. května 2003 1 White-box testování ------------------- * white-box testování = využíváme znalost implementace - obvykle se používá pro testování relativně malých částí programu,
Jarníkův algoritmus. Obsah. Popis
1 z 6 28/05/2015 11:44 Jarníkův algoritmus Z Wikipedie, otevřené encyklopedie Jarníkův algoritmus (v zahraničí známý jako Primův algoritmus) je v teorii grafů algoritmus hledající minimální kostru ohodnoceného
8.2 Používání a tvorba databází
8.2 Používání a tvorba databází Slide 1 8.2.1 Základní pojmy z oblasti relačních databází Slide 2 Databáze ~ Evidence lidí peněz věcí... výběry, výpisy, početní úkony Slide 3 Pojmy tabulka, pole, záznam
Náklady na odstranění chyby stoupají, v čím pozdější fázi životního cyklu aplikace je chyba nalezena.
Testování software Testování SW má podstatný vliv na kvalitu dodaného produktu. Náklady na odstranění chyby stoupají, v čím pozdější fázi životního cyklu aplikace je chyba nalezena. Na druhé straně, vytvořit
6. Tahy / Kostry / Nejkratší cesty
6. Tahy / Kostry / Nejkratší cesty BI-EP2 Efektivní programování 2 LS 2017/2018 Ing. Martin Kačer, Ph.D. 2011-18 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE PŘEKLADY TYPICKÝCH JAZYKOVÝCH KONSTRUKCÍ PROGRAMOVACÍCH JAZYKŮ.
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE PŘEKLADY TYPICKÝCH JAZYKOVÝCH KONSTRUKCÍ PROGRAMOVACÍCH JAZYKŮ. 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Dva základní
Optimalizace & soft omezení: algoritmy
Optimalizace & soft omezení: algoritmy Soft propagace Klasická propagace: eliminace nekonzistentních hodnot z domén proměnných Soft propagace: propagace preferencí (cen) nad k-ticemi hodnot proměnných
DTP Základy programování Úvod do předmětu
DTP Základy programování 01 - Úvod do předmětu Úvod Co již umíte? Plán předmětu Studijní materiály Způsob ukončení předmětu Základní pojmy I. Řešený problém: Řešeným nebo zpracovávaným problémem je konkrétní
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Přijímací zkouška - matematika
Přijímací zkouška - matematika Jméno a příjmení pište do okénka Číslo přihlášky Číslo zadání 1 Grafy 1 Pro který z následujících problémů není znám žádný algoritmus s polynomiální časovou složitostí? Problém,
Dalším příkladem může být například výstup dat na různá zařízení, souborů, grafických rozhraní, sítě atd.
1. Zapouzdření Cíl látky Tento blok nejdříve přiblíží zásadu zapouzdření a odpoutání kódu a po té na relacích, jako jsou asociace, agregace a kompozice, vysvětlí jak lze objektový zdrojový kód zapouzdřovat
Testování komponent. May 21, CA CZ, s.r.o. Radek Mařík Testování komponent May 21, / 45
Testování komponent Radek Mařík CA CZ, s.r.o. May 21, 2010 Radek Mařík (radek.marik@ca.com) Testování komponent May 21, 2010 1 / 45 Obsah 1 Základy testování komponent Definice Specifikace komponent Návrh
KTE / ZPE Informační technologie
4 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Největší
Úvod do databázových systémů
Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky Database Research Group Úvod do databázových systémů Cvičení 3 Ing. Petr Lukáš petr.lukas@vsb.cz
VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.
1 3 4 5 6 7 8 9 10 11 1 13 14 15 16 17 18 19 0 1 3 4 5 6 7 8 9 30 31 3 Zdůvodněte, proč funkce f(n) = n log(n) 1 n 1/ roste rychleji než funkce g(n) = n. Zdůvodněte, proč funkce f(n) = n 3/ log(n) roste
7.6 Další diagramy UML
7.6 Další diagramy UML 7.6.1 Moduly (balíčky - package) a kolaborace (collaboration) Jak rozložit rozsáhlý systém na menší? - seskupování tříd (prvků modelu) do jednotek vyšší úrovně (package v UML). UI
Testování prvočíselnosti
Dokumentace zápočtového programu z Programování II (NPRG031) Testování prvočíselnosti David Pěgřímek http://davpe.net Úvodem V různých oborech (například v kryptografii) je potřeba zjistit, zda je číslo