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

Hasonló dokumentumok
Statikus technikák: A szoftver átvizsgálása. Statikus technikák: A szoftver átvizsgálása

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

Miskolci Egyetem Általános Informatikai Tanszék

A tesztelés feladata. Verifikáció

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

Szoftverminőségbiztosítás

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

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

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ı.

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

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

Szoftverminőségbiztosítás

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

Adatstruktúrák, algoritmusok, objektumok

ESZKÖZTÁMOGATÁS A TESZTELÉSBEN

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

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

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

Szoftverspecifikáció fázis: Követelmény specifikáció. 2. fázis: Követelmények feltárása és elemzése

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

Szoftver újrafelhasználás

Ez idézte elı az olyan fejlesztési folyamatokat, amelyek a gyors szoftverfejlesztésre és átadásra összpontosítanak.

A folyamat közös fázisai. A szoftverfolyamat modelljei. A vízesésmodell fázis: követelmények elemzése és meghozása

Programfejlesztési Modellek

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)

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

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

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

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

Szoftverminőségbiztosítás

Szoftverminőségbiztosítás

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

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

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

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

Alkalmazásportfólió. Szoftvermenedzsment. menedzsment. Racionalizálás. Konszolidáció. Nyilvántartás. Elemzés

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

Szoftverminőségbiztosítás

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

8.3. AZ ASIC TESZTELÉSE

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

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

Szoftvertesztelés - Bevezető

Információtartalom vázlata

Objektumorientált tesztelés

Informatikai projektmenedzsment

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

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

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

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

Szoftverminőségbiztosítás

6. A szervezet. Az egyik legfontosabb vezetıi feladat. A szervezetek kialakítása, irányítása, mőködésük ellenırzése, hatékonyságuk növelése,

Modellek ellenőrzése és tesztelése

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

Szoftverminőségbiztosítás

MIÉRT KELL TESZTELNI?

Object Orgy PROJEKTTERV 1 (9) Adattípusok menedzselése Palatinus Endre

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

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

A mintavételezés és a becslés módszertana

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

FİBB PONTOK PIACKUTATÁS (MARKETINGKUTATÁS) Kutatási terv október 20.

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

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

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

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

extreme Programming programozástechnika

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

A prototípus gyors, iteratív fejlesztése azért nagyon fontos, mert a költségek így ellenırizhetık.

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

Beszédfelismerés alapú megoldások. AITIA International Zrt. Fegyó Tibor

Informatikai ellenırzések, az informatika szerepe az ellenırzések támogatásában

1. blokk. 30 perc. 2. blokk. 30 perc. 3. blokk. 90 perc. 4. blokk. 90 perc. Beiktatott szünetek. ( open space ): 60 perc

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

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

VÍZÓRA NYÍLVÁNTARTÓ RENDSZER

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

Szoftver karbantartási lépések ellenőrzé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.

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

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

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

Bevezetés a programozásba

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

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

01. gyakorlat - Projektalapítás

Kód átvizsgálás. Irodalom. (Code review) code review,smart Bear Inc., ! Jason Cohen: Best kept secrets of peer

Az objektumorientált megközelítés elınye: Hátránya:

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

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

SZAKDOLGOZAT Debrecen 2009

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

Matematikai alapok és valószínőségszámítás. Valószínőségszámítási alapok

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

Nagy bonyolultságú rendszerek fejlesztőeszközei

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

A Feldspar fordító, illetve Feldspar programok tesztelése

einvoicing Elektronikus számlázás Ügyfélportál Felhasználói kézikönyv Ügyfélportál V Page 1 of 12

Együttmőködési rendszerek, csoporttevékenység támogatása 2. rész

Átírás:

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 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. 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

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. A szoftver átvizsgálás eredményessége 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 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. 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

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 szem-ben 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 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 hiányosságtesztben felfedett hibák kiirtásával foglalkozik. 11 12 3

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. A tesztadatok 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. Beszélhetünk kimerítı tesztelésrıl is. ahol az összes lehetséges programvé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: 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 rendszer-tesztelé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

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. 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ésnek nevezzük. Ha a verzió elég jó, a vásárló elfogadhatja használatra. 17 18 Az integrációs tesztelésre alapvetıen úgy kell tekinteni, mint rendszer-komponensek 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

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. 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 Más esetekben: elıször a gyakran a közös szolgáltatásokat (mint a hálózati és az adatbázis elérés) biztosító komponensek integrálását végezzük elıször, majd hozzáadjuk a funkcionális komponenseket. Ez a lentrıl felfelé történı integráció. A gyakorlatban sokszor ezek keverékét alkalmazzák. 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. 23 24 6

Az integráció megtervezésekor 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: 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 intergrá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. 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

A 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. 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 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. A rendszereket általában megadott terhelésre tervezik. A stresszteszt a tervezett 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

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 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: 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