Unit Testing

Unit Testing

A Unit Testing (egységtesztelés) a szoftver legkisebb tesztelhető részeinek (unitok) izolált vizsgálata, általában függvények, metódusok vagy osztályok szintjén. Célja, hogy minden kódrészlet önállóan, megfelelően működjön.

Fő jellemzői

  • Izolált tesztelés: Külső függőségek nélkül (mock-ok, stub-ok használatával)
  • Atomikus: Egy-egy specifikus funkcionalitást tesztel
  • Automatizált: Könnyen és gyakran futtatható
  • Gyors: Milliszekundumok alatt lefut
  • Önellenőrző: Egyértelmű pass/fail eredménnyel
  • Determinisztikus: Minden futtatáskor ugyanazt az eredményt adja azonos feltételek mellett

Előnyei

  • Korai hibafelderítés
  • Regressziós védelem refaktoráláskor
  • Dokumentáció a kód elvárt működéséről
  • Jobb kódminőség és design
  • Egyszerűbb és biztonságosabb kódmódosítások
  • Magabiztosabb fejlesztés

Népszerű unit testing keretrendszerek

  • JavaScript: Jest, Mocha, Jasmine
  • Python: PyTest, unittest
  • Java: JUnit, TestNG
  • C#: NUnit, MSTest, xUnit.net
  • Ruby: RSpec, Minitest
  • .NET: xUnit, MSTest, NUnit
  • Go: built-in testing package

Unit test példa (JavaScript/Jest)


// Függvény
function add(a, b) {
  return a + b;
}

// Unit teszt
test('add correctly calculates the sum of two numbers', () => {
  expect(add(1, 2)).toBe(3);
  expect(add(-1, 1)).toBe(0);
  expect(add(0, 0)).toBe(0);
});

A Unit Testing a tesztelési piramis alapját képezi, és alapvető fontosságú a modern szoftverfejlesztési gyakorlatokban, különösen TDD és CI/CD környezetekben.

## Integration Testing oldal 

```md
---
title: Integration Testing
description: Komponensek együttműködésének tesztelése
taxonomy:
    category: it-fogalmak
    tag: [integration-testing, tesztelés, minőségbiztosítás]
---

# Integration Testing

Az Integration Testing (integrációs tesztelés) a szoftver egyes komponenseinek vagy rendszereinek együttműködését vizsgálja, hogy ellenőrizze, megfelelően működnek-e együtt. Célja az interfészek és az adatáramlás helyességének validálása.

## Fő típusai

- **Big Bang Integration**: Minden komponenst egyszerre integrálunk és tesztelünk
- **Top-Down**: A legfelső szintű moduloktól indulva, stúbok használatával
- **Bottom-Up**: Az alacsonyabb szintű moduloktól indulva, driverek használatával
- **Sandwich/Hybrid**: A top-down és bottom-up megközelítések kombinálása
- **API tesztelés**: A rendszer programozási interfészeinek ellenőrzése
- **Szerződés-alapú tesztelés**: Az interfész szerződések (pl. OpenAPI/Swagger) ellenőrzése

## Integrációs tesztelési fokozatok

- **Komponens-integrációs tesztek**: Szorosan kapcsolódó komponensek együttműködése
- **Alrendszer-integrációs tesztek**: Több komponensből álló alrendszerek összekapcsolása
- **Rendszer-integrációs tesztek**: Teljes rendszerek közti együttműködés 
- **Külső rendszer integrációs tesztek**: Harmadik féltől származó rendszerekkel való kapcsolat

## Unit és Integration Testing összehasonlítása

| Szempont | Unit Testing | Integration Testing |
|----------|-------------|---------------------|
| Scope | Egyetlen kódrészlet | Több komponens együttműködése |
| Izolálás | Teljesen izolált | Tényleges függőségek használata |
| Sebesség | Nagyon gyors | Lassabb |
| Komplexitás | Alacsony | Közepes-magas |
| Hibadiagnosztika | Egyszerű | Összetettebb |
| Lefedettség | Komponens funkcionalitása | Interfészek, adatáramlás |

Az integrációs tesztelés a tesztelési piramisban a unit tesztek és az end-to-end tesztek között helyezkedik el, és kritikus fontosságú a rendszer stabilitásának biztosításában.