Statikus technikák: A szoftver átvizsgálása. Statikus technikák: A szoftver átvizsgálása 2011.04.25.



Hasonló dokumentumok
A programkód átvizsgálásának hatékonyságát két ok magyarázza:

Verifikáció és validáció Általános bevezető

Miskolci Egyetem Általános Informatikai Tanszék

A tesztelés feladata. Verifikáció

Szoftverminőségbiztosítás

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

Tesztelés az XP-ben Tesztelés az XP-ben. A tesztelés kulcsjellemzői:

Szoftverminőségbiztosítás

7. Verifikáci. ció. Ennek része a hagyományos értelemben vett szoftvertesztelés is. A szoftver verifikálásának,

Kompetens szoftvertesztelés a gyakorlatban II. zárthelyi dolgozat

Miskolci Egyetem Alkalmazott Informatikai Intézeti Tanszék A minőségbiztosítás informatikája. Készítette: Urbán Norbert

23. Szoftver-tesztelés

Programtervezés. Dr. Iványi Péter

ESZKÖZTÁMOGATÁS A TESZTELÉSBEN

Fogalomtár Etikus hackelés tárgyban Azonosító: S2_Fogalomtar_v1 Silent Signal Kft. Web:

MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK A TESZT FEJLESZTÉSI FOLYAMATA A TESZTTERVEZÉSI TECHNIKÁK KATEGÓRIÁI

A szoftver-folyamat. Szoftver életciklus modellek. Szoftver-technológia I. Irodalom

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

A TESZTELÉS ALAPJAI MIÉRT SZÜKSÉGES A TESZTELÉS? MI A TESZTELÉS? ÁLTALÁNOS TESZTELÉSI ALAPELVEK

Szoftverminőségbiztosítás

Intelligens eszközök fejlesztése az ipari automatizálásban Evosoft Hungary kft., Evosoft Hungary Kft.

Angolul: Extreme Programming, röviden: XP Agilis módszertan. Más módszertanok bevált technikáinak extrém módú (nagyon jó) használata

Programrendszerek tanúsítása szoftverminőség mérése

Szoftverminőségbiztosítás

MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK STRUKTÚRA ALAPÚ, VAGY FEHÉRDOBOZ TECHNIKÁK TAPASZTALAT ALAPÚ TECHNIKÁK

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

Tesztelési folyamat. Integrációs tesztelés:

Integráci. ciós s tesztek. ciós s tesztek (folyt.) Integration Level Testing (ILT) Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

Szoftver újrafelhasználás

Objektumorientált tesztelés

Szoftvertesztelés - Bevezető

Szoftvertechnológia ellenőrző kérdések 2005

A fejezet témái Agilis módszerek Extrém programozás Gyors alkalmazásfejlesztés Szoftverprototípus készítése

Bevezetés Mi a szoftver? Általános termékek: Mi a szoftvertervezés?

Szoftverprototípus készítése. Szoftverprototípus készítése. Szoftverprototípus készítése

Programfejlesztési Modellek

8.3. AZ ASIC TESZTELÉSE

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat április 13. Például (bemenet/pelda.

MIÉRT KELL TESZTELNI?

Előadók: Angyal Gergely (Raiffeisen), tesztelési csoportvezető Kováts Márton (KFKI), szenior rendszermérnök

Integrációs mellékhatások és gyógymódok a felhőben. Géczy Viktor Üzletfejlesztési igazgató

Rubin SPIRIT TEST. Rubin firmware-ek és hardverek tesztelése esettanulmány V1.0. Készítette: Hajnali Krisztián Jóváhagyta: Varga József

Szoftverminőségbiztosítás

Szoftverminőségbiztosítás

Bánsághi Anna Bánsághi Anna 1 of 62

S01-9 Szoftverfejlesztés minőségi aspektusai

Információtartalom vázlata

TESZTMENEDZSMENT TESZTELŐ SZERVEZET TESZTTERVEZÉS ÉS BECSLÉS

Programozási technológia II 7. előadás. Verifikáció és validáció Giachetta Roberto

A TESZTELÉS ALAPJAI A TESZTELÉS ALAPVETŐ FOLYAMATA A TESZTELÉS PSZICHOLÓGIÁJA A TESZTELÉS ETIKAI KÓDEXE

Modell alapú tesztelés: célok és lehetőségek

Biztonsági folyamatirányító. rendszerek szoftvere

Szoftver-technológia II. Szoftver újrafelhasználás. (Software reuse) Irodalom

Szoftverminőségbiztosítás

WebService tesztelés. SOAPui Pro, GreenPepper és Confluence használatával. Verhás & Verhás Szoftver Manufaktúra KNOW-HOW

Tartalom A verifikáció és validáció tervezése Szoftver vizsgálatok Automatizált statikus analízis Cleanroom szoftverfejlesztés

A fejlesztési szabványok szerepe a szoftverellenőrzésben

Szoftver-mérés. Szoftver metrikák. Szoftver mérés

Modellek ellenőrzése és tesztelése

Test Management Strategy Document. Deák Kristóf Lauly Viktória Kunigunda Csiki Norbert Szabó Zoltán

V. Félév Információs rendszerek tervezése Komplex információs rendszerek tervezése dr. Illyés László - adjunktus

ORVOSTECHNIKAI ESZKÖZÖK GYÁRTMÁNYFEJLESZTÉSE AKTÍV ORVOSI ESZKÖZÖK FEJLESZTÉSE - PEMS V&V

Verziókövető rendszerek használata a szoftverfejlesztésben

Tápegység tervezése. A felkészüléshez szükséges irodalom Alkalmazandó műszerek

Név: Neptun kód: Pontszám:

30 MB INFORMATIKAI PROJEKTELLENŐR

1 Rendszer alapok. 1.1 Alapfogalmak

Alkalmazások fejlesztése A D O K U M E N T Á C I Ó F E L É P Í T É S E

A dokumentáció felépítése

Infokommunikációs protokollok

A szoftver-folyamat. Szoftver életciklus modellek. Szoftver-technológia I. Irodalom

Hát én immár mit válasszak?

Bevezetés a programozásba előadás: Alapvető programtervezési elvek

Bevezetés a programozásba

Követelmény alapú minőségbiztosítás az államigazgatásban

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Specifikáció alapú teszttervezési módszerek

A programkomponensek között különbözı típusú interfészek léteznek. következésképpen különbözı típusú interfészhibák fordulhatnak elı.

Specifikáció alapú teszttervezési módszerek

Szoftvermérés:hogyan lehet a szoftvertermék vagy a szoftverfolyamat valamely jellemzőjéből numerikus értéket előállítani.

IRÁNYÍTÓ RENDSZER IRÁNYÍTANDÓ FOLYAMAT. Biztonsági funkciók Biztonsági integritás. Normál működés. Hibák elleni védettség Saját (belső) biztonság

Hatékony iteratív fejlesztési módszertan a gyakorlatban a RUP fejlesztési módszertanra építve

A tesztelés szükségessége

Teszt terv Új funkció implementációja meglévı alkalmazásba

Szoftvertermékek csoportjai. A szoftver. Bemutatkozás és követelmények

kodolosuli.hu: Interaktív, programozást tanító portál BALLA TAMÁS, DR. KIRÁLY SÁNDOR NETWORKSHOP 2017, SZEGED

Mi a folyamat? Folyamatokkal kapcsolatos teendőink. Folyamatok azonosítása Folyamatok szabályozása Folyamatok folyamatos fejlesztése

Mesterséges intelligencia alapú regressziós tesztelés

Bánsághi Anna 2014 Bánsághi Anna 1 of 31

Automatikus tesztgenerálás modell ellenőrző segítségével

IRÁNYTŰ A SZABÁLYTENGERBEN

Minőségmenedzsment és Informatika Test-Driven Development

Rubin SPIRIT TEST. Domino net provisioning tesztelése esettanulmány 1.0. Készítette: Dobó Arnold Jóváhagyta: Varga József. Rubin Informatikai Zrt.

Autóipari beágyazott rendszerek. Kockázatelemzés

Szoftver karbantartási lépések ellenőrzése

OO rendszerek jellemzői

01. gyakorlat - Projektalapítás

A Rational megközelítés az integrációs tesztelés terén

POP tanulmányi verseny (POPTV)

Átírás:

Dr. Mileff Péter A V & V tervezési folyamatoknak egyensúlyt kell kialakítani a verifikáció és a validációstatikus és dinamikus technikái között. 1 2 Statikus technikák: A szoftver átvizsgálása A szisztematikus programtesztelés időigényes és drága folyamat. Minden tesztfuttatás egyetlen vagy legfeljebb néhány hibát derít fel. Ezzel ellentétben a programkód átvizsgálása hatékonyabb és olcsóbb megoldás. A program hibáinak több, mint 60%-a felderíthető programátvizsgálással. Statikus technikák: A szoftver átvizsgálása A programkód átvizsgálásának hatékonyságát két ok magyarázza: Egy menetben több, független hiba is kiderülhet. Az átvizsgálók felhasználják a szakterületre és a programozási nyelvre vonatkozó ismereteiket. Valószínűleg találkoztak már régebben is ilyen hibafajtákkal, így tudják, mire kell figyelni. A programkód átvizsgálását egy legalább 4 emberből álló csapatnak érdemes végeznie. 3 4 1

Statikus technikák: A szoftver átvizsgálása A szerző, az olvasó, a tesztelő és a moderátor. A csapat tagjai szisztematikusan elemzik a kódot és rámutatnak az esetleges hibákra. Maga az átvizsgálás max. 2 óra, amely során az olvasó felolvassa a kódot. Végül a szerző módosítja a programot. Ezután vagy újra átvizsgálják a kódot, vagy a moderátor úgy dönt, hogy ez nem szükséges. Az átvizsgálás folyamatát a szokásos programozási hibák nyelvtől függő listájára kell alapozni. Statikus technikák: A szoftver átvizsgálása A szoftver átvizsgálás eredményes folyamat Mi a probléma? Ennek ellenére sok szoftverfejlesztő cégnél nehéz bevezetni. Oka: a tesztelésben jártas szoftvertervezők vonakodva fogadják el a módszer hatékonyságát. 5 6 Statikus technikák: Automatizált statikus elemzés A statikus programelemzők: olyan szoftvereszközök, amelyek a program forrásszövegének vizsgálatával derítik fel a lehetséges hibákat és anomáliákat. Ehhez nincs szükség a program futtatására. Észlelhetik: az utasítások formailag helyesek-e, a nem használt kódrészleteket, inicializálatlan változókat, stb. Kiegészítik a nyelv fordítóprogramja által adott lehetőségeket. Statikus technikák: Automatizált statikus elemzés Néhány statikus elemzéssel felismerhető hibafajta és anomália: (az anomália nem feltétlenül programhiba, lehet következmény nélküli is): Adathibák, Vezérlési hibák, Input/output hibák, Interfészhibák. 7 8 2

Bevezetés A szoftvertesztelésnek tehát két célja van: 1. Bizonyítani a fejlesztő és a vásárló számára, hogy a szoftver megfelel a vele szemben támasztott követelményeknek. Egyedi szoftver esetén ez azt jelenti: a felhasználói és rendszerkövetelményeket leíró dokumentum minden követelményére vonatkozóan legalább egy tesztnek lennie kell. Általános szoftver esetén pedig minden egyes rendszertulajdonságra kell lenni egy tesztnek. 9 10 Bevezetés 2. Felfedezni a szoftverben azokat a hibákat és hiányosságokat, amelyekben a szoftver viselkedése helytelen, nemkívánatos, vagy nem felel meg a specifikációnak. A tesztelés folyamatának általános modellje A hiányosságtesztben felfedett hibák kiirtásával foglalkozik. 11 12 3

A tesztelés folyamatának általános modellje A teszteset: nem más, mint a teszthez szükséges inputok és a rendszertől várt outputok specifikációja. A tesztadatok kifejezetten a rendszer tesztelésére létrehozott inputok. Néha automatikusan generálhatók, az automatikus teszteset-generálás viszont lehetetlen. A tesztek outputjait csak azok tudják előre megjósolni, akik értik, hogy a rendszernek mit kellene csinálnia. A tesztelés folyamatának általános modellje Beszélhetünk kimerítő tesztelésről is. ahol az összes lehetséges program-végrehajtási szekvenciát teszteljük. A gyakorlatban nem praktikus, ezért a tesztelésnek a lehetséges tesztesetek egy részhalmazán kell alapulnia. Erre irányelveket kell kidolgozni a szervezetnek, nem pedig a fejlesztőcsoportra hagyni. 13 14 A rendszertesztelés: Rendszertesztelés két vagy több, rendszerfunkciót vagy jellemzőt megvalósító komponens integrálását és az integrált rendszer tesztelését jelenti. A rendszertesztelés iteratív fejlesztési folyamatban: a vásárló számára leszállítandó inkremens, míg vízesés jellegű folyamat során a teljes rendszer tesztelését jelenti. 15 16 4

Rendszertesztelés A legtöbb bonyolult rendszer esetében a rendszertesztelést két külön fázisra bonthatjuk: 1. Integrációs tesztelés: ahol a tesztelést végző csapat hozzáfér a rendszer forráskódjához. Leginkább a rendszer hiányosságainak megtalálásával foglalkozik. Rendszertesztelés 2. Kiadástesztelés: ahol a rendszer egy felhasználók számára kiadható verziója kerül tesztelésre. Itt a tesztcsapat azt vizsgálja, hogy a rendszer megfelel-e a követelményeknek. A kiadástesztelés általában fekete doboz tesztelés: ahol a teszt csapatnak egész egyszerűen csak azt kell bemutatnia, hogy a rendszer jól működik-e, avagy sem. Ha ebbe a kiadástesztelésbe a vásárlót is bevonják, akkor ezt elfogadási tesztelésneknevezzük. Ha a verzió elég jó, a vásárló elfogadhatja használatra. 17 18 Rendszertesztelés Az integrációs tesztelésre alapvetően úgy kell tekinteni, mint rendszerkomponensek egy csoportjából vagy fürtjéből álló befejezetlen rendszerek tesztelésére. A kiadástesztelés a rendszer azon kiadásának tesztelésével foglalkozik, amelyet le szeretnénk szállítani a vásárlóknak. 19 20 5

Integrációs tesztelés A rendszer-integráció folyamata magában foglalja: a rendszer komponenseiből történő felépítését és az eredményül kapott rendszer tesztelését a komponensek együttműködéséből adódó problémák felderítésére. Az integrációs tesztelés ellenőrzi: hogy ezek a komponensek valóban képesek-e együttműködni, megfelelően vannak-e meghívva és interfészeiken keresztül a megfelelő adatokat a megfelelő időpontban küldik-e át. Integrációs tesztelés A rendszer-integráció során: azonosítani kell a rendszer különböző funkcionalitásait biztosító komponensek csoportjait, majd további kód hozzáadásával integrálni kell őket. Sok esetben elsőként a rendszer váza készül el, és ehhez adódnak hozzá a komponensek. Ezt fentről lefelé történő integrációnak nevezzük. 21 22 Integrációs tesztelés Más esetekben: először a gyakran a közös szolgáltatásokat biztosító komponensek integrálását végezzük először Pl.: a hálózati és az adatbázis elérés. majd hozzáadjuk a funkcionális komponenseket. Ez a lentről felfelétörténő integráció. Integrációs tesztelés A rendszer integrálása és tesztelése során mindig inkrementális megközelítést kell alkalmazni. Ennek oka: Az integráció folyamata során felmerülő hibák megtalálása nehéz feladat, mert rendszerkomponensek között komplex együttműködés zajlik. A gyakorlatban sokszor ezek keverékét alkalmazzák. 23 24 6

Inkrementális integrációs tesztelés Integrációs tesztelés Az integráció megtervezése: mindig döntenünk kell a komponensek integrációjának sorrendjéről. Olyan esetekben, amikor a vásárló nincs bevonva a folyamatba: a leggyakrabban használt funkcionalitást megvalósító komponenseket célszerű elsőként integrálni, azaz azokat, amelyeket a legtöbbet teszteltük. 25 26 Regressziós tesztelés Regressziós tesztelés:egy meglévő tesztsorozat újbóli lefuttatását jelenti. Akkor van rá szükség, ha egy új komponenst integrálunk és tesztelünk. Az új komponens integrálása megváltoztathatja a korábbi, már tesztelt komponensek közötti együttműködések mintáját. Olyan hibákat is felfedezhetünk, amelyek az egyszerűbb konfiguráció tesztelésénél nem jelentkeztek. Ezért nem szabad csakis az új komponensre vonatkozó teszteket futtatni, hanem a korábbiakat is. Regressziós tesztelés Igen költséges folyamat, A gyakorlati alkalmazásához automatizált támogatásra van szükség. Pl.: JUnit tesztelés. 27 28 7

Kiadástesztek Kiadástesztelés:az a folyamat, amelynek során a rendszervásárlóknak leszállítandó kiadás (verzió) tesztelése történik. A folyamat elsődleges célja: megmutassa, a rendszer megfelel a követelményeinek funkcionalitás, teljesítmény, üzembiztonságra vonatkozóan. Egy fekete doboz folyamat, ahol a teszteket a rendszer specifikációjából származtatják. Kiadástesztek A rendszert fekete dobozként kell tekinteni: viselkedésére csak bemeneteinek és kimeneteknek a vizsgálatával lehet következtetni. Más néven ezt funkcionális tesztelésnek is nevezik. A kiadások tesztelése során: meg kell próbálni elrontani" a szoftvert oly módon, hogy kiválasszuk azokat a bemeneteket, amelyek nagy valószínűséggel rendszerhibát okoznak. 29 30 Teljesítménytesztelés (stresszteszt) Amikor teljesen integráltuk a rendszert, lehetséges annak eredendő tulajdonságainak tesztelése, mint pl. teljesítmény és a megbízhatóság tesztelése. Miért készítünk teljesítményteszteket? mert biztosítani szeretnénk, hogy a tervezett terhelés mellett a rendszer képes dolgozni. Általában olyan tesztek sorozata, ahol a terhelés addig nő, amíg a rendszer teljesítménye elfogadhatatlanná nem válik. Teljesítménytesztelés (stresszteszt) A rendszereket általában megadott terhelésre tervezik. A stresszteszt atervezett maximális terhelésen túl is folytatja a tesztet, mindaddig, amíg a rendszer hibázik. Okai: 1. Teszteli a rendszer viselkedését szélsőséges körülmények között. Ilyen körülmények között fontos, hogy a túlterhelés ne okozzon adatvesztést vagy a felhasználói szolgáltatások váratlan eltűnését. 31 32 8

Teljesítménytesztelés (stresszteszt) Teljesítménytesztelés (stresszteszt) 2. Terheli a rendszert, amellyel olyan hiányosságok is napvilágra kerülnek, amelyek normális körülmények között nem jelennek meg. Ezek a hiányosságok normál használat során nem okoznának rendszerhibát, de felléphet a normál körülmények váratlan kombinációja, amit a stressztesztelés előidéz. A stressztesztelés különösen elosztott rendszereknél lényeges. Ezek a rendszerek gyakran nagy teljesítményromlást mutatnak, amikor nagyon leterheltek. A hálózat ilyenkor telítődik a koordinációs adatokkal, amiket a folyamatok küldenek egymásnak, és mivel a többi folyamattól szükséges adatokat eközben várják. 33 34 Komponenstesztelés A komponenstesztelés (amit néha egységtesztelésnek is neveznek): a rendszer önálló komponenseinek tesztelése. Ez egy hiányosságtesztelési folyamat. mivel célja a vizsgált komponensekben lévő hibák felderítése. A legtöbb rendszerben a komponens teszteléséért annak fejlesztője felelős. A tesztelhető komponensek különbözők lehetnek. Komponensek: Komponenstesztelés 1. Önálló függvények vagy objektumok esetén módszerek. 2. Több attribútumot és módszert tartalmazó objektumosztályok. 3. Különböző objektumokból és/vagy függvényekből készült összetett komponensek, amelyek funkcionalitását interfészeken keresztül érhetjük el. 35 36 9

37 10