Soubory a souborový systém

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

Jaký je hlavní účel souborů v kontextu operačních systémů a programování?

Zajištění persistentního uložení dat a umožnění přenosu a sdílení dat mezi různými programy nebo systémy.

Jaký je rozdíl mezi soubory CSV a XML z hlediska obsahu metadat?

CSV soubory mají omezenou podporu metadat (pouze volitelná hlavička), zatímco XML soubory umožňují detailní popis struktury a metadat pomocí značek.

Vysvětlete, jak datový tok (stream) umožňuje manipulaci s daty a jaké jsou výhody tohoto přístupu?

Datový tok umožňuje sekvenční přístup k datům po jednotlivých bytech, což umožňuje pracovat s nimi bez nutnosti načtení celého souboru. Výhodou je efektivita při zpracování velkých objemů dat.

Jaký je rozdíl mezi datovými typy char a string v C# a jak se liší jejich reprezentace v paměti?

<p><code>char</code> reprezentuje jeden znak a má velikost 2 byty. <code>string</code> reprezentuje textový řetězec, je uložen jako pole znaků a jeho velikost závisí na počtu znaků.</p> Signup and view all the answers

Popište, jak funguje interpolace řetězců v C# a jaký znak se používá pro její aktivaci?

<p>Interpolace řetězců umožňuje vkládání hodnot proměnných přímo do textového řetězce. Aktivuje se pomocí znaku <code>$</code> před řetězcem.</p> Signup and view all the answers

Proč je doporučeno používat třídu StringBuilder pro postupné slučování více textových řetězců namísto operátoru +?

<p><code>StringBuilder</code> zabraňuje neustálému vytváření nových polí v paměti při každém slučování, což je efektivnější a snižuje nároky na paměť.</p> Signup and view all the answers

Vysvětlete, k čemu slouží regulární výrazy a uveďte alespoň tři jejich typické využití.

<p>Regulární výrazy slouží k vyhledávání a manipulaci s textem na základě zadaného vzoru. Používají se pro validaci textu, vyhledávání v textu a nahrazování v textu.</p> Signup and view all the answers

Jaký je rozdíl mezi metodami Regex.Match a Regex.Matches?

<p><code>Regex.Match</code> vrátí pouze první shodu s regulárním výrazem, zatímco <code>Regex.Matches</code> vrátí kolekci všech shod nalezených ve vstupu.</p> Signup and view all the answers

Vysvětlete, co je to 'pojmenované seskupení' v regulárních výrazech a jak se používá?

<p>Pojmenované seskupení umožňuje označit část regulárního výrazu jménem, což usnadňuje extrakci a zpracování odpovídající části textu. Používá se syntaxe <code>(?&lt;skpl&gt;výraz)</code>.</p> Signup and view all the answers

Co je to ORM (Object-Relational Mapping) a jaký je jeho hlavní účel?

<p>ORM je technologie pro převod dat mezi relační databází a objekty v programovacím jazyce. Jeho účelem je umožnit programátorům pracovat s daty v databázi pomocí objektové reprezentace.</p> Signup and view all the answers

Jak se mapují tabulky, sloupce a řádky v databázi na objekty v Entity Framework?

<p>Tabulky se mapují na entitní třídy, sloupce na vlastnosti v těchto třídách a řádky na instance entitních tříd.</p> Signup and view all the answers

Vysvětlete rozdíl mezi 'eager loading' a 'lazy loading' v Entity Framework a uveďte, kdy je vhodné použít který přístup.

<p>Eager loading načte asociace dopředu pomocí Include(), zatímco lazy loading načte asociace až při prvním přístupu k nim pomocí proxies. Eager loading je vhodný, když víme, že budeme asociace potřebovat; lazy loading je vhodný pro optimalizaci výkonu, když asociace nemusí být vždy potřeba.</p> Signup and view all the answers

Co je to 'connection string' a jaké informace obvykle obsahuje?

<p>Connection string je řetězec obsahující informace potřebné pro připojení k databázi, jako je server, databáze, uživatelské jméno a heslo.</p> Signup and view all the answers

Jaký je základní princip fungování Windows Forms a na jakých konceptech je tento framework založen?

<p>Windows Forms je framework pro vytváření desktopových GUI aplikací. Je založen na komponentovém přístupu (UI tvořeno komponentami) a řízení událostmi (aplikace reaguje na události).</p> Signup and view all the answers

Jaký rozdíl je mezi metodami Show() a ShowDialog() při práci s okny ve Windows Forms?

<p><code>Show()</code> otevírá okno nezávisle a neblokuje provádění kódu v aktuálním okně, zatímco <code>ShowDialog()</code> otevírá okno jako modální dialog a blokuje provádění kódu, dokud se dialog nezavře.</p> Signup and view all the answers

Vysvětlete, jak funguje validace dat ve Windows Forms a jakou roli hraje komponenta ErrorProvider?

<p>Validace dat ověřuje správnost uživatelského vstupu před dalším zpracováním. <code>ErrorProvider</code> slouží k zobrazení chybových hlášek uživateli v případě nevalidních dat.</p> Signup and view all the answers

K čemu slouží grafický objekt Graphics v GDI a jak se získá grafický objekt z komponenty PictureBox?

<p>Grafický objekt Graphics poskytuje metody pro vykreslování tvarů, obrázků a textu. Z komponenty PictureBox se získá v události Paint jako e.Graphics.</p> Signup and view all the answers

Vysvětlete, jak funguje transformace souřadného systému v GDI a jaké metody se používají pro posunutí, rotaci a změnu škálování?

<p>Transformace umožňuje manipulaci se souřadným systémem. Používají se metody <code>TranslateTransform()</code> (posunutí), <code>RotateTransform()</code> (rotace) a <code>ScaleTransform()</code> (škálování).</p> Signup and view all the answers

Definujte pojem 'složitost algoritmu' a vysvětlete, jak souvisí s efektivitou algoritmu.

<p>Složitost algoritmu popisuje jeho efektivitu a vyjadřuje, jak závisí množství potřebných zdrojů (CPU, RAM) na velikosti vstupních dat. Nižší složitost znamená vyšší efektivitu.</p> Signup and view all the answers

Vysvětlete, co je to 'asymptotická časová složitost' a proč se používá místo přesného výpočtu časové složitosti?

<p>Asymptotická časová složitost je odhad skutečné časové složitosti pro velké vstupy, získaný zjednodušením. Používá se, protože přesný výpočet je náročný a pro velké vstupy je asymptotická složitost relevantnější.</p> Signup and view all the answers

Flashcards

Soubor

Pojmenovaná sada dat uložená na datovém médiu. Význam bytů je definován datovým formátem. Přístup je zprostředkován operačním systémem.

Souborový systém

Hierarchická datová struktura OS pro uchování souborů. Soubory jsou identifikovány jménem a cestou.

CSV soubory

Textový formát pro tabulková data, kde řádek odpovídá záznamu a hodnoty jsou odděleny separátorem.

XML soubory

Textový formát pro strukturovaná data s metadaty. Struktura je určena pomocí XML značek.

Signup and view all the flashcards

JSON soubory

Textový formát pro strukturovaná data založený na JavaScriptu. Používá objekty a pole.

Signup and view all the flashcards

Datový tok

Prostředek umožňující sekvenční přístup ke zdroji dat, umožňuje manipulaci po jednotlivých bytech.

Signup and view all the flashcards

Textový řetězec (string)

Textový řetězec je v C# reprezentován datovým typem string, což je pole znaků (char).

Signup and view all the flashcards

Regulární výraz (regex)

Textový vzor pro vyhledávání a manipulaci s textem.

Signup and view all the flashcards

Objektově relační mapování (ORM)

Technologie pro převod dat mezi relační databází a objekty v programovacím jazyce.

Signup and view all the flashcards

Entity Framework (EF)

Framework pro ORM v .NET aplikacích, umožňuje pracovat s různými databázemi.

Signup and view all the flashcards

Mapování objektů (EF)

Tabulky se mapují na entitní třídy, sloupce na vlastnosti, řádky na instance entit.

Signup and view all the flashcards

Windows Forms

Framework pro vytváření nativních desktopových GUI aplikací na platformě .NET

Signup and view all the flashcards

this.DialogResult

Vlastnost, pomocí které lze nastavit výsledek operace provedené aktuálním oknem (např. DialogResult.Ok, DialogResult.Cancel).

Signup and view all the flashcards

Algoritmus

Přesný postup, jak vyřešit všechny úlohy daného typu. Musí být obecný, s výstupem, jednoznačný, elementární a konečný.

Signup and view all the flashcards

Složitost algoritmu

Vlastnost algoritmu popisující jeho efektivitu. Vyjadřuje závislost zdrojů na velikosti vstupu.

Signup and view all the flashcards

Asymptotická časová složitost

Odhad skutečné časové složitosti, zjednodušený pro velké vstupy.

Signup and view all the flashcards

Třída O(1)

Konstantní složitost. Kód neobsahuje cykly závislé na velikosti vstupu.

Signup and view all the flashcards

Testování

Testování je ověřování, že software splňuje požadavky a zajišťuje kvalitu.

Signup and view all the flashcards

Jednotkové (unit) testy

Testuje správnou funkčnost jednotlivých tříd a jejich metod v izolovaném prostředí

Signup and view all the flashcards

Dummy (testování)

Zástupný objekt, který má stejné rozhraní jako skutečný objekt, ale nic nedělá.

Signup and view all the flashcards

Study Notes

Soubory a souborový systém

  • Soubor je pojmenovaná sada dat (pole bytů) uložená na datovém médiu.
  • Význam jednotlivých bytů v souboru určuje jeho datový formát.
  • Programy přistupují k souborům přes operační systém (I/O systémová volání).
  • Cílem souborů je zajistit trvalé uložení dat a umožnit jejich přenos a sdílení mezi programy a systémy.
  • Souborový systém je hierarchická datová struktura, která slouží k ukládání souborů.
  • Soubory jsou v souborovém systému identifikovány pomocí jména a cesty.

Formáty souborů

  • CSV (hodnoty oddělené čárkami):
    • Jednoduchý textový formát pro tabulková data.
    • Jeden řádek odpovídá záznamu, hodnoty jsou odděleny separátorem.
    • Výhoda: jednoduchý a malá velikost.
    • Nevýhoda: pouze tabulková data, chybí metadata (vyjma hlavičky).
  • XML (rozšiřitelný značkovací jazyk):
    • Textový formát pro strukturovaná (hierarchická) data.
    • Obsahuje strukturu pomocí XML značek (tagů), které vymezují elementy.
    • Výhoda: obsahuje metadata, lze interpretovat význam dat.
    • Nevýhoda: velká velikost, pro zpracování je nutné jej přečíst celý.
  • JSON (objektový zápis založený na jazyce JavaScript):
    • Textový formát pro strukturovaná (hierarchická) data.
    • Obsahuje objekty (klíč-hodnota) a pole (číslovaný seznam hodnot).
    • Výhoda: jednodušší než XML, dobře čitelný pro uživatele.
    • Nevýhoda: pro zpracování je nutné jej přečíst celý.

Datový tok

  • Datový tok umožňuje sekvenční přístup ke zdroji dat, jako je soubor nebo síť.
  • Umožňuje manipulaci s daty po jednotlivých bytech bez nutnosti načtení celého souboru.
  • Otevřením toku se blokuje přístup ke zdroji dat, proto je nutné tok uzavřít (Close, using).
  • StreamReader a StreamWriter umožňují čtení a zápis po řádcích textu (místo jednotlivých bytů).
  • Důležité třídy: File, FileStream, StreamReader, StreamWriter, FileInfo, DirectoryInfo, Path.

Práce s řetězci v C#

  • Znak (char) je reprezentován datovým typem char (2 byte), v paměti jako celé číslo.
  • Pro zápis jednoho znaku se používají jednoduché uvozovky (např. 'A').
  • Textový řetězec (string) je reprezentován datovým typem string (2 byte * počet znaků).
  • Je pole znaků, k jednotlivým znakům lze přistupovat přes index (text[0]).
  • Pro zápis textového řetězce se používají dvojité uvozovky (např. "ahoj").
  • Pomocí znaku $ před řetězcem lze vložit hodnoty (interpolace).
  • Operátor + slouží ke zřetězení řetězců, což vytvoří nové pole.
  • Pro postupné slučování řetězců je vhodná třída StringBuilder.

Důležité metody pro práci s řetězci

  • text.Length: vrátí počet znaků.
  • text.Split(';'): rozdělí text na pole částí podle oddělovače.
  • text.Contains("ahoj"): vrátí true/false, zda text obsahuje daný string.
  • text.IndexOf("AB"): vrátí index prvního výskytu řetězce.
  • text.Substring(2, 5): vrátí podřetězec začínající na indexu 2 o délce 5.
  • text.Insert(2, "něco"): vloží podřetězec na index 2.
  • text.Replace("hi", "ahoj"): nahradí jeden podřetězec za jiný.
  • text.ToLower(): převede text na malá písmena.
  • text.ToUpper(): převede text na velká písmena.
  • Důležitá třída: StringBuilder

Regulární výrazy

  • Textový vzor pro vyhledávání a manipulaci s textem.
  • Alternativa k metodám pro práci s řetězci.
  • Skládá se z běžných a speciálních symbolů.
  • Účel: validace, vyhledávání, nahrazování a extrakce informací z textu.

Speciální symboly regulárních výrazů

  • ^: Počátek řetězce.
  • $: Konec řetězce.
  • |: Alternativa (nebo).
  • (výraz): Seskupení podvýrazu.
  • (?<skpl>výraz): Pojmenované seskupení.
  • .: Zástupný symbol pro libovolný znak.
  • {min,max}: Počet opakování předchozího symbolu.
  • {cnt}: Přesný počet opakování.
  • *: 0 až neomezeně opakování.
  • +: 1 až neomezeně opakování.
  • ?: 0 až 1 opakování.
  • [abc]: Výčet znaků.
  • [^abc]: Znak, který není ve výčtu.
  • [a-z]: Rozsah znaků.
  • \: Escape znak (změní speciální symbol na běžný).

Metody a vlastnosti regulárních výrazů

  • regex.IsMatch(vstup): vrací true/false, zda vstup odpovídá výrazu.
  • regex.Matches(vstup): vrátí kolekci všech shod.
  • regex.Replace(vstup, repl): nahradí shody za repl.
  • match.Index: vrátí index prvního znaku shody.
  • match.Value: vrátí podřetězec odpovídající shodě.
  • match.Groups["skp1"]: vrátí část shody zachycenou v pojmenované skupině.
  • Důležitá třída: Regex

Entity Framework

  • ORM umožňuje převádět data z relační databáze do objektů v programovacím jazyce.
  • Pracuje se s objektovou reprezentací (LINQ) namísto psaní SQL.
  • EF je framework pro ORM v .NET.
  • Lze pracovat s různými databázemi pomocí konektorů.
  • Pro připojení stačí vybrat konektor a uvést connection string.

Mapování objektů v Entity Framework

  • Tabulky se mapují na entitní třídy ([Table("tabulka")]).
  • Sloupce se mapují na vlastnosti ([Column("sloupec")]).
  • Řádky odpovídají instancím entitních tříd (entitám).
  • Každá entita musí být identifikována pomocí primárního klíče ([Key]).
  • Každá entitní třída musí mít defaultní konstruktor.

Mapování vztahů a načítání dat v Entity Framework

  • Vztahy se mapují na asociace mezi objekty.
  • Kardinalita a parcialita vztahu se mapuje na multiplicity objektů.
  • Cizí klíč musí mít speciální vlastnost ([Column]).
  • Asociace se realizují pomocí vlastností odkazujících na druhou třídu (navigační vlastnosti, [ForeignKey("vlastnost")]).
  • Eager loading načte odkazy předem pomocí Include().
  • Lazy loading načte odkazy pomocí proxies až při přístupu k nim.
  • Pro Lazy loading je potřeba modifikátor virtual u vlastností.

Postup práce s Entity Framework

  • Nainstalovat balíčky EF, proxies, konektor.
  • Vytvořit entitní třídy s anotacemi.
  • Vytvořit DatabaseContext, zdědit DbContext, přidat DbSet<Enita> pro každou tabulku.
  • Překrýt metodu OnConfiguring, použít konektor a uvést connection string.
  • Vytvořit instanci DatabaseContext.
  • Přistoupit k DbSetu a pracovat s ním jako s kolekcí.
  • Uložit změny pomocí context.SaveChanges().
  • Důležité anotace: Table, Column, Key, ForeignKey, InverseProperty.
  • Důležité třídy: DbContext, DbSet

Windows Forms

  • Framework pro desktopové GUI aplikace v .NET.
  • Založen na komponentovém přístupu (řízeném událostmi).
  • GUI je tvořeno komponentami (okna Forms, ovládací prvky Controles).
  • Aplikace reaguje na vstupy uživatele pomocí obslužných metod (event handlers).
  • Struktura: Formulář (kontejner), Ovládací prvky, Události (reakce na akce), Vlastnosti, Metody.

Ovládací prvky ve Windows Forms

  • Label: textový popisek.
  • Button: tlačítko.
  • TextBox: textové pole.
  • NumericUpDown: pole pro zadání čísla.
  • CheckBox: zaškrtávací pole.
  • ListBox: seznam položek.
  • ComboBox: rozbalovací seznam položek.
  • DataGridView: komponenta pro zobrazení tabulkových dat.

Práce a vlastnosti komponent ve Windows Forms

  • Přes vlastnost DataSource lze nastavit zdroj dat pro komponenty jako ListBox, ComboBox a DataGridView.
  • Událost TextChanged nastane, když dojde k úpravám textu.
  • Lze omezit vstup pouze na čísla pomocí NumericUpDown a určit počet desetinných míst. Změna hodnoty se projeví v události ValueChanged.
  • Pro zaškrtávací pole určujeme, zda je pole zaškrtnuto (true/false) ve vlastnosti Checked, změna se projeví v CheckedChanged.

Práce se seznamem v ListBox a ComboBox

  • Vlastnost Items umožňuje manuální práci s položkami.
  • Přes SelectedItem získáme vybranou položku, přes SelectedIndex index vybrané položky.
  • DataGridView lze napojit na externí zdroj dat přes DataSource.
  • DisplayMember specifikuje název vlastnosti, která se bude zobrazovat, ValueMember specifikuje název vlastnosti, kterou bude vracet SelectedValue.

Práce s více okny ve Windows Forms

  • Form1 form = new Form1(): vytvoří novou instanci okna.
  • form.Show(): otevře okno nezávisle, neblokuje provádění kódu.
  • form.ShowDialog(): otevře okno jako dialog/modální okno, blokuje provádění kódu.
  • this.Close(): zavře aktuální okno.
  • this.Visible: vlastnost pro skrytí/zobrazení okna.

Práce s výsledkem okna ve Windows Forms

  • this.DialogResult: vlastnost pro nastavení výsledku operace.
  • form.ShowDialog(): otevře okno a čeká na provedení operace, vrátí DialogResult.

Předpřipravená dialogová okna (MessageBox)

  • Ve Windows Forms je možné využít předpřipravená dialogová okna.
  • MessageBox.Show("Zpráva...") zobrazí základní dialogové okno se zprávou.
  • MessageBox.Show("Otázka?","Titulek",MessageBoxButtons.YesNo,MessageBoxIcon.Question) zobrazí okno s otázkou a tlačítky Ano/Ne.

Validace dat ve Windows Forms

  • Data od uživatele by měla být validována před dalším zpracováním.
  • Lze použít podmínky a metody pro práci s textem, regulární výrazy.
  • Lepší zpětnou vazbu poskytne upozornění na nevalidní data při jejich zadání.
  • Lze využít speciální vlastnosti komponent (MaxLength, Minimum apod.).
  • Další možností je využití události Validating a komponenty ErrorProvider.

POSTUP VALIDACE (ErrorProvicer)

  • Vytvoříme validační třídu (volitelně, doporučeně).
  • Přidáme do aktuálního okna komponentu ErrorProvider.
  • Ke každému vstupnímu ovládacímu prvku přidáme obslužnou metodu pro událost Validating.
  • Metodou errorProvider.SetError (komponenta, "chybová hláška") a e.Cancel = true kontrolujeme, zda je validace nevalidní a nastavujeme chybové hlášky.
  • Metodou errorProvider.SetError (komponenta, null) a e.Cancel = false pokud je validace validní.
  • Důležité je zajistit validaci všech údajů na začátku kódu pro zpracování dat.
  • DataGridView: komponenta pro zobrazení tabulkových dat.DataSource (možno napojit na pole, List neaktualizuje se; BindingList - aktualizuje se).Je možné vytvořit si vlastní třídu jako datový zdroj, stačí realizovat rozhraní

GDI (Graphics Device Interface)

  • Knihovna pro vykreslování 2D grafiky v .NET aplikacích.
  • Lze ji využít pro kreslení tvarů, obrázků a textu v aplikacích Windows Forms.
  • Pracuje na principu grafického objektu (Graphics).

Souřadný systém v GDI

  • Každý prvek má souřadnice.
  • Souřadný systém je kartézský, počátek (0,0) je v levém horním roku.
  • Osa Y roste shora dolů.
  • Výchozí jednotka je pixel.

Grafická plocha v GDI

  • Vykreslování probíhá nejčastěji na komponentě PictureBox.
  • Je nutné získat grafický objekt Graphics:
    • V případě PictureBox lze využít jeho událost Paint, ve které lze získat grafický objekt z parametru jako e.Graphics. Graphics.FromBitmap(bmp).

Pero a štětec v GDI

  • Pen (pero) pro kreslení čar a obrysů (barva, tloušťka).
  • Brush (štětec) pro vyplnění oblastí barvou.
  • GDI obsahuje sadu předdefinovaných per (Pens) a štětců (Brushes). Vstupní soubory, textové soubory, obrázky ve formátu bitmapu.

Vykreslování textu a obrázků v GDI

  • Vytvořit font (Font) pro vykreslování textu s parametry jako typ písma a jeho velikost.
  • StringFormat nastaví parametry pro rozvržení a zarovnání textu.
  • G.DrawString("nějaký text", font, Brushes.Black, 10, 10) vykreslí text v daném fontu a zadané pozici (levý horní roh obklopujícího textu).

Transformace souřadnicového systému v GDI

  • knihovna GDI umožňuje posouvat (TranslateTransform(x, y)), otáčet (RotateTransform(angle)), měnit měřítko (ScaleTransform(scaleX, scaleY)) nebo resetovat (ResetTransform).Opakované překreslování

Algoritmus

  • Přesný postup pro řešení úloh.
  • Musí řešit všechna platná zadání problému (obecný), vracet výsledek (výstup), být jednoznačný, elementární a konečný.

Algoritmy

  • Způsoby vyjádření: slovně (pochopitelné, ale nejednoznačné), vývojový diagram (přehledné pro jednoduché, nepřehledné pro složité), pseudokód (přesný, ale nelze přeložit do strojového kódu), programovací jazyk (lze spustit, ale čitelné jen pro odborníky).

Složitost algoritmu

  • Vyjadřuje efektivitu algoritmu.Závisí množství potřebných zdrojů (CPU, RAM) na velikosti vstupních dat.
  • Časová složitost vyjadřuje, jak závisí počet operací na velikosti vstupu (n).Lze vyjádřit jako matematickou funkci T(n).Přesný výpočet je náročný.
  • Asymptotická časová složitost je odhad skutečné časové složitosti pro velké vstupy.Zanedbává pomaleji rostoucí členy a konstanty.
  • Třídy asymptotické časové složitosti (konstantní, logaritmická, lineární, linearitmická, kvadratická, exponenciální).

Třídy asymptotické časové složitosti algoritmu

  • Třída O(1) - konstantní složitost: kód neobsahuje cykly závislé na velikosti vstupu (např. prohození dvou prvků v poli).
  • Třída O(log n) - logaritmická složitost: kód obsahuje cyklus, který dělí velikost vstupu (např. binární vyhledávání v seřazeném poli).
  • Třída O(n) - lineární složitost: kód obsahuje cyklus, který projde celý vstup (např. vyhledání prvku v neseřazeném poli).
  • Třída O(n* log n) - linearitmická složitost: kód obsahuje dva vnořené cykly (např. řazení prvků optimálními algoritmy jako QuickSort).
  • Třída O(n^2) - kvadratická složitost: kód obsahuje dva vnořené cykly(BubbleSort, SelectionSort, InsertionSort).
  • Třída O(2^n) - exponenciální složitost: kód obsahuje rekurzivní funkci (větvení s aritou 2/optimalizovaný problém batohu.

Testování softwaru

  • Fáze životního cyklu vývoje softwaru (po analýze, návrhu, implementaci): Ověření, že software splňuje požadavky.Cílem je zajistit kvalitu a odhalit nedostatky:
    • Funkcionalita. Všechny funkcionality, které vždy vracejí správné výsledky
  • Spolehlivost - Stabilita softwaru, tady že software při práci nespadne, případně že je schopen se z pádu obnovit apod.
  • Bezpečnost.Software neobsahuje zranitelnosti, které by mohly vést k únikům dat či neoprávněnému přístupu
  • Výkonnost. Efektivita systému je rychlost, propustnost, využití paměti jeho zatížení
  • Použitelnost.Software je snadný a intuitivní na ovládání, a že jsou v něm uživatelé schopní samostaně vykonat potřebné úkony.
  • Automatizované a manuální testy.
  • White-box a black-box testing (podrobnější definice v popisu).

Typy testů

  • Unit testy: správná funkčnost tříd a metod v izolovaném prostředí(většinou automatizované, white-box)
  • Integrační testy: vzájemná interakce tříd a komponent(většinou automatizované, white-box i black-box)
  • Systémové testy: testují softwarový produkt jako celek(z pohledu uživatele)

Testovatelnost kódu

  • Software z uživatelského hlediska(na úrovni systémových testů) je možné vždy. Testovatelnost softwaru v kódu(unit testy, integrační testy) však není samozřejmostí:
    • špatně napsaný kód zkomplikuje či znemožní jeho testování(zvláště pak automatizované)

Co dodržet, aby byl kód testovatelný/čemu se vyhnout aby byl kód testovatelný

  • S: kratší třídy a metody s jedním účelem(lze je snadněji testovat)
  • 0: kód, který je rozšiřitelný bez změny stávajícího(není pak třeba přepisovat stávající testy)
  • C: zapouzdření(snižuje se počet věcí, které je nutné testovat)
  • L: potomek by měl vždy být zaměnitelný za rodiče(u potomka není třeba znovu testovat funkcionalitu rodiče)
  • I: specializovaná rozhraní(lze pak snáze testovat relevantní metody objektů)
  • D: rozhraní, namísto konkrétních třída ( lze snáze nahradit "falešnými" a simulovat okolní prostředí)
  • konstruktor jedné třídy vytvoří instanci jiné třídy, konstruktor provádí, jakoukoliv další činnost mimo nastavování počátečního stavu a metoda třídy používá, jakýkoliv globální stav.

Jednotkové (unit) testy

  • Testují správnou funkčnost jednotlivých třídy a jejich metod v izolovaném prostředí
  • Výhody: automatizované, rychlé(lze testovat během vývoje), přesně lokalizují chybu. Nevýhody: nezaručují správnou interakci mezi třídami, pro pokrytí celého programu je jich třeba velký počet:

- Průběh unit testů

    1. Příprava (setup).Izolované prostředí(instance okolních tříd se simulují pomocí "falešných" objektů)Vytvoří se instance testované třídy, předají se závislosti -2) Provedení (execution).Metody na instanci testované třídy provádějí se testovací vstupy
    1. Ověření (assert). volané metody vrátily správné výstupy, stav testovaného objektu změnil očekávaným způsobem

- V testování kontrolujeme následující věci

  • jestli se okolí testovaného objektu změnilo očekávaným způsobem.Test neprojde nastala-li chyba či neodpovídá ne projde.
  • Uklid(teardown)..odstranění či resetování objektů do původního stavu, aby mohl být test spuštěn opakovaně
  • (TEST doubles(fake objekty))

TEST DOUBLES(fake objekty)

  • DUMMY : zastupující objekt, který má stejné rozhraní jako skutečný objekt, ale nic nedělá.
  • STUB : zastupující objekt, který má stejné rozhraní jako skutečný objekt, ale jeho vlastnosti a metody poskytují předem definované hodnoty
  • FAKE : objekt, který poskytuje stejnou funkcionalitu jako skutečný objekt, ale má výrazně zjednodušenou implementaci
  • SPY objekt : který namísto reálné implementace sleduje, jaké metody(a s jakými argumenty) na něm byly zavolány
  • MOCK : objekt, který po předání do testovaného objektu aktivně řídí proces testování(navíc může kombinovat Stub Spy).

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Computer Science Concepts Quiz
9 questions
PDA Unit 2 Quiz
12 questions

PDA Unit 2 Quiz

PreeminentLasVegas avatar
PreeminentLasVegas
File Systems Issues in Data Management
11 questions
Understanding PDF File Structure
6 questions
Use Quizgecko on...
Browser
Browser