The wiki page is under active construction, expect bugs.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
statnice:bakalar:b6b36ts1 [2025/05/28 13:24] – [Vytváření testovacích scénářů: Testy konzistence dat] prokopstatnice:bakalar:b6b36ts1 [2025/05/28 15:42] (current) – [Testovací strategie: princip metody Business Driven Test Management] prokop
Line 188: Line 188:
  
   * **příklad testovaného výrazu:**   * **příklad testovaného výrazu:**
 +{{statnice:bakalar:ts1komblog.png?600}}
  
   - **Condition coverage (CC)**   - **Condition coverage (CC)**
Line 298: Line 299:
 **Příklad:** **Příklad:**
  
 +{{statnice:bakalar:ts1crud.png?700}}
  
 +=== BONUS: CRUD - vázané podmínky ===
 +  * S konkrétní datovou entitou A jde provést některou z operací **C, R, U, D**, pouze pokud je splněná daná podmínka.
 +  
 +**Příklady:**
 +  - Entitu zákazník lze smazat, pokud má zaplacené všechny objednávky.
 +  - Provozovnu lze smazat, pokud do ní nejsou přiřazení žádní zaměstnanci.
 +
 +**Pozor:** Taková podmínka nemusí být jen na úrovni integrity v DB schématu!
  
 ===== Způsoby vytváření testovacích dat. ===== ===== Způsoby vytváření testovacích dat. =====
-===== Jednotkové testy: princip testuvlastnostikteré má mít jednotkový testodlišnosti proti integračním testům. ===== +==== Proč jsou testovací data důležitá ==== 
-===== Automatizované testy založené na simulaci akcí uživatele v uživatelském rozhraní systému: princip testu, příklad technologie, rozdíl oproti jednotkovým testům. ===== +  * Nastavují stav aplikace před začátkem testu. 
-===== Testovací strategie: princip metody Business Driven Test Management, její základní části a jejich souvislosti. =====+  * Šetří čas na přípravu scénářů. 
 +  * Umožňují opakovat testy se stejnými podmínkami (retest). 
 +  * Pomáhají minimalizovat interference mezi týmy při sdílení prostředí. 
 + 
 +==== Způsoby přípravy testovacích dat ==== 
 +  - **Ruční příprava dat** 
 +    * Vytvoření dat ručně přes funkce aplikace (CRUD → Create, Update). 
 +  - **Automatické skripty** 
 +    * Automatizace ruční přípravy pomocí testovacích skriptů. 
 +  - **Hromadné generování umělých dat** 
 +    * Automatizované generování dat podle struktury systému. 
 +  - **Kopie produkčních dat** 
 +    * Použití reálných dat bez úprav. 
 +    * Varianta s opatřenímiomezení přístupuodstranění osobních/citlivých údajů. 
 +    * Varianta se zmenšeným vzorkem dat. 
 + 
 +==== Porovnání způsobů přípravy dat ==== 
 +| Způsob | Vstupní investice | Provozní náklady | Rizika | 
 +|-|-|-|-| 
 +| Ruční příprava | Nízká | Nízké | Nízká | 
 +| Automatické skripty | Střední | Střední | Nízká | 
 +| Hromadné generování dat | Střední–velká (dle systému) | Střední | Nízká | 
 +| Kopie produkčních dat bez úpravy | Nízká | Nízké | Vysoká (právní a regulační) | 
 +| Kopie produkčních dat s anonymizací | Střední–velká | Střední | Nízká | 
 + 
 +==== Způsoby sdílení dat ==== 
 +  * Neřízený přístup 
 +    * Riziko kolizí mezi testery (přepisování datchyby vzniklé sdílením). 
 +  * Řízený přístup 
 +    * Rozdělení datových entit mezi týmy (např. podle IDprefixů, vlastností). 
 +    * Použití skriptů pro výběr nebo evidenci používaných entit. 
 + 
 +=== Další možnosti === 
 +  * Virtualizace komponent 
 +    * Nahrazení systému simulací (stub), pokud reálný systém není dostupný nebo je příliš drahý. 
 +    * Simulace odpovědí, zálohování stavu, přepínání konfigurací. 
 +===== Jednotkové testy===== 
 +==== Princip ==== 
 +  * Odhalují chyby na úrovni kódu. 
 +  * Porovnávají výsledek volání metody/procedury s očekávaným výsledkem. 
 +  * Jsou napsané jako speciální část kódu, která kontroluje funkční část programu. 
 +  * Programátor je může psát sám přímo ke svému kódu. 
 +  * Unit testovací frameworky (např. JUnit, TestNG) poskytují podporu a zrychlují přípravu testů
 +  * Testy je možné opakovaně spouštět, často se integrují do build procedury. 
 +  * Klíčová součást Test Driven Development (TDD), kde slouží i jako specifikace výsledku. 
 +==== Vlastnosti ==== 
 +  * Nezávislost na jiných testech (test nesmí být prerekvizitou pro jiný test). 
 +  * Minimální množství vstupních podmínek (preconditions), kde je to možné. 
 +  * ** Jedna funkcionalita → Jeden unit test** 
 +  * Přiměřený počet assertů, aby test zůstal přehledný a údržba nebyla zbytečně náročná. 
 +  * Srozumitelný a jasný název metody testu, který popisuje, co test kontroluje. 
 +  * Používání jednotného zdroje testovacích dat a konzistentní jmenné konvence. 
 +  * Struktura testů by měla odpovídat objektové struktuře kódu (napřtřídě odpovídá testovací třída). 
 +  * Unit testy jsou určeny pouze pro kontrolu kódu, nikoliv konfigurace. 
 + 
 +==== Unit test X Integration test ==== 
 +| Aspekt | Jednotkové testy | Integrační testy | 
 +|-|-|-| 
 +| Úroveň | Testují jednotlivé bloky kódu (např. metody, třídy) izolovaně. | Testují spolupráci více komponent (modulů, služeb, systémů). | 
 +| Zaměření | Ověření správnosti malých jednotek logiky. | Ověření správnosti propojení mezi jednotkami a jejich interakce. | 
 +| Nástroje | Unit test frameworky (JUnit, TestNG). | Automatizační frameworky, integrační nástroje, end-to-end testy. | 
 +| Komplexita | Nízká (zaměřeno na detaily). | Vyšší (zaměřeno na celý proces, komunikaci, integrace). | 
 +| Účel | Rychlé odhalení chyb v kódu, prevence regrese. | Ověření, že jednotlivé části systému fungují dohromady správně. | 
 +| Příklad | Test metody pro výpočet ceny. | Test propojení mezi platebním modulem a bankovní API. | 
 +===== Automatizované testy založené na simulaci akcí uživatele v uživatelském rozhraní systému===== 
 +==== Princip testu ==== 
 +  * **End-to-end (E2E)** testování simuluje chování reálného uživatele v aplikaci. 
 +  * Ověřuje správnou funkčnost aplikace z pohledu uživatele – od začátku do konce. 
 +  * Kontroluje nejen jednotlivé komponentyale i jejich **propojení, integraci a datovou konzistenci.** 
 +  * Typické scénáře: 
 +    * otevření aplikace (např. v prohlížeči), 
 +    * zadání vstupů (kliknutí, psaní, potvrzování), 
 +    * sledování odpovědí systému (zobrazení dat, reakce UI), 
 +    * ověření správného dokončení procesu. 
 + 
 +==== Příklad technologie ==== 
 +  * **Selenium** – nástroj pro automatizaci webových prohlížečů. 
 +  * Další příklady (BONUS): 
 +    * Cypress.IO 
 +    * Playwright 
 +    * Robot Framework 
 +    * TestCafe 
 +    * Puppeteer 
 +  * **Tyto nástroje umožňují:** 
 +    * simulovat klikánípsaní, posouvání, 
 +    * kontrolovat obsah stránek, 
 +    * ověřovat výsledky akcí (např. přidání položky, dokončení platby). 
 + 
 +==== Rozdíl oproti jednotkovým testům ==== 
 +| Aspekt | E2E testy (testy UI) | Jednotkové testy | 
 +|-|-|-| 
 +| Úroveň | Testují celý systém (od uživatelského vstupu po backend a zpět)| Testují izolované části kódu (metody, funkce). | 
 +| Zaměření | Uživatelská zkušenost, integrační funkce, procesy napříč systémem. | Logika a správnost jednotlivých bloků kódu. | 
 +| Rychlost | Pomalejší, protože zahrnují více vrstev systému. | Velmi rychlé, běží přímo nad kódem. | 
 +| Stabilita | Náchylné k chybám způsobeným změnami UI nebo závislostí. | Stabilní, méně závislé na okolí. | 
 +| Nástroje | Selenium, Cypress, Playwright, TestCafe, Puppeteer. | JUnit, TestNG, NUnit, xUnit. | 
 +| Účel | Ověření, že celý systém funguje pro uživatele. | Ověření, že logika kódu funguje podle očekávání. | 
 +===== Testovací strategie: princip metody Business Driven Test Management ===== 
 + 
 +=== Testovací Strategie Obecně ==
 +  * Testovací strategie je plán na vyšší úrovni, který definuje: 
 +    * co budeme testovat, 
 +    * jak budeme testovat, 
 +    * s jakými prioritami, 
 +    * s jakou intenzitou, 
 +    * jakými metodami a nástroji. 
 +  * Slouží jako vodítko pro celý testovací tým, aby všichni pracovali podle stejného rámce a cílů. 
 +  * Obsahuje nejen technické aspekty, ale i organizační a byznysové pohledy – stejná terminologie, procesy, metriky 
 +  * Pomáhá sladit očekávání mezi zadavatelem, managementem a testovacím týmem. 
 +  * Zajišťuje, že se testování soustředí na oblasti s největším rizikem nebo nejvyšší byznys hodnotou. 
 + 
 +==== Princip metody Business Driven Test Management ==== 
 +  * Metoda BDTM (Business Driven Test Management) pochází z rámce TMAP Next. 
 +  * Je určená hlavně pro větší testovací projektyale lze ji škálovat i na menší. 
 +  * Jejím cílem je přímo propojit cíle byznysu s přípravou a prováděním testů. 
 +  * Výstupem je velká tabulka, která propojuje: 
 +    * testovací cíle (test goals), 
 +    * požadavky a specifikace, 
 +    * části testovaného systému, 
 +    * analýzu rizik, 
 +    * test levels, 
 +    * druhy testů a jejich intenzitu, 
 +    * zvolené test design techniky. 
 + 
 +=== Základní části metody ==
 +  * **Test goals (testovací cíle)** 
 +    * Overall test goals (např. od investora, senior managementu). 
 +    * Departmental test goals (např. od budoucích koncových uživatelů). 
 +    * Pomáhají sjednotit očekávání kvality a odhalit rozpory mezi investorem a uživateli. 
 +  * **Popis testovaného systému** 
 +    * Přehled funkcí systému a jejich vazba na požadavky, procesy a kvalitativní aspekty (funkčnost, výkon, bezpečnost). 
 +  * **Analýza rizik** 
 +    * Hodnocení pravděpodobnosti selhání a možného dopadu. 
 +    * Určení tříd rizika podle kombinace těchto faktorů. 
 +  * **Určení priorit** 
 +    * Podle tříd rizika určujeme, co testovat intenzivněji. 
 +    * Priorita je odvozena z byznysového dopadu selhání, nikoliv jen z technického pohledu. 
 +  * **Test levels** 
 +    * Definujeme úrovně testování (např. vývojářské testy, systémové testy, UAT, testy v produkci). 
 +    * Určujeme, jakou intenzitou se bude testovat na které úrovni. 
 +  * **Intenzita testování** 
 +    * Přizpůsobujeme intenzitu podle rizik a dostupných zdrojů. 
 +    * Např. pro vysokorizikové oblasti vyšší pokrytí a intenzita, pro nízkorizikové nižší. 
 + 
 +=== Souvislosti mezi částmi === 
 +  * Test goals určují, co je potřeba ověřit → vazba na funkce systému a požadavky. 
 +  * Analýza rizik určuje priority a intenzitu testování pro jednotlivé oblasti. 
 +  * Test levels rozdělují testy podle fází a týmů. 
 +  * Intenzita testování se přizpůsobuje prioritám, rozpočtu a časovým omezením. 
 +  * Celý proces je propojený v hlavní řídicí tabulce, která zajišťuje přehlednost, konzistenci a trasovatelnost.
Navigation

Playground

QR Code
QR Code statnice:bakalar:b6b36ts1 (generated for current page)