Automatikus tesztelés ― áttekintés
Egy rendszer építésénél természetes igény, hogy a rendszer működését visszateszteljük, sőt, hogy ezt automatikusan tegyük, és ne egy embernek kelljen folyton kódot és kódminőséget nézni, futtatgatni minden lehetséges esetet, majd végül kiértékelni. Persze sokszor ez elkerülhetetlen, vagy legalábbis nehezen kiváltható teljes mértékben, de automatikus tesztelési eszköztárat építeni sosem árt, hiszen ezzel a saját munkánkat is megegyszerűsítjük.
Az automatikus tesztelési keretrendszer alapvetően a válaszminőséget, illetve a jó válasz adásához szükséges elemeket hivatott kiértékelni. Eszköztára két fő elemből áll:
-
Kérdésgenerálás: adathalmaz készítése, amin a VA-t végigkérdezzük
-
Kiértékelés: VA által adott válaszok pontozása számos mérték szerint
Egy válasz megszerzésének kiindulópontja mindig egy kérdés; bármilyen módon tesztelünk eszközműködést, egy kérdésre szükségünk lesz. Ehhez csatlakozhatnak „elvárásokat“ (pl. elvárt válasz, elvárt chunk-ok), melyek viszonyítási alapot biztosíthatnak a kiértékelésekhez.
Futtatás
A tesztelés lépéseinek futtatását két módon lehet kezdeményezni. Az egyik a backend által használt endpoint-rendszer. Ezek olyan célra vannak kialakítva, hogy az admin felületen keresztül kezelhető legyen a folyamat.
A másik lehetőség a manuális tesztelési endpoint-ok. Céljuk, hogy a saját, in-house tesztelésünket egy lépésenként vezetett folyamattá alakítsák. Ezek az endpoint-ok a /manual/execute-testing sub-API-ban érhetők el, és nem szerepelnek az api repóban található pythonservice.yml fájlban, hiszen nem a backend számára léteznek. Emellett nem is léteznek, amennyiben a python-service-nek az enable_debug_subapis flag-je nincs bekapcsolva.
A manuális tesztelés menete
A manuális tesztelés pipeline alapvetően arra lett optimalizálva, hogy chunk-olt markdown-okból az automatikus tesztelés minden lépését egyszerűen végrehajthassuk úgy, hogy minden lépésnél mentünk, így bárhonnan ismételhetjük a folyamatot. Ennek megfelelően kizárólag fájl elérési utakat kell bemenetként megadni mindenhol, és adott lépés kimenete a következő bemeneteként képes szolgálni. A lépések a következők:
- Egy mappányi chunkolt markdown-ból egy JSON listába gyűjtjük a chunkokat
- Egy JSON listából kérdéseket generálunk (alap beállítások szerint az összesből, magyar nyelven)
- Egy kérdéseket (és opcionálisan válaszokat) tartalmazó JSON-t végigkérdezünk a virtuális asszisztenstől
- Egy (kérdés, kapott válasz, elvárt válasz) hármasokat (és esetleg használt chunkokat) tartalmazó JSON-ra lefuttatjuk a kiértékelési folyamatot
- Egy kiértékelés eredményét XLSX-szé konvertáljuk
Amennyiben egyszerre több lépést akarunk végrehajtani, azt is megtehetjük a run_steps endpoint segítségével. Ez mindig az alapbeállításokat használja minden lépéshez.