Stiahnuť prezentáciu
Prezentácia sa nahráva. Prosím počkajte
Zverejnil孜 汪
1
Karol Rástočný karol.rastocny@stuba.sk
Testovanie softvéru Karol Rástočný
2
Testovanie softvéru Proces verifikácie pre určenie a zlepšenie kvality softvéru [Friedman&Voas, 1995] Verifikácia vyhodnocuje či produkt spĺňa požiadavky Validácia vyhodnocuje či produkt zodpovedá jeho plánovanému použitiu Verifikácia Validácia Problém Špecifikácia Návrh Implementácia Systém
3
https://www. easterbrook
4
ISO/IEC/IEEE 29119 Štandardy pre testovanie softvéru
Koncepty, definície, procesy, dokumentácia, techniky návrhu testov, ... 4.92 testovanie – skupina aktivít vykonávaných za účelom určenia a/alebo vyhodnotenia vlastností jedného alebo viacerých testovaných prvkov [ISO/IEC/IEEE :2013] Note 1 to entry: Testing activities could include planning, preparation, execution, reporting, and management activities, insofar as they are directed towards testing. 4.68 test item - work product that is an object of testing EXAMPLE A system, a software item, a requirements document, a design specification, a user guide. 4.69
5
Kde to začalo? Výber daní v Japonsku – prvý štatistický model kvality (1950) Výroba automobilov ( ) Monopoly – kvalita nebola prvoradá Prepájanie trhov – súperenie v kvalite Najskôr Japonci potom USA (Ford, GM) Modely kvality výroby Testovanie ako overenie kvality
6
1822–1956: Ladenie 1951: Prvé modely kvality SW
1952: Prvý univerzálny počítač (IBM) – testovanie konfigurácií Difference engine (Babbage)
7
1957–1988: Splnenie požiadaviek
1957: Charles L. Baker; Program testing vs debugging 1958: Prvý tím testerov SW (projekt Merkúr) 1961: Weinberg, Leeds – testovanie má overiť adaptovateľnosť programu a nie schopnosť spracovať informáciu 1967: IBM; Evaluation of the Functional Testing of Control Programs – potreba testovanie plánovať 1968: Bauer; Software crisis – potreba písať verifikovateľný a znovupoužiteľný kód 1969: Dijkstra; Testing shows the presence, not the absence of bug 1970: Royce, Vodopádový model
8
Vodopádový model Benington, 1956 / Royce, 1970
9
W-Model Špecifikácia systému Implementácia systému Zostavenie softvéru
Návrh systému Zostavenie systému Špecifikácia požiadaviek Nasadenie systému Testovanie návrhu Testovanie špecifikácie Testovanie požiadaviek Akceptačné testovanie Systémové testovanie Testovanie integrácie Testovanie jednotiek (Paul Herzlich, 1993)
10
Testovanie čiernej skrinky Testovanie bielej skrinky
Požiadavky Špecifikácia požiadaviek Akceptačné testovanie Požiadavky/špecifikácia systému Špecifikácia systému Systémové testovanie Požiadavky/štruktúra systému Návrh systému Testovanie integrácie Štruktúra jednotky Implementácia systému Testovanie jednotiek Testovanie bielej skrinky
11
Testovanie jednotiek/komponentov
Testovanie izolovanej jednotky programu
12
Jednotka programu Kúsok kódu spustiteľný z vonkajšieho prostredia jednotky Implementuje nízkoúrovňovú funkcionalitu Závisí na úrovni abstrakcie a technológii Procedúra Funkcia Metóda Trieda Aspekt Modul Komponent
13
Izolácia jednotky Samostatné testovanie Chyby sú izolované v jednotke
Bez integračných závislostí Znižuje množstvo testovacích prípadov Napr. stupeň vetvenia Chyby sú izolované v jednotke Jeden test – jedna potenciálna chyba Jednoduché prešetrenia výsledkov testovania Jednoduchá oprava chyby
14
Vykonávatelia testovania jednotiek
Programátor jednotky Pozná vnútorné detaily jednotky Demonštruje korektnosť a kvalitu riešenia Demonštruje pripravenosť na integráciu Zvyšuje zapojenie programátora do kvality Inžinier testovania Nezávislé potvrdenie Vyžaduje pochopenie funkcií a štruktúry jednotky
15
Fázy Statické testovanie jednotiek Dynamické testovanie jednotiek
Kód je skúmaný voči všetkým prípadom správania sa Jednotka je validovaná voči požiadavkám Dynamické testovanie jednotiek Spúšťanie jednotky Vstupné dáta sú vyberané na základe štrukúty Výstupy sú validované voči očakávaným výstupným dátam
16
Statické testovanie jednotky
Kód nemusí byť kompletný Nájdi chyby hneď ako je to možné Techniky Inšpekcia Peer review voči preddefinovaným kritériám Automatizácia: Statická analýza Prechod Simulácia preddefinovaných scenárov s vysvetlením
17
Dynamické testovanie jednotiek
Izolované spustenie testovanej jednotky: Jednotka je vyňatá z jej exekučného prostredia Exekučné prostredie je emulované a skompilované spolu s jednotkou Kompilát je spustený s vybranými vstupmi, pričom sú zozbierané jednotlivé výstupy Výstupy sú porovnané voči očakávaným výstupom – rozdiel znamená zlyhanie
18
Prostredie testovania jednotky
Ovládač testu Výstupy Volanie a vstupné parametre Výstupné parametre Testovaná jednotka Volanie Pot. Vol. Potvrdenie Stub Stub Log Log
19
Rámce pre testovanie jednotiek
Skriptovanie a spúšťanie ovládačov testov Ovládač testu Vykonávač testov (test runner) IDE integrácie CI integrácie Samostatne stojace aplikácie Kód testu jednotky Vstupné dáta Tvrdenia (assertions)
20
Rámce pre atrapy Skriptovanie stub-ov Atrapa (mock) Nahradená jednotka
Imitácia vykonania when – šablóna volania nahradenej jednotky then – návratová hodnota Monitorovanie spustenia Počítadlo spustenia Vstupné dáta spustenia
21
Fixture: Skupina testov
Fixture set-up Nastavenie prostredia pre celú skupinu testov Test case set-up Nastavenie prostredia pre jeden testovací prípad Spustené pred vykonaním každého testovacieho prípadu Test cases Testy jednotiek Test case tear down Vyčistenie prostredia po vykonaní jedného testovacieho prípadu Spustené po vykonaní každého testovacieho prípadu Fixture tear down Vyčistenie prostredia po vykonaní celej skupiny testov
22
Fixture set-up Test case set-up Test case i Test case tear down
[Next test case] [All test cases executed] Fixture tear down
23
Štruktúra testu jednotky (AAA)
Príprava (Arrange) Input data preparation Mocks set-up Vykonanie (Act) Execution of an unit under test Potvrdenie (Assert) Validácia vykonania atráp Validácia výstupných dát
24
NUnit + Moq + Shoudly (C#)
[TestFixture] public class RestServiceTest { private Mock<Core> core; private Mock<AnonymizationCore> anoymizationCore; private RestService service; [SetUp] public void SetUp() core = new Mock<Core>() { CallBase = true }; anoymizationCore = new Mock<AnonymizationCore>() { CallBase = true }; service = new RestService(core.Object, anoymizationCore.Object); } [Test] public void PingTest() service.Ping().Result.ShouldBe("OK");
25
[Test] public void GenerateTestsTest() { var request = new GenerateTestsRequest() RootAstNode = new Common.AST.AstNode(), Author = "author", }; var testSuites = new CloneableList<ITestSuite>(1) new TestSuiteTestData() { Name = "Name 1", SourceCode = "Code 1“ } var jobData = new JobData(); jobData.SetTestSuites(testSuites); core.Setup(x => x.GenerateTests(It.IsNotNull<AstNode>()) .Returns(Task.FromResult(jobData)); var response = service.GenerateTests(request).Result; response.JobId.ShouldNotBe(Guid.Empty); response.TestSuites.ShouldNotBeNull(); response.TestSuites.Count().ShouldBe(1); }
26
Sú jednotkové testy postačujúce?
27
Testovanie integrácie
Technika systematického zostavovania softvérového systému počas vykonávania testov zameraných na odhalenie chýb spojených z rozhraniami.
28
Testovanie integrácie
Cieľ: Zostaviť primerane stabilný systém v laboratórnom prostredí Dôvody Rôzne moduly sú vytvorené rôznymi vývojármi Testy jednotiek volajú atrapy a nie reálne jednotky prostredníctvom hardvérových a programových rozhraní
29
Úrovne testovania integrácie
Vnútrosystémové testovanie Nízkoúrovňové testovanie integrácie s cieľom zostaviť súdržný systém Medzisystémové testovanie Vysokoúrovňové testovanie rozhraní samostatne testovaných systémov End-to-end testovanie zamerané na špecifickú vlastnosť Testovanie párov Testovanie integrácie dvoch systémov
30
Techniky integrácie Integrácia relevantných jednotiek čiastočne naprogramovaného systému Inkrementálna Zhora dole Zdola hore Sandwich Big bang
31
Inkrementálna integrácia
Systém je zostavený inkrementálnou integráciou v cykloch Integruj novú otestovanú a schválenú jednotku Spusti testy Analyzuj výsledky testov Oprav chyby
32
Integrácia zhora nadol
Inkrementálna hierarchický integrácia smerom od volajúcich jednotiek Jednotky z nižších úrovní sú nahradené atrapami A C B D
33
Top down integration Nahraď atrapu implementovanou jednotkou
Otestuj rozhranie voči implementácii Spusti regresné testovanie A B C D E F
34
Bottom up integration Inkrementálna hierarchický integrácia smerom od volaných jednotiek Vyššie úrovne sú nahradené ovládačom Ovládače testov z vyšších úrovní sú nahrádzané implementovanými jednotkami Test driver Test driver B C D E F
35
Zhora nadol vs. zdola nahor
Validácia hlavných návrhových rozhodnutí Dekompozícia problému z hora nadol Sledovanie funkcií na systémovej úrovni Rozhrania systému sú na najvyššej úrovni Zložitosť návrhu testovacích prípadov Vysoké úrovne vyžadujú veľa atráp Techniky zdola nahor vyžadujú iba tvrdenia Znovupoužiteľnosť testovacích prípadov Regresné testovanie v technikách z hora nadol
36
Big bang integrácia Všetky jednotky sú testované samostatne
Všetky jednotky sú naraz integrované Všetky rozhrania sú testované na celom systéme
37
Sandwich integrácia Kombinácia techník zhora nadol, zdola nahor a big bang Použi techniku zhora nadol na najvyšších úrovniach Použi techniky zdola nahor na najnižších úrovniach Použi techniku bing bang na stredné úrovne
38
Systémové testovanie Komplexné testovanie vykonávané s cieľom validovať celý systém a jeho charakteristiky vychádzajúce z požiadaviek a návrhu.
39
Systémové testovanie Validuje integráciu celého systému (HW aj SW jednotky) voči funkcionálnym a nie funkcionálnym požiadavkám Špecializované typy testov na meranie kvalitatívnych vlastností
40
Úroveň testovania vs. typ testu
Vývojové fázy Kvalitatívne vlastnosti
41
Testy komunikácie Verifikujú komunikáciu medzi (pod-)systémami
Základné testy spojenia Naviazanie základného spojenia Testy schopností Sledovateľnosť statických schopností, napr. časové limity, rozsahy hodnôt Testy správania Verifikujú dynamické požiadavky na komunikáciu
42
Testy modulov Verifikujú, že všetky individuálne funkcie modulov systému zodpovedajú očakávaniam Testy sú navrhnuté tak, aby verifikovali špecifickú funkciu konkrétneho modulu Správnosť je verifikovaná prostredníctvom Systémových log-ov Poskytnutých výstupov
43
Testy vlastností Verifikujú správnosť systémových procesov
Scenáre biznisu Skriptovanie vstupov používateľských rozhraní a porovnanie výstupov používateľského rozhrania Veľa manuálnej práce Ťažké na údržbu Nahraj a pusť Zmeny GUI vyžadujú nové nahrávky
44
Testy použiteľnosti Verifikujú používateľské rozhrania voči potrebám používateľov Nezameriavajú sa na programové chyby Alpha testovanie Simulovaná prevádzka potenciálnymi používateľmi na strane vývojára Beta testovanie Marketingová beta – zabezpečenie skorého povedomia a záujmu o produkt Technická beta – získanie spätnej väzby od používateľov v reálnom prostredí Akceptačná beta – ubezpečenie, že produkt zodpovedná akceptačným kritériám
45
Testy bezpečnosti Verifikujú charakteristiky bezpečnosti
Očakávané správanie Negatívne scenáre a scenáre zneužitia Neočakávané správanie Penetračné testovanie Systémové zlyhania, exploidy, integrácie, ošetrenie chýb, …
46
Testy hraničných hodnôt
Verifikujú robustnosť oproti hraničným podmienkam a špeciálnym a základným hodnotám Podporované hodnoty Pozorovanie správnej funkčnosti Nepodporované hodnoty Pozorovanie definovaných chybových správ a procesov spracovania chýb
47
Testy spolupráce Verifikujú spoluprácu s produktami tretích strán
Testovanie konfigurácií Kontroluje spoluprácu medzi rôznymi HW a SW komponentmi Testovanie kompatibility Kontroluje funkčnosť systému v rôznych prostrediach
48
Testovanie výkonu Verifikuje výkon systému voči požiadavkám Merania
Zaťaženie vs. merateľné charakteristiky Merania End-to-end response time CPU time Network connection time Database access time Waiting time
49
Testovanie škálovateľnosti
Verifikovanie, že je možné systém škálovať smerom k jeho projektovaným limitom Identifikuje limity kedy systém dosiahne požiadavky na oneskorenie a priepustnosť Limitácie Veľkosť dátového úložiska Šírka sieťového pásma Rýchlosť
50
Stress testy Vyhodnocujú a zisťujú správanie systému po prekonaní očakávanej kapacity systému Inkrementálne zvyšovanie limitov pokiaľ systém nezlyhá Zlyhanie po presiahnutí limitu by malo viesť k spusteniu mechanizmov zotavenia zo zlyhania Odhaľujú problémy s Únikmi pamäti Alokáciou a rozdrobením vyrovnávacej pamäte Proces Otestuj individuálne moduly – kapacita modulov Otestuj individuálne prepojenia medzi modulmi – kapacita prepojení Otestuj celý systém – kapacity všetkých prepojení a modulov
51
Testy zaťaženia a stability
Uistenie, že systém zostane stabilný po dlhšiu dobu plnej záťaže Simulácia situácií z reálneho života Problémy dlhodobej záťaže Spomalenie systému Problémy s funkcionalitou Tiché zlyhania Komplexné zlyhania systému
52
Testy spoľahlivosti Merajú schopnosť systému zostať funkčným počas dlhšej doby MTTF – mean time to failure / priemerná doba zlyhania MTTR – mean time to repair / priemerná doba opravy MTBF – mean time between failures / priemerná doba medzi zlyhaniami Techniky náhodného testovania TTR1 TTR2 TTR3 TTR4 TTF1 TTF2 TTF3 TTF4 TBF1 TBF2 TBF3 TBF4
53
Regresné testy Verifikujú nové verzie systému voči charakteristikám predchádzajúcich verzií Overenie, že neboli zavedené nové chyby Vybraná množina testovacích prípadov Maximalizácia pravdepodobnosti odhalenia novej chyby Zníženie nákladov na testy
54
Prieskumné testovanie
Celkové testovanie kvality za súčasného Učenia Návrhu testov Vykonávania testov Analýzy výsledkov Pre Náklady na prípravu Skoré odhalenie kritických chýb Deduktívne uvažovanie Proti Testy nie je možné skontrolovať Malá miera automatizácie Kvalita je závislá na skúsenostiach
55
Akceptačné testovanie
Formálne testovanie vykonávané na určenie či systém zodpovedá akceptačným kritériám.
56
Akceptačné testovanie
Vykonávané zákazníkmi na základe ich očakávaní Používateľské akceptačné testovanie Uistenie sa, že systém zodpovedá zmluvným akceptačným kritériám Biznisové akceptačné testovanie Uistenie sa, že systém zodpovedám požiadavkám podnikania – obchodná stratégia, štandardy, ...
57
Akceptačné kritériá Merateľné kritériá
Preferované sú kvantitatívne Vybrané a prioritizované zákazníkom Zamerané na kvalitatívne atribúty z rôznych uhlov pohľadu Transcendentálny pohľad – ťažké na definovanie Používateľský pohľad – zdroj uspokojenia Výrobný pohľad – vyhovenie špecifikácii Produktový pohľad – vnútorné vlastnosti Hodnotový pohľad – cena, ktorú je zákazník ochotný zaplatiť
58
Priebeh akceptačného testovania
Systémový inžinier testovania na staane zákazníka Asistuje zákazníkovi v príprave testovacieho prostredia Trénuje inžinierov akceptačného testovania v používaní systému Poskytuje výsledky predchádzajúcich systémových testov inžinierom akceptačného testovania Asistuje inžinierom akceptačného testovania pri vykonávaní akceptačných testov
59
Priebeh akceptačného testovania
Zistené chyby sú reportované dodávateľovi Chyby sú opravené, nová zostava je pretestovaná a dodaná zákazníkovi Inžinieri akceptačného testovania opakujú testy, ktoré zlyhali Rozdiely v akceptačných kritériách, ktoré vychádzajú z ich chybného definovania, sú zadokumentované
60
Testovanie integrácie vs. Systémové testovanie
61
Granularita Testovanie integrácie Systémové testovanie
Rozhrania medzi jednotkami Komunikujú jednotky správne? Systémové testovanie Systém ako celok Zodpovedá systém požiadavkám?
62
Požiadavky Testovanie integrácie Systémové testovanie
Funkcionálne požiadavky Sú správne implementované vnútorné systémové scenáre? Systémové testovanie Funkcionálne aj nie funkcionálne požiadavky Sú správne implementované scenáre interakcie systému s okolím? Vyhovuje systém kvalitatívnym požiadavkám?
63
Techniky návrhu testov
Testovanie integrácie Techniky založené na štruktúre a špecifikácii Testovanie čiernej aj bielej skrinky Systémové testovanie Techniky založené na špecifikácii Testovanie čiernej skrinky
64
Účastníci Testovanie integrácie Systémové testovanie
Vývojári a inžinieri testovania Systémové testovanie Inžinieri testovania
65
Typy testov Testovanie integrácie Systémové testovanie
Techniky integrácie Zhora nadol, zdola nahor, big-bang, ... Systémové testovanie Testovanie kvalitatívnych vlastností Testovanie výkonu, škálovateľnosti, bezpečnosti, použiteľnosti, ….
66
Výsledky Testovanie integrácie Systémové testovanie Integrovaný systém
Verifikovaný systém
67
Príklad: Filter playlistu
Používateľ zadá playlist Systém vyfiltruje skladby dlhšie než 3 minúty Systém vyfiltruje klasickú hudbu Systém vyfiltruje skladby z nižšou kvalitou než 128kbps Systém spustí multimediálny prehrávač s prefiltrovaným playlistom Kvalitatívna požiadavka: Systém musí prefiltrovať skladieb do 1s
68
Príklad: Architectúra
Playlist Duration filter Genre filter Quality filter
69
Príklad: Testovanie jednotiek
Arrange: Nahraď Quality filter atrapou Act: Zavolaj Genre filter s jednou klasickou a jednou jazzovou skladbou v playliste Assert: Atrapa Quality filter bola spustená s jednou jazzovou skladbou IDE Playlist Duration filter Genre filter Quality filter
70
Example: Test integrácie
Arrange Nahraď Quality filter atrapou Act: Zavolaj Genre filter s jednou klasickou (2,5 min) a dvomi jazzovými skladbami (2,2 a 3,01 min) Assert: Atrapa Quality filter bola spustená s jednou jazzovou skladbou (2,2 min) Android emulator / IDE Playlist Duration filter Genre filter Quality filter
71
Example: System (performance) test
Arrange Priprav playlist s skladbami Aktivuj stopky Act: Spusti filter playlistu s pripraveným playlistom Zastav stopky Assert: Stopky odmerali menej než 1s Samsung Galaxy S8, Oreo Playlist Duration filter Genre filter Quality filter
72
Nové Trendy
73
Agilný vývoj softvéru Veľké množstvo zmien Častá integrácia
Automatizácia akceptačného testovania Funkčných požiadavky – scenáre Testovanie akceptačných testov Použiteľnosť Častá integrácia Overenie spätnej kompatibility Rozsiahle regresné testovanie Efektívne vykonávanie CI
74
Agilný vývoj softvéru Vývojár = analytik + návrhár + programátor + TESTER Testovanie priamo integrálnou súčasťou vývoja DevOps Analytik – potreba skorej testovateľnosti wireframes, scenáre -> zdrojový kód Návrhár – potreba simulácie Testovanie prototypov Programátor – rýchle identifikovanie chýb Generovanie testov, testovanie v reálom čase, údržba a konzistentnosť testov
75
Potrebuje agilný svet Testerov?
Bezpečnosť a robustnosť Plán testovania Potrebné vytvoriť a udržiavať Sledovanie aktuálnych zraniteľností Testovateľnosť ako požiadavka Testovanie testov Review, mutačné testovanie Exploratívne testovanie Cielené hľadanie chýb v produkte
76
BigData Testovanie výkonnosti Testovanie paralelných procesov
Škálovateľnosť – spracujeme terabajty dát? Zdroje – koľko RAM/CPU/... potrebujeme? Testovanie paralelných procesov Testovanie kvality dát Extrakcia a vyhodnotenie charakteristík Dátová analytika, počítačové učenie Náklady na vykonanie testov
77
IoT Testovanie použiteľnosti Testovanie kompatibility a konfigurácií
Je konfigurácia použiteľná pre bežného používateľa Čo sa stane po pridaní a odobratí zariadenia Testovanie kompatibility a konfigurácií Bezpečnosť BigData
78
Literatúra ISO/IEC/IEEE 29119-1:2013
NAIK, K. – TRIPATHY, P. Software Testing and Quality Assurance: Theory and Practice. Wiley-Spektrum, s. ISBN
Podobné prezentácie
© 2024 SlidePlayer.sk Inc.
All rights reserved.