testování je hledání chyb, cílem je měřit a kontrolovat kvalitu softwaru
testování je vedle verifikace a validace další variantou ověřování softwaru
množství testů je dáno na základě analýzy rizik, dostatečné testování je dáno splněním předem daných podmínek
human error (chyba), software has a fault (vada), user experiences failure (selhání)
proces: plánování, specifikace testů, provádění testů, záznam výsledků a vyhodnocení (ukončovací kritéria)
specifikace testů: test case, test data, skripty, scénáře
test case: unikátní identifikátor, název, popis, přepoklady provedení, scénář (akce), očekávané výsledky
ukončovací kritéria: podíl spuštěných testů, podíl úspěšných testů, počet incidentů, pokrytí, intenzita selhání, odhad kvality
opakované testování, regresní testování: schéma testů (round-robin, statistický výběr, kouřové testy, expertní výběr)
očekávané výsledky: z požadavků, věštírna, specifikace a standardy, existující software, nebrat z kódu
prioritizace testů: vážnost, pravděpodobnost, viditelnost, zpětná vazba, obtížnost testu, obtížnost opravy, kritické pro klienta
metody prioritizace testů: náhodně, expertní odhad, zkušenost s produktem / klientem, dostupnost kódu a nástrojů, analýza rizik
modely testování: V-model, rapid prototyping
ekonomika testování: redukce rizik, time-to-market, kontrola nad cenou, úspora nákladů, prevence poškození obrazu firmy (ROI)
testovací plán: identifikátor, testované/netestované položky a vlastnosti, přístup, ukončovací kritéria, dokumentace testů, úkoly, požadavky na prostředí a zdroje, zodpovědnosti, rizika
testování komponent: algoritmy, datové struktury, rozhraní, nezávislé cesty, ošetření chyb
testování integrace komponent: stubs, drivers; velký třesk, shora dolů, zdola nahoru, vláknová, minimální kostry,
funkční testování systému: na základě požadavků nebo business procesů (případy užití)
nefunkční testování systému: zátěžové, bezpečnosti, použitelnosti, úložiště, instalovatelnosti, platformy a přenositelnosti, zotavení, dokumentace
testování integrace systémů: externí komponenty, spolupracující systémy; po jednom od nejkritičtějšího
akceptační testování:
údržbové testování:
konfigurační management: vysledovatelnost, schvalování změn, analýza dopadu
management incidentů:
testovací nástroje: firemní strategie určuje výběr nástrojů, je třeba zaškolit pracovníky, řídit automatizaci jen tam, kde je užitečná
správu požadavků vysledovatelnost,
statickou analýzu kompilátory, prostředí,
návrh testů možnost automatického generování ze specifikace požadavků, zdrojového kódu,
přípravu testových dat extrakce z databází,
spouštění testů,
harness testování souběžné spouštění,
výkonostní testování generátory zátěže, analyzátory logů,
dynamickou analýzu detekce úniků paměti,
ladící,
porovnávací srovnání očekávaného a skutečného výsledku testu, třeba i
GUI,
správu testů,
zjišťování pokrytí
revize:
požadavky, specifikaci, analýzu, návrh, kód, dokumentaci, plán testů, specifikace testů
neformální / procházení / peer / inspekce (formální, pravidla, metrika; moderátor, autor, inspektor, manažer, manažer inspekce)
statická analýza:
control flow graph, strom volání, sekvenční diagram
statické metriky: řádky kódu, fan-in fan-out, úrovně vnoření
datových toků - nedefinovaná proměnná apod.
blackbox testování: vytváření modelů; ekvivalentní rozdělení, hraniční hodnoty, přechody mezi stavy (pro každý stav / přechod / cestu)
whitebox testování: graf toku; pokrytí instrukcí, pokrytí větvení / podmínek, testování změny podmínky
testeři: každý vývojář svůj kód, vývojáři navzájem, testeři ve vývojovém týmu, tým testerů, separátní organizace
pracovníci: manažer testů, analytik testů, expert na automatizaci testování, expert na výkonnostní testování, administrátor nebo návrhář databáze (příprava testovacích dat), expert na uživatelské rozhraní (test použitelnosti), manažer testovacího prostředí, expert na testovací metodologie, expert na testovací nástroje, doménový expert