Bevezetés
12 éve foglalkozom teszteléssel, folyamatosan újra, és újra tanulva a szakmát, fejlődve, alkalmazkodva az elvárásokhoz. Mostanában egy új témakör kerül elő, konkrétan mindenhonnan, hirdetésekből, Linkedn-ről, rádióból, mégpedig az AI. Olvasva, nézve ezeket a híreket, hirdetéseket, rögtön egyértelművé válik, hogy rengeteg AI expert van, rengeteg cég foglalkozik AI-al. Én nem értek az AI-hoz. Rajtam kívül látszólag mindenki. Vajon tényleg így van ez?
Három kifejezést fogunk körbejárni. Ezeken keresztül szeretném bemutatni, hogy miként értjük félre az AI-al kapcsolatos kifejezéseket, fogalmakat .
Az alábbi három kifejezés kerül elő szakmai fórumokon az AI-al kapcsolatban, mindhármat abban a kontextusban használják, hogy bizonyítsák az AI tesztelésben lévő tapasztalatot.
- AI támogatott tesz eszköz
- AI vezérelt teszt menedzsment rendszer (ez az előző részhalmaza, de jelen cikkünk külön foglalkozik vele)
- AI tesztelése
Az AI felhasználása, és tesztelése közötti különbség:
Hogyan alkalmazzuk, miért értjük félre ezeket a kifejezéseket?
Erre egy példa egy fiktív hirdetés: „Kollégáink elkötelezettek az innováció és a minőség iránt: AI-specializált tesztelőink az iparág legfejlettebb AI-alapú teszteszközeit alkalmazzák, hogy ügyfeleink számára kivételes színvonalú minőséget biztosítsunk. Az AI támogatásával végzett tesztelésünk nemcsak a hatékonyságot növeli, hanem szakértői kompetenciánkat is megerősíti, bizonyítva, hogy erős szereplők vagyunk az AI-vezérelt tesztelési megoldások terén.”
Igazán lenyűgöző, jóval a piac előtt járnak, hiszen, 10+ főt kiképezni AI-t tesztelni képes kollégának nem kis feladat. A fenti szöveg alapján viszont nekem is vannak felismeréseim.
Kedves Olvasó! Ezek szerint mindketten AI szakértők vagyunk, hiszen legalább 10 éve, napi szinten használunk AI támogatott eszközöket, nem csak a munkánkban, de a privát életünkben is.
Nem tudod miről beszélek? Nem használsz AI-t? Dehogynem! 🙂
- Van Gmail fiókod? Akkor ezt használod: Gmail Spam szűrő működése
- Használsz esetleg Photoshopot, GIMP-et? Akkor ilyeneket is használsz: Photoshop AI támogatott eszközei
- Használsz Google-t vagy Bing-et?
- Kaptál már olyan hívást, aminél a telefonod kiírta, hogy SPAM, anélkül, hogy előzőleg hívott volna ez a szám?
- Használtál már vicces arc filtereket?
- Használtál már Google translate-et?
- Kép alapú keresőt?
- Olvastál már közösségi oldalon „híreket”, amit eléd dobott az „algoritmus”?
- Kaptál már olyan reklámot, ami releváns volt számodra?
- Kaptál már figyelmeztetést navigációs szoftvertől, hogy inkább másik útvonalon menj?
- Kaptál már releváns film, könyv, zene ajánlatot a különböző média szolgáltatóktól?
Ezek a termékek, funkciók, mind nagyon régóta használnak valamilyen fajtájú, és szintű gépi tanulást, mostani divatos összefoglaló nevén AI-t. Tehát nagyon régóta használunk többféle AI-t is mindennap.
Ezektől nem fogunk jobban érteni az AI-hoz. Viszont ezek segítségével megérthetjük mit tud, és mit nem tud az AI, tehát egy jó kezdet felismerni, hogy mi az, ami körülöttünk AI alapokkal rendelkezik..
Az AI támogatott tesztezközök használatától szerintem nem leszünk AI tesztelő szakértők.
Miért mondom ezt? Nézzük, mi is az AI. Az AI egy olyan program, vagy algoritmus ami folyamatosan tanul, ezért tud hasznos információkat naprakészen szolgáltatni számunkra, de hogyan is csinálja? Az AI-ok úgynevezett gépi tanulást valósítanak meg. Tehát nem csak egy előre betáplált módon képesek működni, hanem ahogy egyre több bemeneti adattal (Inputtal) rendelkeznek, azoktól függően fog változni az, amit csinálnak (Output). Erre különböző statisztikai és valószínűségű modellt használ, ebben a cikkben ilyen mélységig nem megyünk bele.
Nézzünk egy példát. Egy chatbot esetében, ha felteszel neki egy kérdést, és az ő válaszára azt írod, hogy köszönöm, a válasz megfelelő volt, akkor ő meg fogja jegyezni, hogy az a válasz jó. Ha egy helytelen válaszra azt írod, hogy nem jó, ő azt fogja megjegyezni, hogy az a válasz helytelen. Így tudod elérni, a betáplált adatokkal, hogy helyesen, vagy éppen helytelenül válaszoljon egy adott kérdés típusra. Ez már tesztelés. Ez viszont feltételezi, hogy az adott AI-nak az összes megadott információt (kérdést, választ) kontrollálni tudod. Amennyiben egy publikus AI-nak adsz rossz információt, nem fogja a rosszat megjegyezni, mivel a többi 1000+ felhasználó többsége mindennapi használat során azt válaszolja, hogy az információ jó, tehát statisztikai alapon a több választ fogja igaznak tartani. És pont ez a válasz arra, hogy egy AI támogatott teszteszköz, vagy egy AI támogatott/vezérelt teszt menedzsment eszköz miért nem visz közelebb az AI teszteléshez. Mivel az adatok megadása nem kontrollált (mások is adnak meg adatokat), így nem tudod mérni, nem tudod ellenőrizni, hogy a válaszok, amiket adtál, módosították-e az AI akcióit. Tehát ha AI támogatott eszközt használsz, akkor te ennek a felhasználója vagy, aki profitál abból az adathalmazból amit sokan másokkal együtt raktál össze, de mivel nem kontrollálod az „Input”-ot, ezért nem tudod ellenőrizni az „Output” -ot, tehát nem végzel tesztelést. Tehát ezek használatával a munkádat eredményesebbé, könnyebbé teheted, de az AI teszteléshez nem leszel közelebb.
Nézzük a fenti kifejezéseket részleteikben.
Nézzük is át mit is jelentenek ezek a kifejezések
- AI támogatott/vezérelt teszteszköz: Ezek olyan fejlett szoftvermegoldások, amelyek kombinálják a mesterséges intelligenciát és a gépi tanulási technológiákat, hogy javítsák és automatizálják a szoftvertesztelési folyamat különböző aspektusait. Ezek az eszközök több fronton segíthetnek nekünk, de itt még elég erősen automatizálás erős a megoldások zöme. Ez azt jelenti, hogy kevés valóban manuális teszteléshez használható megoldás van, hiába van rengeteg (semmitmondó) cikk a témában. Tehát két kategóriába sorolhatjuk az eszközöket:
- Manuális tesztelést támogató eszközök. Egyelőre ezekből még nincs akkora dömping itt a manuális tesztelés meggyorsítása, tesztelemzés kiegészítése lehetséges. Erre példa felületi oldalról a Testcraft, API oldalról a ReadyAPI új feature-ja, ami egy API végpont response üzeneteit elemzi ki. Ezek az eszközök egyrészt az automatizálás előkészítésében segíthetnek minket, másrészt ténylegesen kibővíthetik a már meglévő tesztjeinket, megtalálhatnak olyan ellenőrzendő például felületi objektumot, amit manuálisan nem néznénk, nem vizsgálnánk normál esetben időhiány miatt.
- Automatikus tesztelést támogató eszközök. Ilyen eszközökből rengeteg van, szinte minden teszt automatizáló keretrendszer szolgáltat már AI megoldásokat. Ezek segítenek a tesztadataid generálásában vagy a manuális API tesztjeid automatizálásában, de a számomra leghasznosabbnak tűnő funkció a teszteset halmazból szűrés a céljaidnak megfelelően; automatikusan, AI által.
- AI támogatott/vezérelt teszt menedzsment vagy ALM eszköz: ALM (Application lifecycle management), és ezeken belül a kizárólag, vagy főleg tesztmenedzsmenttel foglalkozó megoldásokról beszélünk. Itt több funkcióban segíthet egy AI (Konkrétumokat nehéz találni, egyelőre nincs sok összehasonlító cikk erről a témáról, inkább csak a konkrét termékek reklám anyagaihoz lehet hozzáférni):
- Risk analysis: Amennyiben olyan iparági projektnél dolgozunk, ahol sok historikus adat áll rendelkezésre (pl banki fejlesztések), akkor a kockázatok elemzésében és előre vetítésében tud nekünk segíteni az AI. Kiegészítheti, meggyorsíthatja ezt a folyamatot egy projekt elején, így segítve, hogy pontosabb képünk legyen róla, milyen kockázatok mentén érdemes felépíteni a tesztelést. (Vagy éppen mikre érdemes odafigyelni a fejlesztés során)
- Teszt priorizálás, és tesztszettek összeállítása: Erre a funkcióra vagyok legjobban kíváncsi, hiszen priorizálni egy tesztet megírásakor nehéz feladat, sokszor van benne tippelés. Ha belegondolunk, hogy korábbi adatok, korábbi projektek teszteseteit, azok által talált hibák számosságát, és súlyosságát elemezve egy AI/ML képes arra, hogy segítsen minket. Ez jelentősen javíthatja a prioritási tényező pontosságát, ezen keresztül képesek lehetünk szűkebb regressziós szetteket létrehozni, a nélkül, hogy az eredményességen csökkentenénk. Ezzel manuális tesztelés esetén emberi erőforrást, és időt, automata tesztelés esetén pedig futtatási időt, emellett teszt karbantartási időt spórolhatunk.
- Automata tesztek futtatása, elemzése, és teszt szettek építése: Itt is több lehetőség van, kérdés mi valósul meg. A legkézenfekvőbb megoldásnak tűnik az AI-t megbízni azzal, hogy futtassa a teszt szetteket (test suit), majd elemezze a tesztek során talált hibákat. Teszt a hibás, vagy maga a kód? Ha ennél tovább gondoljuk, akár az adott releasehez is lehetne igazítani a teszteseteket automatikusan. Így gyorsabb ellenőrzésekre lennénk képesek, tehát közvetett módon gyorsítana a release folyamatokon.
- AI tesztelés: Most jutottunk el addig, amit szeretnénk csinálni. AI programok tesztelése egészen új kihívás elé állítja a tesztelőket. Miért? A hagyományos tesztelésnél, felállítunk egy tesztkörnyezetet, megtervezünk, és lefuttatunk egy, vagy több tesztet, majd az eredményeket összevetjük az elvárt eredménnyel, és ha megfelelően határoztuk meg utóbbit, egzakt választ kell kapjunk. AI/ML tesztelésénél maga a teszt előkészítése több munkát igényel, hiszen az AI/ML tanítására használt adatok a teszt céljától függenek (Például, ha azt akarjuk tesztelni, hogy lehet e direkt rossz választ tanítani egy AI-nak). Emellett, az eredmény nem egy állandó érték lesz, hanem egy bizonyos határon belül (bizonyos százalékon belül) kell helyesnek lennie, ebből tudunk meggyőződni arról, hogy az AI azt, és úgy tanulta meg, amit szerettünk volna tőle. És bár ezzel a rövid összefoglalóval csak a felszínt kapargattam, remélem látszik, hogy összetettségében, és elveiben is más tesztelési hozzá állásra, tervezésre, és végrehajtásra van szükség az AI teszteléséhez.
Mint láthatjátok a példánk azt mondja, hogy AI tesztelési szakértők vagyunk, pedig arról szól, hogy képesek vagyunk AI támogatott termékeket használni. Ez akkor egy rossz dolog? Nem. A fenti példákból láthatjuk, hogy ha a hagyományos termékek teszteléséhez AI/ML rendszereket használunk, akkor elérhetünk stabilabb, jobb eredményeket, ha megfelelően alkalmazzuk. Nem feltétlenül vagyok benne biztos, hogy rövid távon ezzel gyorsul a tesztelési folyamat, bár hosszútávon mindenképpen úgy gondolom. Amiben viszont erősen bízok, hogy a segítségével jobb teszt folyamatokat fogunk kitalálni, kevesebb monoton, és emiatt hibára érzékenyebb feladattal kell foglalkozzon a tesztelő, így jobb minőségű tesztelést lehet majd leszállítani.
Konklúzió
Mi a konklúziónk? Tanulás áll előtted, és előttem is, hiszen egy új izgalmas terület felszínét kapirgáljuk. A célom mindösszesen az volt, hogy az AI körüli misztikumot kicsit felfedjem azért, hogy fel tudd tenni a helyes kérdést, és átlásd azt a rengeteg, sokszor nem informatív információt, ami az AI-t és az AI-al kapcsolatos tesztelést körbelengi egyelőre.
Források:
https://testguild.com/ai-test-management
és még sok más.