Miért nem skálázódik QA nélkül egy IT projekt?

Bevezető

A szoftverfejlesztés világában létezik egy visszatérő, fájdalmas forgatókönyv, amit szinte minden startup alapító és technológiai vezető átél legalább egyszer. Ez a történet mindig ugyanúgy kezdődik: eufóriával.

A projekt elején minden olajozottan működik. A csapat kicsi, agilis, és mindenki mindent tud a rendszerről. A fejlesztők reggel megírják a kódot, délben tesztelik a saját gépükön, délután pedig már élesben fut a funkció. A felhasználók örülnek, a befektetők elégedettek, a növekedési görbe meredeken ível felfelé. Úgy tűnik, nincs határ.

Aztán elérkezik a pillanat – nevezzük, a „Falnak” –, amikor ez a lendület hirtelen megtörik. Általában akkor történik, amikor a felhasználói bázis hirtelen megduplázódik, vagy amikor a funkciók száma átlép egy kritikus határt. Hirtelen minden lelassul. Ami eddig egy napba telt, az most egy hét. A fejlesztők, akik eddig csillogó szemmel új feature-öket építettek, most frusztráltan hibákat javítanak egész nap. Az új verziók kiadása (release) már nem ünnep, hanem gyomorgörcsös rettegés: „Vajon ma mit döntünk be?”

A legtöbb vezető ilyenkor ösztönös reakcióval válaszol: „Lassúak vagyunk? Vegyünk fel még több fejlesztőt!” De a helyzet ettől csak rosszabb lesz. A probléma ugyanis nem a fejlesztői kapacitás hiánya.

A probléma a professzionális minőségbiztosítás (QA) és a tesztelési kultúra hiánya. Bár ez nem mindig nyilvánvaló, a QA hiánya a legfőbb gátja annak, hogy egy IT projekt sikeresen skálázódjon a startup fázisból a komoly, stabil vállalkozás szintjére. Ellenőrzés nélkül ugyanis az új kód hozzáadása olyan, mintha egy kártyavárat építenénk tovább: minél magasabbra törünk, annál instabilabb lesz az egész szerkezet, amíg végül a saját súlya alatt omlik össze.

Nézzük meg részletesen, miért történik ez, és milyen láthatatlan mechanizmusok fojtják meg a növekedést QA nélkül.

A „Regresszió Szörnye”

Képzeld el, hogy felújítod a lakásodat. Kicseréled a bejárati ajtót egy biztonságosabb, modernebb darabra. Büszkén hátradőlsz, de amikor átmész a hátsó szobába, azt látod, hogy leszakadt az ablakpárkány. Abszurdnak hangzik? A fizikai világban igen. A szoftverfejlesztésben viszont ez a mindennapi valóság.

Ezt hívjuk regressziónak: amikor egy új fejlesztés vagy javítás nem várt mellékhatásként elront egy régi, már jól működő funkciót. Egy webshopban például a fizetési oldal módosítása miatt véletlenül elromolhat a regisztráció, vagy egy gomb átnevezése miatt elérhetetlenné válhat a kosár funkció.

Miért történik ez? Egy szoftver nem különálló téglákból álló fal, hanem egy végtelenül bonyolult pókháló, ahol minden szál kapcsolódik valahol a többihez. Kezdetben, amikor a kód kicsi, a fejlesztők fejben tudják tartani ezeket az összefüggéseket. „Ha itt átírom ezt a változót, az hatással lesz a bejelentkezésre.” De ahogy a kódbázis nő, ez a mentális térkép követhetetlenné válik. Már senki nem látja át az egészet.

Itt lép be a skálázódási csapda. Minél nagyobb a rendszer, annál nagyobb az esélye annak, hogy egy ártatlannak tűnő módosítás valahol máshol dominóeffektust indít el. Megfelelő tesztelési védőháló – különösen automatizált regressziós tesztek – nélkül minden egyes új funkció bevezetése növeli a rendszer entrópiáját. A fejlesztők elkezdenek félni a saját kódjuktól.

„Inkább nem nyúlok hozzá ehhez a régi modulhoz, mert félek, hogy összedől, és nem fogom tudni, miért.”

Ez a mondat a halálos ítélete az innovációnak. A fejlesztés lelassul, mert mindenki „tojáshéjakon lépked”. Ahelyett, hogy magabiztosan építkeznének, a csapat defenzívvé válik, és a fejlesztési idő nagy része nem az alkotással, hanem a kármentéssel telik.

A Release (Kiadás) parája

Tesztelés és QA folyamatok nélkül minden szoftverfrissítés (release) egy orosz rulett. A csapat dolgozik két hétig, összerakják az új verziót, és eljön a kiadás napja. De senki nem tudja biztosan, hogy működni fog-e.

„Teszteltétek?” – kérdezi a vezető. „Igen, végig kattintgattam, nekem jónak tűnt” – válaszolja a fejlesztő.

Ez a „nekem jónak tűnt” a legveszélyesebb mondat az IT-ban. Nem, nem volt jónak „tűnve”. A fejlesztő csak az ún. „happy path”-t (a boldog utat) ellenőrizte, azt az esetet, amikor minden ideálisan működik. Nem próbálta meg rossz jelszóval, nem nézte meg mobilon, nem tesztelte lassú netkapcsolattal, és főleg nem ellenőrizte a rendszer többi 99%-át, amihez elvileg nem nyúlt hozzá.

Amikor az élesítés után beüt a baj – és be fog ütni –, és a felhasználók dühösek, a menedzsment jellemzően egy logikusnak tűnő, de végzetes döntést hoz:

„Túl sok volt a hiba a múltkor. Lassítsunk. Mostantól ne hetente, hanem csak havonta frissítsünk, hogy legyen időnk mindent alaposan átnézni.”

Ezzel elindul az ördögi kör. Mivel ritkábbak a kiadások, a fejlesztések felhalmozódnak. A havi release-be már nem 5, hanem 50 változtatás kerül. Minél nagyobb a változtatáscsomag, annál komplexebb az interakció az elemek között, és hatványozottan nő a hibák esélye. A havi release tehát még nagyobb összeomlást hoz, még nagyobb pánikot, és még nagyobb félelmet.

Közben a versenytársak, akiknek van automatizált CI/CD folyamatuk és erős QA hátterük, naponta többször is élesítenek részleges funkciókat. Ők kísérleteznek, tanulnak, adaptálódnak. Mi pedig rettegve ülünk a hatalmas, monolitikus kódunk tetején, és nem merünk mozdulni.

Technikai adósság vs. Üzleti növekedés

Sokan úgy tekintenek a QA-ra és a tesztelésre, mint „luxusra”, amit majd akkor engedhetnek meg maguknak, ha már nagyok lesznek. „Most gyorsan kell piacra lépnünk, nincs időnk teszteket írni!” – hangzik a klasszikus érv.

Rövid távon ez igaz is. Tesztek nélkül gyorsabb az indulás. Nem kell időt tölteni a tesztkörnyezet felállításával, a tesztesetek írásával. De ez a sebesség csak illúzió, amit hitelből finanszírozunk. Ezt hívjuk technikai adósságnak. És mint minden hitelnél, itt is kamatot kell fizetni.

A kamat pedig abban a formában jelenik meg, hogy a szoftver egyre nehezebben módosítható. A fejlesztők ideje már nem az üzleti érték teremtésével telik (új funkciók, jobb felhasználói élmény), hanem a múlt hibáinak javításával. Egy érett, de QA nélküli projektben a fejlesztői kapacitás akár 50-70%-a is elmehet bugfixálásra és „tűzoltásra”.

Gondoljunk bele: fizetünk drága senior fejlesztőket, akik ahelyett, hogy a terméket építenék, egész nap nyomoznak, hogy miért nem működik a bejelentkezés gomb safariban. Ez nem csak pénzügyi veszteség, hanem morális is. A jó fejlesztők alkotni szeretnek, nem szemetet takarítani. Ha a munkájuk nagy része frusztráló hibakeresésből áll, előbb-utóbb elhagyják a céget, tovább súlyosbítva a helyzetet.

Hogyan oldja fel ezt a blokkot a Minőségbiztosítás (QA)?

Ha a fenti problémák ismerősek, van egy jó hírem: a helyzet nem reménytelen. A megoldás nem több fejlesztő, hanem a QA stratégia integrálása a fejlesztési folyamatba. Hogyan segít ez?

1. Automatizálás mint védőháló: Az automatizált tesztek (Unit, Integration, E2E) nem fáradnak el, nem felejtenek el lépéseket, és nem „remélik”, hogy működni fog. Éjjel-nappal futtathatók. Ami manuálisan egy tesztelőnek három napig tartana (végignyomkodni az egész alkalmazást), azt egy jól megírt automatizált tesztcsomag 1-2 órán belül elvégzi. Ez adja vissza a fejlesztők önbizalmát. Ha a tesztek zöldek, bátran lehet élesíteni.

2. CI/CD és a Minőségi Kapuk (Quality Gates): A folyamatos integráció (CI) és folyamatos szállítás (CD) lényege, hogy a rendszer automatikusan ellenőriz minden kódsort, mielőtt az bekerülne a közösbe. Ha egy fejlesztő hibás kódot próbál beküldeni, a rendszer „visszadobja”: a tesztek elbuknak, a build nem készül el. A hiba nem jut el a felhasználóig, sőt, még a tesztelő kollégáig sem, mert a gép már az elején megfogta.

3. Shift-Left szemlélet: A modern QA nem a folyamat végén kullog („kész a kód, most teszteld le”), hanem a folyamat elején kezdődik. A QA szakemberek már a tervezési fázisban jelen vannak. Felteszik a kellemetlen kérdéseket: „Mi történik, ha megszakad a net fizetés közben?”, „Mi van, ha egyszerre tízezren kattintanak ide?”. Ezzel már akkor kiszűrik a logikai buktatókat, amikor még egy sor kód sem íródott. Egy tervezési fázisban elkapott hiba 100-szor olcsóbb, mint egy éles rendszerben lévő hiba javítása.

Összegzés

Startup vezetőként vagy Product Ownerként fontos megérteni: a minőségbiztosítás nem egy „cost center” (költséghely), amit minimalizálni kell. A QA a növekedés biztosítéka. Nélküle lehet nőni egy darabig, de ez a növekedés fenntarthatatlan lesz.

Olyan ez, mint egy versenyautó építése. Ha csak a motorerőt növeled (több fejlesztő, több funkció), de a fékeket és a kormányzást (QA, tesztelés) nem fejleszted hozzá, akkor az első kanyarban ki fogsz sodródni. Minél gyorsabb az autó, annál fontosabb a fék.

Mikor kell elkezdeni a QA folyamatok kiépítését? A legjobb időpont tegnap volt. A második legjobb időpont ma van. Ne várd meg, amíg a szoftvered összeomlik a saját súlya alatt. Ne várd meg, amíg a fejlesztőid kiégnek a folyamatos tűzoltásban. Ha úgy érzed, a fejlesztésed lassul, a hibák szaporodnak, ne fejlesztőt vegyél fel, hanem építs ki egy robusztus tesztelési stratégiát. Ez az egyetlen útja annak, hogy a növekedés ne fájdalom, hanem siker legyen.

Megosztás

Kérsz értesítést a legújabb cikkekről?

Kapcsolódó cikkek

Nincs elég tesztelő? Ez az 5 fájdalmas következmény a projektre

Bevezető „Spóroljunk a tesztelésen, majd a fejlesztők megnézik egymás kódját.” Hányszor hallottuk már ezt a mondatot projektindító megbeszéléseken? Logikusnak tűnhet: a fejlesztő ért a legjobban a kódhoz, miért fizetnénk külön embert arra, hogy „kattintgasson”? Ez a gondolkodásmód azonban olyan, mintha a könyvelőt kérnénk meg, hogy auditálja a saját mérlegét. Papíron minden rendben lesz, de a

QA staffing: hogyan lehet gyorsan és biztonságosan kapacitást bővíteni?

Bevezetés Előző cikkünkben (itt olvasható) arról írtunk, hogy mikor érdemes külsős tesztelőt bevonni, és mikor intő jel, ha csak tűzoltásra használnánk őket. Most, hogy már tudjuk a „mikor”-t, evezzünk gyakorlatiasabb vizekre, és nézzük meg a „hogyan”-t. Hogyan lehet úgy bővíteni a csapatot, hogy az ne a káoszt növelje, hanem a megoldást hozza el? (Megjegyzés: A szakmában gyakran

Külsős tesztelő bevonása: mikor segít, és mikor pénzkidobás?

Bevezetés Minden szoftverfejlesztési projekt életében eljön az a pont, amikor a csapat vezetője, a projektmenedzser vagy a cégtulajdonos a homlokára csap: „Nekünk azonnal tesztelők kellenek!” A hibák szaporodnak, a fejlesztők túlterheltek, az ügyfél pedig egyre türelmetlenebbül dobol az asztalon. Ilyenkor tűnik logikus és gyors megoldásnak a külsős szakértő bevonása. Felhívunk egy partnert, kérünk két senior

Scroll to Top
Passed
Adatvédelmi áttekintés

Ez a weboldal sütiket használ, hogy a lehető legjobb felhasználói élményt nyújthassuk. A cookie-k információit tárolja a böngészőjében, és olyan funkciókat lát el, mint a felismerés, amikor visszatér a weboldalunkra, és segítjük a csapatunkat abban, hogy megértsék, hogy a weboldal mely részei érdekesek és hasznosak. Adatkezelési tájékoztató