Obsah

Okruhy otázek

1. Kvalita - koncept, filosofie a systémy, UML

(a) Statistika softwarových projektů.

(b) Požadované vlastnosti softwarových procesů.

:!: rozdíl mezi SW a testovací proces :!:
Opakované použití: testovací metodika by neměla být vyvíjena pouze pro jediný projekt.
Flexibilita: vyjádření nových konceptů, návrhových šablon.
Adaptivita: malé modifikace v implementaci softwaru by měly býtpokryty automatizovaně.
Komplexita: pokrytí dostatečné části testovacích případů je často za možnostmi manuální přípravy.
Údržba: potřebné úsilí je nepřímo úměrné exibilitě a adaptivitě, přímo úměrné komplexitě testovaného produktu.
Prezentace stavu: dokumentace pravidelně obnovovaná, např. WWW stránky.
Nástroje: integrovaná řešení adresující výše uvedené položky.
Cena/čas: efektivnost vyjádřená pomocí výše uvedených položek.
Proveditelnost: trh/cena/čas/zdroje/kvalita efektivnost.
Nepřetržitý běh: rychlá odezva, několik fází (zahořovací, . . . , regresní, dokumentace pravidelně obnovovaná)

(c) Známé bugy historie, jejich shrnutí s hlediska testování. Typické chyby softwarových projektů.

Typické chyby při procesu vývoje softwaru
Známé historické průsery

(d) Koncept kvality, proaktivita a reaktivita.

Reaktivní zabezpečení kvality

Proaktivní zabezpečení kvality

(e) Definice testování softwaru.

Testování je:

Testování je měření kvality softwaru.

(f) Vztah mezi kvalitou pociťovanou zákazníkem a kvalitou měřenou producentem softwaru

Substitute performance

True product performance

source: Performance characterization(Google Books)

(g) Taguchiho přístup, ztrátová funkce.

Kvalita je ztráta, kterou produkt způsobí společnosti po jeho dodání, způsobenou funkčními změnami a škodlivými účinky mimo těch, které vyplývají z vlastních funkcí.

Faktory:
Taguchiho ztrátová funkce

y . . . produkovaná hodnota výkonnostního indexu,
m . . . hodnota indexu výkonosti požadovaná zákazníkem,
L(y) . . . ztrátová funkce vzhledem k rozdílu mezi y a m,
L(y) může být rozložena do Taylorovy řady okolo m:
L(y) = L(m + y - m) = L(m) + L'(m)/1!(y - m) + L''(m)/2!(y - m)2 + …
za předpokladu L(m) = 0,
L(y) je minimální při y = m, L'(m) = 0,
ztráta může být aproximována: L(y) ~ k(y - m)2
k je neznámý koeficient, k určení k je potřeba vědět ztrátu D způsobenou odchylkou delta = y - m ⇒ k = D/delta

(h) Co (ne)lze očekávat při automatizaci testovacího procesu.

Výhody
Problémy

2. Optimalizace testování

(a) Princip párového testování.

Ideální testovací plán
Praktický testovací plán
Příklad
Ideální testovací plán
Praktický testovací plán:

(b) Postup optimalizace metodou ortogonálních polí.

Ortogonální pole je matice velikosti m x n, ve které při testování parametrických párů jednotlivé sloupce odpovídají faktorům (parametrům funkce, případně jiným hodnotám, na kterých závisí testovací případ) a řádky jednotlivým testovacím případům.

Ortogonální pole jsou označována podle toho, kolik úrovní (významných hodnot) umožňují jednotlivým faktorům. Ortogonální pole 2^{1},\; 3^{7} má celkem 8 faktorů. Jeden faktor může mít dvě významné hodnoty, a sedm dalších může mít až 3 významné hodnoty.

Pro použití této techniky je zapotřebí příklad nejprve zakódovat. Tato procedura je velmi snadná – nejprve nalezneme všechny faktory (parametry příkladu) a zjistíme, kolik mají úrovní. Poté nalezneme vhodné ortogonální pole.

Vybrané pole musí umožňovat alespoň tolik faktorů, kolik má náš případ. Dále je nutné, aby jednotlivé faktory měly dostatečný počet úrovní.

Nyní můžeme přejít k samotnému kódování. Každému parametru naší úlohy přiřadíme jeden sloupec – případné přebytečné sloupce můžeme ignorovat. Každé významné hodnotě přiřadíme jednu úroveň – pokud má sloupec více úrovní než potřebujeme, tak můžeme některé významné hodnotě přiřadit více úrovní, tím tuto hodnotu otestujeme více než ostatní (ale stále platí, že otestujeme každou parametrickou dvojici alespoň jednou).

V tomto okamžiku již můžeme pomocí našeho zakódování číst jednotlivé řádky ortogonálního pole – samotné testovací případy.

(c) Postup optimalizace metodou latinských čtverců.

  1. Ze zadání se identifikují faktory a úrovně
  2. určím počet párově-ortogonálních čtverců jako N = max(faktorů-2, nejvyšší_úroveň)
  3. najdu si čtverce v literatuře, (N+1) rozměrné
  4. nyní generuji testovací případy: první faktor je číslo řádku, druhý faktor číslo sloupce, další hodnoty podle čísel na souřadnicích v jednotlivých čtvercích
  5. vygeneruje mi to (N+1)^2 testovacích případů

(d) Vlastnosti latinských čtverců a jejich ortogonálních párů.

Latinsky ctverec je matice n x n takova, ze kazdy element obsahuje cislo od 1 do n tak, ze se v zadnem sloupci nebo radku nevyskytuje vice nez jednou.

Parove ortogonalni latinske ctverce - kazdy element v danem ctverci vystupuje v relaci s kazdym elementem druheho ctverce prave jedenkrat - pro jakoukoliv mocninu prvocisla N existuje N - 1 parove ortogonalnich latinskych ctvercu velikosti N x N

3. Klasická metodologie testování

(a) Softwarová chyba, jejich distribuce.

Softwarová chyba je prezentace toho, že program nedělá něco, co jeho koncový uživatel předpokládá.

Term used to describe an error, flaw, mistake, failure, or fault in a computer program or system that produces an incorrect or unexpected result, or causes it to behave in unintended ways.

(b) Urovně testování. Typologie testování.

Úrovně testování
Typy testování

(c) Terminologie testování. Testovací plán, speci kace procedury, záznam testu.

(d) UI chyby, chyby omezení, procesní chyby.

UI chyby

Funkčnost Program má problém s funkčností, jestliže:

Chyby uživatelského rozhranní - vstupy Komunikace

Struktura příkazů

Chybějící příkazy

Chyby uživatelského rozhranní - výstupy
Výkonnost

Výstup

Chyby omezeni
Procesni chyby

sekvencni

paralelni

(e) Chyby řízení, strukturální chyby, chyby požadavků.

chyby rizeni (vedeni)
strukturalni chyby
chyby pozadavku

(f) Datové chyby, chyby kodu, chyby v manipulaci s pamětí.

Datove chyby
Chyby v kodu
Chyby spravy pameti

4. Strukturované testování. Testování toku řízení

(a) Obecný postup vytvoření testů pomocí grafů.

Vystavba grafu

(b) Kritéria pokrytí.

(c) Základní typy testovacích modelů.

(d) Testovaní toku řízení - metoda hlavních cest.

Jednoduchá cesta . . .

Hlavní cesta

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í
! . . . cesta nemůže být prodloužena
* . . . cesta tvoří smyčku

(e) Testovaní datového toku - metoda du-cest.

Tok datových hodnot: testy zajišť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).

5. Testování stavových automatů

(a) Charakteristiky stavů z pohledu testování. Skryté stavy.

(b) Postup návrhu testů.

  1. identifikuj vstupy
  2. definuj kody vstupu
  3. idenfikuj stavy
  4. definuj kodovani stavu
  5. identifikuj vystupni akce
  6. definuj kodovani vystupnich akci
  7. specifikuj tabulku prechodu a tabulku vystupu - a zkontroluj ji
  8. navrhni testy
  9. proved testy
  10. pro kazdy vstup over jak prechod tak i vystup

(c) Formální konstrukce testů.

Overime:

  1. kodovani vstupu
  2. kodovani vystupu
  3. stavy
  4. kazdy prechod

6. Ověřování modelu

(a) Princip a základní charakteristiky metod ověřování modelů.

Temporální verifikace modelů
Automatový přístup
Výhody/nevýhody verifikace modelů

Výhody

Nevýhody

(b) Kripkeho struktura a její rozsíření.

Kripkeho struktura je typ nedeterministického konečného automatu. Je to graf, který má dosažitelné stavy systému jako vrcholy a přechody mezi nimi jako hrany. Jde v podstatě o popis chování modelovaného systému, který je nezávislý na modelovacím jazyku.
Kripkeho struktura Je dána množinou atomických propozic AP.

Kripkeho struktura
Jde o trojici M = (S, T, I),

Rozšířená Kripkeho struktura
Jde o čtveřici M = (S, s0, T, I),

nebo pětici (S, s0, T, I, L),

(c) Architektura systému UPPAAL a jeho základní vlastnosti.

Vlastnosti modelů

Komponenty systému

Systémový editor - Modelování

Verifikátor

Simulátor

(d) Časový automat a jeho sémantika

Časový automat je šestice (L; `0; C; A; E ; I), kde
L je množina pozic,
l0 je počáteční pozice,
C je množina hodin.
A je množina akcí, ko-akcí a interní fi-akce,
E je množina hran mezi pozicemi s akcí, stráží a množinou hodin, které se resetují,
I : L ! B(C) přiřazuje invarianty k pozicím.

Příklady y := 0 . . . resetování hodin y, press? a press! . . . označují akci a ko-akci (zde kanálovou synchronizaci).

Hodiny Ohodnocení hodin je přiřazení z množiny hodin do nezáporných reálných čísel. Z daného stavu je možné provést přechod pomocí akce nebo zpoždění

Sémantika časového automatu
Přednáška 7, slides 35-37

(e) Vysvětlete základní entity modelování v UPPAAL: synchronizace a její typy, pozice a jejich speciální vlastnosti, stráž, invariant.

Synchronizace

Výsledkem je kanál, synchronizuje se přes návěstí Expression! a Expression?

Pozice

Stavy automatu

Stráž je výraz, který lze vyhodnotit true/false. Stráže jsou přiřazeny k přechodům (hranám).

Invariant je podmínka, která musí být splněna kdykoli se automat nachází v daném stavu.

(f) Vysvětlete pojem dosažitelnosti, bezpečnosti a živosti a jak se tyto vlastnosti ověřují v systému UPPAAL.

Dosažitelnost

Bezpečnost

Živost

Recap

(g) Používání invariantů a stráží nad hodinami v systému UPPAAL.

Invariant je podmínka, která musí být splněna kdykoli se automat nachází v daném stavu. Narozdíl od stráže neslouží jako kontrola podmínky, ale jde o součást stavu (automat se do daného stavu vůbec nemůže dostat, pokud není splněn invariant).

Stráž je výraz, kterou lze vyhodnotit true/false. Stráže jsou přiřazeny k přechodům (hranám).

7. Temporální logiky

(a) Cesta výpočtu a pojem času.

(b) CTL* logika a její temporální operátory.

skládá se z:

Z této abecedy se dají skládat:

(c) CTL logika a její temporální operátory.

CTL logika je podmnožinou CTL*

V CTL* se temporální operátory mohou libovolně spojovat. V CTL musí být vždy v párech kvantifikátor-temporální operátor.

Minimální množina operátorů je: {false, OR, negace, EG, EU, EX}. Ostatní operátory jdou z těchto odvodit.

(d) LTL logika a její temporální operátory.

LTL je podmnožinou CTL*

Obsahuje pouze kvantifikátor A (takže se nepíše)

Ignoruje větvení.

(e) Temporální logika systému UPPAAL.

Pro vyjádření logiky se používá BNF. Žádný výraz nesmí mít postranní efekty. Stavové formule obsahují stráže a mohou mít speciální hodnotu deadlock. Běhové formule:

8. Formální metody

(a) Z notace - principy a základní vlastnosti.

Schema = vzory deklaraci a omezeni

(b) PVS systém = principy a základní vlastnosti.

PVS specifikace obsahuje nekolik souboru, kazdy s jednou ci vice teoriemi - teorie muze importovat jine teorie.

PVS
PVS jako verifikator dukazu
Prakticke kroky, co se tyce PVS
  1. vytvoreni specifikace
  2. syntakticka analyza
  3. typova kontrola
  4. dokazovani

(c) Alloy - prvky syntaxe jazyka, signatura, pole, relace, množinové operátory, relační operátory, fakta, funkce, predikáty, tvrzení, jak se provádí analýza specifikace.

https://cw.fel.cvut.cz/wiki/_media/courses/a4m33tvs/prednasky/05.alloy.pdf

atom je primitivni entita

relace je struktura, ktera zachycuje vztahy mezi atomy. je to mnozina n-tic, kazda n-tice je sekvence atomu

signatura zavadi mnozinu atomu, je vrcholova pokud je deklarovana nezavisle na ostatnich signaturach

pole, relace se deklaruji jako pole v signature:

nasobnosti

kvantifikatory: all, some, no, lone, one

logicke operatory: not (!), and (&&), or (||), implies (⇒), else, (⇔)

množinové konstanty

množinové operátory

relační operátory

fakta jsou dalsi omezeni na signatury

funkce (makra) jsou pojmenovane vyrazy

predikáty jsou dobre v situacich:

tvrzení slouzi jako dodatecna omezeni k overeni. Neni-li omezeni vyjadrene tvrzenim splneno, vyprodukuje se protipriklad.

jak se provádí analýza specifikace

9. JPF

(a) Architektura systemu JPF a vlastnosti systemu.

slidy(pdf strany) 30-37

https://cw.fel.cvut.cz/wiki/_media/courses/a4m33tvs/prednasky/11.javapathfinder.pdf

(b) Pouziti systemu JPF pro generovani testovacich pripadu.

slidy(pdf strany) 19-28

https://cw.fel.cvut.cz/wiki/_media/courses/a4m33tvs/prednasky/11.javapathfinder.pdf

10. testování OO softwaru

(a) Anomálie DU párů

Souvisi to s dedenim a polymorfismem.

  1. SDA - state definition anomaly - přepisující metoda má jinou def množinu než přepisovaná
  2. ITU - inconsistent type use - nepřepisování ale volání parent metod
  3. SDIH - podobné SDA ale potomek přepíše něco v prarodiči a rodič pak používá špatně definovanou proměnnou
  4. ACB1 - přepis konstruktoru, potomek pak používá něco co není definováno
  5. SVA - přepsání metody v prarodiči, později rodič taky přepíše tu metodu a potomek začne volat rodiče, ne prarodiče

(b) Testování párových sekvencí

Typy testování: intra/inter metod a intra/inter tříd

Používá se k reprezentace interakce stavových prostorů, identifikace bodů integrace a testovacích požadavků.

V softwarových artefaktech se hledají vazby last-def a firt-use po volání metody a uvnitř metody.

11. Spolehlivost softwaru

(a) Základní metriky kvality softwaru

Metriky produktu - popisuji charakteristiky jako je velikost, komplexity, navrhove vlastnosti, vykonnost, uroven kvality

Procesni metriky - mohou byt vyuzity pri zlepsovani vyvoje softwaru a procesu udrzby

Metriky projektu - popisuji charakteristiky projektu jeho provedeni

Metriky kvality - podmnožiny SW metrik

(b) Statické modely spolehlivosti vývoje softwaru

- pouziva atributy projektu nebo programovych modulu k odhadu poctu defektu v softwaru - parametry modelu jsou odhadovany na zaklade rady predchozich projektu

Weillova distribuce (jedna ze 3 znamych distribuci extremnich hodnot)

- rychlost defektu pozorovanych behem vyvojoveho procesu je positivne korelovana s rychlosti defektu v poli nasazeni - cim vice defektu je objeveno a odstraneno drive, tim mene jich zustane na pozdejsi faze

(c) Dynamické modely spolehlivosti vývoje softwaru

- pouziva prubezneho vyvoje vzoru defektu k odhadu spolehlivosti finalniho produktu - parametry dynamickych modelu jsou odhadovany na zaklade mnoha udaju zaznamenanych o hodnocenem produktu k danemu datu

- modely rustu spolehlivosti se obvykle odvozuji z dat faze formalniho testovani

Behem tohoto testovani po fazi vyvoje, kdy se objevuji selhani, identifikuji a opravuji defekty, se softwarovy produkt stava stabilnejsi a jeho spolehlivost roste s casem. Tyto modely se proto nazyvaji modely rustu spolehlivosti.

12. Statistické testování softwaru

(a) Propagace kovarianční matice - explicitní vztah.

Explicitní vztah: Y = F(X)

Jak se počítá kovarianční matice pro parametr p:

  1. vyjádří se p
  2. J je matice 1×2: derivace p podle x a derivace p podle y
  3. kovarianční matice se počítá: J x matice 2×2 viz úkol x transponovaná J

(b) Propagace kovarianční matice - implicitní vztah.

Implicitní vztah: skalární funkce F(X,Y)

(c) Přímé propagování variance.

Dána funkce g(x,y) s variancí (delta_xx)^2 a (delta_yy)^2 a kovariancí delta_xy.

Příklad pro z = x + y: (delta_zz)^2 = (delta_xx)^2 + (delta_yy)^2

(d) Přímé propagování min/max chyby.

slidy(pdf strany) 19-21

https://cw.fel.cvut.cz/wiki/_media/courses/a4m33tvs/prednasky/13.statisticketestovani.pdf