Nyíregyházi Főiskola 1 Szoftvertesztelés Előadó: Dr. Nagy Mihály Előadó: Dr. Nagy Mihály WEB: WEB:

Slides:



Advertisements
Hasonló előadás
T ESZTELÉS. C ÉLJA Minél több hibát találjunk meg! Ahhoz, hogy az összes hibát fölfedezzük, kézenfekvőnek tűnik a programot az összes lehetséges bemenő.
Advertisements

Keresés a számítógépes katalógusokban
H IBAKERESÉS, HIBAJAVÍTÁS. H IBAJELENSÉGEK Szintaktikai hiba:  Csak értelmezés esetén fordul elő, hiszen a fordítóprogramok korábban, még a fordítási.
A MINŐSÉG MEGTERVEZÉSE
Definíciók: Algoritmus: bármely véges sok lépéssel leírható tevékenység. Olyan pontos előírás, amely megmondja, hogy egy adott típushoz tartozó feladat.
Valós idejű tesztlefedettség- monitorozás JEE környezetben Dr. Ferenc Rudolf, Szegedi Tudományegyetem Bakota Tibor, FrontEndART Szoftver Kft.
Hatékonyságvizsgálat, dokumentálás
Szoftvertesztelés május 7..
A szoftver minősége A szoftverfejlesztési folyamat azt igényli, hogy a fejlesztők és felhasználók ugyanazokat a minőségi jellemzőket használják a szoftver.
Rendszerfejlesztés gyakorlat - © Fülöp Lajos
MINŐSÉGMENEDZSMENT 5. előadás PTE PMMK MÉRNÖKI MENEDZSMENT TANSZÉK 2011.
Jt Java Feltételek, logikai kifejezések. jt 2 Logikai operátorok Logikai kifejezésekre alkalmazhatók a következő műveletek: 1. nem! 2. és&ill.&& 3. kizáró.
Programozási alapismeretek 9. előadás
3. A programozás eszközei, programozás-technikai alapismeretek
A webes tesztelés jövője
A többszörös összehasonlítás gondolatmenete. Több mint két statisztikai döntés egy vizsgálatban? Mi történik az elsõ fajú hibával, ha két teljesen független.
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke A programozás alapjai 1. (VIEEA100) 9. előadás.
Junit testing.
Programozási alapismeretek 9. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás2/
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Minőségmenedzsment 1. előadás
Minőségmenedzsment 2. előadás
Borland C/C++ mintapéldák
Nincs tökéletes program, csak még nem találtuk meg a hibát!
Szoftver bonyolultsági mértékek alkalmazási területei Király Roland 2011.
Dr. Szalka Éva, Ph.D.1 Statisztika II. VII.. Dr. Szalka Éva, Ph.D.2 Mintavétel Mintavétel célja: következtetést levonni a –sokaságra vonatkozóan Mintavétel.
Ellenőrző kérdések a)Auto-indexing enabled b)Auto-indexing disabled c)Nem eldönthető 1.
Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 1 Fordítóprogramok 1 Programozó matematikus szak 2003/2004-es tanév II. félév.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Funkciópont elemzés: elmélet és gyakorlat
Szoftver mértékek Szoftver mérték: –A fejlesztési folyamat mérése –Végtermék mérése (termék mérték) Termék mérték: –Külső mértékek: Megbízhatósági mértékek.
Megvalósíthatóság és költségelemzés Készítette: Horváth László Kádár Zsolt.
Vizuális és web programozás II.
ISZAM III.évf. részére Bunkóczi László
Regresszióanalízis 10. gyakorlat.
Szoftvertechnológia Ember-gép rendszerek. Mit értünk rendszer alatt? Kapcsolódó komponensek halmaza – egy közös cél érdekében működnek együtt A rendszer.
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
S S A D M ELEMZÉSI ÉS TERVEZÉSI MÓDSZERTAN
R EQUIREMENTS D EVELOPMENT Készítette: Devecseri Viktor.
Programtesztelés. Hibák keletkezésének okai nem egyértelmű vagy hiányos kommunikáció fejlesztés közben maga a szoftver bonyolultsága programozói (kódolási)
Az elemzés és tervezés módszertana
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
3.2. A program készítés folyamata Adatelemzés, adatszerkezetek felépítése Típus, változó, konstans fogalma, szerepe, deklarációja.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
VÉGES AUTOMATA ALAPÚ TERVEZÉSI MODELL
Hibaterjedés-analízis
Objektum orientált programozás
Egyágú elágazás Szintaxis: if (feltétel)
Programozás, programtervezés
CMMI 1.3 – Verifikáció Készítette: Kis Gergely. Bevezetés A specifikációt, követelményt vetjük össze a kész/készülő termékkel Itt nem vizsgáljuk, hogy.
Algoritmizálás, adatmodellezés tanítása 6. előadás.
Continuous delivery: cél a működő szoftver
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
Szoftvermenedzsment A szoftver fogalma programmodulok rendszerdokumentáció konfigurációs adatok, és ezeket tároló fájlok felhasználói dokumentáció a szoftver.
Maven és Ant Build eszközök bemutatása
Nevezetes algoritmusok
Irányítás Menedzsment funkciók.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Bevezetés a programozásba Algoritmikus gondolkodás
MINŐSÉG BS 4778 "Egy termék vagy szolgáltatás jellemzőinek és sajátosságainak összessége, amelyek együttesen egy adott szükséglet kielégítésére képesek".
6 szigma.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Kódduplikációk a forráskódban
Web programozás és haladó fejlesztési technikák – C#
Szoftvertesztelés Az a folyamat, mely vizsgálja, meghatározza a fejlesztett számítógépes szoftver helyességét teljességét biztonságát minőségét A programnak.
Informatikai gyakorlatok 11. évfolyam
Algoritmus készítés.
Előadás másolata:

Nyíregyházi Főiskola 1 Szoftvertesztelés Előadó: Dr. Nagy Mihály Előadó: Dr. Nagy Mihály WEB: WEB: Dr. Kuki Ákos anyagának felhasználásával Dr. Kuki Ákos anyagának felhasználásával

Nyíregyházi Főiskola 2 Szoftvertesztelés Az a folyamat, mely vizsgálja, meghatározza a fejlesztett számítógépes szoftver Az a folyamat, mely vizsgálja, meghatározza a fejlesztett számítógépes szoftver helyességét helyességét teljességét teljességét biztonságát biztonságát minőségét minőségét A programnak a hibák felderítése céljából történő futtatását jelenti (dinamikus vizsgálat). A programnak a hibák felderítése céljából történő futtatását jelenti (dinamikus vizsgálat). Nem tudja teljes mértékben megállapítani a program helyességét. Nem tudja teljes mértékben megállapítani a program helyességét. "A tesztelés csak a hibák létét bizonyítja, de azok hiányát nem!"

Nyíregyházi Főiskola 3 A minőség kritériumai lehetnek: A minőség kritériumai lehetnek: megbízhatóság, hibatűrés megbízhatóság, hibatűrés hatékonyság hatékonyság hordozhatóság hordozhatóság karbantarthatóság karbantarthatóság felhasználóbarátság felhasználóbarátság

Nyíregyházi Főiskola 4 Megbízhatóság, robosztusság Annak a valószínűségével mérhető, hogy a program nem nyújt hibás szolgáltatást Annak a valószínűségével mérhető, hogy a program nem nyújt hibás szolgáltatást A megbízhatóság mértékét meghatározhatjuk a programban lévő rejtett hibák számának becslésével A megbízhatóság mértékét meghatározhatjuk a programban lévő rejtett hibák számának becslésével Erre egy lehetséges módszer a következő: Két azonos felkészültségű csapat keresi a rejtett hibákat. A programban n hiba van, ebből az egyik csapat n 1 -et, a másik pedig n 2 -őt talál meg. A közös hibák száma n 12. Erre egy lehetséges módszer a következő: Két azonos felkészültségű csapat keresi a rejtett hibákat. A programban n hiba van, ebből az egyik csapat n 1 -et, a másik pedig n 2 -őt talál meg. A közös hibák száma n 12. n n 12 n2n2n2n2 n1n1n1n1 Ha a két csapat azonos hatékonysággal dolgozik, akkor: n 12 /n 1 =n 2 /n és n 12 /n 2 =n 1 /n A megbízhatóság mértéke: 1/n= n 12 /(n 1 n 2 )

Nyíregyházi Főiskola 5 Fogalmak Error: people makes error. Synonym: ”mistake”. When people makes mistakes while coding, we call this mistakes ”bugs”. (tévedés, tévesztés) 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) 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) Failure: a failure occurs when a fault executes. (meghibásodás) Incident: When undesirable or unexpected behavior occurs, we report it as an incident, rather than as a failure, until we can determine its true relationship to required behavior. (incidens) Incident: When undesirable or unexpected behavior occurs, we report it as an incident, rather than as a failure, until we can determine its true relationship to required behavior. (incidens)

Nyíregyházi Főiskola 6 Test: testing is obviously concerned with errors, fault, failures and incidents. A test is the act of exercising with test cases. 2 goals: 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 find failures to demonstrate correct execution to demonstrate correct execution Test case: A test case has an identity, and is associated with a program behaviour. A test case also has Test case: A test case has an identity, and is associated with a program behaviour. A test case also has set of inputs set of inputs preconditions preconditions actual input actual input list of expected outputs list of expected outputs postconditions postconditions actual output actual output

Nyíregyházi Főiskola 7 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 szoftver a rendelő elvárásainak megfelel-e. 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 szoftver 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. 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 Testing = verification plus validation

Nyíregyházi Főiskola 8 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

Nyíregyházi Főiskola 9 Az absztrakció és a tesztelés szintjei

Nyíregyházi Főiskola 10 Tesztesetnek a be- és kimeneti adatok és feltételek együttes megadását nevezzük. Tesztesetnek a be- és kimeneti adatok és feltételek együttes megadását nevezzük. A jó teszteset az, ami nagy valószínűséggel egy még felderítetlen hibát mutat ki a programban. Pl. két szám legnagyobb közös osztóját számoló programot az [5,5] adatpár után a [6,6]-tal teljesen felesleges kipróbálni. A jó teszteset az, ami nagy valószínűséggel egy még felderítetlen hibát mutat ki a programban. Pl. két szám legnagyobb közös osztóját számoló programot az [5,5] adatpár után a [6,6]-tal teljesen felesleges kipróbálni. A meg nem ismételhető tesztesetek kerülendők. A meg nem ismételhető tesztesetek kerülendők. Teszteseteket mind az érvénytelen, mind az érvényes adatokra kell készíteni. Teszteseteket mind az érvénytelen, mind az érvényes adatokra kell készíteni. Minden tesztesetből a lehető legtöbb információt „ki kell bányászni”, azaz minden teszteset eredményét alaposan végig kell vizsgálni. Ezzel jelentősen csökkenthető a szükséges próbák száma. Minden tesztesetből a lehető legtöbb információt „ki kell bányászni”, azaz minden teszteset eredményét alaposan végig kell vizsgálni. Ezzel jelentősen csökkenthető a szükséges próbák száma. Egy próba eredményeinek vizsgálata során egyaránt fontos megállapítani, hogy miért nem valósít meg a program valamilyen funkciót, amit elvárunk tőle, illetve, hogy miért végez olyan tevékenységeket is, amelyek nem feltételeztünk róla. Egy próba eredményeinek vizsgálata során egyaránt fontos megállapítani, hogy miért nem valósít meg a program valamilyen funkciót, amit elvárunk tőle, illetve, hogy miért végez olyan tevékenységeket is, amelyek nem feltételeztünk róla. A program tesztelését csak a program írójától különböző személy képes hatékonyan elvégezni. A program tesztelését csak a program írójától különböző személy képes hatékonyan elvégezni.

Nyíregyházi Főiskola 11 Statikus tesztelés a hibák futtatás előtti detektálása a hibák futtatás előtti detektálása a programkód vizsgálatán, és analízisén alapul a programkód vizsgálatán, és analízisén alapul csak a program és a specifikációja közti kapcsolatot tudja ellenőrizni 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 nem tudja demonstrálni, hogy a program működésileg helyes-e vagy nem költség- és időhatékony költség- és időhatékony

Nyíregyházi Főiskola 12 Statikus tesztelési módszerek Szintaktikus ellenőrzés Szintaktikus ellenőrzés Szemantikus ellenőrzés, ellentmondás keresés Szemantikus ellenőrzés, ellentmondás keresés Statikus program analizátor (Static program analysers): a kódban rejlő potenciális hibák felfedezésére. (Példa) Statikus program analizátor (Static program analysers): a kódban rejlő potenciális hibák felfedezésére. (Példa)Példa Kódellenőrzés: A forrásprogramot összevetjük a programtervvel (code review, inspection) Kódellenőrzés: A forrásprogramot összevetjük a programtervvel (code review, inspection) hatékony a programhibák feltárásában (hibák 60 %-a kiszűrhető) hatékony a programhibák feltárásában (hibák 60 %-a kiszűrhető) óránként 100 soros kódot lehet olvasni óránként 100 soros kódot lehet olvasni Matematikai alapú verifikáció (Matematically-based verification) Matematikai alapú verifikáció (Matematically-based verification) a hibák 90%-át detektálhatja a hibák 90%-át detektálhatja Tisztaszoba technika (Cleanroom software development): a hibákat inkább elkerülni kell, mint detektálni, és kijavítani. Tisztaszoba technika (Cleanroom software development): a hibákat inkább elkerülni kell, mint detektálni, és kijavítani.

Nyíregyházi Főiskola 13 Szemantikus ellenőrzés deklaráció, hatáskör, láthatóság hibái deklaráció, hatáskör, láthatóság hibái felhasználatlan változó felhasználatlan változó felhasználatlan változóérték felhasználatlan változóérték inicializálatlan változó (pl. Java) inicializálatlan változó (pl. Java) önmagának értékadás (felesleges vagy elírás) önmagának értékadás (felesleges vagy elírás) azonosan igaz vagy hamis feltétel (pl. C) azonosan igaz vagy hamis feltétel (pl. C) konstans értékű, változókat tartalmazó kifejezés pl: x := a 2 -b 2 -(a+b)*(a-b) konstans értékű, változókat tartalmazó kifejezés pl: x := a 2 -b 2 -(a+b)*(a-b) típuskeveredés típuskeveredés függvény mellékhatással függvény mellékhatással végtelen ciklus végtelen ciklus

Nyíregyházi Főiskola 14 Dinamikus tesztelés Két alapvető megközelítése van a tesztesetek meghatározásának: funkcionális tesztelés (fekete doboz) funkcionális tesztelés (fekete doboz) strukturális tesztelés (fehér doboz) strukturális tesztelés (fehér doboz)

Nyíregyházi Főiskola 15 Fehér-doboz tesztelés (strukturális tesztelés) A program viselkedését összeveti a forráskód „szándékával” A program viselkedését összeveti a forráskód „szándékával” A tesztelő a program belső struktúráját vizsgálja, azaz hogy miként is működik a program. A tesztelő a program belső struktúráját vizsgálja, azaz hogy miként is működik a program. Hozzáférünk a forráskódhoz, annak a logikája szerint tesztelünk Hozzáférünk a forráskódhoz, annak a logikája szerint tesztelünk Tipikus, ha a szoftver egy részét, modulját teszteljük Tipikus, ha a szoftver egy részét, modulját teszteljük Előny: Előny: A programozói hibák könnyen felismerhetők, mert az implementáció ismert. A programozói hibák könnyen felismerhetők, mert az implementáció ismert. Hátrány: Hátrány: A hiányos vagy hibás szoftverspecifikációt nem tudja felismerni. A hiányos vagy hibás szoftverspecifikációt nem tudja felismerni. Kódlefedés (code coverage) Kódlefedés (code coverage)

Nyíregyházi Főiskola 16 Kódlefedés (code coverage) A tesztadatokat úgy határozzuk meg, hogy a program forráskódjának minél nagyobb részét teszteljük. Egy mérőszám is egyben, mely megmutatja, hogy a forráskód hány százalékát teszteltük. utasításlefedés: mindegyik utasítás végrehajtódjon utasításlefedés: mindegyik utasítás végrehajtódjon döntéslefedés: minden döntés felvegye a neki megfelelő összes lehetséges értéket; feltétel: igaz/hamis, elágazás: valamennyi ág döntéslefedés: minden döntés felvegye a neki megfelelő összes lehetséges értéket; feltétel: igaz/hamis, elágazás: valamennyi ág feltétellefedés: valamennyi részfeltétel teljesülését ill. nem teljesülését is vizsgáljuk ( és, vagy operátorral elválasztott) feltétellefedés: valamennyi részfeltétel teljesülését ill. nem teljesülését is vizsgáljuk ( és, vagy operátorral elválasztott) többszörös feltétellefedés: a részfeltételek összes kombinációját vizsgáljuk többszörös feltétellefedés: a részfeltételek összes kombinációját vizsgáljuk útvonallefedés: a kód összes lehetséges útfonalán végighaladunk útvonallefedés: a kód összes lehetséges útfonalán végighaladunk

Nyíregyházi Főiskola 17 Nagy biztonsági követelményű szoftvereknél néhány kódlefedési mutató 100%-os értékének az elérése a cél Nagy biztonsági követelményű szoftvereknél néhány kódlefedési mutató 100%-os értékének az elérése a cél Az útvonallefedés magába foglalja az utasítás- és döntéslefedést Az útvonallefedés magába foglalja az utasítás- és döntéslefedést Teljes útvonallefedés nem praktikus vagy nem is lehetséges Teljes útvonallefedés nem praktikus vagy nem is lehetséges Az utasításlefedés nem foglalja magába a döntés- lefedést, pl: Az utasításlefedés nem foglalja magába a döntés- lefedést, pl: void foo(int bar) { printf("this is "); if (bar < 0) { printf("not "); } printf("a positive integer"); return; } Ha a függvényt a bar=-1 tesztadattal hívjuk meg, elérjük az utasítás- lefedést, a döntéslefedést viszont nem

Nyíregyházi Főiskola 18 A program viselkedését összeveti a specifikáció követelményeivel A program viselkedését összeveti a specifikáció követelményeivel Magát a programot fekete doboznak tekintjük. Magát a programot fekete doboznak tekintjük. A felhasználó szemszögéből vizsgálja a szoftvert A felhasználó szemszögéből vizsgálja a szoftvert A tesztelés menetét az adatok határozzák meg. A tesztelés menetét az adatok határozzák meg. 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. 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. Ismert: Ismert: bemenetek bemenetek a várt kimenetek a várt kimenetek az egyetlen információ, melyet felhasználunk az a szoftver specifikációja. az egyetlen információ, melyet felhasználunk az a szoftver specifikációja. Nem ismert: Nem ismert: a fekete doboz tartalma (implementáció, hogyan is kódoltuk a programot). a fekete doboz tartalma (implementáció, hogyan is kódoltuk a programot). Fekete-doboz tesztelés (funkcionális tesztelés)

Nyíregyházi Főiskola 19 Előnyök: Előnyök: Független attól, hogy a szoftvert hogyan implementálták. Független attól, hogy a szoftvert hogyan implementálták. A test-case fejlesztés párhuzamosan következhet be az implementációval, ezáltal csökkentve a teljes projekt tervezési intervallumot. 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: 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. 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. Módszerek: Módszerek: ekvivalencia osztályok (equivalence partitioning) ekvivalencia osztályok (equivalence partitioning) határeset vizsgálat (Boundary value analysis) határeset vizsgálat (Boundary value analysis) érvénytelen bemenet vizsgálata érvénytelen bemenet vizsgálata

Nyíregyházi Főiskola 20 Ekvivalencia osztályok (equivalence partitioning) Cél: Cél: a tesztesetek számának minimumra csökkentése a tesztesetek számának minimumra csökkentése a megfelelő tesztesetek kiválasztása a megfelelő tesztesetek kiválasztása Mivel minden adatra nem tudjuk kipróbálni a programot, ezért a lehetséges input adatokat csoportokra osztjuk (ekvivalencia-osztályok). Mivel minden adatra nem tudjuk kipróbálni a programot, ezért a lehetséges input adatokat csoportokra osztjuk (ekvivalencia-osztályok). Az ekvivalencia-osztályok elemei valamilyen szempontból azonosak Az ekvivalencia-osztályok elemei valamilyen szempontból azonosak Ha a program jól/rosszul működik az osztály egy adatára, akkor a többire is jó/hibás eredményt fog adni valószínűleg. Ha a program jól/rosszul működik az osztály egy adatára, akkor a többire is jó/hibás eredményt fog adni valószínűleg. Ezután az ekvivalencia-osztályok egy vagy néhány tagjával kipróbáljuk a programot. Ezután az ekvivalencia-osztályok egy vagy néhány tagjával kipróbáljuk a programot.

Nyíregyházi Főiskola 21 Példa karakteres szövegből számoljuk, hogy hány magánhangzót tartalmaz. Ekvivalencia osztályok: 0 hosszú string, 0 hosszú string, 40-nél hosszabb string, 40-nél hosszabb string, hosszú, csak mássalhangzókból áll, hosszú, csak mássalhangzókból áll, hosszú, van magánhangzó is (csak 1, néhány, mindegyik) hosszú, van magánhangzó is (csak 1, néhány, mindegyik). Példa 2 Példa 2