Sobes.tech
Middle

Miért jobb a száraz tesztelés, mint a Postman használata?

sobes.tech MI

Válasz az MI-től

A mok-tesztelés lehetővé teszi a tesztelt komponens izolálását, anélkül hogy függene a külső szolgáltatások elérhetőségétől vagy működésétől. Ez biztosítja a tesztek stabilitását és ismételhetőségét, gyorsítja a tesztelési forgatókönyvek végrehajtását, és egyszerűsíti a hibák azonosítását, amelyek közvetlenül a tesztelt logikához kapcsolódnak.

A Postman, még a mockokat használva is, a külső függőségekkel való interakciót teszteli kérés/válasz szinten, nem pedig közvetlenül a mockokat építi be a tesztkódba vagy a komponensbe. Ez kevésbé részletes és bonyolultabb az automatizálás szempontjából CI/CD pipeline-okban.

A mock-tesztelés előnyei a Postmanhez képest az automatizált tesztelésben:

  • Izoláció: Csak a kódot teszteli, nem a külső rendszerekkel való integrációt.
  • Stabilitás: A tesztek nem esnek ki külső szolgáltatások problémái miatt.
  • Gyorsaság: Gyors végrehajtás anélkül, hogy várni kellene a valódi szolgáltatások válaszaira.
  • Részletesség: Lehetőség van külön módszerek vagy funkciók mockolására a kódban.
  • Automatizálás: Könnyen integrálható egység- és integrációs tesztekbe, amelyek automatikusan futnak.
  • Szélsőséges esetek tesztelése: Egyszerű szimuláció különböző válasz forgatókönyvekre (hibák, késések, nem szabványos adatok).

Példa a mock használatára Java-ban (Mockito):

// Mock létrehozása a függőséghez
ExternalService mockService = mock(ExternalService.class);

// A mock viselkedésének beállítása egy adott metódus hívásakor
when(mockService.getData(anyString())).thenReturn("mockolt adat");

// A komponens tesztelése a mock használatával
Processor processor = new Processor(mockService);
String result = processor.process("input");

// Eredmény ellenőrzése
assertEquals("feldolgozott mockolt adat", result);

// A mock metódusának hívásának ellenőrzése
verify(mockService).getData("input");

Példa a mock használatára Pythonban (unittest.mock):

# mock_example.py

def get_data_from_external_service(id):
  # Külső szolgáltatás hívásának szimulálása
  pass

def process_data(id):
  data = get_data_from_external_service(id)
  return f"feldolgozott {data}"

# test_mock_example.py
import unittest
from unittest.mock import patch
from . mock_example import process_data

class TestProcessData(unittest.TestCase):
  @patch('mock_example.get_data_from_external_service')
  def test_process_data_with_mock(self, mock_get_data):
  # A mock visszatérési értékének beállítása
  mock_get_data.return_value = "mockolt adat"

  # A tesztelt függvény hívása, amely használja a mockot
  result = process_data("valami_id")

  # Az eredmény ellenőrzése
  self.assertEqual(result, "feldolgozott mockolt adat")

  # A mock hívásának ellenőrzése a várt argumentummal
  mock_get_data.assert_called_once_with("valami_id")

if __name__ == '__main__':
  unittest.main()

A Postman inkább kézi API tesztelésre, kutató jellegű tesztelésre vagy demonstrációs kéréskészítésre alkalmas. Az automatizált teszteléshez CI/CD keretében a kód szintű mock-tesztelés előnyösebb.