6. Tesztelés (Verification and Validation Testing)



Hasonló dokumentumok
A szoftver tesztelés alapjai

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

Dialízis gép software komponensét alkotó unitok modul tesztje követelmény és struktúra alapon

I: Az értékteremtés lehetőségei a vállalaton belüli megközelítésben és piaci szempontokból

1 Rendszer alapok. 1.1 Alapfogalmak

Bánsághi Anna Bánsághi Anna 1 of 54

Statikus technikák és Műszaki teszttervezési technikák

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

Tanúsítási jelentés. Hung-TJ

Objektumorientált tesztelés

3 Hogyan határozzuk meg az innováció szükségszerűségét egy üzleti probléma esetén

Utolsó módosítás:

Orvosi eszközök gyártmányfejlesztése Aktív orvosi eszköz szoftver verifikálása, validálása (V&V) Dolgos Márton Budapest,

Objektumorientált programozás C# nyelven


MemoLuX Kft. MINİSÉGÜGYI KÉZIKÖNYV. Jelen példány sorszáma: 0. Verzió: Lapszám: Fájlnév: 4/0 1/30 MMKv4.doc

A MEGBÍZHATÓSÁGI ELEMZŐ MÓDSZEREK

DUNAÚJVÁROSI FŐISKOLA

Mit csinálnak a PCB gyártók mielőtt gyártani kezdik az ÖN NYÁKját? Miért nem tudjuk használni az Ön gerber- és fúrófájljait ahogyan feltöltötte?

Ingatlanvagyon értékelés

Operációs rendszerek. 3. előadás Ütemezés

Széchenyi István Szakképző Iskola

Minőségbiztosítási Kézikönyv

pénzügyi ügyintéző felhasználói kézikönyv (OPÜFK)

M szaki okú kockázatok kezelése a közlekedésben

Közlekedés gépjárművek elektronikája, diagnosztikája. Mikroprocesszoros technika. Memóriák, címek, alapáramkörök. A programozás alapjai

Digitális bemenetek: 2 darab 0-5V jelszintű digitális bemenet Pl. nyitásérzékelők, risztóközpontok, mozgásérzékelők, átjelzők, stb.

Digitális kártyák vizsgálata TESTOMAT-C" mérőautomatán

Mielıtt használná termékünket Az eltérı környezeti körülmény elektromos áramütést, tüzet, hibás mőködést vagy. okozhat.

MATEMATIKA TANTERV Bevezetés Összesen: 432 óra Célok és feladatok

SZÉCHENYI ISTVÁN EGYETEM MŰSZAKI TUDOMÁNYI KAR RENDSZERELEMZÉS I.

4. sz. Füzet. A hibafa számszerű kiértékelése 2002.

INFORMATIKAI ALAPISMERETEK

MATEMATIKA A és B variáció

1002D STRUKTÚRÁJÚ, KRITIKUS ÜZEMBIZTONSÁGÚ RENDSZER (SCS 1 ) ELEMZÉSE DISZKRÉT-DISZKRÉT MARKOV MODELLEL

Módszertani útmutató városi közösségi közlekedési projektek költség-haszon elemzéséhez. Nemzeti Fejlesztési Ügynökség

CTR 31 VEZÉRLÉS. Elektronikus vezérlés egy motorra, 230 V, AC; egy fázisú, tolókapu és garázskapu mozgatására, végálláskapcsolók nélkül.

Mérés és értékelés a tanodában egy lehetséges megközelítés

Átrendezések és leszámlálások ÚTMUTATÓ Hegedüs Pál június 30.

PR402EN.doc. PR402 v1.0 Egyajtós beléptetõ rendszer FIRMWARE VERZIÓ Telepítési útmutató

FIATAL MŰSZAKIAK TUDOMÁNYOS ÜLÉSSZAKA

DC TÁPEGYSÉG AX-3003L-3 AX-3005L-3. Használati utasítás

MELLÉKLET. Csatolmány. a következőhöz: Javaslat a Tanács határozata

Leuze lumiflex. Moduláris biztonsági interfész MSI-mi/R MSI-mi/T típusok. Csatlakozási és használati utasítás. Leuze lumiflex MSI-mi 1

IBM Business Process Manager változat 8 alváltozat 5. Munkaerő-felvételi oktatóanyag

Matematikai és matematikai statisztikai alapismeretek

Történeti áttekintés

MATEMATIKA 5 8. ALAPELVEK, CÉLOK

Digitális tananyag, e-learning, különbségek, definíciók

Utolsó módosítás:

MŰSZAKI OKTATÁS SZEREPE A B KATEGÓRIÁS JÁRMŰVEZETŐ KÉPZÉSBEN FUNCTION OF TECHNICAL TRAINING IN DRIVER S EDUCATION OF CATEGORY B

HITELESÍTÉSI ELŐÍRÁS HIDEGVÍZMÉRŐK ÁLTALÁNOS ELŐÍRÁSOK

A Károli Gáspár Református Egyetem által használt kockázatelemzési modell

Aronic Főkönyv kettős könyvviteli programrendszer

2. Digitális hálózatok...60

Adatbázisok I A relációs algebra

Budapest Főváros Vagyonkezelő Központ Zrt. Bálna Budapest Kulturális és Kereskedelmi Központ üzemeltetés, karbantartás és takarítás - korrigendum

Bináris keres fák kiegyensúlyozásai. Egyed Boglárka

KIEMELT PROJEKT PÁLYÁZATI FELHÍVÁS a Társadalmi Megújulás Operatív Program

1 / :17

Mérési útmutató. A/D konverteres mérés. // Első lépésként tanulmányozzuk a digitális jelfeldolgozás előnyeit és határait.

Ismeretanyag Záróvizsgára való felkészüléshez

A hierarchikus adatbázis struktúra jellemzői

Az 5-2. ábra két folyamatos jel (A és B) azonos gyakoriságú mintavételezését mutatja ábra

2.3. A rendez pályaudvarok és rendez állomások vonat-összeállítási tervének kidolgozása A vonatközlekedési terv modellje

Gyártórendszerek Dinamikája. Irányítástechnikai alapfogalmak

rendszerszemlélető, adatközpontú funkcionális

Informatika biztonsági szabályzat

Vektorugrás védelmi funkció blokk

ÁSZF 5.1 pontja az alábbiak szerint módosul:

Általános szerződési feltételek

Kereskedelmi és Hitelbank Zártkörűen Működő Részvénytársaság

Használati útmutató. 1.1 verzió április

BÉRSZÁMFEJTÉS 1 S Z O F T V E R E N G E D É L Y E Z É S I S Z E R ZŐDÉS

HP 23tm érintőképernyős monitor. Felhasználói útmutató

Adatszerkezetek és algoritmusok Geda, Gábor

1. A Vállalkozás adatai

Az önkormányzati intézmények részére integrált szélessávú távközlési szolgáltatás biztosítása

Hardware minőségellenőrzése az elektronikai gyártási folyamat során Ondrésik Tamás, O0QUL3

eseményvezérelt megoldások Vizuális programozás 5. előadás

INFORMÁCIÓTECHNOLÓGIA ÉS FOGLALKOZTATÁSI INNOVÁCIÓK MTA VILÁGGAZDASÁGI K UTATÓINTÉZET NKTH MECENATÚRA PÁLYÁZAT SZANYI MIKLÓS

Általános szerződési feltételek

Nemzeti Adó- és Vámhivatal EMCS projekt. Tájékoztató az EMCS rendszer mőködésérıl v2.2

ATLÉTIKAI SZABÁLYKÖNYV 2016

MRR Útmutató a Kockázat értékeléshez és az ellenőrzési tevékenységekhez

COMENIUS ANGOL-MAGYAR KÉT TANÍTÁSI NYELVŰ ÁLTALÁNOS ISKOLA MATEMATIKA TANMENET

Békéscsaba és Térsége Többcélú Önkormányzati Kistérségi Társulás ÖNKÖLTSÉGSZÁMÍTÁSI SZABÁLYZAT

Ellátási-láncok modellezése szimulációval

A SZERENCSEJÁTÉK ZRT. ÁLTAL A SZERENCSEJÁTÉKOK ÉS SPORTFOGADÁSOK INTERNETEN TÖRTÉNİ SZERVEZÉSÉRE ALKALMAS INFORMATIKAI RENDSZER SZÁLLÍTÁSÁRA KIÍRT

MATEMATIKA. Tildy Zoltán Általános Iskola és Alapfokú Művészeti Iskola Helyi tanterv 1-4. évfolyam 2013.

VLT Micro Drive. Kis frekvenciaváltó maximális terherbírás és megbízhatóság

M ANYAG FRÖCCSÖNT SZERSZÁMOK KÖLTSÉGÉT BEFOLYÁSOLÓ TÉNYEZ K

Az Alzheimer-kórra és más demenciákra irányuló európai kezdeményezés

8.1 Az UPS bekapcsolása A bekapcsolás sorrendje Akkumulátorról indítás... 18

LÁNG CSABÁNÉ SZÁMELMÉLET. Példák és feladatok. ELTE IK Budapest javított kiadás

ÚTMUTATÓ A SZAKDOLGOZAT ELKÉSZÍTÉSÉHEZ A TERMÉSZETTUDOMÁNYI FŐISKOLAI KARON

PÁLYÁZATI ÚTMUTATÓ a Társadalmi Megújulás Operatív Program

EKOP /A

Kulcsszavak: különleges bánásmód, játék Diszciplinák: pszichológia, pedagógia, gyógypedagógia

Békéscsaba és Térsége Többcélú Önkormányzati Kistérségi Társulás ESZKÖZÖK ÉS FORRÁSOK ÉRTÉKELÉSI SZABÁLYZATA

Átírás:

6. Tesztelés (Verification and Validation Testing) Definitions: "A tesztelés csak a hibák létét bizonyítja, de azok hiányát nem!" Error: people makes error. Synonym: mistake. When people makes mistakes while coding, we call this mistakes bugs. (tévedés, tévesztés) Fault: this is the result of an error. Synonym: defect (bugs also good) Fault is a representation of an error. (hiba) Failure: a failure occurs when a fault executes. (meghibásodás) Incident: when a failure occurs, it may or may not be reading apparent to the user. Test: testing is obviously concerned with errors, fault, failures and incidents. A test is the act of exercising with test cases. 2 goals: - to find failures - to demonstrate correct execution Test case: A test case has an identity, and is associated with a program behaviour. A test case also has set of inputs preconditions actual input list of expected outputs postconditions actual output Requirements Spec. error fault Design error fault error Coding Fault Classification Fault isolation Fix Fault resolution (megfejtés) fault Testing incident Testing life-cycle

Validation: 'Are we building the right product' as defined by IEEE/ANSI, is the process of evaluating a system or component during or at the end of the development process to determine whether it satisfies specified requirements. azaz: 'A megfelelő terméket készítettük-e el?', tehát a fejlesztési ciklus végén elkészült sw a rendelő elvárásainak megfelel-e. Verification: 'Are we building the product right?' as defined by IEEE/ANSI, is the process of evaluating a system or component to determine wheter the products of a given development phase satisfy the conditions imposed at the start of that phase. azaz 'Megfelelően készítettük-e el a terméket?', tehát az elkészített program helyesen működik-e.. Ez mutatja, hogy a program megfelel-e a specifikációnak. Testing = verification plus validation A tesztelésnek kettős funkciója van: - a programbeli hibák jelenlétét mutatja ki - segít eldönteni, hogy a program a gyakorlatban használható-e vagy, nem Követelény Specifikáció Előzetes terv Integrációs teszt Elfogadási teszt Részletes terv Komponens teszt (unitmodul) Kódolás Az absztrakció és a tesztelés szintjei Hibák súlyosság szerint osztályozva 1. Mild (enyhe) Félrebetűzött szó 2. Moderate (mérsékelt) Félrevezető, vagy redundáns információ 3. Annoying (bosszantó) Megcsonkított nevek, 0.00$-os számla 4. Disturbing (zavaró) Néhány tranzakció nem lett feldolgozva 5. Serious (komoly) Elveszt egy tranzakciót 6. Very serious (nagyon komoly) Helytelen tranzakció végrehajtás 7. Extreme Nagyon komoly hibák gyakori előfordulása 8. Intolerable (nem tolerálható) Adatbázis elromlás 9. Catastrophic Rendszerleállás 10. Infectious Rendszerleállás, amely továbbterjed más rendszerekre A tesztelés szintjei: Bemeneti/kimeneti hibák: helyes bemenet nincs elfogadva

helytelen bemenet elfogadva leírás rossz, vagy hiányzik paraméterek rosszak, vagy hiányoznak rossz kimeneti formátum rossz kimenet az eredmény helyes eredmény rossz idő alatt nem teljes, vagy hiányzó eredmény betűzés/nyelvtan Logikai hiba: Számítási hiba: Interfész hiba: Adathiba hiányzó eset(ek) duplikált eset(ek) extrém feltételek elhanyagolása hiányzó feltételek rossz változók tesztelése rossz operátor helytelen algoritmus hiányzó műveletek, számítások helytelen operandus helytelen művelet rossz beépített függvény I/O időzítés helytelen megszakítás-kezelés rossz eljárás hívása paraméter egyeztetés hibája(típus, szám) inkompatibilis típusok helytelen inicializáció helytelen tárolás/hozzáférés rossz flag/ index érték rossz változóhasználat helytelen adatdimenzió helytelen típus inkonzisztens adat A tesztelési folyamat részei: Komponens teszt: - egységteszt (unit test): az egységek, komponensek tesztelése, hogy megbizonyosodjunk a működésének helyességéről. Cél, hogy feltárja nincsenek-e tévműködések, feltáratlan hibák a belső algoritmusban, adatkezelésben. A komponensek más rendszer komponensektől függetlenül vannak tesztelve. /az implementáló feladata, felelőssége/ - modulteszt (modul test): egy modul (egymástól függő komponensek együttese), egy szinttel magasabb egység tesztelése. /ez még mindig az implementáló feladata, de ez már megjelenik a dokumentációban is/

Integrációs teszt: - alrendszer teszt (subsystem test): egy alrendszer, azaz az alrendszerbe integrált modulok együttesének tesztelése. Az alrendszerben lévő modulok közti interface-hibák detektálása a fő cél. Az első alkalom, ahol már funkcionális kérdések is előkerülhetnek, ugyanis egy alrendszerhez, már funkció köthető. Itt már eldönthető, hogy a felhasználó által felmerülő kéréseket csinálja-e avagy nem. - rendszer teszt (system test): az egyes alrendszerek közti kommunikációt, azaz a programstruktúrában egymáshoz kapcsolódó elemek együttműködését valamint az alrendszer rendszerbe való integrálását, kapcsolódását vizsgálja, hogy az megfelelő-e. Az együttműködési hibáknak sok oka lehet, pl információk, adatok elveszhetnek, vezérlőjelek elveszhetnek. Az integrációs tesztet két különböző irányból célszerű elvégezni: top-down: a funkcióhiearchia legmagasabb szintjéből (root vagy main program) indul ki, majd végigmegy az összes lehetséges útvonalon, leellenőrizve annak működését. Ebben a megközelítésben a: o a vezérlő modul, mintegy test-driver működik, és ellenőrzi az összes alárendelt modul működését o az egyes almodulok ellenőrzése a már ellenőrzött helyettesítésével történik o a tesztelés folyamata a már beintegrált modulok alapján folyik o a tesztelés akkor fejeződik be pozitív eredménnyel, ha az összes útvonal minden modulja helyesen viselkedett bottom-up: a modul- együttműködési vizsgálatot alulról-felfelé, az elemi modulokból kiindulva végzi. A működési helyesség ellenőrzését az alábbi lépések szerint célszerű elvégezni: o az egymáshoz tartozó legalsó szintű modulokat önálló alfeladat végzésére képes egységekbe clusterekbe kell integrálni o ellenőrizni kell az egyes modulok input/output információit, ehhez célszerű tesztprogramot alkalmazni o el kell végezni a clusterenkénti tesztet o el kell távolítani a tesztprogramot és egy szinttel feljebb az ellenőrzést meg kell ismételni egészen a legmagasabb vezérlési szintig. Elfogadási teszt (acceptance test): A rendszer használatba helyezése előtti utolsó tesztelési lépcsőfok. A rendszert már a szimulációs tesztadatok helyett inkább valós adatokkal tesztelik. Ez a teszt feltárja a rendszer követelmény dokumentációjában lévő hibákat, valamint hiányosságokat, mert a valós adatokkal végzett gyakorlat mindig különbözik a tesztadatokkal végzett gyakorlattól. Ezen lépésben dokumentálják, a szerződésben foglaltaknak megfelel-e a program. Ennek viszonylag könnyen kiértékelhetőnek kell lennie. Ezt a tesztelést nevezik még α-tesztelésnek is. Tesztelési stratégiák: - β testing: az egész rendszer készen van, működik, és kiadják a potenciális felhasználóknak tesztelésre, akik a hibákat visszajelzik a fejlesztőknek.

- Stress testing: a rendszer hibás viselkedését teszteli. Azt nézi, hogy mi történik olyan körülmények közt amikor az események egy nemvárt kombinációja áll elő. Fontos, hogy ilyen körülmények között se legyen adatvesztés, adathibásodás. - Regression testing: a rendszert a módosítások után újrateszteljük, és leellenőrizzük, hogy a változtatások után is kielégítően működik a rendszerünk. Tesztelési technikák: - dinamikus (időtől függő, az utasítások speciális sorozatának a futtatása szükségeltetik) - statikus (időfüggetlen, és nem szükséges hozzá a tesztelendő program futtatása) Statikus verifikálási technika - a hibák futtatás előtti detektálása - csak a program és a specifikációja közti kapcsolatot tudja ellenőrizni - nem tudja demonstrálni, hogy a program működésileg helyes-e vagy nem - a program kód vizsgálatán, és analízisén alapul - hatékony a programhibák feltárásában (hibák 60 %a kiszűrhető) - a formális specifikáció matematikai verifikációval a hibák 90%-át detektálhatja - óránként 100 soros kódot lehet olvasni - költség és időhatékony Statikus verifikálási technikák: - Program átnézés, vizsgálat (Program inspections) - Matematikai alapú verifikáció (Matematically-based verification) - Statikus program analizátor (Static program analysers) - Cleanroom software development ("Tisztaszoba technika") Inspection (Vizsgálat) Az inspection egy formális, a leggyakrabban alkalmazott vizsgálati módszer, amelyet a szoftverfejlesztés minden fázisában lehet használni. Egy kis (legalább négy főből álló) csoport átnézi a követelmény-specifikációt, a részletes tervezési definíciókat, adatstruktúra terveket, tesztterveket, és a felhasználói dokumentációt. Ez egy rövid de nagyon hatékony vizsgálatot jelent, mert a terméknek csak egy kis része lehet az átvizsgálandó komponens. Cél: a hibák, eltérések (defect) felderítése. Lehet ez pl logikai hiba, vagy anomália. Ennek a módszernek nincsen tanítható struktúrája, formája, de vannak bizonyos feltételek, amelyeknek megfelelően kell végezni ezt az eljárást: - a csoportnak a szervezeti szabványokat, szabályzatokat ismernie kell - a csoportvezető követelmény, valamint a kód vizsgálat esetében a tervező, a terv esetében az implementáló, - a vizsgálatot végző ember számára egy listát kell mellékelni a lehetségesen (esetlegesen) előforduló hibákról

- a vizsgálat eredményét projektmenedzsment szempontjából úgy kell tekinteni, mint a verifikációs eljárás egy lépését, és nem mint egy személyes sikert - a programvizsgálathoz a programkód pontos definíciója szükséges - programvizsgálat esetén csak teljesen kész, és szintaktikailag helyes kódot szabad vizsgálni (majdnem készet még nem szabad) A vizsgálat után a csoportvezető összegzi a hibákat, problémákat, és minden résztvevőnek ad egy listát erről. A hiba kijavítása nem az ő feladata, így nem kell megoldási javaslatot sem tennie. A program mihelyt a tesztelő kezébe került, onnan már az ő felelőssége minden hiba ami a programban van, és ha találnak benne még hibát, akkor őt fogják felelősségre vonni, és nem a programírót. Matematically-based verification A formális program verifikáció matematikai módon bizonyítja, hogy a program konzisztens-e a specifikációban foglaltakkal. A matematika-alapú formális specifikációnak két előfeltételt kell betartania: - A programnyelv szemantikájának formálisan definiáltnak kell lennie. - A programot formálisan olyan jelölésrendszerben kell megadni, ami konzisztens a használt matematikai verifikációs technikával Mindamellett, hogy néhány munka formális nyelven van definiálva, a legtöbb nyelv szemantikája nincs formálisan definiálva. Ez azt jelenti, hogy legtöbb program esetében nem lehetséges a szigorú matematikai értelemben vett bizonyítás. Azonban, a kevesebb matematikai alapú formális logikai bizonyítások használhatók arra, hogy növeljék a bizonyosságot a programnak a specifikációjához való alkalmazkodására. Ezek a bizonyítékok két dolgot demonstrálnak: - A program kód logikailag konzisztens a program specifikációjával - A program mindig befejeződik. Statikus analizátorok (Static analysis tool) A statikus program analizátorok olyan szoftvereszközök, amelyek a program forráskódját vizsgálják, és a lehetséges hibákat és anomáliákat detektálják, mint például a nemhasznált kódrészletek, vagy a neminicializált változók. A program vizsgálat előtt használhatók a statikus analizátorok a kódban rejlő potenciális hibák felfedezésére. Ezek nagyon hasznosak pl a C nyelvnél, mert a C fordító ellenőrzési funkciója igencsak korlátolt. A programozói hibák automatikus detektálásához ezek az eszközök nagyon hasznosak A statikus analizátorok segítségével detektálható hibaosztályok: Adathiba (Data faults): o változók inicializálás előtti használata o deklarált de sosem használt változó o nemdeklarált változó Kontrollhiba: o nemelérhető a kód Input/output hiba

Interface-hiba o paraméter-típus hiányzik o paraméter száma hiányzik o nem meghívott függvények illetve eljárások Tárolókezelési hiba o pointer aritmetika Tisztaszoba technika (Cleanroom software development) A tisztaszoba szoftverfejlesztés a statikus verifikálási technikákon alapuló szoftverfejlesztési filozófia. Ezen technika célja egy hibamentes szoftver előállítása. Ez a megközelítés azon alapul, hogy a hibákat inkább elkerülni kell, mint detektálni, és kijavítani. Ez egy szoftvertesztelést megelőző pontos, formalizált a hibák felfedézére irányuló vizsgálati eljáráson alapul. A tisztaszoba fejlesztési technika jellegzetességei: Formális specifikáció Inkrementális fejlesztés: program növekmények külön, egymástól elszeparáltan vannak fejlesztve tisztaszoba technikával Strukturális programozás: a programfejlesztési eljárás a specifikáció lépésről lépésre történő finomítása Statikus verifikálás: matematikai alapú verifikálás Statisztikai tesztelés: a beépített programnövekményeket statisztikusan teszteljük Nagy rendszerek fejlesztésében 3 csapat vesz részt: Specifikációs csapat (Specification team): a rsz-specifikáció fejlesztéséért és nyomonkövetéséért ő a felelős. Ez a csapat készíti a felhasználó-központú specifikációt, valamint a verifikációhoz szükséges matematika specifikációt. Fejlesztő csapat (Development team): a szoftver fejlesztéséért és specifikálásáért ők a felelősek. A fejlesztési eljárás során a szoftvert nem futtatják, és nem is fordítják Igazoló csapat (Certification team): a statisztikus teszthez szükséges tesztesetek fejlesztéséért és ezek után a szoftver futtatásáért ők a felelősek. Ezek a tesztek formális specifikáción alapulnak. A teszteseteket a szoftver megbízhatóságának az igazolására használják. Ők döntenek arról, hogy mikor lehet a tesztelést befejezni. A nagy megbízhatóságú rendszerek fejlesztésekor ezt a technikát használják.

6.2. Dinamikus tesztelés (Dynamic Testing) Program behaviours S P Specification (várható) Program (megfigyelt) Fault of omission (kihagyás) (specifikálva volt csak nem lett leprogramozva) - Fault of omission (megrendelői hiba) - a specifikáció után fellépő hibák teljesek voltak (programozási hiba) Specifikáció (várható) 5 S 4 7 2 1 T P 3 6 Program (megfigyelt) 5-2: specifikált viselkedés, amire nincs test-case fi a tesztelés nem teljes 6-3-7: test-case-ek megegyeznek a nem specifikált viselkedéssel: - nem garantált a test-case - hibás a specifikáció 2 alapvető megközelítése van a test-case -ek meghatározásának. Ezek funkcionális tesztelés és strukturális tesztelés néven ismertek. Mindkét megközelítésnek van számos különböző test-case meghatározó eljárása, amelyeket sokkal inkább tesztelési eljárásoknak nevezünk. Specifikáció Program Specifikáció Program Test-case-ek Funkcionális tesztelés Test-case-ek Strukturális tesztelés Strukturális tesztelés (white-box testing): A tesztelő a program belső struktúráját vizsgálja, azaz hogy miként is működik a program. Ismert: - Az implementáció és ezt a test-case-ek meghatározására használják.

Előny: - A programozói hibák könnyen felismerhetők, mert az implementáció ismert. Hátrány: - A hiányos vagy hibás szoftverspecifikációt nem tudja felismerni. A szoftverspecifikációban definiált, de nem implementált függvények hiányát nem képes detektálni. Funkcionális tesztelés: (black-box testing) Azon a szemléleten alapszik, hogy minden program egy-egy függvénynek tekinthető, amely a bemenő értelmezési tartományának értékeit a kimenő értékkészletének értékeire képezi le. Középpontban a program vagy a rendszer funkcionalitása van, és nem ismert, hogy a program az adott feladatot, hogyan is végzi el, tehát hogy a program vagy a rendszer hogyan is működik. Ismert: bemenetek a várt kimenetek - az egyetlen információ, melyet felhasználunk az a szoftver specifikációja. Nem ismert: - a fekete doboz tartalma (implementáció, hogyan is kódoltuk a programot). Előnyök: Független, hogy a szoftvert hogyan implementálták. (tehát az implementáció váltohat) A test-case fejlesztés párhuzamosan következhet be az implementációval, ezáltal csökkentve a teljes projekt tervezési intervallumot. Hátrányok: Nem teszteli a rejtett függvényeket, azaz azokat amelyek implementálva lettek, de a funkcionális specifikációban nem szerepelnek, ezáltal az ebből adódó hibákat sem detektálja. Funkcionális tesztelés típusai: határérték vizsgálat ekvivalencia-osztály vizsgálat döntési tábla alapú vizsgálat Határérték vizsgálat Határérték analízis (Boundary value analysis): Ha az F függvény egy programként lett megvalósítva, akkor a bemenő x 1 ;x 2 változóknak lesznek korlátai: a x 1 b ; c x 2 d

X 2 d c X 1min X 1min+ X 1max- X 1max a X 1nom b X 1 x 1min ; x 1min+ ; x 1nom ; x 1max- ; x 1max Pl.: 2 változó esetén ezek a test-case-ek: <x 1min ;x 2nom >;<x 1min+ ;x 2nom >;<x 1max- ;x 2nom >;<x 1max ;x 2nom >;<x 1nom ;x 2min >; <x 1nom ;x 2min+ >;<x 1nom ;x 2nom >;<x 1nom ;x 2max- >;<x 1nom ;x 2max > Test case-ek száma (bemenetek száma = d) N d = 4d + 1, ahol d-1 n d (tehát a nominális változó értékének legalább d-1 változónál kell szerepelnie) Robusztus tesztelés : N d = 6d + 1 min-; min; min+; nom; max-; max; max+ X 2 d c a b X 1 Legrosszabb eset vizsgálat (Worst case): Robosztusság legrosszabb eset vizsgálat N d = 5 d N d = 7 d X 2 d c X 1min X 1min+ X 1max X 1max a X 1nom b X 1

Ekvivalencia osztály tesztelés szeretnénk, ha közelítenék teljes vizsgálathoz egyazon időben azt remélnénk, hogy elkerüljük a redundanciát. Ekvivalencia osztályok: egy halmaz egy partícióját képezik ahol ez a partíció a részhalmazok egy kölcsönösen diszjunkt összességére hivatkozik, melyek uniója egy teljes halmazt alkot. teljes halmaz a teljességet biztosítja diszjunkt-ság biztosítja a redundanciamentességet Az ekvivalencia osztály tesztelés ötlete, hogy test-case-eket úgy határozzuk meg, hogy minden egyes ekvivalencia osztályból egy elemet használunk fel. Az ekvivalencia osztály tesztelés kulcsa az ekvivalencia relációk meghatározása Tegyük fel, hogy programunk egy 3 változós (a, b, c) függvény, és az értelmezési tartománya az A, B és C halmazokból áll. Most tegyük fel, hogy választunk egy megfelelő ekvivalencia relációt, amely a következő partíciókat foglalja magába. A = A1 A2 A3 a 1 A1 B = B1 B2 B3 B4 a partíciók elemeit így jelöljük: b 3 B3 C = C1 C2 c 2 C2 Gyenge ekvivalencia osztály tesztelés: egy test-case-ben egy változót használ minden egyes ekvivalencia osztályból Test-case a b c WE1 a1 b1 c1 WE2 a2 b2 c2 WE3 a3 b3 c1 WE4 a1 b4 c2 Ez a test-case halmaz egy értéket használ minden egyes ekvivalencia osztályból. Mindig ugyanannyi gyenge ekvivalencia osztály test-case-ünk lesz, mint a legtöbb részhalmazzal rendelkező partícióbeli osztályok száma. Erős ekvivalencia osztály tesztelés: A partícióbeli részhalmazok keresztszorzatán alapul. Az A B C keresztszorzatnak 3 4 2=24 eleme lesz (24 db. test-case) Test case a b c SE1 a1 b1 c1 a1 b1 c2 a1 b2 c1 a1 b2 c2 a1 b3 c1 : : : A keresztszorzat biztosítja a teljességet:

lefedjük az összes ekvivalencia osztályt a bemenetek összes kombinációja rendelkezésünkre áll Pl.: Háromszög problémák 4 lehetséges kimenet: nem háromszög, egyenlőszárú, szabályos, általános. Ezeket alkalmazhatjuk a kimeneti ekvivalencia osztályok azonosítására: R1 = {<a,b,c>: a 3szög a,b,c oldallal szabályos} R2 = {<a,b,c>: a 3szög a,b,c oldallal egyenlőszárú} R3 = {<a,b,c>: a 3szög a,b,c oldallal általános} R4 = {<a,b,c>: a 3 oldal: a,b,c nem ad 3szöget} Ezek az osztályok a test-case-ek egy egyszerű halmazát szolgáltatják: weak (gyenge): Test case a b c Várt kimenet OE1 5 5 5 szabályos OE2 2 2 3 egyenlőszárú OE3 3 4 5 általános OE4 4 1 2 nem strong (erős): (pluszban jön a gyengéhez) Test case a b c Várt kimenet OE1 2 3 2 egyenlőszárú OE2 3 2 2 egyenlőszárú OE3 4 2 1 nem OE4 4 1 2 nem OE5 1 4 2 nem OE6 1 2 4 nem OE7 2 1 4 nem OE8 2 4 1 nem Ez esetben jobban megéri az outputokra meghatározni az ekvivalens osztályokat, mert az inputokra sokkal több lenne. Döntési tábla alapú tesztelés: A döntési táblák az összetett logikai relációk reprezentálására és analizálására szolgálnak. Ha bináris feltételeink vannak, akkor a döntési tábla feltételrésze egy igazságtábla. Ez a struktúra garantálja, hogy a feltételértékek összes lehetséges kombinációját megvizsgáljuk. Ha döntési táblákat használunk a test-case-ek meghatározására, akkor a döntési tábla teljességi tulajdonsága biztosítja a tesztelés teljességét. Állapotok input ; akciók output

feltételek szabályok c1: a,b,c egy háromszög N Y c2: a=b? Y N c3: a=c? Y N Y N c4: b=c? Y N Y N Y N Y N akciók szabályok a1 nem háromszög X a2 általános a3 egyenlőszárú X X X a4 szabályos X a5 lehetetlen X X X c1-c4: feltételek (conditions) a1-a5: akciók X feltételek szabályok c1 a < b + c F T T T T T T T T T T c2 b < a + c - F T T T T T T T T T c3 c < a + b - - F T T T T T T T T c4 a=b - - - T T T F F F T F c5 a=c - - - T T F T F T F F c6 b=c - - - T F T T T F F F a1 nem 3szög X X X a2 általános X a3 egyenlőszárú X X X a4 szabályos X a5 lehetetlen X X X Test-case-ek Test case a b c Várt kimenet DT1 4 1 2 nem háromszög DT2 1 4 2 nem háromszög DT3 1 2 4 nem háromszög DT4 5 5 5 szabályos DT5??? lehetetlen DT6??? lehetetlen DT7??? lehetetlen DT8 3 2 2 egyenlőszárú DT9 2 3 2 egyenlőszárú DT10 2 2 3 egyenlőszárú DT11 3 4 5 általános