A szoftvertesztelés jelentősége, módszerei és eszközei

Modern fejlesztési folyamatok és minőségbiztosítás

Egyed Dániel

Nyomd a Space-t vagy a nyilakat a navigációhoz

A szoftvertesztelés fogalma és célja

Mi a tesztelés?

Egy folyamat, melynek célja a szoftver megfelelőségének és minőségének vizsgálata. Nem csupán hibakeresés, hanem kockázatkezelés is.

Főbb célkitűzések

  • Hibák (bugok) feltárása a kiadás előtt
  • Minőségi szint igazolása
  • Költségcsökkentés (korai hibaészlelés)
  • Üzleti kockázat mérséklése
"A tesztelés megmutathatja a hibák jelenlétét, de soha nem bizonyíthatja azok hiányát." - Edsger W. Dijkstra

Tesztelés a fejlesztési életciklusban (SDLC)

A modern agilis fejlesztésben a tesztelés nem egy külön fázis a végén, hanem folyamatos tevékenység.

Követelmények
Tervezés
Implementáció
Tesztelés
Kiadás

Shift Left elv:

A tesztelést a folyamat elejére toljuk. Ha a specifikációban találunk hibát, az 10-100x olcsóbb, mintha az éles üzemben derülne ki.

A Tesztelési Piramis

Acceptance (UAT)
System Testing
Integration Testing
Unit Testing (Alap)
Unit: Legkisebb egységek (függvények) elszigetelt tesztje.
Integration: Modulok közötti interfészek vizsgálata.

Módszertanok és Technikák

Fekete doboz

Belső kód ismerete nélkül, a funkcionalitást teszteljük (bemenet -> kimenet).

Fehér doboz

A kód belső logikájának ismeretében tesztelünk (lefedettség, elágazások).

Szürke doboz

Részleges kód/adatbázis ismerettel végzett tesztelés.

Manuális vs. Automatizált

A manuális teszt elengedhetetlen a használhatósághoz (UX), az automatizált pedig a regressziós tesztekhez (hogy ne romoljon el a régi kód).

Eszközök és Kódpélda

  • WEB Selenium, Playwright
  • UNIT JUnit, PyTest, Jest
  • API Postman, SoapUI
def osszead(a, b):
	return a + b

def test_osszead():
	# Elvárt eredmény: 5
	assert osszead(2, 3) == 5
	# Hiba esetén a teszt elbukik
	assert osszead(-1, 1) == 0

Hibajegy (Bug) Életciklusa

ÚJ (New)
FELDOLGOZÁS ALATT
JAVÍTOTT
LEZÁRT

Dokumentumok:

  • Tesztterv: Stratégia leírása
  • Teszteset: Lépések és várt eredmény
  • Tesztjelentés: Sikeres/Sikertelen arány

Eszközök:

Jira, Bugzilla, GitHub Issues, Azure DevOps

QA vs. Tesztelés

Quality Assurance (QA)

Folyamat-központú. Megelőzi a hibákat a fejlesztési folyamat optimalizálásával.

Szoftvertesztelés

Termék-központú. Megtalálja és jelenti a hibákat a kész vagy készülő kódban.

A tesztelés tehát a QA egyik eszköze, nem pedig a szinonimája.

Összegzés és Saját vélemény

A szoftvertesztelés nem negatív értelemben "muszáj", hanem a fenntartható fejlesztés alapja.

  • Az automatizálás kulcsfontosságú, de a manuális tesztelő empátiáját nem pótolja.
  • A biztonság és a teljesítmény ma már fontosabb, mint valaha.
  • Külső források mindig segítenek a tesztelésben, de a kritikus gondolkodás az a tesztelő feladata marad.

Források és Szakirodalom

Köszönöm a figyelmet!