„Egységtesztelés” változatai közötti eltérés

[nem ellenőrzött változat][nem ellenőrzött változat]
Tartalom törölve Tartalom hozzáadva
Bnoemi98 (vitalap | szerkesztései)
Új oldal, tartalma: „A számítógép-programozásban az '''egységtesztelés''' a szoftvertesztelésnek egy olyan módszere, amelynek…”
 
Bnoemi98 (vitalap | szerkesztései)
Nincs szerkesztési összefoglaló
45. sor:
 
== Példa ==
Az alábbiakban [[Java (programozási nyelv)|Java]] nyelven megvalósított teszteset sorozat látható, amely meghatározza egy elemszámát az implementációnak. Először is, rendelkezni kell egy Hozzáadó (Adder) nevű interfésszel, ami egy hozzáad(add) nevű függvényt tartalmaz, valamint egy HozzáadóImpl nevű, paraméter nélküli konstruktort tartalmazó implementáló osztállyal, ami a Hozzáadó interfészt implementálja. Ezt követően azt kell ellenőrizni, hogy a 2 egész szám típusú bemeneti paraméterrel felruházott hozzáad(add) metódus az egész szám kimenetében ezen paramétereinek helyesen összeadott összegével tér-e vissza. Ez az ellenőrzés az [[Állítás (programozás)|állítás]] (assertion) segítségével valósítható meg, mely tulajdonképpen egy predikátum, egy olyan logikai függvény, mely hozzájárul a program hibáinak felismeréséhez. Az assert kimenete igaz vagy hamis lehet, ami arra szolgál, hogy jelezze, hogy jelen esetben a paramétereként megadott metódus (hozzáad) a kívánt módon működik-e. A metódus viselkedése meghatározásra kerül egy kisebb értékhalmazzal és különböző számú tesztekkel. Jelen esetben ez azt jelenti, hogy össze tud-e adni helyes eredménnyel 2 számot, legyen az akár pozitív, akár negatív, akár nagyobb értékkel bíró; itt, ha az assert igazzal tér vissza, akkor a példafüggvény helyesen, különben helytelenül működik. <syntaxhighlight lang="java">
import static org.junit.Assert.*;
 
import org.junit.Test;
 
public class TesztHozzáadó {
Ez esetben az elsőként megírt egységtesztek egyfajta tervezési dokumentumként viselkednek, amelyek meghatározzák a megoldás formáját és viselkedését, viszont az implementáció részleteit nem, az a programozó dolga marad. A „csináld a lehető legegyszerűbb dolgot, ami esetleg működik” gyakorlatot követvén, minden egységteszt az eddig nem tesztelt legegyszerűbb esetet írja le, ami a teszt sikeres lebonyolítását lehetővé teszi, az alábbiakban látható.
 
@Test
public void tesztPozitívSzámokEgyÉsEgyÖsszege() {
Hozzáadó hozzáadó = new HozzáadóImpl();
assert(hozzáadó.hozzáad(1, 1) == 2);
}
 
// össze tudja-e adni az 1 és 2 pozitív számokat?
@Test
public void tesztPozitívSzámokEgyÉsKettőÖsszege() {
Hozzáadó hozzáadó = new HozzáadóImpl();
assert(hozzáadó.hozzáad(1, 2) == 3);
}
 
// össze tudja-e adni a 2 és 2 pozitív számokat?
@Test
public void tesztPozitívSzámokKettőÉsKettőÖsszege() {
Hozzáadó hozzáadó = new HozzáadóImpl();
assert(hozzáadó.hozzáad(2, 2) == 4);
}
 
// a nulla semleges-e?
@Test
public void testSumZeroNeutral() {
Hozzáadó hozzáadó = new HozzáadóImpl();
assert(hozzáadó.hozzáad(0, 0) == 0);
}
 
// össze tudja-e adni az -1 és -2 negatív számokat?
@Test
public void tesztNegatívSzámokÖsszege() {
Hozzáadó hozzáadó = new HozzáadóImpl();
assert(hozzáadó.hozzáad(-1, -2) == -3);
}
 
// össze tud-e adni pozitív és negatív számot?
@Test
public void tesztPOzitívNegatívÖsszege() {
Hozzáadó hozzáadó = new HozzáadóImpl();
assert(hozzáadó.hozzáad(-1, 1) == 0);
}
 
// nagyobb számokkal is boldogul?
@Test
public void tesztNagySzámokÖsszege() {
Hozzáadó hozzáadó = new HozzáadóImpl();
assert(hozzáadó.hozzáad(1234, 988) == 2222);
}
 
}
</syntaxhighlight>
 
Ez esetben az elsőként megírt egységtesztek egyfajta tervezési dokumentumként viselkednek, amelyek meghatározzák a megoldás formáját és viselkedését, viszont az implementáció részleteit nem, az a programozó dolga marad. A „csináld a lehető legegyszerűbb dolgot, ami esetleg működik” gyakorlatot követvén, minden egységteszt az eddig nem tesztelt legegyszerűbb esetet írja le, ami a teszt sikeres lebonyolítását lehetővé teszi, az alábbiakban látható.<syntaxhighlight lang="java">
interface Hozzáadó {
int hozzáad(int a, int b);
}
class HozzáadóImpl implements Hozzáadó {
public int hozzáad(int a, int b) {
return a + b;
}
}
</syntaxhighlight>
 
== Végrehajtható specifikációként ==
74 ⟶ 138 sor:
 
=== Nyelv-szintű egységtesztelés támogatás ===
Néhány programozási nyelv közvetlenül támogatja az egységtesztelést. Nyelvtanuk lehetővé teszi az egységtesztek közvetlen deklarálását könyvtár (akár harmadik fél, akár szabvány) importálása nélkül. Emellett az egységteszt logikai feltételei ugyanabban a szintaxisban fejezhetők ki, mint a nem egységteszt-kódban használt logikai kifejezések, például amikre az elágazások if és ciklusok (elöl- vagy hátultesztelő) használata esetén kerül sor.
 
Beépített egységteszt-támogatással bíró programnyelvek: